diff --git a/doc/src/Eqs/fix_mvv_dpd.jpg b/doc/src/Eqs/fix_mvv_dpd.jpg new file mode 100644 index 0000000000..f62ae28bc4 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 0000000000..4652d54b77 --- /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 0000000000..fabb6f772e 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 0000000000..f6a0ca0d3c --- /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 0000000000..10b303a218 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 0000000000..782cdec99e --- /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 0000000000..b9256a1d13 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 0000000000..241a1bad64 --- /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 0000000000..158974d374 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 0000000000..ac5ca9f740 --- /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 0000000000..9b0e573b79 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 0000000000..b5c8d9be4a --- /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 0000000000..9da788ae9b 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 0000000000..f753f16acf --- /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 0000000000..f6feb35397 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 0000000000..49edff9700 --- /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 0000000000..0ed793a132 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 0000000000..e4b5f5790a --- /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 0000000000..4d0cde6370 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 0000000000..29ace1a0b2 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 0000000000..958912e662 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 0000000000..1bf8b9ac82 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 0000000000..c00e83e003 Binary files /dev/null and b/doc/src/JPG/examples_tdpd.jpg differ diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt index 571c6c4920..48f11b3c63 100644 --- a/doc/src/Section_commands.txt +++ b/doc/src/Section_commands.txt @@ -685,6 +685,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 +705,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 +736,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, @@ -775,6 +780,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 +842,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 +875,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 +1032,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 +1050,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 +1085,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_packages.txt b/doc/src/Section_packages.txt index 16864bcdc4..6122dfac78 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/atom_style.txt b/doc/src/atom_style.txt index 077636dfd1..49d9dde791 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/compute_cluster_atom.txt b/doc/src/compute_cluster_atom.txt index 147d06c2a8..0aa38ae590 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. +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. -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. +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 0000000000..5b8c8ebd67 --- /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 0000000000..a6a12dc52c --- /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 5a6ca66c46..c443bfaba2 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_source.txt b/doc/src/fix_dpd_source.txt new file mode 100644 index 0000000000..b6decc657c --- /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_mvv_dpd.txt b/doc/src/fix_mvv_dpd.txt new file mode 100644 index 0000000000..3c1c1a7cba --- /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_qeq.txt b/doc/src/fix_qeq.txt index 22f4766896..194361e990 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_wall_ees.txt b/doc/src/fix_wall_ees.txt index a8688e8e41..f141a19405 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 3dc5e77e14..7000a66c51 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 76b6743657..f4d3566a6e 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 @@ -156,6 +157,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 +199,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 +318,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 +384,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 +462,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 +650,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 9dd204ad2d..8d194bb092 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_meso.txt b/doc/src/pair_meso.txt new file mode 100644 index 0000000000..bcdf717d68 --- /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_snap.txt b/doc/src/pair_snap.txt index fa90dc34e9..593765aa63 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/pairs.txt b/doc/src/pairs.txt index 2c1b20f4d3..ec21b7a02e 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 a8aca53693..8c9aa02e22 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 14460c9741..4757d1c575 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/examples/USER/meso/README b/examples/USER/meso/README new file mode 100644 index 0000000000..4accc7ba01 --- /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 0000000000..316099bce3 --- /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 0000000000..af975f877c --- /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 0000000000..21206d38c6 --- /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 0000000000..469b550258 --- /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 0000000000..1c50a9b6e5 --- /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 0000000000..201b4a340e --- /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 0000000000..c3c14da559 --- /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 0000000000..ec3d8fbddc --- /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 0000000000..a872600504 --- /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 0000000000..de34ef26c3 --- /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 0000000000..748a4f5077 --- /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 0000000000..21b618148c --- /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 0000000000..6cd99168f4 --- /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/lib/gpu/Install.py b/lib/gpu/Install.py index 6ea2159de5..13d7ad157e 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 3fe9e46111..43d3f17d63 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 d2967cf9a3..b8236e8fd1 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 a9341a907c..964ec966d5 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 257a2e5db4..e5ed39ef53 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/config/kokkos-promotion.txt b/lib/kokkos/config/kokkos-promotion.txt new file mode 100644 index 0000000000..d56298b416 --- /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 0447db4b2b..96b05c02e1 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 005cd20721..e6fcaad261 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 621cd54e1c..599c6b0224 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 492470d05d..0d5d97a829 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 abb263b7cc..43e6386b54 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 3c8673c66a..54a97a16c1 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 1fe964a6d2..26b47a8b74 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 ddb11d2894..3748c35eb0 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 8c080f7a8f..29001e19ed 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 93b3fa5ca9..f089c16ad2 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 250ef6630a..7137eaae4b 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 1da936067d..4ba5812f9e 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 9df6d4ba09..c392fc5b9a 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 0000000000..b13b0b01de --- /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 0000000000..dce6a3cb3f --- /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 fcfc91a4ee..079f80f556 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 1754e4a8fb..47b105cfdc 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 0000000000..a93f488203 --- /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 0000000000..83b5792a64 --- /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 0000000000..e919d35903 --- /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 0000000000..48a27eb11d --- /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 0000000000..1322391d92 --- /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 0000000000..481e7df3a4 --- /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 0000000000..d3d150703e --- /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 0000000000..14ab52a1c2 --- /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 0000000000..acf75f6f13 --- /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 0000000000..e2b6738076 --- /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 0000000000..317995c4f4 --- /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 0000000000..16badcc1d4 --- /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 0000000000..e1a89e3794 --- /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 0000000000..ac166f9ad8 --- /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 0000000000..56c2e634e4 --- /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 5b894b037b..49fca9c855 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 084c55efed..2af1737c31 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 038cc13e9a..b7c14052eb 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 65578156d5..f47ba1a98a 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 df16b3738b..3d3029535e 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 92111c3c59..c59c59d497 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 f52cc469ac..ab6cffc7c3 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 4bc2637c57..b4390f14a1 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 d2446bde09..047b262422 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 7a887a9e29..eedf3d559e 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 15ce6964a0..a408199088 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 1974f7e1ca..0cce45b2e7 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 d346f9e639..b2adcc9f06 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 5a8600e0ae..37367f68e4 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 475b6bb48a..8aeae1199f 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 c877aa7dd2..07859f7ac3 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 fddcc4a2e6..f0391134ba 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 36f05612e0..ce5537fed3 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 0000000000..90f4036868 --- /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 3cea1ad4a0..e6857a4d2f 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 fa7669c5ed..823f0c99a8 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 4e66543857..a3f59a2b9e 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 232163f11e..721ffd8378 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 305ddb2a1d..61b43a588a 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 810ae72e73..f963875ae1 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 ee1c96b423..d0cbfe9e7d 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 0000000000..a90e88933e --- /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 e11996e8f9..4500392b27 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 0000000000..54b283f539 --- /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 0000000000..94e778b3bc --- /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 0000000000..2f8f379db0 --- /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 0000000000..32ecbbb48f --- /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 0000000000..5523fac7fc --- /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 0000000000..5e29612d72 --- /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 0000000000..6a6194b38f --- /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 0000000000..a9c7e51b62 --- /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 0000000000..e6b7a25316 --- /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 0000000000..d5f82826b0 --- /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 0000000000..5944830c43 --- /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 0000000000..a34068f533 --- /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 0000000000..2b72cdee88 --- /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 0000000000..dafe9fb529 --- /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 0000000000..3e182dacba --- /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 0000000000..ef7dad95a3 --- /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 0000000000..33c4d960f8 --- /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 0000000000..ae0a016af3 --- /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 0000000000..7a038edf4b --- /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 0000000000..d44e7afec3 --- /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 0000000000..ea39a25b5c --- /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 0000000000..00a3a341bb --- /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 0000000000..c17b0722e9 --- /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 0000000000..e723b43323 --- /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 0000000000..b1170a70f5 --- /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 0000000000..0788a82ba4 --- /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 0000000000..8d075a37c0 --- /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 0000000000..b9dc782571 --- /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 0000000000..54c46095aa --- /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 0000000000..369e16a795 --- /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 0000000000..b97926f98e --- /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 0000000000..a1d47e0fbd --- /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 0000000000..5be70dc22e --- /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 0000000000..8135476662 --- /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 0000000000..054bbd83c8 --- /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 0000000000..ba0eb0e1bd --- /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 0000000000..351dfee2b5 --- /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 0000000000..3e6f559438 --- /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 0000000000..a7b2b9695d --- /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 0000000000..fa5b209f1b --- /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 0000000000..0af114c7ea --- /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 0000000000..f0b95c0e00 --- /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 0000000000..5799ab816c --- /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 0000000000..25243273fe --- /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 6d636dc7e4..b4a69d30fd 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/src/.gitignore b/src/.gitignore index 80166e260e..5513386b1c 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 diff --git a/src/Makefile b/src/Makefile index 3b67d2284f..91d65a11c5 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/QEQ/fix_qeq.cpp b/src/QEQ/fix_qeq.cpp index c5b566eef7..757eae5dd2 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. - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; + if (nwords < 6) + error->all(FLERR,"Invalid fix qeq parameter file"); - 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]); + // words = ptrs to first 6 words in line + + for (n=0, words[n] = strtok(line," \t\n\r\f"); + n < 6; + words[++n] = strtok(NULL," \t\n\r\f")); + + 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/USER-MESO/README b/src/USER-MESO/README new file mode 100644 index 0000000000..0119fdb9f8 --- /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 0000000000..385e8fd426 --- /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 0000000000..36a4cae97b --- /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 0000000000..0a4d302c36 --- /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 0000000000..9e9ffcdcf2 --- /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 0000000000..34f2b1a031 --- /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 0000000000..86e9ae4bb8 --- /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 0000000000..15fdab2a69 --- /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-MESO/compute_edpd_temp_atom.h b/src/USER-MESO/compute_edpd_temp_atom.h new file mode 100644 index 0000000000..4c61b664cc --- /dev/null +++ b/src/USER-MESO/compute_edpd_temp_atom.h @@ -0,0 +1,43 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain 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(edpd/temp/atom,ComputeEDPDTempAtom) + +#else + +#ifndef LMP_COMPUTE_EDPD_TEMP_ATOM_H +#define LMP_COMPUTE_EDPD_TEMP_ATOM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeEDPDTempAtom : public Compute { + public: + ComputeEDPDTempAtom(class LAMMPS *, int, char **); + ~ComputeEDPDTempAtom(); + void init(); + void compute_peratom(); + double memory_usage(); + + private: + int nmax; + double *temp_vector; +}; + +} + +#endif +#endif 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 0000000000..b33550f5c1 --- /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 0000000000..324cb779a4 --- /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 0000000000..3ee7e8e291 --- /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 0000000000..1ea8610ce9 --- /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 0000000000..77a67273f6 --- /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 0000000000..86cc79485f --- /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 0000000000..fe801d6d36 --- /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 0000000000..0d9c5f195a --- /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 0000000000..382ce9033a --- /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 0000000000..7adb23af69 --- /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 0000000000..3dfeba4787 --- /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 0000000000..302fe82090 --- /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 0000000000..c1c100db43 --- /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 0000000000..9ab0ad9670 --- /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 0000000000..bf78ea5af7 --- /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 0000000000..ea0389c7fe --- /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 0000000000..9c4d6f804f --- /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 0000000000..a972ec7ccf --- /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 0000000000..1f2bd4eb6c --- /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 0000000000..9245308d38 --- /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-NETCDF/dump_netcdf.cpp b/src/USER-NETCDF/dump_netcdf.cpp index b45794126d..971f69f7cc 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 c5b87b178e..3b753b1b04 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/atom.cpp b/src/atom.cpp index 83c2181273..1191f0f2b5 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -104,6 +104,11 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) duChem = NULL; dpdTheta = NULL; + // USER-MESO + + cc = cc_flux = NULL; + edpd_temp = edpd_flux = edpd_cv = NULL; + // USER-SMD contact_radius = NULL; @@ -168,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,6 +305,12 @@ Atom::~Atom() memory->destroy(uCGnew); memory->destroy(duChem); + 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); @@ -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 19db9161e4..007142a1c0 100644 --- a/src/atom.h +++ b/src/atom.h @@ -94,6 +94,13 @@ class Atom : protected Pointers { double *dpdTheta; int nspecies_dpd; + // 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 int **nspecial; // 0,1,2 = cumulative # of 1-2,1-3,1-4 neighs @@ -137,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 diff --git a/src/compute_aggregate_atom.cpp b/src/compute_aggregate_atom.cpp new file mode 100644 index 0000000000..1155ac437a --- /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 0000000000..8170aabc7f --- /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 80c002d39f..5ee6368504 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 aae4747781..253396b40e 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 0000000000..2dfb20a570 --- /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 0000000000..a56239dbda --- /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/molecule.cpp b/src/molecule.cpp index b0fec4bcbc..b93cf24e7e 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/set.cpp b/src/set.cpp index 59625b7e6c..2b1c0edee2 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 dfb06a2e12..5584e228ba 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/tools/moltemplate/LICENSE.TXT b/tools/moltemplate/LICENSE.TXT deleted file mode 100644 index 73eec32380..0000000000 --- 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 0000000000..d04220dc5f --- /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 773464d01b..0000000000 --- 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 0000000000..dc63a6bf4a --- /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 14246f1559..b0122a3fd8 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 0000000000..e73c51d0ae 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 0000000000..a5fb40ae7c 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 0000000000..b978b76d40 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 0000000000..7666e22bf7 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 0000000000..a54c345630 --- /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 0000000000..a09b3df6dc 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 0000000000..2369e2de13 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 0000000000..c4aa70ce16 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 0000000000..e6f7e96e9a 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 0000000000..f7bfbebe9e 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 0000000000..10a3d4fd38 --- /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 0000000000..cc6822e7b3 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 0000000000..fd5276aaff --- /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 0000000000..7961fa3b53 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 0000000000..c7673b2cc8 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 0000000000..b3d6f05d51 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 0000000000..56344f9573 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 2b591d0fa3..0e1bf1ae26 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 0000000000..dbc751176d --- /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 e3602541c7..e024bffcdc 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 9d6d0e1b35..f7e65cf482 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 0000000000..67528d426e --- /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 9f923a6c7e..ac39fa950c 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 0000000000..e8d8be3f50 --- /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/abstract_random_heteropolymer/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/abstract_random_heteropolymer/README_visualize.txt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/README_visualize.txt index 019afc1444..a3e3ed620e 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/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 26ef1d5358..05c55482d3 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 0000000000..67528d426e --- /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 9f923a6c7e..ac39fa950c 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 0000000000..dda26cd444 --- /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/abstract_translocation/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/abstract_translocation/README_visualize.txt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/README_visualize.txt index 019afc1444..a3e3ed620e 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/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 47b1505c58..008391688e 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 cad6ea4a8d..e4b72922fb 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 a3f011167d..8289270f04 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 0000000000..67528d426e --- /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 9f923a6c7e..ac39fa950c 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 0000000000..e8d8be3f50 --- /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/3bodyWater+hydrocarbons_MW+TraPPE/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/3bodyWater+hydrocarbons_MW+TraPPE/README_visualize.txt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README_visualize.txt index 019afc1444..a3e3ed620e 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/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 def26ba765..81183f9270 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 6ec463efab..605ea7d6a1 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 0000000000..67528d426e --- /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 9f923a6c7e..ac39fa950c 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 6aa6c06f4c..eb9df9e448 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/membrane+protein/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/membrane+protein/README_visualize.txt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README_visualize.txt index 019afc1444..a3e3ed620e 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/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 e244d44279..9acd858b95 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 e10f0bcec5..ac9965e588 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 0d8c8e0308..99b50a744e 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 abef639d46..5ddb4ae8f6 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 0000000000..5957289da9 --- /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 b31401f135..94d6de972c 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 6aa6c06f4c..5cd2142a41 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 0000000000..a3e3ed620e --- /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 f4a21ebe4e..b15ef139fd 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 510b7e111a..c800d56679 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 b01c8c0cd2..95d48d8530 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 0000000000..5957289da9 --- /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 5f82866644..c27520076e 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 0000000000..0869d7b783 --- /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 0000000000..a3e3ed620e --- /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 af95dca522..1ba9acc219 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 0000000000..5957289da9 --- /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 5f82866644..c27520076e 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 60daffc2bf..c4550c60d2 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 0000000000..a3e3ed620e --- /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 eceba67ef6..1450f1dd59 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 0000000000..5957289da9 --- /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 0000000000..4871a06495 --- /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 0000000000..15a3a963c8 --- /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 0000000000..a3e3ed620e --- /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 c92b2592a6..e06bf0caa1 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 510b7e111a..05091ba39c 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 b01c8c0cd2..95d48d8530 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 9f9e9d0994..9114c637a8 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 0000000000..5957289da9 --- /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 5f82866644..c27520076e 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 0000000000..5cd2142a41 --- /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 0000000000..a3e3ed620e --- /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 5ad3a04b50..9c318e6654 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 0000000000..5957289da9 --- /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 5f82866644..c27520076e 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 6aa6c06f4c..4fc8dda6d5 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 0000000000..a3e3ed620e --- /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 292d9d0ec0..8c00fe07fb 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 0000000000..049a1eac48 --- /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 71a18b0ab2..1c46d9d416 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 33b505dbb9..ed4ac6f041 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 0000000000..a3e3ed620e --- /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 036c6e7569..f3ccf3b084 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 0000000000..5957289da9 --- /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 0000000000..c27520076e --- /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 412634dfe2..38a79dbf19 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 0000000000..a3e3ed620e --- /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 d82d8cfd9b..d147a6d4c4 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 115c1fab35..1303acbcac 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 22eb8c4357..74e00f2510 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 0000000000..a3e3ed620e --- /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 64f350f641..393ceb8d86 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 4a1e130642..c041ccb9f9 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 3a08212692..68cad16a79 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 73358e55dc..88d0e22c41 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 fb431cedee..e67b228e9e 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 7ddcb0adfe..0a52d82981 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 2d716540a8..f887c6efd1 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 83b4ad80bf..3c58fd009e 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 ee5e5665aa..98054c5551 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/MARTINI_examples/DPPC_bilayer_preformed/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/MARTINI_examples/DPPC_bilayer_preformed/README_setup.sh rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/README_setup.sh index acc5fbbaad..cf22ee0fa1 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/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 206db99038..04ff1f2e75 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 0000000000..9cba533530 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 1cc480669d..15fe07133f 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 c54a380f62..3bc476c3ab 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 70c34bd6f4..6f66c68f1a 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 3a08212692..68cad16a79 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 0000000000..a3e3ed620e --- /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 639222d182..af38795022 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 0000000000..6b8cc5a172 --- /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 68acee49b9..c2e6bae3ba 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 0000000000..55d633894e --- /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 0000000000..a3e3ed620e --- /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 97b9f577d9..1e16d360e0 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 0000000000..5c06c60c6c --- /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 0000000000..fe92ffeaf3 --- /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 0000000000..5957289da9 --- /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 8cc857a5b4..65213b0963 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/abstract_translocation/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/abstract_translocation/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README_setup.sh index acc5fbbaad..cf22ee0fa1 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/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 587b800448..e8ad744015 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 0000000000..00a4ed7e7c --- /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 0000000000..4e16407821 --- /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 0000000000..6513d83413 --- /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 0000000000..360ded2373 --- /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 0000000000..0967272ffe --- /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 0000000000..4653fefe67 --- /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 0000000000..46e8bd572e --- /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 0000000000..8d4fbc3ac7 --- /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 0000000000..d5f7370756 --- /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 0000000000..75b77b17e8 --- /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 0000000000..a27af13a44 --- /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 0000000000..be3f261416 --- /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 0000000000..08ce4b1d64 --- /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 0000000000..fdc5af63c1 --- /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 0000000000..1c30e3271c --- /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 0000000000..bee0ae972b --- /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 0000000000..9230037369 --- /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 0000000000..0f7641dd5e --- /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 0000000000..ee31133566 --- /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 0000000000..d68a266506 --- /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 0000000000..2e10ed6629 --- /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 0000000000..89144c3d23 --- /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 0000000000..2fef27f876 --- /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 0000000000..4781cbf04a --- /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 0000000000..a6f47af165 --- /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 0000000000..158f19db80 --- /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 0000000000..09a5ff8781 --- /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 0000000000..c498fbe4d5 --- /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 0000000000..6513d83413 --- /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 9d2b0fbc5a..905a9f7b0e 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 1e6630a94d..964f151f4e 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 587b800448..e8ad744015 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 3fe1b55305..2ffc3887aa 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 3339e2738b..1879e6845f 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 c8d850f9cf..c58c897082 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 a576a09f6a..673f5e8afe 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 1bc8a2a9df..6273cea506 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 fc9aa8fbd6..b08497f633 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 bbb0da392e..a6a6143b3a 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 1f38df275a..cd33289198 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 c290e3db3c..8f875b400d 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 0000000000..65213b0963 --- /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_2bead_heteropolymer/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_2bead_heteropolymer/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/README_setup.sh index acc5fbbaad..cf22ee0fa1 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/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 0000000000..e8ad744015 --- /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 df92940b18..402dbae49c 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 696adaf864..d42749daf9 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 ab7f06890b..49ce589b95 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 5cdf2f419c..6a17d20734 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 c3173a1e19..eca0a1b7f4 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_random_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_random_heteropolymer/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/README_setup.sh index acc5fbbaad..cf22ee0fa1 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_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 5d97ea56ad..90b102a080 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 0000000000..efd7022e7f 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 0000000000..70dd7ce601 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 0000000000..b239cef972 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 0000000000..dc4d6ccdfd 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 a5157b7106..bcc5947b1f 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 0000000000..d06b4356c2 --- /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 c2c01a8eee..aad330df20 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 0000000000..8a2bf4de8a --- /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 0000000000..2e89e31f83 --- /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 5be93322d8..0b07e14719 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 35488d6590..e9fdbf41fd 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 0000000000..01f2353d2f --- /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 0000000000..cb2307f525 --- /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 0000000000..cf22ee0fa1 --- /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 0000000000..3bb7f5ff47 --- /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 0000000000..8c5df6540c 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 0000000000..f2f29ec4e8 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 0000000000..ebf5eeaf0d --- /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 0000000000..c68d8a650e --- /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 0000000000..434a318655 --- /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 0000000000..16fdffb05a --- /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 15638c1536..8c6ca7947f 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 0000000000..cf22ee0fa1 --- /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 0000000000..a3e3ed620e --- /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 0000000000..f67da797f1 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 0000000000..15d7b29676 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 b9bac96d50..ed9de408f2 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 0828a7f098..f402d7b7c4 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 0000000000..cf22ee0fa1 --- /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 0000000000..a3e3ed620e --- /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 0000000000..304693e2ac 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 03fb40b167..5420d95da3 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 14700a29cd..3f261528b4 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 a5b46dc8a5..31abe1e1ec 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 c23b222fa1..829b4c6be0 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 1d30ceb170..f2cd91c0b4 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 796347bb0b..21f263d382 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 06f995931d..8ae294c9d1 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 09abbc4b2a..a2b9dc91eb 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 8864c3e047..f4b6763524 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 d7ea305695..29958f73a3 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 abf2fce64b..ee7d9efdd7 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 0000000000..a3e3ed620e --- /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 0d09e4d02e..1158a9cf75 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 32147e444a..e7f0fe462e 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 1bf9d00b99..f8f542e77e 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 d7ea305695..29958f73a3 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 abf2fce64b..ee7d9efdd7 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 0000000000..a3e3ed620e --- /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 0d09e4d02e..1158a9cf75 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 32147e444a..e7f0fe462e 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 0000000000..c0fc605b6f --- /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 0000000000..940205ff47 --- /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 0000000000..0d1c3fd00e --- /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 0000000000..f70bc3b753 --- /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 0000000000..f3445b18e6 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 0000000000..e4f7ae0c9f 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 0000000000..8e125da5c1 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 0000000000..0e0d095318 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 0000000000..7240296584 --- /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 0000000000..64ea1785f3 --- /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 0000000000..59e08aeb2b --- /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 0000000000..cd8dd4db7d --- /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 0000000000..712eca1a76 --- /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 0000000000..e9294a96d8 --- /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 0000000000..85c16a0b73 --- /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 0000000000..cd8dd4db7d --- /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 0000000000..c0fc605b6f --- /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 0000000000..eb3fe7089a --- /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 0000000000..0d1c3fd00e --- /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 0000000000..f70bc3b753 --- /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 0000000000..fb45910d88 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 0000000000..2fc365bd44 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 0000000000..1f85ace52a 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 0000000000..810b8d79a2 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 0000000000..983c4ec248 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 0000000000..6b7b6bc63f 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 0000000000..9e7a593fc9 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 0000000000..7240296584 --- /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 0000000000..04953c97b7 --- /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 0000000000..4a35cd10de --- /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 0000000000..cd8dd4db7d --- /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 0000000000..e6177f9937 --- /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 0000000000..b305e1d590 --- /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 31abcd66ef..e5f1544eab 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 a52f73ff7b..63517aa125 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 df49f4384f..042f73a287 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 0000000000..a3e3ed620e --- /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 9b86809cc3..4c787de565 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 34c66418a8..907732fa19 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 ecb9adad2e..d934e3ab6c 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 df49f4384f..042f73a287 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 0000000000..a3e3ed620e --- /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/frustrated+minichaperone/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/frustrated+minichaperone/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 9b86809cc3..4c787de565 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/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+minichaperone/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+minichaperone/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 34c66418a8..907732fa19 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+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 77af3de15a..7b02e02a32 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 df49f4384f..042f73a287 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 0000000000..a3e3ed620e --- /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/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/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 34c66418a8..907732fa19 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/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 5da41b9a8b..fd7c2ba7d1 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 df49f4384f..042f73a287 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 0000000000..a3e3ed620e --- /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/unfrustrated+chaperonin/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/unfrustrated+chaperonin/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 9b86809cc3..4c787de565 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/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 b2770e3e3d..7756b566db 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 fa10f55724..886551ffb3 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 0000000000..a3e3ed620e --- /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 eda6a1ca22..03361928e1 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 fa10f55724..886551ffb3 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 0000000000..a3e3ed620e --- /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 305d00d636..990c6f2f56 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 f11c438ad4..f1b1904a8d 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 ab62f6fb59..fcc87a6bf4 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 f695f6d0ef..fa3986e737 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 0000000000..a3e3ed620e --- /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 b0de637379..a5590ffa00 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 0d09e4d02e..1158a9cf75 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 32147e444a..e7f0fe462e 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 2fe282995a..ade4281035 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 253c042670..dee8526a01 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 33eeddda6e..0000000000 --- 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 cb4d908984..0000000000 --- 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 ceaa1c69d8..0000000000 --- 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 304dbdeb9d..0000000000 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 beadf7e1bb..0000000000 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 49b3c63e5c..0000000000 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 bd2eb8a27d..0000000000 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 98aece5b8f..0000000000 --- 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 019afc1444..0000000000 --- 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 019afc1444..0000000000 --- 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 9e34246f8e..0000000000 --- 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 019afc1444..0000000000 --- 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 b0013ccc62..0000000000 --- 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 019afc1444..0000000000 --- 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 c7f8572b29..0000000000 --- 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 019afc1444..0000000000 --- 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 7763505c0d..0000000000 --- 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 019afc1444..0000000000 --- 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 1470af4bc1..0000000000 --- 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 019afc1444..0000000000 --- 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 de47509ed4..0000000000 --- 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 019afc1444..0000000000 --- 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 d69f1d6ffa..83a733e1f9 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 6903a855f9..c236489936 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 ab9a7dc6e8..6a3f57fac5 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 3b9be3e9c3..82315d2bde 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 7b2b066767..0000000000 --- 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 cb8d7eda97..0000000000 --- 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 0e58ef44c7..d27267f365 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 2944f68403..6072277b54 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 5d2be21331..bdd22c1487 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 8063d535f8..5f9b27e5bf 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 4ebc7b17a3..36505562fe 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 c2db73b457..0000000000 --- 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 019afc1444..0000000000 --- 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 3251991775..0000000000 --- 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 0e2a17d9b9..0000000000 --- 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 019afc1444..0000000000 --- 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 3251991775..0000000000 --- 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 c2db73b457..0000000000 --- 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 019afc1444..0000000000 --- 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 3251991775..0000000000 --- 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 c2db73b457..0000000000 --- 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 019afc1444..0000000000 --- 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 3251991775..0000000000 --- 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 54a6484dac..0000000000 --- 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 019afc1444..0000000000 --- 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 d5e469af37..0000000000 --- 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 dedba938bc..0000000000 --- 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 1260acdbd3..0000000000 --- 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 54a6484dac..0000000000 --- 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 019afc1444..0000000000 --- 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 d5e469af37..0000000000 --- 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 6da3456025..0000000000 --- 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 2fc1ea29ea..0000000000 --- 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 b4078f1214..0000000000 --- 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 6dbc6861ac..0000000000 --- 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 c802793ada..0000000000 --- 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 019afc1444..0000000000 --- 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 d5e469af37..0000000000 --- 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 6da3456025..0000000000 --- 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 2fc1ea29ea..0000000000 --- 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 b4078f1214..0000000000 --- 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 6dbc6861ac..0000000000 --- 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 c802793ada..0000000000 --- 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 d64a95504d..0000000000 --- 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 019afc1444..0000000000 --- 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 d5e469af37..0000000000 --- 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 5b6e32d845..0000000000 --- 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 1260acdbd3..0000000000 --- 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 019afc1444..0000000000 --- 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 d5e469af37..0000000000 --- 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 3336341da8..0000000000 --- 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 5f982059b3..0000000000 --- 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 5f82866644..0000000000 --- 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 019afc1444..0000000000 --- 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 d5e469af37..0000000000 --- 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 0bc46d88c8..0000000000 --- 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 fee34956bc..0000000000 --- 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 019afc1444..0000000000 --- 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 d5e469af37..0000000000 --- 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 8ae373d713..0000000000 --- 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 60bf1d855e..0000000000 --- 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 5f82866644..0000000000 --- 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 019afc1444..0000000000 --- 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 019afc1444..0000000000 --- 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 432a7b7ad1..0000000000 --- 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 acc5fbbaad..0000000000 --- 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 019afc1444..0000000000 --- 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 4d3a9d2f85..5046c978da 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".) +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. -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). +A Menger sponge is a fractal composed of subunits that resemble a Rubik's-cubes +with a hollow interior: -In this example, the basic indivisible units are 4-atoms of Aluminum + ___ + ###| + # #| + ###' + + | + \|/ + 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 2af3d7372c..ac42516942 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 019afc1444..9cf2aa7157 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 0000000000..ce504acd7c --- /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 0000000000..ce94a83d45 --- /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 afafd46e9f..0000000000 --- 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 0000000000..0d4f00eddb --- /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 0000000000..797d899a63 --- /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 8da5f2d9c9..51313b9d7c 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 0d2922d415..afafd46e9f 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 8da5f2d9c9..75ae976b34 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 68f7c2ab03..3e126b04aa 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 096674f7ff..8bb1bc89f6 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 0000000000..cf22ee0fa1 --- /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 10198fc92f..e2c77bafb5 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 365ab9fb03..1f083af18e 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 acc5fbbaad..0000000000 --- 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 0000000000..c6c839dc58 --- /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 0000000000..6610649cb2 --- /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 0000000000..b9601769e1 --- /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 919cfa51af..6b36911f21 --- 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]) + 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() == '-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 3de8131141..b8d7c75646 --- 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]) + del(argv[i:i + 2]) - elif ((argv[i].lower() == '-chargepairsbytype') or - (argv[i].lower() == '-chargepairs-by-type') or + 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]) + 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].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 5a2ce05c4a..984dc6415d --- 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 25c73219dd..4c122d8eba --- 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.') + 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] + # 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 0000000000..c8d90c7e42 --- /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 0000000000..e5a842b5e1 --- /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 0000000000..8d95928cec --- /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 4fe3ec743d..23f5f172cf --- 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 - -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 0000000000..dd54c6b697 --- /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 20b4d7ed2d..226e0eb297 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 92e7e2c42a..07442dbee7 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 0000000000..b15ef139fd --- /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 0000000000..3431892f4e --- /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 0000000000..686715e895 --- /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 0000000000..5d0bcffd8e --- /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 0000000000..676cd8ec90 --- /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 0000000000..f62ecc09b6 --- /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 0000000000..6713725d0b --- /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 0000000000..7240296584 --- /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 0000000000..cd8dd4db7d --- /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 0000000000..949a81b1e7 --- /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 c54a380f62..3bc476c3ab 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 0000000000..0c9614632c --- /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 0000000000..3279e55dbc --- /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 0000000000..844fafe100 --- /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 0000000000..7d78eed759 --- /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 0000000000..81ed2358aa --- /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 0000000000..1139c421da --- /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 0000000000..dc2c186764 --- /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 0000000000..eb039bde53 --- /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 0000000000..a58b9ccd61 --- /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 48d6f9ec63..92b2628df5 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,6 +1849,932 @@ OPLSAA { } #(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 abovee are equivalent to the complete + # @atom names used below: + + 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 } + replace{ @atom:4 @atom:4_b4_a4_d4_i4 } + replace{ @atom:5 @atom:5_b5_a5_d5_i5 } + replace{ @atom:6 @atom:6_b6_a6_d6_i6 } + replace{ @atom:7 @atom:7_b7_a7_d7_i7 } + replace{ @atom:8 @atom:8_b8_a8_d8_i8 } + replace{ @atom:9 @atom:9_b6_a6_d6_i6 } + replace{ @atom:10 @atom:10_b6_a6_d6_i6 } + replace{ @atom:11 @atom:11_b6_a6_d6_i6 } + replace{ @atom:12 @atom:12_b6_a6_d6_i6 } + replace{ @atom:13 @atom:13_b2_a2_d2_i2 } + replace{ @atom:14 @atom:14_b9_a9_d9_i9 } + replace{ @atom:15 @atom:15_b10_a10_d10_i10 } + replace{ @atom:16 @atom:16_b11_a11_d11_i11 } + replace{ @atom:17 @atom:17_b12_a12_d12_i12 } + replace{ @atom:18 @atom:18_b13_a13_d13_i13 } + replace{ @atom:19 @atom:19_b14_a14_d14_i14 } + replace{ @atom:20 @atom:20_b5_a5_d5_i5 } + replace{ @atom:21 @atom:21_b7_a7_d7_i7 } + replace{ @atom:22 @atom:22_b6_a6_d6_i6 } + replace{ @atom:23 @atom:23_b2_a2_d2_i2 } + replace{ @atom:24 @atom:24_b15_a15_d15_i15 } + replace{ @atom:25 @atom:25_b15_a15_d15_i15 } + replace{ @atom:26 @atom:26_b16_a16_d16_i16 } + replace{ @atom:27 @atom:27_b16_a16_d16_i16 } + replace{ @atom:28 @atom:28_b17_a17_d17_i17 } + replace{ @atom:29 @atom:29_b17_a17_d17_i17 } + replace{ @atom:30 @atom:30_b6_a6_d6_i6 } + replace{ @atom:31 @atom:31_b2_a2_d2_i2 } + replace{ @atom:32 @atom:32_b6_a6_d6_i6 } + replace{ @atom:33 @atom:33_b2_a2_d2_i2 } + replace{ @atom:34 @atom:34_b6_a6_d6_i6 } + replace{ @atom:35 @atom:35_b2_a2_d2_i2 } + replace{ @atom:36 @atom:36_b18_a18_d18_i18 } + replace{ @atom:37 @atom:37_b19_a19_d19_i19 } + replace{ @atom:38 @atom:38_b6_a6_d6_i6 } + replace{ @atom:39 @atom:39_b10_a10_d10_i10 } + replace{ @atom:40 @atom:40_b13_a13_d13_i13 } + replace{ @atom:41 @atom:41_b20_a20_d20_i20 } + replace{ @atom:42 @atom:42_b6_a6_d6_i6 } + replace{ @atom:43 @atom:43_b2_a2_d2_i2 } + replace{ @atom:44 @atom:44_b2_a2_d2_i2 } + replace{ @atom:45 @atom:45_b21_a21_d21_i21 } + replace{ @atom:46 @atom:46_b10_a10_d10_i10 } + replace{ @atom:47 @atom:47_b21_a21_d21_i21 } + replace{ @atom:48 @atom:48_b13_a13_d13_i13 } + replace{ @atom:49 @atom:49_b21_a21_d21_i21 } + replace{ @atom:50 @atom:50_b22_a22_d22_i22 } + replace{ @atom:51 @atom:51_b23_a23_d23_i23 } + replace{ @atom:52 @atom:52_b6_a6_d6_i6 } + replace{ @atom:53 @atom:53_b4_a4_d4_i4 } + replace{ @atom:54 @atom:54_b24_a24_d24_i24 } + replace{ @atom:55 @atom:55_b3_a3_d3_i3 } + replace{ @atom:56 @atom:56_b6_a6_d6_i6 } + replace{ @atom:57 @atom:57_b25_a25_d25_i25 } + replace{ @atom:58 @atom:58_b26_a26_d26_i26 } + replace{ @atom:59 @atom:59_b27_a27_d27_i27 } + replace{ @atom:60 @atom:60_b28_a28_d28_i28 } + replace{ @atom:61 @atom:61_b29_a29_d29_i29 } + replace{ @atom:62 @atom:62_b30_a30_d30_i30 } + replace{ @atom:63 @atom:63_b31_a31_d31_i31 } + replace{ @atom:64 @atom:64_b32_a32_d32_i32 } + replace{ @atom:65 @atom:65_b31_a31_d31_i31 } + replace{ @atom:66 @atom:66_b32_a32_d32_i32 } + replace{ @atom:67 @atom:67_b33_a33_d33_i33 } + replace{ @atom:68 @atom:68_b34_a34_d34_i34 } + replace{ @atom:69 @atom:69_b35_a35_d35_i35 } + replace{ @atom:70 @atom:70_b36_a36_d36_i36 } + replace{ @atom:71 @atom:71_b37_a37_d37_i37 } + replace{ @atom:72 @atom:72_b38_a38_d38_i38 } + replace{ @atom:73 @atom:73_b39_a39_d39_i39 } + replace{ @atom:74 @atom:74_b40_a40_d40_i40 } + replace{ @atom:75 @atom:75_b41_a41_d41_i41 } + replace{ @atom:76 @atom:76_b42_a42_d42_i42 } + replace{ @atom:77 @atom:77_b43_a43_d43_i43 } + replace{ @atom:78 @atom:78_b44_a44_d44_i44 } + replace{ @atom:79 @atom:79_b45_a45_d45_i45 } + replace{ @atom:80 @atom:80_b13_a13_d13_i13 } + replace{ @atom:81 @atom:81_b13_a13_d13_i13 } + replace{ @atom:82 @atom:82_b13_a13_d13_i13 } + replace{ @atom:83 @atom:83_b13_a13_d13_i13 } + replace{ @atom:84 @atom:84_b13_a13_d13_i13 } + replace{ @atom:85 @atom:85_b46_a46_d46_i46 } + replace{ @atom:86 @atom:86_b47_a47_d47_i47 } + replace{ @atom:87 @atom:87_b47_a47_d47_i47 } + replace{ @atom:88 @atom:88_b47_a47_d47_i47 } + replace{ @atom:89 @atom:89_b46_a46_d46_i46 } + replace{ @atom:90 @atom:90_b48_a48_d48_i48 } + replace{ @atom:91 @atom:91_b49_a49_d49_i49 } + replace{ @atom:92 @atom:92_b48_a48_d48_i48 } + replace{ @atom:93 @atom:93_b13_a13_d13_i13 } + replace{ @atom:94 @atom:94_b13_a13_d13_i13 } + replace{ @atom:95 @atom:95_b50_a50_d50_i50 } + replace{ @atom:96 @atom:96_b5_a5_d5_i5 } + replace{ @atom:97 @atom:97_b7_a7_d7_i7 } + replace{ @atom:98 @atom:98_b46_a46_d46_i46 } + replace{ @atom:99 @atom:99_b13_a13_d13_i13 } + replace{ @atom:100 @atom:100_b13_a13_d13_i13 } + replace{ @atom:101 @atom:101_b13_a13_d13_i13 } + replace{ @atom:102 @atom:102_b13_a13_d13_i13 } + replace{ @atom:103 @atom:103_b13_a13_d13_i13 } + replace{ @atom:104 @atom:104_b5_a5_d5_i5 } + replace{ @atom:105 @atom:105_b7_a7_d7_i7 } + replace{ @atom:106 @atom:106_b1_a1_d1_i1 } + replace{ @atom:107 @atom:107_b46_a46_d46_i46 } + replace{ @atom:108 @atom:108_b48_a48_d48_i48 } + replace{ @atom:109 @atom:109_b5_a5_d5_i5 } + replace{ @atom:110 @atom:110_b7_a7_d7_i7 } + replace{ @atom:111 @atom:111_b5_a5_d5_i5 } + replace{ @atom:112 @atom:112_b7_a7_d7_i7 } + replace{ @atom:113 @atom:113_b5_a5_d5_i5 } + replace{ @atom:114 @atom:114_b7_a7_d7_i7 } + replace{ @atom:115 @atom:115_b13_a13_d13_i13 } + replace{ @atom:116 @atom:116_b13_a13_d13_i13 } + replace{ @atom:117 @atom:117_b13_a13_d13_i13 } + replace{ @atom:118 @atom:118_b46_a46_d46_i46 } + replace{ @atom:119 @atom:119_b20_a20_d20_i20 } + replace{ @atom:120 @atom:120_b50_a50_d50_i50 } + replace{ @atom:121 @atom:121_b20_a20_d20_i20 } + replace{ @atom:122 @atom:122_b20_a20_d20_i20 } + replace{ @atom:123 @atom:123_b13_a13_d13_i13 } + replace{ @atom:124 @atom:124_b13_a13_d13_i13 } + replace{ @atom:125 @atom:125_b13_a13_d13_i13 } + replace{ @atom:126 @atom:126_b13_a13_d13_i13 } + replace{ @atom:127 @atom:127_b46_a46_d46_i46 } + replace{ @atom:128 @atom:128_b20_a20_d20_i20 } + replace{ @atom:129 @atom:129_b5_a5_d5_i5 } + replace{ @atom:130 @atom:130_b7_a7_d7_i7 } + replace{ @atom:131 @atom:131_b51_a51_d51_i51 } + replace{ @atom:132 @atom:132_b46_a46_d46_i46 } + replace{ @atom:133 @atom:133_b51_a51_d51_i51 } + replace{ @atom:134 @atom:134_b46_a46_d46_i46 } + replace{ @atom:135 @atom:135_b51_a51_d51_i51 } + replace{ @atom:136 @atom:136_b46_a46_d46_i46 } + replace{ @atom:137 @atom:137_b51_a51_d51_i51 } + replace{ @atom:138 @atom:138_b46_a46_d46_i46 } + replace{ @atom:139 @atom:139_b51_a51_d51_i51 } + replace{ @atom:140 @atom:140_b51_a51_d51_i51 } + replace{ @atom:141 @atom:141_b48_a48_d48_i48 } + replace{ @atom:142 @atom:142_b15_a15_d15_i15 } + replace{ @atom:143 @atom:143_b15_a15_d15_i15 } + replace{ @atom:144 @atom:144_b16_a16_d16_i16 } + replace{ @atom:145 @atom:145_b16_a16_d16_i16 } + replace{ @atom:146 @atom:146_b17_a17_d17_i17 } + replace{ @atom:147 @atom:147_b17_a17_d17_i17 } + replace{ @atom:148 @atom:148_b13_a13_d13_i13 } + replace{ @atom:149 @atom:149_b13_a13_d13_i13 } + replace{ @atom:150 @atom:150_b13_a13_d13_i13 } + replace{ @atom:151 @atom:151_b13_a13_d13_i13 } + replace{ @atom:152 @atom:152_b13_a13_d13_i13 } + replace{ @atom:153 @atom:153_b13_a13_d13_i13 } + replace{ @atom:154 @atom:154_b13_a13_d13_i13 } + replace{ @atom:155 @atom:155_b13_a13_d13_i13 } + replace{ @atom:156 @atom:156_b13_a13_d13_i13 } + replace{ @atom:157 @atom:157_b13_a13_d13_i13 } + replace{ @atom:158 @atom:158_b13_a13_d13_i13 } + replace{ @atom:159 @atom:159_b13_a13_d13_i13 } + replace{ @atom:160 @atom:160_b13_a13_d13_i13 } + replace{ @atom:161 @atom:161_b13_a13_d13_i13 } + replace{ @atom:162 @atom:162_b13_a13_d13_i13 } + replace{ @atom:163 @atom:163_b48_a48_d48_i48 } + replace{ @atom:164 @atom:164_b16_a16_d16_i16 } + replace{ @atom:165 @atom:165_b13_a13_d13_i13 } + replace{ @atom:166 @atom:166_b13_a13_d13_i13 } + replace{ @atom:167 @atom:167_b13_a13_d13_i13 } + replace{ @atom:168 @atom:168_b21_a21_d21_i21 } + replace{ @atom:169 @atom:169_b47_a47_d47_i47 } + replace{ @atom:170 @atom:170_b48_a48_d48_i48 } + replace{ @atom:171 @atom:171_b13_a13_d13_i13 } + replace{ @atom:172 @atom:172_b13_a13_d13_i13 } + replace{ @atom:173 @atom:173_b3_a3_d3_i3 } + replace{ @atom:174 @atom:174_b3_a3_d3_i3 } + replace{ @atom:175 @atom:175_b3_a3_d3_i3 } + replace{ @atom:176 @atom:176_b3_a3_d3_i3 } + replace{ @atom:177 @atom:177_b3_a3_d3_i3 } + replace{ @atom:178 @atom:178_b4_a4_d4_i4 } + replace{ @atom:179 @atom:179_b24_a24_d24_i24 } + replace{ @atom:180 @atom:180_b24_a24_d24_i24 } + replace{ @atom:181 @atom:181_b24_a24_d24_i24 } + replace{ @atom:182 @atom:182_b45_a45_d45_i45 } + replace{ @atom:183 @atom:183_b45_a45_d45_i45 } + replace{ @atom:184 @atom:184_b13_a13_d13_i13 } + replace{ @atom:185 @atom:185_b13_a13_d13_i13 } + replace{ @atom:186 @atom:186_b13_a13_d13_i13 } + replace{ @atom:187 @atom:187_b13_a13_d13_i13 } + replace{ @atom:188 @atom:188_b13_a13_d13_i13 } + replace{ @atom:189 @atom:189_b3_a3_d3_i3 } + replace{ @atom:190 @atom:190_b4_a4_d4_i4 } + replace{ @atom:191 @atom:191_b24_a24_d24_i24 } + replace{ @atom:192 @atom:192_b45_a45_d45_i45 } + replace{ @atom:193 @atom:193_b24_a24_d24_i24 } + replace{ @atom:194 @atom:194_b3_a3_d3_i3 } + replace{ @atom:195 @atom:195_b4_a4_d4_i4 } + replace{ @atom:196 @atom:196_b45_a45_d45_i45 } + replace{ @atom:197 @atom:197_b46_a46_d46_i46 } + replace{ @atom:198 @atom:198_b13_a13_d13_i13 } + replace{ @atom:199 @atom:199_b13_a13_d13_i13 } + replace{ @atom:200 @atom:200_b13_a13_d13_i13 } + replace{ @atom:201 @atom:201_b13_a13_d13_i13 } + replace{ @atom:202 @atom:202_b48_a48_d48_i48 } + replace{ @atom:203 @atom:203_b19_a19_d19_i19 } + replace{ @atom:204 @atom:204_b18_a18_d18_i18 } + replace{ @atom:205 @atom:205_b48_a48_d48_i48 } + replace{ @atom:206 @atom:206_b21_a21_d21_i21 } + replace{ @atom:207 @atom:207_b24_a24_d24_i24 } + replace{ @atom:208 @atom:208_b48_a48_d48_i48 } + replace{ @atom:209 @atom:209_b3_a3_d3_i3 } + replace{ @atom:210 @atom:210_b4_a4_d4_i4 } + replace{ @atom:211 @atom:211_b5_a5_d5_i5 } + replace{ @atom:212 @atom:212_b7_a7_d7_i7 } + replace{ @atom:213 @atom:213_b3_a3_d3_i3 } + replace{ @atom:214 @atom:214_b52_a52_d52_i52 } + replace{ @atom:215 @atom:215_b13_a13_d13_i13 } + replace{ @atom:216 @atom:216_b13_a13_d13_i13 } + replace{ @atom:217 @atom:217_b13_a13_d13_i13 } + replace{ @atom:218 @atom:218_b13_a13_d13_i13 } + replace{ @atom:219 @atom:219_b3_a3_d3_i3 } + replace{ @atom:220 @atom:220_b4_a4_d4_i4 } + replace{ @atom:221 @atom:221_b46_a46_d46_i46 } + replace{ @atom:222 @atom:222_b3_a3_d3_i3 } + replace{ @atom:223 @atom:223_b4_a4_d4_i4 } + replace{ @atom:224 @atom:224_b46_a46_d46_i46 } + replace{ @atom:225 @atom:225_b13_a13_d13_i13 } + replace{ @atom:226 @atom:226_b13_a13_d13_i13 } + replace{ @atom:227 @atom:227_b13_a13_d13_i13 } + replace{ @atom:228 @atom:228_b13_a13_d13_i13 } + replace{ @atom:229 @atom:229_b53_a53_d53_i53 } + replace{ @atom:230 @atom:230_b53_a53_d53_i53 } + replace{ @atom:231 @atom:231_b53_a53_d53_i53 } + replace{ @atom:232 @atom:232_b54_a54_d54_i54 } + replace{ @atom:233 @atom:233_b54_a54_d54_i54 } + replace{ @atom:234 @atom:234_b13_a13_d13_i13 } + replace{ @atom:235 @atom:235_b13_a13_d13_i13 } + replace{ @atom:236 @atom:236_b13_a13_d13_i13 } + replace{ @atom:237 @atom:237_b13_a13_d13_i13 } + replace{ @atom:238 @atom:238_b13_a13_d13_i13 } + replace{ @atom:239 @atom:239_b13_a13_d13_i13 } + replace{ @atom:240 @atom:240_b13_a13_d13_i13 } + replace{ @atom:241 @atom:241_b13_a13_d13_i13 } + replace{ @atom:242 @atom:242_b13_a13_d13_i13 } + replace{ @atom:243 @atom:243_b55_a55_d55_i55 } + replace{ @atom:244 @atom:244_b54_a54_d54_i54 } + replace{ @atom:245 @atom:245_b48_a48_d48_i48 } + replace{ @atom:246 @atom:246_b55_a55_d55_i55 } + replace{ @atom:247 @atom:247_b54_a54_d54_i54 } + replace{ @atom:248 @atom:248_b13_a13_d13_i13 } + replace{ @atom:249 @atom:249_b13_a13_d13_i13 } + replace{ @atom:250 @atom:250_b13_a13_d13_i13 } + replace{ @atom:251 @atom:251_b13_a13_d13_i13 } + replace{ @atom:252 @atom:252_b53_a53_d53_i53 } + replace{ @atom:253 @atom:253_b54_a54_d54_i54 } + replace{ @atom:254 @atom:254_b56_a56_d56_i56 } + replace{ @atom:255 @atom:255_b48_a48_d48_i48 } + replace{ @atom:256 @atom:256_b55_a55_d55_i55 } + replace{ @atom:257 @atom:257_b45_a45_d45_i45 } + replace{ @atom:258 @atom:258_b48_a48_d48_i48 } + replace{ @atom:259 @atom:259_b49_a49_d49_i49 } + replace{ @atom:260 @atom:260_b48_a48_d48_i48 } + replace{ @atom:261 @atom:261_b49_a49_d49_i49 } + replace{ @atom:262 @atom:262_b57_a57_d57_i57 } + replace{ @atom:263 @atom:263_b3_a3_d3_i3 } + replace{ @atom:264 @atom:264_b57_a57_d57_i57 } + replace{ @atom:265 @atom:265_b3_a3_d3_i3 } + replace{ @atom:266 @atom:266_b47_a47_d47_i47 } + replace{ @atom:267 @atom:267_b47_a47_d47_i47 } + replace{ @atom:268 @atom:268_b45_a45_d45_i45 } + replace{ @atom:269 @atom:269_b4_a4_d4_i4 } + replace{ @atom:270 @atom:270_b45_a45_d45_i45 } + replace{ @atom:271 @atom:271_b4_a4_d4_i4 } + replace{ @atom:272 @atom:272_b46_a46_d46_i46 } + replace{ @atom:273 @atom:273_b46_a46_d46_i46 } + replace{ @atom:274 @atom:274_b13_a13_d13_i13 } + replace{ @atom:275 @atom:275_b46_a46_d46_i46 } + replace{ @atom:276 @atom:276_b57_a57_d57_i57 } + replace{ @atom:277 @atom:277_b3_a3_d3_i3 } + replace{ @atom:278 @atom:278_b56_a56_d56_i56 } + replace{ @atom:279 @atom:279_b48_a48_d48_i48 } + replace{ @atom:280 @atom:280_b47_a47_d47_i47 } + replace{ @atom:281 @atom:281_b47_a47_d47_i47 } + replace{ @atom:282 @atom:282_b45_a45_d45_i45 } + replace{ @atom:283 @atom:283_b4_a4_d4_i4 } + replace{ @atom:284 @atom:284_b55_a55_d55_i55 } + replace{ @atom:285 @atom:285_b45_a45_d45_i45 } + replace{ @atom:286 @atom:286_b45_a45_d45_i45 } + replace{ @atom:287 @atom:287_b46_a46_d46_i46 } + replace{ @atom:288 @atom:288_b58_a58_d58_i58 } + replace{ @atom:289 @atom:289_b56_a56_d56_i56 } + replace{ @atom:290 @atom:290_b59_a59_d59_i59 } + replace{ @atom:291 @atom:291_b56_a56_d56_i56 } + replace{ @atom:292 @atom:292_b60_a60_d60_i60 } + replace{ @atom:293 @atom:293_b60_a60_d60_i60 } + replace{ @atom:294 @atom:294_b48_a48_d48_i48 } + replace{ @atom:295 @atom:295_b61_a61_d61_i61 } + replace{ @atom:296 @atom:296_b62_a62_d62_i62 } + replace{ @atom:297 @atom:297_b57_a57_d57_i57 } + replace{ @atom:298 @atom:298_b63_a63_d63_i63 } + replace{ @atom:299 @atom:299_b55_a55_d55_i55 } + replace{ @atom:300 @atom:300_b45_a45_d45_i45 } + replace{ @atom:301 @atom:301_b45_a45_d45_i45 } + replace{ @atom:302 @atom:302_b63_a63_d63_i63 } + replace{ @atom:303 @atom:303_b45_a45_d45_i45 } + replace{ @atom:304 @atom:304_b57_a57_d57_i57 } + replace{ @atom:305 @atom:305_b48_a48_d48_i48 } + replace{ @atom:306 @atom:306_b56_a56_d56_i56 } + replace{ @atom:307 @atom:307_b60_a60_d60_i60 } + replace{ @atom:308 @atom:308_b60_a60_d60_i60 } + replace{ @atom:309 @atom:309_b3_a3_d3_i3 } + replace{ @atom:310 @atom:310_b45_a45_d45_i45 } + replace{ @atom:311 @atom:311_b55_a55_d55_i55 } + replace{ @atom:312 @atom:312_b45_a45_d45_i45 } + replace{ @atom:313 @atom:313_b4_a4_d4_i4 } + replace{ @atom:314 @atom:314_b13_a13_d13_i13 } + replace{ @atom:315 @atom:315_b46_a46_d46_i46 } + replace{ @atom:316 @atom:316_b13_a13_d13_i13 } + replace{ @atom:317 @atom:317_b46_a46_d46_i46 } + replace{ @atom:318 @atom:318_b13_a13_d13_i13 } + replace{ @atom:319 @atom:319_b46_a46_d46_i46 } + replace{ @atom:320 @atom:320_b57_a57_d57_i57 } + replace{ @atom:321 @atom:321_b3_a3_d3_i3 } + replace{ @atom:322 @atom:322_b57_a57_d57_i57 } + replace{ @atom:323 @atom:323_b48_a48_d48_i48 } + replace{ @atom:324 @atom:324_b47_a47_d47_i47 } + replace{ @atom:325 @atom:325_b47_a47_d47_i47 } + replace{ @atom:326 @atom:326_b45_a45_d45_i45 } + replace{ @atom:327 @atom:327_b4_a4_d4_i4 } + replace{ @atom:328 @atom:328_b45_a45_d45_i45 } + replace{ @atom:329 @atom:329_b55_a55_d55_i55 } + replace{ @atom:330 @atom:330_b45_a45_d45_i45 } + replace{ @atom:331 @atom:331_b45_a45_d45_i45 } + replace{ @atom:332 @atom:332_b49_a49_d49_i49 } + replace{ @atom:333 @atom:333_b58_a58_d58_i58 } + replace{ @atom:334 @atom:334_b13_a13_d13_i13 } + replace{ @atom:335 @atom:335_b46_a46_d46_i46 } + replace{ @atom:336 @atom:336_b64_a64_d64_i64 } + replace{ @atom:337 @atom:337_b52_a52_d52_i52 } + replace{ @atom:338 @atom:338_b20_a20_d20_i20 } + replace{ @atom:339 @atom:339_b13_a13_d13_i13 } + replace{ @atom:340 @atom:340_b47_a47_d47_i47 } + replace{ @atom:341 @atom:341_b21_a21_d21_i21 } + replace{ @atom:342 @atom:342_b47_a47_d47_i47 } + replace{ @atom:343 @atom:343_b1_a1_d1_i1 } + replace{ @atom:344 @atom:344_b21_a21_d21_i21 } + replace{ @atom:345 @atom:345_b65_a65_d65_i65 } + replace{ @atom:346 @atom:346_b66_a66_d66_i66 } + replace{ @atom:347 @atom:347_b67_a67_d67_i67 } + replace{ @atom:348 @atom:348_b68_a68_d68_i68 } + replace{ @atom:349 @atom:349_b69_a69_d69_i69 } + replace{ @atom:350 @atom:350_b70_a70_d70_i70 } + replace{ @atom:351 @atom:351_b71_a71_d71_i71 } + replace{ @atom:352 @atom:352_b72_a72_d72_i72 } + replace{ @atom:353 @atom:353_b73_a73_d73_i73 } + replace{ @atom:354 @atom:354_b74_a74_d74_i74 } + replace{ @atom:355 @atom:355_b75_a75_d75_i75 } + replace{ @atom:356 @atom:356_b76_a76_d76_i76 } + replace{ @atom:357 @atom:357_b6_a6_d6_i6 } + replace{ @atom:358 @atom:358_b46_a46_d46_i46 } + replace{ @atom:359 @atom:359_b15_a15_d15_i15 } + replace{ @atom:360 @atom:360_b6_a6_d6_i6 } + replace{ @atom:361 @atom:361_b46_a46_d46_i46 } + replace{ @atom:362 @atom:362_b5_a5_d5_i5 } + replace{ @atom:363 @atom:363_b13_a13_d13_i13 } + replace{ @atom:364 @atom:364_b46_a46_d46_i46 } + replace{ @atom:365 @atom:365_b19_a19_d19_i19 } + replace{ @atom:366 @atom:366_b18_a18_d18_i18 } + replace{ @atom:367 @atom:367_b6_a6_d6_i6 } + replace{ @atom:368 @atom:368_b46_a46_d46_i46 } + replace{ @atom:369 @atom:369_b53_a53_d53_i53 } + replace{ @atom:370 @atom:370_b45_a45_d45_i45 } + replace{ @atom:371 @atom:371_b6_a6_d6_i6 } + replace{ @atom:372 @atom:372_b46_a46_d46_i46 } + replace{ @atom:373 @atom:373_b13_a13_d13_i13 } + replace{ @atom:374 @atom:374_b46_a46_d46_i46 } + replace{ @atom:375 @atom:375_b33_a33_d33_i33 } + replace{ @atom:376 @atom:376_b5_a5_d5_i5 } + replace{ @atom:377 @atom:377_b7_a7_d7_i7 } + replace{ @atom:378 @atom:378_b77_a77_d77_i77 } + replace{ @atom:379 @atom:379_b78_a78_d78_i78 } + replace{ @atom:380 @atom:380_b20_a20_d20_i20 } + replace{ @atom:381 @atom:381_b64_a64_d64_i64 } + replace{ @atom:382 @atom:382_b52_a52_d52_i52 } + replace{ @atom:383 @atom:383_b20_a20_d20_i20 } + replace{ @atom:384 @atom:384_b13_a13_d13_i13 } + replace{ @atom:385 @atom:385_b46_a46_d46_i46 } + replace{ @atom:386 @atom:386_b64_a64_d64_i64 } + replace{ @atom:387 @atom:387_b52_a52_d52_i52 } + replace{ @atom:388 @atom:388_b20_a20_d20_i20 } + replace{ @atom:389 @atom:389_b13_a13_d13_i13 } + replace{ @atom:390 @atom:390_b46_a46_d46_i46 } + replace{ @atom:391 @atom:391_b64_a64_d64_i64 } + replace{ @atom:392 @atom:392_b52_a52_d52_i52 } + replace{ @atom:393 @atom:393_b20_a20_d20_i20 } + replace{ @atom:394 @atom:394_b13_a13_d13_i13 } + replace{ @atom:395 @atom:395_b46_a46_d46_i46 } + replace{ @atom:396 @atom:396_b13_a13_d13_i13 } + replace{ @atom:397 @atom:397_b46_a46_d46_i46 } + replace{ @atom:398 @atom:398_b48_a48_d48_i48 } + replace{ @atom:399 @atom:399_b13_a13_d13_i13 } + replace{ @atom:400 @atom:400_b46_a46_d46_i46 } + replace{ @atom:401 @atom:401_b48_a48_d48_i48 } + replace{ @atom:402 @atom:402_b13_a13_d13_i13 } + replace{ @atom:403 @atom:403_b46_a46_d46_i46 } + replace{ @atom:404 @atom:404_b48_a48_d48_i48 } + replace{ @atom:405 @atom:405_b13_a13_d13_i13 } + replace{ @atom:406 @atom:406_b3_a3_d3_i3 } + replace{ @atom:407 @atom:407_b4_a4_d4_i4 } + replace{ @atom:408 @atom:408_b20_a20_d20_i20 } + replace{ @atom:409 @atom:409_b13_a13_d13_i13 } + replace{ @atom:410 @atom:410_b46_a46_d46_i46 } + replace{ @atom:411 @atom:411_b3_a3_d3_i3 } + replace{ @atom:412 @atom:412_b3_a3_d3_i3 } + replace{ @atom:413 @atom:413_b48_a48_d48_i48 } + replace{ @atom:414 @atom:414_b20_a20_d20_i20 } + replace{ @atom:415 @atom:415_b79_a79_d79_i79 } + replace{ @atom:416 @atom:416_b23_a23_d23_i23 } + replace{ @atom:417 @atom:417_b13_a13_d13_i13 } + replace{ @atom:418 @atom:418_b46_a46_d46_i46 } + replace{ @atom:419 @atom:419_b24_a24_d24_i24 } + replace{ @atom:420 @atom:420_b45_a45_d45_i45 } + replace{ @atom:421 @atom:421_b24_a24_d24_i24 } + replace{ @atom:422 @atom:422_b45_a45_d45_i45 } + replace{ @atom:423 @atom:423_b13_a13_d13_i13 } + replace{ @atom:424 @atom:424_b46_a46_d46_i46 } + replace{ @atom:425 @atom:425_b13_a13_d13_i13 } + replace{ @atom:426 @atom:426_b46_a46_d46_i46 } + replace{ @atom:427 @atom:427_b13_a13_d13_i13 } + replace{ @atom:428 @atom:428_b46_a46_d46_i46 } + replace{ @atom:429 @atom:429_b48_a48_d48_i48 } + replace{ @atom:430 @atom:430_b48_a48_d48_i48 } + replace{ @atom:431 @atom:431_b13_a13_d13_i13 } + replace{ @atom:432 @atom:432_b13_a13_d13_i13 } + replace{ @atom:433 @atom:433_b13_a13_d13_i13 } + replace{ @atom:434 @atom:434_b79_a79_d79_i79 } + replace{ @atom:435 @atom:435_b23_a23_d23_i23 } + replace{ @atom:436 @atom:436_b22_a22_d22_i22 } + replace{ @atom:437 @atom:437_b22_a22_d22_i22 } + replace{ @atom:438 @atom:438_b23_a23_d23_i23 } + replace{ @atom:439 @atom:439_b13_a13_d13_i13 } + replace{ @atom:440 @atom:440_b13_a13_d13_i13 } + replace{ @atom:441 @atom:441_b80_a80_d80_i80 } + replace{ @atom:442 @atom:442_b60_a60_d60_i60 } + replace{ @atom:443 @atom:443_b81_a81_d81_i81 } + replace{ @atom:444 @atom:444_b57_a57_d57_i57 } + replace{ @atom:445 @atom:445_b45_a45_d45_i45 } + replace{ @atom:446 @atom:446_b13_a13_d13_i13 } + replace{ @atom:447 @atom:447_b82_a82_d82_i82 } + replace{ @atom:448 @atom:448_b83_a83_d83_i83 } + replace{ @atom:449 @atom:449_b84_a84_d84_i84 } + replace{ @atom:450 @atom:450_b82_a82_d82_i82 } + replace{ @atom:451 @atom:451_b85_a85_d85_i85 } + replace{ @atom:452 @atom:452_b61_a61_d61_i61 } + replace{ @atom:453 @atom:453_b57_a57_d57_i57 } + replace{ @atom:454 @atom:454_b45_a45_d45_i45 } + replace{ @atom:455 @atom:455_b84_a84_d84_i84 } + replace{ @atom:456 @atom:456_b13_a13_d13_i13 } + replace{ @atom:457 @atom:457_b13_a13_d13_i13 } + replace{ @atom:458 @atom:458_b47_a47_d47_i47 } + replace{ @atom:459 @atom:459_b47_a47_d47_i47 } + replace{ @atom:460 @atom:460_b86_a86_d86_i86 } + replace{ @atom:461 @atom:461_b56_a56_d56_i56 } + replace{ @atom:462 @atom:462_b48_a48_d48_i48 } + replace{ @atom:463 @atom:463_b48_a48_d48_i48 } + replace{ @atom:464 @atom:464_b48_a48_d48_i48 } + replace{ @atom:465 @atom:465_b49_a49_d49_i49 } + replace{ @atom:466 @atom:466_b49_a49_d49_i49 } + replace{ @atom:467 @atom:467_b49_a49_d49_i49 } + replace{ @atom:468 @atom:468_b56_a56_d56_i56 } + replace{ @atom:469 @atom:469_b48_a48_d48_i48 } + replace{ @atom:470 @atom:470_b49_a49_d49_i49 } + replace{ @atom:471 @atom:471_b56_a56_d56_i56 } + replace{ @atom:472 @atom:472_b59_a59_d59_i59 } + replace{ @atom:473 @atom:473_b48_a48_d48_i48 } + replace{ @atom:474 @atom:474_b48_a48_d48_i48 } + replace{ @atom:475 @atom:475_b49_a49_d49_i49 } + replace{ @atom:476 @atom:476_b49_a49_d49_i49 } + replace{ @atom:477 @atom:477_b49_a49_d49_i49 } + replace{ @atom:478 @atom:478_b56_a56_d56_i56 } + replace{ @atom:479 @atom:479_b48_a48_d48_i48 } + replace{ @atom:480 @atom:480_b48_a48_d48_i48 } + replace{ @atom:481 @atom:481_b49_a49_d49_i49 } + replace{ @atom:482 @atom:482_b49_a49_d49_i49 } + replace{ @atom:483 @atom:483_b57_a57_d57_i57 } + replace{ @atom:484 @atom:484_b84_a84_d84_i84 } + replace{ @atom:485 @atom:485_b87_a87_d87_i87 } + replace{ @atom:486 @atom:486_b45_a45_d45_i45 } + replace{ @atom:487 @atom:487_b49_a49_d49_i49 } + replace{ @atom:488 @atom:488_b49_a49_d49_i49 } + replace{ @atom:489 @atom:489_b57_a57_d57_i57 } + replace{ @atom:490 @atom:490_b61_a61_d61_i61 } + replace{ @atom:491 @atom:491_b88_a88_d88_i88 } + replace{ @atom:492 @atom:492_b87_a87_d87_i87 } + replace{ @atom:493 @atom:493_b84_a84_d84_i84 } + replace{ @atom:494 @atom:494_b45_a45_d45_i45 } + replace{ @atom:495 @atom:495_b49_a49_d49_i49 } + replace{ @atom:496 @atom:496_b49_a49_d49_i49 } + replace{ @atom:497 @atom:497_b49_a49_d49_i49 } + replace{ @atom:498 @atom:498_b57_a57_d57_i57 } + replace{ @atom:499 @atom:499_b82_a82_d82_i82 } + replace{ @atom:500 @atom:500_b61_a61_d61_i61 } + replace{ @atom:501 @atom:501_b83_a83_d83_i83 } + replace{ @atom:502 @atom:502_b84_a84_d84_i84 } + replace{ @atom:503 @atom:503_b45_a45_d45_i45 } + replace{ @atom:504 @atom:504_b49_a49_d49_i49 } + replace{ @atom:505 @atom:505_b49_a49_d49_i49 } + replace{ @atom:506 @atom:506_b49_a49_d49_i49 } + replace{ @atom:507 @atom:507_b20_a20_d20_i20 } + replace{ @atom:508 @atom:508_b84_a84_d84_i84 } + replace{ @atom:509 @atom:509_b87_a87_d87_i87 } + replace{ @atom:510 @atom:510_b49_a49_d49_i49 } + replace{ @atom:511 @atom:511_b49_a49_d49_i49 } + replace{ @atom:512 @atom:512_b20_a20_d20_i20 } + replace{ @atom:513 @atom:513_b82_a82_d82_i82 } + replace{ @atom:514 @atom:514_b61_a61_d61_i61 } + replace{ @atom:515 @atom:515_b83_a83_d83_i83 } + replace{ @atom:516 @atom:516_b84_a84_d84_i84 } + replace{ @atom:517 @atom:517_b49_a49_d49_i49 } + replace{ @atom:518 @atom:518_b49_a49_d49_i49 } + replace{ @atom:519 @atom:519_b49_a49_d49_i49 } + replace{ @atom:520 @atom:520_b20_a20_d20_i20 } + replace{ @atom:521 @atom:521_b61_a61_d61_i61 } + replace{ @atom:522 @atom:522_b88_a88_d88_i88 } + replace{ @atom:523 @atom:523_b87_a87_d87_i87 } + replace{ @atom:524 @atom:524_b84_a84_d84_i84 } + replace{ @atom:525 @atom:525_b49_a49_d49_i49 } + replace{ @atom:526 @atom:526_b49_a49_d49_i49 } + replace{ @atom:527 @atom:527_b49_a49_d49_i49 } + replace{ @atom:528 @atom:528_b57_a57_d57_i57 } + replace{ @atom:529 @atom:529_b84_a84_d84_i84 } + replace{ @atom:530 @atom:530_b87_a87_d87_i87 } + replace{ @atom:531 @atom:531_b48_a48_d48_i48 } + replace{ @atom:532 @atom:532_b48_a48_d48_i48 } + replace{ @atom:533 @atom:533_b48_a48_d48_i48 } + replace{ @atom:534 @atom:534_b48_a48_d48_i48 } + replace{ @atom:535 @atom:535_b81_a81_d81_i81 } + replace{ @atom:536 @atom:536_b60_a60_d60_i60 } + replace{ @atom:537 @atom:537_b45_a45_d45_i45 } + replace{ @atom:538 @atom:538_b49_a49_d49_i49 } + replace{ @atom:539 @atom:539_b49_a49_d49_i49 } + replace{ @atom:540 @atom:540_b49_a49_d49_i49 } + replace{ @atom:541 @atom:541_b49_a49_d49_i49 } + replace{ @atom:542 @atom:542_b49_a49_d49_i49 } + replace{ @atom:543 @atom:543_b49_a49_d49_i49 } + replace{ @atom:544 @atom:544_b56_a56_d56_i56 } + replace{ @atom:545 @atom:545_b48_a48_d48_i48 } + replace{ @atom:546 @atom:546_b48_a48_d48_i48 } + replace{ @atom:547 @atom:547_b48_a48_d48_i48 } + replace{ @atom:548 @atom:548_b48_a48_d48_i48 } + replace{ @atom:549 @atom:549_b48_a48_d48_i48 } + replace{ @atom:550 @atom:550_b48_a48_d48_i48 } + replace{ @atom:551 @atom:551_b48_a48_d48_i48 } + replace{ @atom:552 @atom:552_b48_a48_d48_i48 } + replace{ @atom:553 @atom:553_b48_a48_d48_i48 } + replace{ @atom:554 @atom:554_b49_a49_d49_i49 } + replace{ @atom:555 @atom:555_b49_a49_d49_i49 } + replace{ @atom:556 @atom:556_b49_a49_d49_i49 } + replace{ @atom:557 @atom:557_b49_a49_d49_i49 } + replace{ @atom:558 @atom:558_b49_a49_d49_i49 } + replace{ @atom:559 @atom:559_b49_a49_d49_i49 } + replace{ @atom:560 @atom:560_b49_a49_d49_i49 } + replace{ @atom:561 @atom:561_b56_a56_d56_i56 } + replace{ @atom:562 @atom:562_b59_a59_d59_i59 } + replace{ @atom:563 @atom:563_b56_a56_d56_i56 } + replace{ @atom:564 @atom:564_b60_a60_d60_i60 } + replace{ @atom:565 @atom:565_b60_a60_d60_i60 } + replace{ @atom:566 @atom:566_b48_a48_d48_i48 } + replace{ @atom:567 @atom:567_b61_a61_d61_i61 } + replace{ @atom:568 @atom:568_b62_a62_d62_i62 } + replace{ @atom:569 @atom:569_b57_a57_d57_i57 } + replace{ @atom:570 @atom:570_b49_a49_d49_i49 } + replace{ @atom:571 @atom:571_b49_a49_d49_i49 } + replace{ @atom:572 @atom:572_b49_a49_d49_i49 } + replace{ @atom:573 @atom:573_b45_a45_d45_i45 } + replace{ @atom:574 @atom:574_b16_a16_d16_i16 } + replace{ @atom:575 @atom:575_b82_a82_d82_i82 } + replace{ @atom:576 @atom:576_b61_a61_d61_i61 } + replace{ @atom:577 @atom:577_b83_a83_d83_i83 } + replace{ @atom:578 @atom:578_b84_a84_d84_i84 } + replace{ @atom:579 @atom:579_b49_a49_d49_i49 } + replace{ @atom:580 @atom:580_b49_a49_d49_i49 } + replace{ @atom:581 @atom:581_b49_a49_d49_i49 } + replace{ @atom:582 @atom:582_b56_a56_d56_i56 } + replace{ @atom:583 @atom:583_b59_a59_d59_i59 } + replace{ @atom:584 @atom:584_b49_a49_d49_i49 } + replace{ @atom:585 @atom:585_b48_a48_d48_i48 } + replace{ @atom:586 @atom:586_b13_a13_d13_i13 } + replace{ @atom:587 @atom:587_b56_a56_d56_i56 } + replace{ @atom:588 @atom:588_b48_a48_d48_i48 } + replace{ @atom:589 @atom:589_b48_a48_d48_i48 } + replace{ @atom:590 @atom:590_b48_a48_d48_i48 } + replace{ @atom:591 @atom:591_b48_a48_d48_i48 } + replace{ @atom:592 @atom:592_b48_a48_d48_i48 } + replace{ @atom:593 @atom:593_b48_a48_d48_i48 } + replace{ @atom:594 @atom:594_b49_a49_d49_i49 } + replace{ @atom:595 @atom:595_b49_a49_d49_i49 } + replace{ @atom:596 @atom:596_b49_a49_d49_i49 } + replace{ @atom:597 @atom:597_b49_a49_d49_i49 } + replace{ @atom:598 @atom:598_b57_a57_d57_i57 } + replace{ @atom:599 @atom:599_b82_a82_d82_i82 } + replace{ @atom:600 @atom:600_b61_a61_d61_i61 } + replace{ @atom:601 @atom:601_b83_a83_d83_i83 } + replace{ @atom:602 @atom:602_b84_a84_d84_i84 } + replace{ @atom:603 @atom:603_b13_a13_d13_i13 } + replace{ @atom:604 @atom:604_b49_a49_d49_i49 } + replace{ @atom:605 @atom:605_b49_a49_d49_i49 } + replace{ @atom:606 @atom:606_b49_a49_d49_i49 } + replace{ @atom:607 @atom:607_b46_a46_d46_i46 } + replace{ @atom:608 @atom:608_b13_a13_d13_i13 } + replace{ @atom:609 @atom:609_b13_a13_d13_i13 } + replace{ @atom:610 @atom:610_b13_a13_d13_i13 } + replace{ @atom:611 @atom:611_b13_a13_d13_i13 } + replace{ @atom:612 @atom:612_b13_a13_d13_i13 } + replace{ @atom:613 @atom:613_b13_a13_d13_i13 } + replace{ @atom:614 @atom:614_b13_a13_d13_i13 } + replace{ @atom:615 @atom:615_b13_a13_d13_i13 } + replace{ @atom:616 @atom:616_b13_a13_d13_i13 } + replace{ @atom:617 @atom:617_b13_a13_d13_i13 } + replace{ @atom:618 @atom:618_b13_a13_d13_i13 } + replace{ @atom:619 @atom:619_b13_a13_d13_i13 } + replace{ @atom:620 @atom:620_b13_a13_d13_i13 } + replace{ @atom:621 @atom:621_b13_a13_d13_i13 } + replace{ @atom:622 @atom:622_b13_a13_d13_i13 } + replace{ @atom:623 @atom:623_b15_a15_d15_i15 } + replace{ @atom:624 @atom:624_b17_a17_d17_i17 } + replace{ @atom:625 @atom:625_b48_a48_d48_i48 } + replace{ @atom:626 @atom:626_b89_a89_d89_i89 } + replace{ @atom:627 @atom:627_b90_a90_d90_i90 } + replace{ @atom:628 @atom:628_b91_a91_d91_i91 } + replace{ @atom:629 @atom:629_b91_a91_d91_i91 } + replace{ @atom:630 @atom:630_b13_a13_d13_i13 } + replace{ @atom:631 @atom:631_b86_a86_d86_i86 } + replace{ @atom:632 @atom:632_b86_a86_d86_i86 } + replace{ @atom:633 @atom:633_b86_a86_d86_i86 } + replace{ @atom:634 @atom:634_b86_a86_d86_i86 } + replace{ @atom:635 @atom:635_b86_a86_d86_i86 } + replace{ @atom:636 @atom:636_b86_a86_d86_i86 } + replace{ @atom:637 @atom:637_b16_a16_d16_i16 } + replace{ @atom:638 @atom:638_b92_a92_d92_i92 } + replace{ @atom:639 @atom:639_b93_a93_d93_i93 } + replace{ @atom:640 @atom:640_b94_a94_d94_i94 } + replace{ @atom:641 @atom:641_b95_a95_d95_i95 } + replace{ @atom:642 @atom:642_b13_a13_d13_i13 } + replace{ @atom:643 @atom:643_b46_a46_d46_i46 } + replace{ @atom:644 @atom:644_b96_a96_d96_i96 } + replace{ @atom:645 @atom:645_b97_a97_d97_i97 } + replace{ @atom:646 @atom:646_b98_a98_d98_i98 } + replace{ @atom:647 @atom:647_b99_a99_d99_i99 } + replace{ @atom:648 @atom:648_b100_a100_d100_i100 } + replace{ @atom:649 @atom:649_b47_a47_d47_i47 } + replace{ @atom:650 @atom:650_b21_a21_d21_i21 } + replace{ @atom:651 @atom:651_b46_a46_d46_i46 } + replace{ @atom:652 @atom:652_b91_a91_d91_i91 } + replace{ @atom:653 @atom:653_b91_a91_d91_i91 } + replace{ @atom:654 @atom:654_b91_a91_d91_i91 } + replace{ @atom:655 @atom:655_b48_a48_d48_i48 } + replace{ @atom:656 @atom:656_b49_a49_d49_i49 } + replace{ @atom:657 @atom:657_b48_a48_d48_i48 } + replace{ @atom:658 @atom:658_b49_a49_d49_i49 } + replace{ @atom:659 @atom:659_b48_a48_d48_i48 } + replace{ @atom:660 @atom:660_b1_a1_d1_i1 } + replace{ @atom:661 @atom:661_b48_a48_d48_i48 } + replace{ @atom:662 @atom:662_b1_a1_d1_i1 } + replace{ @atom:663 @atom:663_b65_a65_d65_i65 } + replace{ @atom:664 @atom:664_b2_a2_d2_i2 } + replace{ @atom:665 @atom:665_b48_a48_d48_i48 } + replace{ @atom:666 @atom:666_b13_a13_d13_i13 } + replace{ @atom:667 @atom:667_b1_a1_d1_i1 } + replace{ @atom:668 @atom:668_b48_a48_d48_i48 } + replace{ @atom:669 @atom:669_b1_a1_d1_i1 } + replace{ @atom:670 @atom:670_b48_a48_d48_i48 } + replace{ @atom:671 @atom:671_b65_a65_d65_i65 } + replace{ @atom:672 @atom:672_b48_a48_d48_i48 } + replace{ @atom:673 @atom:673_b66_a66_d66_i66 } + replace{ @atom:674 @atom:674_b91_a91_d91_i91 } + replace{ @atom:675 @atom:675_b15_a15_d15_i15 } + replace{ @atom:676 @atom:676_b48_a48_d48_i48 } + replace{ @atom:677 @atom:677_b48_a48_d48_i48 } + replace{ @atom:678 @atom:678_b48_a48_d48_i48 } + replace{ @atom:679 @atom:679_b48_a48_d48_i48 } + replace{ @atom:680 @atom:680_b48_a48_d48_i48 } + replace{ @atom:681 @atom:681_b49_a49_d49_i49 } + replace{ @atom:682 @atom:682_b49_a49_d49_i49 } + replace{ @atom:683 @atom:683_b48_a48_d48_i48 } + replace{ @atom:684 @atom:684_b55_a55_d55_i55 } + replace{ @atom:685 @atom:685_b45_a45_d45_i45 } + replace{ @atom:686 @atom:686_b45_a45_d45_i45 } + replace{ @atom:687 @atom:687_b49_a49_d49_i49 } + replace{ @atom:688 @atom:688_b13_a13_d13_i13 } + replace{ @atom:689 @atom:689_b13_a13_d13_i13 } + replace{ @atom:690 @atom:690_b101_a101_d101_i101 } + replace{ @atom:691 @atom:691_b56_a56_d56_i56 } + replace{ @atom:692 @atom:692_b101_a101_d101_i101 } + replace{ @atom:693 @atom:693_b48_a48_d48_i48 } + replace{ @atom:694 @atom:694_b18_a18_d18_i18 } + replace{ @atom:695 @atom:695_b19_a19_d19_i19 } + replace{ @atom:696 @atom:696_b13_a13_d13_i13 } + replace{ @atom:697 @atom:697_b13_a13_d13_i13 } + replace{ @atom:698 @atom:698_b13_a13_d13_i13 } + replace{ @atom:699 @atom:699_b13_a13_d13_i13 } + replace{ @atom:700 @atom:700_b46_a46_d46_i46 } + replace{ @atom:701 @atom:701_b102_a102_d102_i102 } + replace{ @atom:702 @atom:702_b103_a103_d103_i103 } + replace{ @atom:703 @atom:703_b13_a13_d13_i13 } + replace{ @atom:704 @atom:704_b46_a46_d46_i46 } + replace{ @atom:705 @atom:705_b13_a13_d13_i13 } + replace{ @atom:706 @atom:706_b13_a13_d13_i13 } + replace{ @atom:707 @atom:707_b13_a13_d13_i13 } + replace{ @atom:708 @atom:708_b102_a102_d102_i102 } + replace{ @atom:709 @atom:709_b48_a48_d48_i48 } + replace{ @atom:710 @atom:710_b13_a13_d13_i13 } + replace{ @atom:711 @atom:711_b56_a56_d56_i56 } + replace{ @atom:712 @atom:712_b4_a4_d4_i4 } + replace{ @atom:713 @atom:713_b3_a3_d3_i3 } + replace{ @atom:714 @atom:714_b20_a20_d20_i20 } + replace{ @atom:715 @atom:715_b13_a13_d13_i13 } + replace{ @atom:716 @atom:716_b13_a13_d13_i13 } + replace{ @atom:717 @atom:717_b13_a13_d13_i13 } + replace{ @atom:718 @atom:718_b46_a46_d46_i46 } + replace{ @atom:719 @atom:719_b46_a46_d46_i46 } + replace{ @atom:720 @atom:720_b46_a46_d46_i46 } + replace{ @atom:721 @atom:721_b20_a20_d20_i20 } + replace{ @atom:722 @atom:722_b104_a104_d104_i104 } + replace{ @atom:723 @atom:723_b13_a13_d13_i13 } + replace{ @atom:724 @atom:724_b13_a13_d13_i13 } + replace{ @atom:725 @atom:725_b46_a46_d46_i46 } + replace{ @atom:726 @atom:726_b64_a64_d64_i64 } + replace{ @atom:727 @atom:727_b1_a1_d1_i1 } + replace{ @atom:728 @atom:728_b24_a24_d24_i24 } + replace{ @atom:729 @atom:729_b4_a4_d4_i4 } + replace{ @atom:730 @atom:730_b44_a44_d44_i44 } + replace{ @atom:731 @atom:731_b44_a44_d44_i44 } + replace{ @atom:732 @atom:732_b44_a44_d44_i44 } + replace{ @atom:733 @atom:733_b13_a13_d13_i13 } + replace{ @atom:734 @atom:734_b13_a13_d13_i13 } + replace{ @atom:735 @atom:735_b13_a13_d13_i13 } + replace{ @atom:736 @atom:736_b13_a13_d13_i13 } + replace{ @atom:737 @atom:737_b13_a13_d13_i13 } + replace{ @atom:738 @atom:738_b13_a13_d13_i13 } + replace{ @atom:739 @atom:739_b45_a45_d45_i45 } + replace{ @atom:740 @atom:740_b45_a45_d45_i45 } + replace{ @atom:741 @atom:741_b46_a46_d46_i46 } + replace{ @atom:742 @atom:742_b13_a13_d13_i13 } + replace{ @atom:743 @atom:743_b13_a13_d13_i13 } + replace{ @atom:744 @atom:744_b13_a13_d13_i13 } + replace{ @atom:745 @atom:745_b13_a13_d13_i13 } + replace{ @atom:746 @atom:746_b48_a48_d48_i48 } + replace{ @atom:747 @atom:747_b48_a48_d48_i48 } + replace{ @atom:748 @atom:748_b48_a48_d48_i48 } + replace{ @atom:749 @atom:749_b13_a13_d13_i13 } + replace{ @atom:750 @atom:750_b13_a13_d13_i13 } + replace{ @atom:751 @atom:751_b13_a13_d13_i13 } + replace{ @atom:752 @atom:752_b13_a13_d13_i13 } + replace{ @atom:753 @atom:753_b13_a13_d13_i13 } + replace{ @atom:754 @atom:754_b13_a13_d13_i13 } + replace{ @atom:755 @atom:755_b19_a19_d19_i19 } + replace{ @atom:756 @atom:756_b46_a46_d46_i46 } + replace{ @atom:757 @atom:757_b19_a19_d19_i19 } + replace{ @atom:758 @atom:758_b19_a19_d19_i19 } + replace{ @atom:759 @atom:759_b19_a19_d19_i19 } + replace{ @atom:760 @atom:760_b46_a46_d46_i46 } + replace{ @atom:761 @atom:761_b51_a51_d51_i51 } + replace{ @atom:762 @atom:762_b51_a51_d51_i51 } + replace{ @atom:763 @atom:763_b51_a51_d51_i51 } + replace{ @atom:764 @atom:764_b5_a5_d5_i5 } + replace{ @atom:765 @atom:765_b7_a7_d7_i7 } + replace{ @atom:766 @atom:766_b105_a105_d105_i105 } + replace{ @atom:767 @atom:767_b105_a105_d105_i105 } + replace{ @atom:768 @atom:768_b105_a105_d105_i105 } + replace{ @atom:769 @atom:769_b19_a19_d19_i19 } + replace{ @atom:770 @atom:770_b53_a53_d53_i53 } + replace{ @atom:771 @atom:771_b54_a54_d54_i54 } + replace{ @atom:772 @atom:772_b13_a13_d13_i13 } + replace{ @atom:773 @atom:773_b13_a13_d13_i13 } + replace{ @atom:774 @atom:774_b13_a13_d13_i13 } + replace{ @atom:775 @atom:775_b13_a13_d13_i13 } + replace{ @atom:776 @atom:776_b84_a84_d84_i84 } + replace{ @atom:777 @atom:777_b87_a87_d87_i87 } + replace{ @atom:778 @atom:778_b86_a86_d86_i86 } + replace{ @atom:779 @atom:779_b86_a86_d86_i86 } + replace{ @atom:780 @atom:780_b46_a46_d46_i46 } + replace{ @atom:781 @atom:781_b13_a13_d13_i13 } + replace{ @atom:782 @atom:782_b3_a3_d3_i3 } + replace{ @atom:783 @atom:783_b53_a53_d53_i53 } + replace{ @atom:784 @atom:784_b52_a52_d52_i52 } + replace{ @atom:785 @atom:785_b54_a54_d54_i54 } + replace{ @atom:786 @atom:786_b1_a1_d1_i1 } + replace{ @atom:787 @atom:787_b13_a13_d13_i13 } + replace{ @atom:788 @atom:788_b46_a46_d46_i46 } + replace{ @atom:789 @atom:789_b13_a13_d13_i13 } + replace{ @atom:790 @atom:790_b13_a13_d13_i13 } + replace{ @atom:791 @atom:791_b13_a13_d13_i13 } + replace{ @atom:792 @atom:792_b13_a13_d13_i13 } + replace{ @atom:793 @atom:793_b13_a13_d13_i13 } + replace{ @atom:794 @atom:794_b13_a13_d13_i13 } + replace{ @atom:795 @atom:795_b1_a1_d1_i1 } + replace{ @atom:796 @atom:796_b13_a13_d13_i13 } + replace{ @atom:797 @atom:797_b46_a46_d46_i46 } + replace{ @atom:798 @atom:798_b13_a13_d13_i13 } + replace{ @atom:799 @atom:799_b13_a13_d13_i13 } + replace{ @atom:800 @atom:800_b21_a21_d21_i21 } + replace{ @atom:801 @atom:801_b13_a13_d13_i13 } + replace{ @atom:802 @atom:802_b46_a46_d46_i46 } + replace{ @atom:803 @atom:803_b13_a13_d13_i13 } + replace{ @atom:804 @atom:804_b13_a13_d13_i13 } + replace{ @atom:805 @atom:805_b65_a65_d65_i65 } + replace{ @atom:806 @atom:806_b13_a13_d13_i13 } + replace{ @atom:807 @atom:807_b46_a46_d46_i46 } + replace{ @atom:808 @atom:808_b13_a13_d13_i13 } + replace{ @atom:809 @atom:809_b13_a13_d13_i13 } + replace{ @atom:810 @atom:810_b1_a1_d1_i1 } + replace{ @atom:811 @atom:811_b21_a21_d21_i21 } + replace{ @atom:812 @atom:812_b65_a65_d65_i65 } + replace{ @atom:813 @atom:813_b48_a48_d48_i48 } + replace{ @atom:814 @atom:814_b20_a20_d20_i20 } + replace{ @atom:815 @atom:815_b13_a13_d13_i13 } + replace{ @atom:816 @atom:816_b1_a1_d1_i1 } + replace{ @atom:817 @atom:817_b24_a24_d24_i24 } + replace{ @atom:818 @atom:818_b48_a48_d48_i48 } + replace{ @atom:819 @atom:819_b13_a13_d13_i13 } + replace{ @atom:820 @atom:820_b3_a3_d3_i3 } + replace{ @atom:821 @atom:821_b3_a3_d3_i3 } + replace{ @atom:822 @atom:822_b4_a4_d4_i4 } + replace{ @atom:823 @atom:823_b24_a24_d24_i24 } + replace{ @atom:824 @atom:824_b45_a45_d45_i45 } + replace{ @atom:825 @atom:825_b5_a5_d5_i5 } + replace{ @atom:826 @atom:826_b7_a7_d7_i7 } + replace{ @atom:827 @atom:827_b13_a13_d13_i13 } + replace{ @atom:828 @atom:828_b13_a13_d13_i13 } + replace{ @atom:829 @atom:829_b86_a86_d86_i86 } + replace{ @atom:830 @atom:830_b86_a86_d86_i86 } + replace{ @atom:831 @atom:831_b86_a86_d86_i86 } + replace{ @atom:832 @atom:832_b86_a86_d86_i86 } + replace{ @atom:833 @atom:833_b48_a48_d48_i48 } + replace{ @atom:834 @atom:834_b106_a106_d106_i106 } + replace{ @atom:835 @atom:835_b13_a13_d13_i13 } + replace{ @atom:836 @atom:836_b13_a13_d13_i13 } + replace{ @atom:837 @atom:837_b13_a13_d13_i13 } + replace{ @atom:838 @atom:838_b66_a66_d66_i66 } + replace{ @atom:839 @atom:839_b46_a46_d46_i46 } + replace{ @atom:840 @atom:840_b24_a24_d24_i24 } + replace{ @atom:841 @atom:841_b48_a48_d48_i48 } + replace{ @atom:842 @atom:842_b48_a48_d48_i48 } + replace{ @atom:843 @atom:843_b24_a24_d24_i24 } + replace{ @atom:844 @atom:844_b48_a48_d48_i48 } + replace{ @atom:845 @atom:845_b3_a3_d3_i3 } + replace{ @atom:846 @atom:846_b4_a4_d4_i4 } + replace{ @atom:847 @atom:847_b107_a107_d107_i107 } + replace{ @atom:848 @atom:848_b13_a13_d13_i13 } + replace{ @atom:849 @atom:849_b13_a13_d13_i13 } + replace{ @atom:850 @atom:850_b13_a13_d13_i13 } + replace{ @atom:851 @atom:851_b13_a13_d13_i13 } + replace{ @atom:852 @atom:852_b46_a46_d46_i46 } + replace{ @atom:853 @atom:853_b3_a3_d3_i3 } + replace{ @atom:854 @atom:854_b4_a4_d4_i4 } + replace{ @atom:855 @atom:855_b46_a46_d46_i46 } + replace{ @atom:856 @atom:856_b13_a13_d13_i13 } + replace{ @atom:857 @atom:857_b13_a13_d13_i13 } + replace{ @atom:858 @atom:858_b13_a13_d13_i13 } + replace{ @atom:859 @atom:859_b13_a13_d13_i13 } + replace{ @atom:860 @atom:860_b13_a13_d13_i13 } + replace{ @atom:861 @atom:861_b13_a13_d13_i13 } + replace{ @atom:862 @atom:862_b13_a13_d13_i13 } + replace{ @atom:863 @atom:863_b13_a13_d13_i13 } + replace{ @atom:864 @atom:864_b13_a13_d13_i13 } + replace{ @atom:865 @atom:865_b13_a13_d13_i13 } + replace{ @atom:866 @atom:866_b108_a108_d108_i108 } + replace{ @atom:867 @atom:867_b108_a108_d108_i108 } + replace{ @atom:868 @atom:868_b108_a108_d108_i108 } + replace{ @atom:869 @atom:869_b108_a108_d108_i108 } + replace{ @atom:870 @atom:870_b45_a45_d45_i45 } + replace{ @atom:871 @atom:871_b13_a13_d13_i13 } + replace{ @atom:872 @atom:872_b13_a13_d13_i13 } + replace{ @atom:873 @atom:873_b13_a13_d13_i13 } + replace{ @atom:874 @atom:874_b13_a13_d13_i13 } + replace{ @atom:875 @atom:875_b1_a1_d1_i1 } + replace{ @atom:876 @atom:876_b21_a21_d21_i21 } + replace{ @atom:877 @atom:877_b65_a65_d65_i65 } + replace{ @atom:878 @atom:878_b66_a66_d66_i66 } + replace{ @atom:879 @atom:879_b68_a68_d68_i68 } + replace{ @atom:880 @atom:880_b69_a69_d69_i69 } + replace{ @atom:881 @atom:881_b70_a70_d70_i70 } + replace{ @atom:882 @atom:882_b71_a71_d71_i71 } + replace{ @atom:883 @atom:883_b72_a72_d72_i72 } + replace{ @atom:884 @atom:884_b73_a73_d73_i73 } + replace{ @atom:885 @atom:885_b74_a74_d74_i74 } + replace{ @atom:886 @atom:886_b75_a75_d75_i75 } + replace{ @atom:887 @atom:887_b76_a76_d76_i76 } + replace{ @atom:888 @atom:888_b13_a13_d13_i13 } + replace{ @atom:889 @atom:889_b13_a13_d13_i13 } + replace{ @atom:890 @atom:890_b13_a13_d13_i13 } + replace{ @atom:891 @atom:891_b13_a13_d13_i13 } + replace{ @atom:892 @atom:892_b46_a46_d46_i46 } + replace{ @atom:893 @atom:893_b53_a53_d53_i53 } + replace{ @atom:894 @atom:894_b48_a48_d48_i48 } + replace{ @atom:895 @atom:895_b53_a53_d53_i53 } + replace{ @atom:896 @atom:896_b48_a48_d48_i48 } + replace{ @atom:897 @atom:897_b109_a109_d109_i109 } + replace{ @atom:898 @atom:898_b109_a109_d109_i109 } + replace{ @atom:899 @atom:899_b46_a46_d46_i46 } + replace{ @atom:900 @atom:900_b47_a47_d47_i47 } + replace{ @atom:901 @atom:901_b47_a47_d47_i47 } + replace{ @atom:902 @atom:902_b47_a47_d47_i47 } + replace{ @atom:903 @atom:903_b110_a110_d110_i110 } + 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 } + + + + + # --------------- 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 @@ -2752,917 +3685,11 @@ OPLSAA { } #(end of pair_coeffs) - # ------- 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 } - replace{ @atom:4 @atom:4_b4_a4_d4_i4 } - replace{ @atom:5 @atom:5_b5_a5_d5_i5 } - replace{ @atom:6 @atom:6_b6_a6_d6_i6 } - replace{ @atom:7 @atom:7_b7_a7_d7_i7 } - replace{ @atom:8 @atom:8_b8_a8_d8_i8 } - replace{ @atom:9 @atom:9_b6_a6_d6_i6 } - replace{ @atom:10 @atom:10_b6_a6_d6_i6 } - replace{ @atom:11 @atom:11_b6_a6_d6_i6 } - replace{ @atom:12 @atom:12_b6_a6_d6_i6 } - replace{ @atom:13 @atom:13_b2_a2_d2_i2 } - replace{ @atom:14 @atom:14_b9_a9_d9_i9 } - replace{ @atom:15 @atom:15_b10_a10_d10_i10 } - replace{ @atom:16 @atom:16_b11_a11_d11_i11 } - replace{ @atom:17 @atom:17_b12_a12_d12_i12 } - replace{ @atom:18 @atom:18_b13_a13_d13_i13 } - replace{ @atom:19 @atom:19_b14_a14_d14_i14 } - replace{ @atom:20 @atom:20_b5_a5_d5_i5 } - replace{ @atom:21 @atom:21_b7_a7_d7_i7 } - replace{ @atom:22 @atom:22_b6_a6_d6_i6 } - replace{ @atom:23 @atom:23_b2_a2_d2_i2 } - replace{ @atom:24 @atom:24_b15_a15_d15_i15 } - replace{ @atom:25 @atom:25_b15_a15_d15_i15 } - replace{ @atom:26 @atom:26_b16_a16_d16_i16 } - replace{ @atom:27 @atom:27_b16_a16_d16_i16 } - replace{ @atom:28 @atom:28_b17_a17_d17_i17 } - replace{ @atom:29 @atom:29_b17_a17_d17_i17 } - replace{ @atom:30 @atom:30_b6_a6_d6_i6 } - replace{ @atom:31 @atom:31_b2_a2_d2_i2 } - replace{ @atom:32 @atom:32_b6_a6_d6_i6 } - replace{ @atom:33 @atom:33_b2_a2_d2_i2 } - replace{ @atom:34 @atom:34_b6_a6_d6_i6 } - replace{ @atom:35 @atom:35_b2_a2_d2_i2 } - replace{ @atom:36 @atom:36_b18_a18_d18_i18 } - replace{ @atom:37 @atom:37_b19_a19_d19_i19 } - replace{ @atom:38 @atom:38_b6_a6_d6_i6 } - replace{ @atom:39 @atom:39_b10_a10_d10_i10 } - replace{ @atom:40 @atom:40_b13_a13_d13_i13 } - replace{ @atom:41 @atom:41_b20_a20_d20_i20 } - replace{ @atom:42 @atom:42_b6_a6_d6_i6 } - replace{ @atom:43 @atom:43_b2_a2_d2_i2 } - replace{ @atom:44 @atom:44_b2_a2_d2_i2 } - replace{ @atom:45 @atom:45_b21_a21_d21_i21 } - replace{ @atom:46 @atom:46_b10_a10_d10_i10 } - replace{ @atom:47 @atom:47_b21_a21_d21_i21 } - replace{ @atom:48 @atom:48_b13_a13_d13_i13 } - replace{ @atom:49 @atom:49_b21_a21_d21_i21 } - replace{ @atom:50 @atom:50_b22_a22_d22_i22 } - replace{ @atom:51 @atom:51_b23_a23_d23_i23 } - replace{ @atom:52 @atom:52_b6_a6_d6_i6 } - replace{ @atom:53 @atom:53_b4_a4_d4_i4 } - replace{ @atom:54 @atom:54_b24_a24_d24_i24 } - replace{ @atom:55 @atom:55_b3_a3_d3_i3 } - replace{ @atom:56 @atom:56_b6_a6_d6_i6 } - replace{ @atom:57 @atom:57_b25_a25_d25_i25 } - replace{ @atom:58 @atom:58_b26_a26_d26_i26 } - replace{ @atom:59 @atom:59_b27_a27_d27_i27 } - replace{ @atom:60 @atom:60_b28_a28_d28_i28 } - replace{ @atom:61 @atom:61_b29_a29_d29_i29 } - replace{ @atom:62 @atom:62_b30_a30_d30_i30 } - replace{ @atom:63 @atom:63_b31_a31_d31_i31 } - replace{ @atom:64 @atom:64_b32_a32_d32_i32 } - replace{ @atom:65 @atom:65_b31_a31_d31_i31 } - replace{ @atom:66 @atom:66_b32_a32_d32_i32 } - replace{ @atom:67 @atom:67_b33_a33_d33_i33 } - replace{ @atom:68 @atom:68_b34_a34_d34_i34 } - replace{ @atom:69 @atom:69_b35_a35_d35_i35 } - replace{ @atom:70 @atom:70_b36_a36_d36_i36 } - replace{ @atom:71 @atom:71_b37_a37_d37_i37 } - replace{ @atom:72 @atom:72_b38_a38_d38_i38 } - replace{ @atom:73 @atom:73_b39_a39_d39_i39 } - replace{ @atom:74 @atom:74_b40_a40_d40_i40 } - replace{ @atom:75 @atom:75_b41_a41_d41_i41 } - replace{ @atom:76 @atom:76_b42_a42_d42_i42 } - replace{ @atom:77 @atom:77_b43_a43_d43_i43 } - replace{ @atom:78 @atom:78_b44_a44_d44_i44 } - replace{ @atom:79 @atom:79_b45_a45_d45_i45 } - replace{ @atom:80 @atom:80_b13_a13_d13_i13 } - replace{ @atom:81 @atom:81_b13_a13_d13_i13 } - replace{ @atom:82 @atom:82_b13_a13_d13_i13 } - replace{ @atom:83 @atom:83_b13_a13_d13_i13 } - replace{ @atom:84 @atom:84_b13_a13_d13_i13 } - replace{ @atom:85 @atom:85_b46_a46_d46_i46 } - replace{ @atom:86 @atom:86_b47_a47_d47_i47 } - replace{ @atom:87 @atom:87_b47_a47_d47_i47 } - replace{ @atom:88 @atom:88_b47_a47_d47_i47 } - replace{ @atom:89 @atom:89_b46_a46_d46_i46 } - replace{ @atom:90 @atom:90_b48_a48_d48_i48 } - replace{ @atom:91 @atom:91_b49_a49_d49_i49 } - replace{ @atom:92 @atom:92_b48_a48_d48_i48 } - replace{ @atom:93 @atom:93_b13_a13_d13_i13 } - replace{ @atom:94 @atom:94_b13_a13_d13_i13 } - replace{ @atom:95 @atom:95_b50_a50_d50_i50 } - replace{ @atom:96 @atom:96_b5_a5_d5_i5 } - replace{ @atom:97 @atom:97_b7_a7_d7_i7 } - replace{ @atom:98 @atom:98_b46_a46_d46_i46 } - replace{ @atom:99 @atom:99_b13_a13_d13_i13 } - replace{ @atom:100 @atom:100_b13_a13_d13_i13 } - replace{ @atom:101 @atom:101_b13_a13_d13_i13 } - replace{ @atom:102 @atom:102_b13_a13_d13_i13 } - replace{ @atom:103 @atom:103_b13_a13_d13_i13 } - replace{ @atom:104 @atom:104_b5_a5_d5_i5 } - replace{ @atom:105 @atom:105_b7_a7_d7_i7 } - replace{ @atom:106 @atom:106_b1_a1_d1_i1 } - replace{ @atom:107 @atom:107_b46_a46_d46_i46 } - replace{ @atom:108 @atom:108_b48_a48_d48_i48 } - replace{ @atom:109 @atom:109_b5_a5_d5_i5 } - replace{ @atom:110 @atom:110_b7_a7_d7_i7 } - replace{ @atom:111 @atom:111_b5_a5_d5_i5 } - replace{ @atom:112 @atom:112_b7_a7_d7_i7 } - replace{ @atom:113 @atom:113_b5_a5_d5_i5 } - replace{ @atom:114 @atom:114_b7_a7_d7_i7 } - replace{ @atom:115 @atom:115_b13_a13_d13_i13 } - replace{ @atom:116 @atom:116_b13_a13_d13_i13 } - replace{ @atom:117 @atom:117_b13_a13_d13_i13 } - replace{ @atom:118 @atom:118_b46_a46_d46_i46 } - replace{ @atom:119 @atom:119_b20_a20_d20_i20 } - replace{ @atom:120 @atom:120_b50_a50_d50_i50 } - replace{ @atom:121 @atom:121_b20_a20_d20_i20 } - replace{ @atom:122 @atom:122_b20_a20_d20_i20 } - replace{ @atom:123 @atom:123_b13_a13_d13_i13 } - replace{ @atom:124 @atom:124_b13_a13_d13_i13 } - replace{ @atom:125 @atom:125_b13_a13_d13_i13 } - replace{ @atom:126 @atom:126_b13_a13_d13_i13 } - replace{ @atom:127 @atom:127_b46_a46_d46_i46 } - replace{ @atom:128 @atom:128_b20_a20_d20_i20 } - replace{ @atom:129 @atom:129_b5_a5_d5_i5 } - replace{ @atom:130 @atom:130_b7_a7_d7_i7 } - replace{ @atom:131 @atom:131_b51_a51_d51_i51 } - replace{ @atom:132 @atom:132_b46_a46_d46_i46 } - replace{ @atom:133 @atom:133_b51_a51_d51_i51 } - replace{ @atom:134 @atom:134_b46_a46_d46_i46 } - replace{ @atom:135 @atom:135_b51_a51_d51_i51 } - replace{ @atom:136 @atom:136_b46_a46_d46_i46 } - replace{ @atom:137 @atom:137_b51_a51_d51_i51 } - replace{ @atom:138 @atom:138_b46_a46_d46_i46 } - replace{ @atom:139 @atom:139_b51_a51_d51_i51 } - replace{ @atom:140 @atom:140_b51_a51_d51_i51 } - replace{ @atom:141 @atom:141_b48_a48_d48_i48 } - replace{ @atom:142 @atom:142_b15_a15_d15_i15 } - replace{ @atom:143 @atom:143_b15_a15_d15_i15 } - replace{ @atom:144 @atom:144_b16_a16_d16_i16 } - replace{ @atom:145 @atom:145_b16_a16_d16_i16 } - replace{ @atom:146 @atom:146_b17_a17_d17_i17 } - replace{ @atom:147 @atom:147_b17_a17_d17_i17 } - replace{ @atom:148 @atom:148_b13_a13_d13_i13 } - replace{ @atom:149 @atom:149_b13_a13_d13_i13 } - replace{ @atom:150 @atom:150_b13_a13_d13_i13 } - replace{ @atom:151 @atom:151_b13_a13_d13_i13 } - replace{ @atom:152 @atom:152_b13_a13_d13_i13 } - replace{ @atom:153 @atom:153_b13_a13_d13_i13 } - replace{ @atom:154 @atom:154_b13_a13_d13_i13 } - replace{ @atom:155 @atom:155_b13_a13_d13_i13 } - replace{ @atom:156 @atom:156_b13_a13_d13_i13 } - replace{ @atom:157 @atom:157_b13_a13_d13_i13 } - replace{ @atom:158 @atom:158_b13_a13_d13_i13 } - replace{ @atom:159 @atom:159_b13_a13_d13_i13 } - replace{ @atom:160 @atom:160_b13_a13_d13_i13 } - replace{ @atom:161 @atom:161_b13_a13_d13_i13 } - replace{ @atom:162 @atom:162_b13_a13_d13_i13 } - replace{ @atom:163 @atom:163_b48_a48_d48_i48 } - replace{ @atom:164 @atom:164_b16_a16_d16_i16 } - replace{ @atom:165 @atom:165_b13_a13_d13_i13 } - replace{ @atom:166 @atom:166_b13_a13_d13_i13 } - replace{ @atom:167 @atom:167_b13_a13_d13_i13 } - replace{ @atom:168 @atom:168_b21_a21_d21_i21 } - replace{ @atom:169 @atom:169_b47_a47_d47_i47 } - replace{ @atom:170 @atom:170_b48_a48_d48_i48 } - replace{ @atom:171 @atom:171_b13_a13_d13_i13 } - replace{ @atom:172 @atom:172_b13_a13_d13_i13 } - replace{ @atom:173 @atom:173_b3_a3_d3_i3 } - replace{ @atom:174 @atom:174_b3_a3_d3_i3 } - replace{ @atom:175 @atom:175_b3_a3_d3_i3 } - replace{ @atom:176 @atom:176_b3_a3_d3_i3 } - replace{ @atom:177 @atom:177_b3_a3_d3_i3 } - replace{ @atom:178 @atom:178_b4_a4_d4_i4 } - replace{ @atom:179 @atom:179_b24_a24_d24_i24 } - replace{ @atom:180 @atom:180_b24_a24_d24_i24 } - replace{ @atom:181 @atom:181_b24_a24_d24_i24 } - replace{ @atom:182 @atom:182_b45_a45_d45_i45 } - replace{ @atom:183 @atom:183_b45_a45_d45_i45 } - replace{ @atom:184 @atom:184_b13_a13_d13_i13 } - replace{ @atom:185 @atom:185_b13_a13_d13_i13 } - replace{ @atom:186 @atom:186_b13_a13_d13_i13 } - replace{ @atom:187 @atom:187_b13_a13_d13_i13 } - replace{ @atom:188 @atom:188_b13_a13_d13_i13 } - replace{ @atom:189 @atom:189_b3_a3_d3_i3 } - replace{ @atom:190 @atom:190_b4_a4_d4_i4 } - replace{ @atom:191 @atom:191_b24_a24_d24_i24 } - replace{ @atom:192 @atom:192_b45_a45_d45_i45 } - replace{ @atom:193 @atom:193_b24_a24_d24_i24 } - replace{ @atom:194 @atom:194_b3_a3_d3_i3 } - replace{ @atom:195 @atom:195_b4_a4_d4_i4 } - replace{ @atom:196 @atom:196_b45_a45_d45_i45 } - replace{ @atom:197 @atom:197_b46_a46_d46_i46 } - replace{ @atom:198 @atom:198_b13_a13_d13_i13 } - replace{ @atom:199 @atom:199_b13_a13_d13_i13 } - replace{ @atom:200 @atom:200_b13_a13_d13_i13 } - replace{ @atom:201 @atom:201_b13_a13_d13_i13 } - replace{ @atom:202 @atom:202_b48_a48_d48_i48 } - replace{ @atom:203 @atom:203_b19_a19_d19_i19 } - replace{ @atom:204 @atom:204_b18_a18_d18_i18 } - replace{ @atom:205 @atom:205_b48_a48_d48_i48 } - replace{ @atom:206 @atom:206_b21_a21_d21_i21 } - replace{ @atom:207 @atom:207_b24_a24_d24_i24 } - replace{ @atom:208 @atom:208_b48_a48_d48_i48 } - replace{ @atom:209 @atom:209_b3_a3_d3_i3 } - replace{ @atom:210 @atom:210_b4_a4_d4_i4 } - replace{ @atom:211 @atom:211_b5_a5_d5_i5 } - replace{ @atom:212 @atom:212_b7_a7_d7_i7 } - replace{ @atom:213 @atom:213_b3_a3_d3_i3 } - replace{ @atom:214 @atom:214_b52_a52_d52_i52 } - replace{ @atom:215 @atom:215_b13_a13_d13_i13 } - replace{ @atom:216 @atom:216_b13_a13_d13_i13 } - replace{ @atom:217 @atom:217_b13_a13_d13_i13 } - replace{ @atom:218 @atom:218_b13_a13_d13_i13 } - replace{ @atom:219 @atom:219_b3_a3_d3_i3 } - replace{ @atom:220 @atom:220_b4_a4_d4_i4 } - replace{ @atom:221 @atom:221_b46_a46_d46_i46 } - replace{ @atom:222 @atom:222_b3_a3_d3_i3 } - replace{ @atom:223 @atom:223_b4_a4_d4_i4 } - replace{ @atom:224 @atom:224_b46_a46_d46_i46 } - replace{ @atom:225 @atom:225_b13_a13_d13_i13 } - replace{ @atom:226 @atom:226_b13_a13_d13_i13 } - replace{ @atom:227 @atom:227_b13_a13_d13_i13 } - replace{ @atom:228 @atom:228_b13_a13_d13_i13 } - replace{ @atom:229 @atom:229_b53_a53_d53_i53 } - replace{ @atom:230 @atom:230_b53_a53_d53_i53 } - replace{ @atom:231 @atom:231_b53_a53_d53_i53 } - replace{ @atom:232 @atom:232_b54_a54_d54_i54 } - replace{ @atom:233 @atom:233_b54_a54_d54_i54 } - replace{ @atom:234 @atom:234_b13_a13_d13_i13 } - replace{ @atom:235 @atom:235_b13_a13_d13_i13 } - replace{ @atom:236 @atom:236_b13_a13_d13_i13 } - replace{ @atom:237 @atom:237_b13_a13_d13_i13 } - replace{ @atom:238 @atom:238_b13_a13_d13_i13 } - replace{ @atom:239 @atom:239_b13_a13_d13_i13 } - replace{ @atom:240 @atom:240_b13_a13_d13_i13 } - replace{ @atom:241 @atom:241_b13_a13_d13_i13 } - replace{ @atom:242 @atom:242_b13_a13_d13_i13 } - replace{ @atom:243 @atom:243_b55_a55_d55_i55 } - replace{ @atom:244 @atom:244_b54_a54_d54_i54 } - replace{ @atom:245 @atom:245_b48_a48_d48_i48 } - replace{ @atom:246 @atom:246_b55_a55_d55_i55 } - replace{ @atom:247 @atom:247_b54_a54_d54_i54 } - replace{ @atom:248 @atom:248_b13_a13_d13_i13 } - replace{ @atom:249 @atom:249_b13_a13_d13_i13 } - replace{ @atom:250 @atom:250_b13_a13_d13_i13 } - replace{ @atom:251 @atom:251_b13_a13_d13_i13 } - replace{ @atom:252 @atom:252_b53_a53_d53_i53 } - replace{ @atom:253 @atom:253_b54_a54_d54_i54 } - replace{ @atom:254 @atom:254_b56_a56_d56_i56 } - replace{ @atom:255 @atom:255_b48_a48_d48_i48 } - replace{ @atom:256 @atom:256_b55_a55_d55_i55 } - replace{ @atom:257 @atom:257_b45_a45_d45_i45 } - replace{ @atom:258 @atom:258_b48_a48_d48_i48 } - replace{ @atom:259 @atom:259_b49_a49_d49_i49 } - replace{ @atom:260 @atom:260_b48_a48_d48_i48 } - replace{ @atom:261 @atom:261_b49_a49_d49_i49 } - replace{ @atom:262 @atom:262_b57_a57_d57_i57 } - replace{ @atom:263 @atom:263_b3_a3_d3_i3 } - replace{ @atom:264 @atom:264_b57_a57_d57_i57 } - replace{ @atom:265 @atom:265_b3_a3_d3_i3 } - replace{ @atom:266 @atom:266_b47_a47_d47_i47 } - replace{ @atom:267 @atom:267_b47_a47_d47_i47 } - replace{ @atom:268 @atom:268_b45_a45_d45_i45 } - replace{ @atom:269 @atom:269_b4_a4_d4_i4 } - replace{ @atom:270 @atom:270_b45_a45_d45_i45 } - replace{ @atom:271 @atom:271_b4_a4_d4_i4 } - replace{ @atom:272 @atom:272_b46_a46_d46_i46 } - replace{ @atom:273 @atom:273_b46_a46_d46_i46 } - replace{ @atom:274 @atom:274_b13_a13_d13_i13 } - replace{ @atom:275 @atom:275_b46_a46_d46_i46 } - replace{ @atom:276 @atom:276_b57_a57_d57_i57 } - replace{ @atom:277 @atom:277_b3_a3_d3_i3 } - replace{ @atom:278 @atom:278_b56_a56_d56_i56 } - replace{ @atom:279 @atom:279_b48_a48_d48_i48 } - replace{ @atom:280 @atom:280_b47_a47_d47_i47 } - replace{ @atom:281 @atom:281_b47_a47_d47_i47 } - replace{ @atom:282 @atom:282_b45_a45_d45_i45 } - replace{ @atom:283 @atom:283_b4_a4_d4_i4 } - replace{ @atom:284 @atom:284_b55_a55_d55_i55 } - replace{ @atom:285 @atom:285_b45_a45_d45_i45 } - replace{ @atom:286 @atom:286_b45_a45_d45_i45 } - replace{ @atom:287 @atom:287_b46_a46_d46_i46 } - replace{ @atom:288 @atom:288_b58_a58_d58_i58 } - replace{ @atom:289 @atom:289_b56_a56_d56_i56 } - replace{ @atom:290 @atom:290_b59_a59_d59_i59 } - replace{ @atom:291 @atom:291_b56_a56_d56_i56 } - replace{ @atom:292 @atom:292_b60_a60_d60_i60 } - replace{ @atom:293 @atom:293_b60_a60_d60_i60 } - replace{ @atom:294 @atom:294_b48_a48_d48_i48 } - replace{ @atom:295 @atom:295_b61_a61_d61_i61 } - replace{ @atom:296 @atom:296_b62_a62_d62_i62 } - replace{ @atom:297 @atom:297_b57_a57_d57_i57 } - replace{ @atom:298 @atom:298_b63_a63_d63_i63 } - replace{ @atom:299 @atom:299_b55_a55_d55_i55 } - replace{ @atom:300 @atom:300_b45_a45_d45_i45 } - replace{ @atom:301 @atom:301_b45_a45_d45_i45 } - replace{ @atom:302 @atom:302_b63_a63_d63_i63 } - replace{ @atom:303 @atom:303_b45_a45_d45_i45 } - replace{ @atom:304 @atom:304_b57_a57_d57_i57 } - replace{ @atom:305 @atom:305_b48_a48_d48_i48 } - replace{ @atom:306 @atom:306_b56_a56_d56_i56 } - replace{ @atom:307 @atom:307_b60_a60_d60_i60 } - replace{ @atom:308 @atom:308_b60_a60_d60_i60 } - replace{ @atom:309 @atom:309_b3_a3_d3_i3 } - replace{ @atom:310 @atom:310_b45_a45_d45_i45 } - replace{ @atom:311 @atom:311_b55_a55_d55_i55 } - replace{ @atom:312 @atom:312_b45_a45_d45_i45 } - replace{ @atom:313 @atom:313_b4_a4_d4_i4 } - replace{ @atom:314 @atom:314_b13_a13_d13_i13 } - replace{ @atom:315 @atom:315_b46_a46_d46_i46 } - replace{ @atom:316 @atom:316_b13_a13_d13_i13 } - replace{ @atom:317 @atom:317_b46_a46_d46_i46 } - replace{ @atom:318 @atom:318_b13_a13_d13_i13 } - replace{ @atom:319 @atom:319_b46_a46_d46_i46 } - replace{ @atom:320 @atom:320_b57_a57_d57_i57 } - replace{ @atom:321 @atom:321_b3_a3_d3_i3 } - replace{ @atom:322 @atom:322_b57_a57_d57_i57 } - replace{ @atom:323 @atom:323_b48_a48_d48_i48 } - replace{ @atom:324 @atom:324_b47_a47_d47_i47 } - replace{ @atom:325 @atom:325_b47_a47_d47_i47 } - replace{ @atom:326 @atom:326_b45_a45_d45_i45 } - replace{ @atom:327 @atom:327_b4_a4_d4_i4 } - replace{ @atom:328 @atom:328_b45_a45_d45_i45 } - replace{ @atom:329 @atom:329_b55_a55_d55_i55 } - replace{ @atom:330 @atom:330_b45_a45_d45_i45 } - replace{ @atom:331 @atom:331_b45_a45_d45_i45 } - replace{ @atom:332 @atom:332_b49_a49_d49_i49 } - replace{ @atom:333 @atom:333_b58_a58_d58_i58 } - replace{ @atom:334 @atom:334_b13_a13_d13_i13 } - replace{ @atom:335 @atom:335_b46_a46_d46_i46 } - replace{ @atom:336 @atom:336_b64_a64_d64_i64 } - replace{ @atom:337 @atom:337_b52_a52_d52_i52 } - replace{ @atom:338 @atom:338_b20_a20_d20_i20 } - replace{ @atom:339 @atom:339_b13_a13_d13_i13 } - replace{ @atom:340 @atom:340_b47_a47_d47_i47 } - replace{ @atom:341 @atom:341_b21_a21_d21_i21 } - replace{ @atom:342 @atom:342_b47_a47_d47_i47 } - replace{ @atom:343 @atom:343_b1_a1_d1_i1 } - replace{ @atom:344 @atom:344_b21_a21_d21_i21 } - replace{ @atom:345 @atom:345_b65_a65_d65_i65 } - replace{ @atom:346 @atom:346_b66_a66_d66_i66 } - replace{ @atom:347 @atom:347_b67_a67_d67_i67 } - replace{ @atom:348 @atom:348_b68_a68_d68_i68 } - replace{ @atom:349 @atom:349_b69_a69_d69_i69 } - replace{ @atom:350 @atom:350_b70_a70_d70_i70 } - replace{ @atom:351 @atom:351_b71_a71_d71_i71 } - replace{ @atom:352 @atom:352_b72_a72_d72_i72 } - replace{ @atom:353 @atom:353_b73_a73_d73_i73 } - replace{ @atom:354 @atom:354_b74_a74_d74_i74 } - replace{ @atom:355 @atom:355_b75_a75_d75_i75 } - replace{ @atom:356 @atom:356_b76_a76_d76_i76 } - replace{ @atom:357 @atom:357_b6_a6_d6_i6 } - replace{ @atom:358 @atom:358_b46_a46_d46_i46 } - replace{ @atom:359 @atom:359_b15_a15_d15_i15 } - replace{ @atom:360 @atom:360_b6_a6_d6_i6 } - replace{ @atom:361 @atom:361_b46_a46_d46_i46 } - replace{ @atom:362 @atom:362_b5_a5_d5_i5 } - replace{ @atom:363 @atom:363_b13_a13_d13_i13 } - replace{ @atom:364 @atom:364_b46_a46_d46_i46 } - replace{ @atom:365 @atom:365_b19_a19_d19_i19 } - replace{ @atom:366 @atom:366_b18_a18_d18_i18 } - replace{ @atom:367 @atom:367_b6_a6_d6_i6 } - replace{ @atom:368 @atom:368_b46_a46_d46_i46 } - replace{ @atom:369 @atom:369_b53_a53_d53_i53 } - replace{ @atom:370 @atom:370_b45_a45_d45_i45 } - replace{ @atom:371 @atom:371_b6_a6_d6_i6 } - replace{ @atom:372 @atom:372_b46_a46_d46_i46 } - replace{ @atom:373 @atom:373_b13_a13_d13_i13 } - replace{ @atom:374 @atom:374_b46_a46_d46_i46 } - replace{ @atom:375 @atom:375_b33_a33_d33_i33 } - replace{ @atom:376 @atom:376_b5_a5_d5_i5 } - replace{ @atom:377 @atom:377_b7_a7_d7_i7 } - replace{ @atom:378 @atom:378_b77_a77_d77_i77 } - replace{ @atom:379 @atom:379_b78_a78_d78_i78 } - replace{ @atom:380 @atom:380_b20_a20_d20_i20 } - replace{ @atom:381 @atom:381_b64_a64_d64_i64 } - replace{ @atom:382 @atom:382_b52_a52_d52_i52 } - replace{ @atom:383 @atom:383_b20_a20_d20_i20 } - replace{ @atom:384 @atom:384_b13_a13_d13_i13 } - replace{ @atom:385 @atom:385_b46_a46_d46_i46 } - replace{ @atom:386 @atom:386_b64_a64_d64_i64 } - replace{ @atom:387 @atom:387_b52_a52_d52_i52 } - replace{ @atom:388 @atom:388_b20_a20_d20_i20 } - replace{ @atom:389 @atom:389_b13_a13_d13_i13 } - replace{ @atom:390 @atom:390_b46_a46_d46_i46 } - replace{ @atom:391 @atom:391_b64_a64_d64_i64 } - replace{ @atom:392 @atom:392_b52_a52_d52_i52 } - replace{ @atom:393 @atom:393_b20_a20_d20_i20 } - replace{ @atom:394 @atom:394_b13_a13_d13_i13 } - replace{ @atom:395 @atom:395_b46_a46_d46_i46 } - replace{ @atom:396 @atom:396_b13_a13_d13_i13 } - replace{ @atom:397 @atom:397_b46_a46_d46_i46 } - replace{ @atom:398 @atom:398_b48_a48_d48_i48 } - replace{ @atom:399 @atom:399_b13_a13_d13_i13 } - replace{ @atom:400 @atom:400_b46_a46_d46_i46 } - replace{ @atom:401 @atom:401_b48_a48_d48_i48 } - replace{ @atom:402 @atom:402_b13_a13_d13_i13 } - replace{ @atom:403 @atom:403_b46_a46_d46_i46 } - replace{ @atom:404 @atom:404_b48_a48_d48_i48 } - replace{ @atom:405 @atom:405_b13_a13_d13_i13 } - replace{ @atom:406 @atom:406_b3_a3_d3_i3 } - replace{ @atom:407 @atom:407_b4_a4_d4_i4 } - replace{ @atom:408 @atom:408_b20_a20_d20_i20 } - replace{ @atom:409 @atom:409_b13_a13_d13_i13 } - replace{ @atom:410 @atom:410_b46_a46_d46_i46 } - replace{ @atom:411 @atom:411_b3_a3_d3_i3 } - replace{ @atom:412 @atom:412_b3_a3_d3_i3 } - replace{ @atom:413 @atom:413_b48_a48_d48_i48 } - replace{ @atom:414 @atom:414_b20_a20_d20_i20 } - replace{ @atom:415 @atom:415_b79_a79_d79_i79 } - replace{ @atom:416 @atom:416_b23_a23_d23_i23 } - replace{ @atom:417 @atom:417_b13_a13_d13_i13 } - replace{ @atom:418 @atom:418_b46_a46_d46_i46 } - replace{ @atom:419 @atom:419_b24_a24_d24_i24 } - replace{ @atom:420 @atom:420_b45_a45_d45_i45 } - replace{ @atom:421 @atom:421_b24_a24_d24_i24 } - replace{ @atom:422 @atom:422_b45_a45_d45_i45 } - replace{ @atom:423 @atom:423_b13_a13_d13_i13 } - replace{ @atom:424 @atom:424_b46_a46_d46_i46 } - replace{ @atom:425 @atom:425_b13_a13_d13_i13 } - replace{ @atom:426 @atom:426_b46_a46_d46_i46 } - replace{ @atom:427 @atom:427_b13_a13_d13_i13 } - replace{ @atom:428 @atom:428_b46_a46_d46_i46 } - replace{ @atom:429 @atom:429_b48_a48_d48_i48 } - replace{ @atom:430 @atom:430_b48_a48_d48_i48 } - replace{ @atom:431 @atom:431_b13_a13_d13_i13 } - replace{ @atom:432 @atom:432_b13_a13_d13_i13 } - replace{ @atom:433 @atom:433_b13_a13_d13_i13 } - replace{ @atom:434 @atom:434_b79_a79_d79_i79 } - replace{ @atom:435 @atom:435_b23_a23_d23_i23 } - replace{ @atom:436 @atom:436_b22_a22_d22_i22 } - replace{ @atom:437 @atom:437_b22_a22_d22_i22 } - replace{ @atom:438 @atom:438_b23_a23_d23_i23 } - replace{ @atom:439 @atom:439_b13_a13_d13_i13 } - replace{ @atom:440 @atom:440_b13_a13_d13_i13 } - replace{ @atom:441 @atom:441_b80_a80_d80_i80 } - replace{ @atom:442 @atom:442_b60_a60_d60_i60 } - replace{ @atom:443 @atom:443_b81_a81_d81_i81 } - replace{ @atom:444 @atom:444_b57_a57_d57_i57 } - replace{ @atom:445 @atom:445_b45_a45_d45_i45 } - replace{ @atom:446 @atom:446_b13_a13_d13_i13 } - replace{ @atom:447 @atom:447_b82_a82_d82_i82 } - replace{ @atom:448 @atom:448_b83_a83_d83_i83 } - replace{ @atom:449 @atom:449_b84_a84_d84_i84 } - replace{ @atom:450 @atom:450_b82_a82_d82_i82 } - replace{ @atom:451 @atom:451_b85_a85_d85_i85 } - replace{ @atom:452 @atom:452_b61_a61_d61_i61 } - replace{ @atom:453 @atom:453_b57_a57_d57_i57 } - replace{ @atom:454 @atom:454_b45_a45_d45_i45 } - replace{ @atom:455 @atom:455_b84_a84_d84_i84 } - replace{ @atom:456 @atom:456_b13_a13_d13_i13 } - replace{ @atom:457 @atom:457_b13_a13_d13_i13 } - replace{ @atom:458 @atom:458_b47_a47_d47_i47 } - replace{ @atom:459 @atom:459_b47_a47_d47_i47 } - replace{ @atom:460 @atom:460_b86_a86_d86_i86 } - replace{ @atom:461 @atom:461_b56_a56_d56_i56 } - replace{ @atom:462 @atom:462_b48_a48_d48_i48 } - replace{ @atom:463 @atom:463_b48_a48_d48_i48 } - replace{ @atom:464 @atom:464_b48_a48_d48_i48 } - replace{ @atom:465 @atom:465_b49_a49_d49_i49 } - replace{ @atom:466 @atom:466_b49_a49_d49_i49 } - replace{ @atom:467 @atom:467_b49_a49_d49_i49 } - replace{ @atom:468 @atom:468_b56_a56_d56_i56 } - replace{ @atom:469 @atom:469_b48_a48_d48_i48 } - replace{ @atom:470 @atom:470_b49_a49_d49_i49 } - replace{ @atom:471 @atom:471_b56_a56_d56_i56 } - replace{ @atom:472 @atom:472_b59_a59_d59_i59 } - replace{ @atom:473 @atom:473_b48_a48_d48_i48 } - replace{ @atom:474 @atom:474_b48_a48_d48_i48 } - replace{ @atom:475 @atom:475_b49_a49_d49_i49 } - replace{ @atom:476 @atom:476_b49_a49_d49_i49 } - replace{ @atom:477 @atom:477_b49_a49_d49_i49 } - replace{ @atom:478 @atom:478_b56_a56_d56_i56 } - replace{ @atom:479 @atom:479_b48_a48_d48_i48 } - replace{ @atom:480 @atom:480_b48_a48_d48_i48 } - replace{ @atom:481 @atom:481_b49_a49_d49_i49 } - replace{ @atom:482 @atom:482_b49_a49_d49_i49 } - replace{ @atom:483 @atom:483_b57_a57_d57_i57 } - replace{ @atom:484 @atom:484_b84_a84_d84_i84 } - replace{ @atom:485 @atom:485_b87_a87_d87_i87 } - replace{ @atom:486 @atom:486_b45_a45_d45_i45 } - replace{ @atom:487 @atom:487_b49_a49_d49_i49 } - replace{ @atom:488 @atom:488_b49_a49_d49_i49 } - replace{ @atom:489 @atom:489_b57_a57_d57_i57 } - replace{ @atom:490 @atom:490_b61_a61_d61_i61 } - replace{ @atom:491 @atom:491_b88_a88_d88_i88 } - replace{ @atom:492 @atom:492_b87_a87_d87_i87 } - replace{ @atom:493 @atom:493_b84_a84_d84_i84 } - replace{ @atom:494 @atom:494_b45_a45_d45_i45 } - replace{ @atom:495 @atom:495_b49_a49_d49_i49 } - replace{ @atom:496 @atom:496_b49_a49_d49_i49 } - replace{ @atom:497 @atom:497_b49_a49_d49_i49 } - replace{ @atom:498 @atom:498_b57_a57_d57_i57 } - replace{ @atom:499 @atom:499_b82_a82_d82_i82 } - replace{ @atom:500 @atom:500_b61_a61_d61_i61 } - replace{ @atom:501 @atom:501_b83_a83_d83_i83 } - replace{ @atom:502 @atom:502_b84_a84_d84_i84 } - replace{ @atom:503 @atom:503_b45_a45_d45_i45 } - replace{ @atom:504 @atom:504_b49_a49_d49_i49 } - replace{ @atom:505 @atom:505_b49_a49_d49_i49 } - replace{ @atom:506 @atom:506_b49_a49_d49_i49 } - replace{ @atom:507 @atom:507_b20_a20_d20_i20 } - replace{ @atom:508 @atom:508_b84_a84_d84_i84 } - replace{ @atom:509 @atom:509_b87_a87_d87_i87 } - replace{ @atom:510 @atom:510_b49_a49_d49_i49 } - replace{ @atom:511 @atom:511_b49_a49_d49_i49 } - replace{ @atom:512 @atom:512_b20_a20_d20_i20 } - replace{ @atom:513 @atom:513_b82_a82_d82_i82 } - replace{ @atom:514 @atom:514_b61_a61_d61_i61 } - replace{ @atom:515 @atom:515_b83_a83_d83_i83 } - replace{ @atom:516 @atom:516_b84_a84_d84_i84 } - replace{ @atom:517 @atom:517_b49_a49_d49_i49 } - replace{ @atom:518 @atom:518_b49_a49_d49_i49 } - replace{ @atom:519 @atom:519_b49_a49_d49_i49 } - replace{ @atom:520 @atom:520_b20_a20_d20_i20 } - replace{ @atom:521 @atom:521_b61_a61_d61_i61 } - replace{ @atom:522 @atom:522_b88_a88_d88_i88 } - replace{ @atom:523 @atom:523_b87_a87_d87_i87 } - replace{ @atom:524 @atom:524_b84_a84_d84_i84 } - replace{ @atom:525 @atom:525_b49_a49_d49_i49 } - replace{ @atom:526 @atom:526_b49_a49_d49_i49 } - replace{ @atom:527 @atom:527_b49_a49_d49_i49 } - replace{ @atom:528 @atom:528_b57_a57_d57_i57 } - replace{ @atom:529 @atom:529_b84_a84_d84_i84 } - replace{ @atom:530 @atom:530_b87_a87_d87_i87 } - replace{ @atom:531 @atom:531_b48_a48_d48_i48 } - replace{ @atom:532 @atom:532_b48_a48_d48_i48 } - replace{ @atom:533 @atom:533_b48_a48_d48_i48 } - replace{ @atom:534 @atom:534_b48_a48_d48_i48 } - replace{ @atom:535 @atom:535_b81_a81_d81_i81 } - replace{ @atom:536 @atom:536_b60_a60_d60_i60 } - replace{ @atom:537 @atom:537_b45_a45_d45_i45 } - replace{ @atom:538 @atom:538_b49_a49_d49_i49 } - replace{ @atom:539 @atom:539_b49_a49_d49_i49 } - replace{ @atom:540 @atom:540_b49_a49_d49_i49 } - replace{ @atom:541 @atom:541_b49_a49_d49_i49 } - replace{ @atom:542 @atom:542_b49_a49_d49_i49 } - replace{ @atom:543 @atom:543_b49_a49_d49_i49 } - replace{ @atom:544 @atom:544_b56_a56_d56_i56 } - replace{ @atom:545 @atom:545_b48_a48_d48_i48 } - replace{ @atom:546 @atom:546_b48_a48_d48_i48 } - replace{ @atom:547 @atom:547_b48_a48_d48_i48 } - replace{ @atom:548 @atom:548_b48_a48_d48_i48 } - replace{ @atom:549 @atom:549_b48_a48_d48_i48 } - replace{ @atom:550 @atom:550_b48_a48_d48_i48 } - replace{ @atom:551 @atom:551_b48_a48_d48_i48 } - replace{ @atom:552 @atom:552_b48_a48_d48_i48 } - replace{ @atom:553 @atom:553_b48_a48_d48_i48 } - replace{ @atom:554 @atom:554_b49_a49_d49_i49 } - replace{ @atom:555 @atom:555_b49_a49_d49_i49 } - replace{ @atom:556 @atom:556_b49_a49_d49_i49 } - replace{ @atom:557 @atom:557_b49_a49_d49_i49 } - replace{ @atom:558 @atom:558_b49_a49_d49_i49 } - replace{ @atom:559 @atom:559_b49_a49_d49_i49 } - replace{ @atom:560 @atom:560_b49_a49_d49_i49 } - replace{ @atom:561 @atom:561_b56_a56_d56_i56 } - replace{ @atom:562 @atom:562_b59_a59_d59_i59 } - replace{ @atom:563 @atom:563_b56_a56_d56_i56 } - replace{ @atom:564 @atom:564_b60_a60_d60_i60 } - replace{ @atom:565 @atom:565_b60_a60_d60_i60 } - replace{ @atom:566 @atom:566_b48_a48_d48_i48 } - replace{ @atom:567 @atom:567_b61_a61_d61_i61 } - replace{ @atom:568 @atom:568_b62_a62_d62_i62 } - replace{ @atom:569 @atom:569_b57_a57_d57_i57 } - replace{ @atom:570 @atom:570_b49_a49_d49_i49 } - replace{ @atom:571 @atom:571_b49_a49_d49_i49 } - replace{ @atom:572 @atom:572_b49_a49_d49_i49 } - replace{ @atom:573 @atom:573_b45_a45_d45_i45 } - replace{ @atom:574 @atom:574_b16_a16_d16_i16 } - replace{ @atom:575 @atom:575_b82_a82_d82_i82 } - replace{ @atom:576 @atom:576_b61_a61_d61_i61 } - replace{ @atom:577 @atom:577_b83_a83_d83_i83 } - replace{ @atom:578 @atom:578_b84_a84_d84_i84 } - replace{ @atom:579 @atom:579_b49_a49_d49_i49 } - replace{ @atom:580 @atom:580_b49_a49_d49_i49 } - replace{ @atom:581 @atom:581_b49_a49_d49_i49 } - replace{ @atom:582 @atom:582_b56_a56_d56_i56 } - replace{ @atom:583 @atom:583_b59_a59_d59_i59 } - replace{ @atom:584 @atom:584_b49_a49_d49_i49 } - replace{ @atom:585 @atom:585_b48_a48_d48_i48 } - replace{ @atom:586 @atom:586_b13_a13_d13_i13 } - replace{ @atom:587 @atom:587_b56_a56_d56_i56 } - replace{ @atom:588 @atom:588_b48_a48_d48_i48 } - replace{ @atom:589 @atom:589_b48_a48_d48_i48 } - replace{ @atom:590 @atom:590_b48_a48_d48_i48 } - replace{ @atom:591 @atom:591_b48_a48_d48_i48 } - replace{ @atom:592 @atom:592_b48_a48_d48_i48 } - replace{ @atom:593 @atom:593_b48_a48_d48_i48 } - replace{ @atom:594 @atom:594_b49_a49_d49_i49 } - replace{ @atom:595 @atom:595_b49_a49_d49_i49 } - replace{ @atom:596 @atom:596_b49_a49_d49_i49 } - replace{ @atom:597 @atom:597_b49_a49_d49_i49 } - replace{ @atom:598 @atom:598_b57_a57_d57_i57 } - replace{ @atom:599 @atom:599_b82_a82_d82_i82 } - replace{ @atom:600 @atom:600_b61_a61_d61_i61 } - replace{ @atom:601 @atom:601_b83_a83_d83_i83 } - replace{ @atom:602 @atom:602_b84_a84_d84_i84 } - replace{ @atom:603 @atom:603_b13_a13_d13_i13 } - replace{ @atom:604 @atom:604_b49_a49_d49_i49 } - replace{ @atom:605 @atom:605_b49_a49_d49_i49 } - replace{ @atom:606 @atom:606_b49_a49_d49_i49 } - replace{ @atom:607 @atom:607_b46_a46_d46_i46 } - replace{ @atom:608 @atom:608_b13_a13_d13_i13 } - replace{ @atom:609 @atom:609_b13_a13_d13_i13 } - replace{ @atom:610 @atom:610_b13_a13_d13_i13 } - replace{ @atom:611 @atom:611_b13_a13_d13_i13 } - replace{ @atom:612 @atom:612_b13_a13_d13_i13 } - replace{ @atom:613 @atom:613_b13_a13_d13_i13 } - replace{ @atom:614 @atom:614_b13_a13_d13_i13 } - replace{ @atom:615 @atom:615_b13_a13_d13_i13 } - replace{ @atom:616 @atom:616_b13_a13_d13_i13 } - replace{ @atom:617 @atom:617_b13_a13_d13_i13 } - replace{ @atom:618 @atom:618_b13_a13_d13_i13 } - replace{ @atom:619 @atom:619_b13_a13_d13_i13 } - replace{ @atom:620 @atom:620_b13_a13_d13_i13 } - replace{ @atom:621 @atom:621_b13_a13_d13_i13 } - replace{ @atom:622 @atom:622_b13_a13_d13_i13 } - replace{ @atom:623 @atom:623_b15_a15_d15_i15 } - replace{ @atom:624 @atom:624_b17_a17_d17_i17 } - replace{ @atom:625 @atom:625_b48_a48_d48_i48 } - replace{ @atom:626 @atom:626_b89_a89_d89_i89 } - replace{ @atom:627 @atom:627_b90_a90_d90_i90 } - replace{ @atom:628 @atom:628_b91_a91_d91_i91 } - replace{ @atom:629 @atom:629_b91_a91_d91_i91 } - replace{ @atom:630 @atom:630_b13_a13_d13_i13 } - replace{ @atom:631 @atom:631_b86_a86_d86_i86 } - replace{ @atom:632 @atom:632_b86_a86_d86_i86 } - replace{ @atom:633 @atom:633_b86_a86_d86_i86 } - replace{ @atom:634 @atom:634_b86_a86_d86_i86 } - replace{ @atom:635 @atom:635_b86_a86_d86_i86 } - replace{ @atom:636 @atom:636_b86_a86_d86_i86 } - replace{ @atom:637 @atom:637_b16_a16_d16_i16 } - replace{ @atom:638 @atom:638_b92_a92_d92_i92 } - replace{ @atom:639 @atom:639_b93_a93_d93_i93 } - replace{ @atom:640 @atom:640_b94_a94_d94_i94 } - replace{ @atom:641 @atom:641_b95_a95_d95_i95 } - replace{ @atom:642 @atom:642_b13_a13_d13_i13 } - replace{ @atom:643 @atom:643_b46_a46_d46_i46 } - replace{ @atom:644 @atom:644_b96_a96_d96_i96 } - replace{ @atom:645 @atom:645_b97_a97_d97_i97 } - replace{ @atom:646 @atom:646_b98_a98_d98_i98 } - replace{ @atom:647 @atom:647_b99_a99_d99_i99 } - replace{ @atom:648 @atom:648_b100_a100_d100_i100 } - replace{ @atom:649 @atom:649_b47_a47_d47_i47 } - replace{ @atom:650 @atom:650_b21_a21_d21_i21 } - replace{ @atom:651 @atom:651_b46_a46_d46_i46 } - replace{ @atom:652 @atom:652_b91_a91_d91_i91 } - replace{ @atom:653 @atom:653_b91_a91_d91_i91 } - replace{ @atom:654 @atom:654_b91_a91_d91_i91 } - replace{ @atom:655 @atom:655_b48_a48_d48_i48 } - replace{ @atom:656 @atom:656_b49_a49_d49_i49 } - replace{ @atom:657 @atom:657_b48_a48_d48_i48 } - replace{ @atom:658 @atom:658_b49_a49_d49_i49 } - replace{ @atom:659 @atom:659_b48_a48_d48_i48 } - replace{ @atom:660 @atom:660_b1_a1_d1_i1 } - replace{ @atom:661 @atom:661_b48_a48_d48_i48 } - replace{ @atom:662 @atom:662_b1_a1_d1_i1 } - replace{ @atom:663 @atom:663_b65_a65_d65_i65 } - replace{ @atom:664 @atom:664_b2_a2_d2_i2 } - replace{ @atom:665 @atom:665_b48_a48_d48_i48 } - replace{ @atom:666 @atom:666_b13_a13_d13_i13 } - replace{ @atom:667 @atom:667_b1_a1_d1_i1 } - replace{ @atom:668 @atom:668_b48_a48_d48_i48 } - replace{ @atom:669 @atom:669_b1_a1_d1_i1 } - replace{ @atom:670 @atom:670_b48_a48_d48_i48 } - replace{ @atom:671 @atom:671_b65_a65_d65_i65 } - replace{ @atom:672 @atom:672_b48_a48_d48_i48 } - replace{ @atom:673 @atom:673_b66_a66_d66_i66 } - replace{ @atom:674 @atom:674_b91_a91_d91_i91 } - replace{ @atom:675 @atom:675_b15_a15_d15_i15 } - replace{ @atom:676 @atom:676_b48_a48_d48_i48 } - replace{ @atom:677 @atom:677_b48_a48_d48_i48 } - replace{ @atom:678 @atom:678_b48_a48_d48_i48 } - replace{ @atom:679 @atom:679_b48_a48_d48_i48 } - replace{ @atom:680 @atom:680_b48_a48_d48_i48 } - replace{ @atom:681 @atom:681_b49_a49_d49_i49 } - replace{ @atom:682 @atom:682_b49_a49_d49_i49 } - replace{ @atom:683 @atom:683_b48_a48_d48_i48 } - replace{ @atom:684 @atom:684_b55_a55_d55_i55 } - replace{ @atom:685 @atom:685_b45_a45_d45_i45 } - replace{ @atom:686 @atom:686_b45_a45_d45_i45 } - replace{ @atom:687 @atom:687_b49_a49_d49_i49 } - replace{ @atom:688 @atom:688_b13_a13_d13_i13 } - replace{ @atom:689 @atom:689_b13_a13_d13_i13 } - replace{ @atom:690 @atom:690_b101_a101_d101_i101 } - replace{ @atom:691 @atom:691_b56_a56_d56_i56 } - replace{ @atom:692 @atom:692_b101_a101_d101_i101 } - replace{ @atom:693 @atom:693_b48_a48_d48_i48 } - replace{ @atom:694 @atom:694_b18_a18_d18_i18 } - replace{ @atom:695 @atom:695_b19_a19_d19_i19 } - replace{ @atom:696 @atom:696_b13_a13_d13_i13 } - replace{ @atom:697 @atom:697_b13_a13_d13_i13 } - replace{ @atom:698 @atom:698_b13_a13_d13_i13 } - replace{ @atom:699 @atom:699_b13_a13_d13_i13 } - replace{ @atom:700 @atom:700_b46_a46_d46_i46 } - replace{ @atom:701 @atom:701_b102_a102_d102_i102 } - replace{ @atom:702 @atom:702_b103_a103_d103_i103 } - replace{ @atom:703 @atom:703_b13_a13_d13_i13 } - replace{ @atom:704 @atom:704_b46_a46_d46_i46 } - replace{ @atom:705 @atom:705_b13_a13_d13_i13 } - replace{ @atom:706 @atom:706_b13_a13_d13_i13 } - replace{ @atom:707 @atom:707_b13_a13_d13_i13 } - replace{ @atom:708 @atom:708_b102_a102_d102_i102 } - replace{ @atom:709 @atom:709_b48_a48_d48_i48 } - replace{ @atom:710 @atom:710_b13_a13_d13_i13 } - replace{ @atom:711 @atom:711_b56_a56_d56_i56 } - replace{ @atom:712 @atom:712_b4_a4_d4_i4 } - replace{ @atom:713 @atom:713_b3_a3_d3_i3 } - replace{ @atom:714 @atom:714_b20_a20_d20_i20 } - replace{ @atom:715 @atom:715_b13_a13_d13_i13 } - replace{ @atom:716 @atom:716_b13_a13_d13_i13 } - replace{ @atom:717 @atom:717_b13_a13_d13_i13 } - replace{ @atom:718 @atom:718_b46_a46_d46_i46 } - replace{ @atom:719 @atom:719_b46_a46_d46_i46 } - replace{ @atom:720 @atom:720_b46_a46_d46_i46 } - replace{ @atom:721 @atom:721_b20_a20_d20_i20 } - replace{ @atom:722 @atom:722_b104_a104_d104_i104 } - replace{ @atom:723 @atom:723_b13_a13_d13_i13 } - replace{ @atom:724 @atom:724_b13_a13_d13_i13 } - replace{ @atom:725 @atom:725_b46_a46_d46_i46 } - replace{ @atom:726 @atom:726_b64_a64_d64_i64 } - replace{ @atom:727 @atom:727_b1_a1_d1_i1 } - replace{ @atom:728 @atom:728_b24_a24_d24_i24 } - replace{ @atom:729 @atom:729_b4_a4_d4_i4 } - replace{ @atom:730 @atom:730_b44_a44_d44_i44 } - replace{ @atom:731 @atom:731_b44_a44_d44_i44 } - replace{ @atom:732 @atom:732_b44_a44_d44_i44 } - replace{ @atom:733 @atom:733_b13_a13_d13_i13 } - replace{ @atom:734 @atom:734_b13_a13_d13_i13 } - replace{ @atom:735 @atom:735_b13_a13_d13_i13 } - replace{ @atom:736 @atom:736_b13_a13_d13_i13 } - replace{ @atom:737 @atom:737_b13_a13_d13_i13 } - replace{ @atom:738 @atom:738_b13_a13_d13_i13 } - replace{ @atom:739 @atom:739_b45_a45_d45_i45 } - replace{ @atom:740 @atom:740_b45_a45_d45_i45 } - replace{ @atom:741 @atom:741_b46_a46_d46_i46 } - replace{ @atom:742 @atom:742_b13_a13_d13_i13 } - replace{ @atom:743 @atom:743_b13_a13_d13_i13 } - replace{ @atom:744 @atom:744_b13_a13_d13_i13 } - replace{ @atom:745 @atom:745_b13_a13_d13_i13 } - replace{ @atom:746 @atom:746_b48_a48_d48_i48 } - replace{ @atom:747 @atom:747_b48_a48_d48_i48 } - replace{ @atom:748 @atom:748_b48_a48_d48_i48 } - replace{ @atom:749 @atom:749_b13_a13_d13_i13 } - replace{ @atom:750 @atom:750_b13_a13_d13_i13 } - replace{ @atom:751 @atom:751_b13_a13_d13_i13 } - replace{ @atom:752 @atom:752_b13_a13_d13_i13 } - replace{ @atom:753 @atom:753_b13_a13_d13_i13 } - replace{ @atom:754 @atom:754_b13_a13_d13_i13 } - replace{ @atom:755 @atom:755_b19_a19_d19_i19 } - replace{ @atom:756 @atom:756_b46_a46_d46_i46 } - replace{ @atom:757 @atom:757_b19_a19_d19_i19 } - replace{ @atom:758 @atom:758_b19_a19_d19_i19 } - replace{ @atom:759 @atom:759_b19_a19_d19_i19 } - replace{ @atom:760 @atom:760_b46_a46_d46_i46 } - replace{ @atom:761 @atom:761_b51_a51_d51_i51 } - replace{ @atom:762 @atom:762_b51_a51_d51_i51 } - replace{ @atom:763 @atom:763_b51_a51_d51_i51 } - replace{ @atom:764 @atom:764_b5_a5_d5_i5 } - replace{ @atom:765 @atom:765_b7_a7_d7_i7 } - replace{ @atom:766 @atom:766_b105_a105_d105_i105 } - replace{ @atom:767 @atom:767_b105_a105_d105_i105 } - replace{ @atom:768 @atom:768_b105_a105_d105_i105 } - replace{ @atom:769 @atom:769_b19_a19_d19_i19 } - replace{ @atom:770 @atom:770_b53_a53_d53_i53 } - replace{ @atom:771 @atom:771_b54_a54_d54_i54 } - replace{ @atom:772 @atom:772_b13_a13_d13_i13 } - replace{ @atom:773 @atom:773_b13_a13_d13_i13 } - replace{ @atom:774 @atom:774_b13_a13_d13_i13 } - replace{ @atom:775 @atom:775_b13_a13_d13_i13 } - replace{ @atom:776 @atom:776_b84_a84_d84_i84 } - replace{ @atom:777 @atom:777_b87_a87_d87_i87 } - replace{ @atom:778 @atom:778_b86_a86_d86_i86 } - replace{ @atom:779 @atom:779_b86_a86_d86_i86 } - replace{ @atom:780 @atom:780_b46_a46_d46_i46 } - replace{ @atom:781 @atom:781_b13_a13_d13_i13 } - replace{ @atom:782 @atom:782_b3_a3_d3_i3 } - replace{ @atom:783 @atom:783_b53_a53_d53_i53 } - replace{ @atom:784 @atom:784_b52_a52_d52_i52 } - replace{ @atom:785 @atom:785_b54_a54_d54_i54 } - replace{ @atom:786 @atom:786_b1_a1_d1_i1 } - replace{ @atom:787 @atom:787_b13_a13_d13_i13 } - replace{ @atom:788 @atom:788_b46_a46_d46_i46 } - replace{ @atom:789 @atom:789_b13_a13_d13_i13 } - replace{ @atom:790 @atom:790_b13_a13_d13_i13 } - replace{ @atom:791 @atom:791_b13_a13_d13_i13 } - replace{ @atom:792 @atom:792_b13_a13_d13_i13 } - replace{ @atom:793 @atom:793_b13_a13_d13_i13 } - replace{ @atom:794 @atom:794_b13_a13_d13_i13 } - replace{ @atom:795 @atom:795_b1_a1_d1_i1 } - replace{ @atom:796 @atom:796_b13_a13_d13_i13 } - replace{ @atom:797 @atom:797_b46_a46_d46_i46 } - replace{ @atom:798 @atom:798_b13_a13_d13_i13 } - replace{ @atom:799 @atom:799_b13_a13_d13_i13 } - replace{ @atom:800 @atom:800_b21_a21_d21_i21 } - replace{ @atom:801 @atom:801_b13_a13_d13_i13 } - replace{ @atom:802 @atom:802_b46_a46_d46_i46 } - replace{ @atom:803 @atom:803_b13_a13_d13_i13 } - replace{ @atom:804 @atom:804_b13_a13_d13_i13 } - replace{ @atom:805 @atom:805_b65_a65_d65_i65 } - replace{ @atom:806 @atom:806_b13_a13_d13_i13 } - replace{ @atom:807 @atom:807_b46_a46_d46_i46 } - replace{ @atom:808 @atom:808_b13_a13_d13_i13 } - replace{ @atom:809 @atom:809_b13_a13_d13_i13 } - replace{ @atom:810 @atom:810_b1_a1_d1_i1 } - replace{ @atom:811 @atom:811_b21_a21_d21_i21 } - replace{ @atom:812 @atom:812_b65_a65_d65_i65 } - replace{ @atom:813 @atom:813_b48_a48_d48_i48 } - replace{ @atom:814 @atom:814_b20_a20_d20_i20 } - replace{ @atom:815 @atom:815_b13_a13_d13_i13 } - replace{ @atom:816 @atom:816_b1_a1_d1_i1 } - replace{ @atom:817 @atom:817_b24_a24_d24_i24 } - replace{ @atom:818 @atom:818_b48_a48_d48_i48 } - replace{ @atom:819 @atom:819_b13_a13_d13_i13 } - replace{ @atom:820 @atom:820_b3_a3_d3_i3 } - replace{ @atom:821 @atom:821_b3_a3_d3_i3 } - replace{ @atom:822 @atom:822_b4_a4_d4_i4 } - replace{ @atom:823 @atom:823_b24_a24_d24_i24 } - replace{ @atom:824 @atom:824_b45_a45_d45_i45 } - replace{ @atom:825 @atom:825_b5_a5_d5_i5 } - replace{ @atom:826 @atom:826_b7_a7_d7_i7 } - replace{ @atom:827 @atom:827_b13_a13_d13_i13 } - replace{ @atom:828 @atom:828_b13_a13_d13_i13 } - replace{ @atom:829 @atom:829_b86_a86_d86_i86 } - replace{ @atom:830 @atom:830_b86_a86_d86_i86 } - replace{ @atom:831 @atom:831_b86_a86_d86_i86 } - replace{ @atom:832 @atom:832_b86_a86_d86_i86 } - replace{ @atom:833 @atom:833_b48_a48_d48_i48 } - replace{ @atom:834 @atom:834_b106_a106_d106_i106 } - replace{ @atom:835 @atom:835_b13_a13_d13_i13 } - replace{ @atom:836 @atom:836_b13_a13_d13_i13 } - replace{ @atom:837 @atom:837_b13_a13_d13_i13 } - replace{ @atom:838 @atom:838_b66_a66_d66_i66 } - replace{ @atom:839 @atom:839_b46_a46_d46_i46 } - replace{ @atom:840 @atom:840_b24_a24_d24_i24 } - replace{ @atom:841 @atom:841_b48_a48_d48_i48 } - replace{ @atom:842 @atom:842_b48_a48_d48_i48 } - replace{ @atom:843 @atom:843_b24_a24_d24_i24 } - replace{ @atom:844 @atom:844_b48_a48_d48_i48 } - replace{ @atom:845 @atom:845_b3_a3_d3_i3 } - replace{ @atom:846 @atom:846_b4_a4_d4_i4 } - replace{ @atom:847 @atom:847_b107_a107_d107_i107 } - replace{ @atom:848 @atom:848_b13_a13_d13_i13 } - replace{ @atom:849 @atom:849_b13_a13_d13_i13 } - replace{ @atom:850 @atom:850_b13_a13_d13_i13 } - replace{ @atom:851 @atom:851_b13_a13_d13_i13 } - replace{ @atom:852 @atom:852_b46_a46_d46_i46 } - replace{ @atom:853 @atom:853_b3_a3_d3_i3 } - replace{ @atom:854 @atom:854_b4_a4_d4_i4 } - replace{ @atom:855 @atom:855_b46_a46_d46_i46 } - replace{ @atom:856 @atom:856_b13_a13_d13_i13 } - replace{ @atom:857 @atom:857_b13_a13_d13_i13 } - replace{ @atom:858 @atom:858_b13_a13_d13_i13 } - replace{ @atom:859 @atom:859_b13_a13_d13_i13 } - replace{ @atom:860 @atom:860_b13_a13_d13_i13 } - replace{ @atom:861 @atom:861_b13_a13_d13_i13 } - replace{ @atom:862 @atom:862_b13_a13_d13_i13 } - replace{ @atom:863 @atom:863_b13_a13_d13_i13 } - replace{ @atom:864 @atom:864_b13_a13_d13_i13 } - replace{ @atom:865 @atom:865_b13_a13_d13_i13 } - replace{ @atom:866 @atom:866_b108_a108_d108_i108 } - replace{ @atom:867 @atom:867_b108_a108_d108_i108 } - replace{ @atom:868 @atom:868_b108_a108_d108_i108 } - replace{ @atom:869 @atom:869_b108_a108_d108_i108 } - replace{ @atom:870 @atom:870_b45_a45_d45_i45 } - replace{ @atom:871 @atom:871_b13_a13_d13_i13 } - replace{ @atom:872 @atom:872_b13_a13_d13_i13 } - replace{ @atom:873 @atom:873_b13_a13_d13_i13 } - replace{ @atom:874 @atom:874_b13_a13_d13_i13 } - replace{ @atom:875 @atom:875_b1_a1_d1_i1 } - replace{ @atom:876 @atom:876_b21_a21_d21_i21 } - replace{ @atom:877 @atom:877_b65_a65_d65_i65 } - replace{ @atom:878 @atom:878_b66_a66_d66_i66 } - replace{ @atom:879 @atom:879_b68_a68_d68_i68 } - replace{ @atom:880 @atom:880_b69_a69_d69_i69 } - replace{ @atom:881 @atom:881_b70_a70_d70_i70 } - replace{ @atom:882 @atom:882_b71_a71_d71_i71 } - replace{ @atom:883 @atom:883_b72_a72_d72_i72 } - replace{ @atom:884 @atom:884_b73_a73_d73_i73 } - replace{ @atom:885 @atom:885_b74_a74_d74_i74 } - replace{ @atom:886 @atom:886_b75_a75_d75_i75 } - replace{ @atom:887 @atom:887_b76_a76_d76_i76 } - replace{ @atom:888 @atom:888_b13_a13_d13_i13 } - replace{ @atom:889 @atom:889_b13_a13_d13_i13 } - replace{ @atom:890 @atom:890_b13_a13_d13_i13 } - replace{ @atom:891 @atom:891_b13_a13_d13_i13 } - replace{ @atom:892 @atom:892_b46_a46_d46_i46 } - replace{ @atom:893 @atom:893_b53_a53_d53_i53 } - replace{ @atom:894 @atom:894_b48_a48_d48_i48 } - replace{ @atom:895 @atom:895_b53_a53_d53_i53 } - replace{ @atom:896 @atom:896_b48_a48_d48_i48 } - replace{ @atom:897 @atom:897_b109_a109_d109_i109 } - replace{ @atom:898 @atom:898_b109_a109_d109_i109 } - replace{ @atom:899 @atom:899_b46_a46_d46_i46 } - replace{ @atom:900 @atom:900_b47_a47_d47_i47 } - replace{ @atom:901 @atom:901_b47_a47_d47_i47 } - replace{ @atom:902 @atom:902_b47_a47_d47_i47 } - replace{ @atom:903 @atom:903_b110_a110_d110_i110 } - 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) + # ------- 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 @@ -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,21 +8971,32 @@ 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 + ############################### 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 a46bd51d4c..a3e9f3ee78 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 0000000000..6ca9e8f98f --- /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 0000000000..f610085113 --- /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 0000000000..de10509439 --- /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 0000000000..c924ce64e0 --- /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 0000000000..8bf9cf5caa --- /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 0000000000..2bf0769c6d --- /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 fb431cedee..e67b228e9e 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 7ddcb0adfe..0a52d82981 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 ccfd2f18c6..ae5d22a77e 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 0000000000..acb3db5e5c --- /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 0000000000..2c4014e5db --- /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 0000000000..753d9b3ad0 --- /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 743419eb2b..168a60ecc3 --- 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