Page MenuHomec4science

No OneTemporary

File Metadata

Created
Mon, Oct 7, 03:08
This file is larger than 256 KB, so syntax highlighting was skipped.
This document is not UTF8. It was detected as ISO-8859-1 (Latin 1) and converted to UTF8 for display.
diff --git a/doc/Makefile b/doc/Makefile
index 3da7239c5..e05715522 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -1,145 +1,145 @@
# Makefile for LAMMPS documentation
SHELL = /bin/bash
SHA1 = $(shell echo $USER-$PWD | python utils/sha1sum.py)
BUILDDIR = /tmp/lammps-docs-$(SHA1)
RSTDIR = $(BUILDDIR)/rst
VENV = $(BUILDDIR)/docenv
TXT2RST = $(VENV)/bin/txt2rst
PYTHON = $(shell which python3)
HAS_PYTHON3 = NO
HAS_VIRTUALENV = NO
ifeq ($(shell which python3 >/dev/null 2>&1; echo $$?), 0)
HAS_PYTHON3 = YES
endif
ifeq ($(shell which virtualenv >/dev/null 2>&1; echo $$?), 0)
HAS_VIRTUALENV = YES
endif
SOURCES=$(wildcard src/*.txt)
OBJECTS=$(SOURCES:src/%.txt=$(RSTDIR)/%.rst)
.PHONY: help clean-all clean epub html pdf old venv
# ------------------------------------------
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html create HTML doc pages in html dir"
@echo " pdf create Manual.pdf and Developer.pdf in this dir"
@echo " old create old-style HTML doc pages in old dir"
@echo " fetch fetch HTML and PDF files from LAMMPS web site"
@echo " epub create ePUB format manual for e-book readers"
@echo " clean remove all intermediate RST files"
@echo " clean-all reset the entire build environment"
@echo " txt2html build txt2html tool"
# ------------------------------------------
clean-all:
rm -rf $(BUILDDIR)/* utils/txt2html/txt2html.exe
clean:
- rm -rf $(RSTDIR)
+ rm -rf $(RSTDIR) html
html: $(OBJECTS)
@(\
. $(VENV)/bin/activate ;\
cp -r src/* $(RSTDIR)/ ;\
sphinx-build -j 8 -b html -c utils/sphinx-config -d $(BUILDDIR)/doctrees $(RSTDIR) html ;\
deactivate ;\
)
-rm html/searchindex.js
@rm -rf html/_sources
@rm -rf html/PDF
@rm -rf html/USER
@cp -r src/PDF html/PDF
@cp -r src/USER html/USER
@rm -rf html/PDF/.[sg]*
@rm -rf html/USER/.[sg]*
@rm -rf html/USER/*/.[sg]*
@rm -rf html/USER/*/*.[sg]*
@echo "Build finished. The HTML pages are in doc/html."
epub: $(OBJECTS)
@mkdir -p epub
@rm -f LAMMPS.epub
@cp src/JPG/lammps-logo.png epub/
@(\
. $(VENV)/bin/activate ;\
cp -r src/* $(RSTDIR)/ ;\
sphinx-build -j 8 -b epub -c utils/sphinx-config -d $(BUILDDIR)/doctrees $(RSTDIR) epub ;\
deactivate ;\
)
@mv epub/LAMMPS.epub .
@rm -rf epub
@echo "Build finished. The ePUB manual file is created."
pdf: utils/txt2html/txt2html.exe
@(\
cd src; \
../utils/txt2html/txt2html.exe -b *.txt; \
htmldoc --batch lammps.book; \
for s in `echo *.txt | sed -e 's,\.txt,\.html,g'` ; \
do grep -q $$s lammps.book || \
echo doc file $$s missing in src/lammps.book; done; \
rm *.html; \
cd Developer; \
pdflatex developer; \
pdflatex developer; \
mv developer.pdf ../../Developer.pdf; \
)
old: utils/txt2html/txt2html.exe
@rm -rf old
@mkdir old; mkdir old/Eqs; mkdir old/JPG; mkdir old/PDF
@cd src; ../utils/txt2html/txt2html.exe -b *.txt; \
mv *.html ../old; \
cp Eqs/*.jpg ../old/Eqs; \
cp JPG/* ../old/JPG; \
cp PDF/* ../old/PDF;
fetch:
@rm -rf html_www Manual_www.pdf Developer_www.pdf
@curl -s -o Manual_www.pdf http://lammps.sandia.gov/doc/Manual.pdf
@curl -s -o Developer_www.pdf http://lammps.sandia.gov/doc/Developer.pdf
@curl -s -o lammps-doc.tar.gz http://lammps.sandia.gov/tars/lammps-doc.tar.gz
@tar xzf lammps-doc.tar.gz
@rm -f lammps-doc.tar.gz
txt2html: utils/txt2html/txt2html.exe
# ------------------------------------------
utils/txt2html/txt2html.exe: utils/txt2html/txt2html.cpp
g++ -O -Wall -o $@ $<
$(RSTDIR)/%.rst : src/%.txt $(TXT2RST)
@(\
mkdir -p $(RSTDIR) ; \
. $(VENV)/bin/activate ;\
txt2rst $< > $@ ;\
deactivate ;\
)
$(VENV):
@if [ "$(HAS_PYTHON3)" == "NO" ] ; then echo "Python3 was not found! Please check README.md for further instructions" 1>&2; exit 1; fi
@if [ "$(HAS_VIRTUALENV)" == "NO" ] ; then echo "virtualenv was not found! Please check README.md for further instructions" 1>&2; exit 1; fi
@( \
virtualenv -p $(PYTHON) $(VENV); \
. $(VENV)/bin/activate; \
pip install Sphinx; \
pip install sphinxcontrib-images; \
deactivate;\
)
$(TXT2RST): $(VENV)
@( \
. $(VENV)/bin/activate; \
(cd utils/converters;\
python setup.py develop);\
deactivate;\
)
diff --git a/doc/src/Eqs/fix_grem.jpg b/doc/src/Eqs/fix_grem.jpg
new file mode 100644
index 000000000..666b4344a
Binary files /dev/null and b/doc/src/Eqs/fix_grem.jpg differ
diff --git a/doc/src/Eqs/fix_grem.tex b/doc/src/Eqs/fix_grem.tex
new file mode 100644
index 000000000..c00ea696a
--- /dev/null
+++ b/doc/src/Eqs/fix_grem.tex
@@ -0,0 +1,9 @@
+\documentclass[12pt]{article}
+
+\begin{document}
+
+$$
+ T_{eff} = \lambda + \eta (H - H_0)
+$$
+
+\end{document}
\ No newline at end of file
diff --git a/doc/src/JPG/pylammps_dihedral.jpg b/doc/src/JPG/pylammps_dihedral.jpg
new file mode 100644
index 000000000..ce72e6632
Binary files /dev/null and b/doc/src/JPG/pylammps_dihedral.jpg differ
diff --git a/doc/src/JPG/pylammps_mc_disordered.jpg b/doc/src/JPG/pylammps_mc_disordered.jpg
new file mode 100644
index 000000000..05644e0c7
Binary files /dev/null and b/doc/src/JPG/pylammps_mc_disordered.jpg differ
diff --git a/doc/src/JPG/pylammps_mc_energies_plot.jpg b/doc/src/JPG/pylammps_mc_energies_plot.jpg
new file mode 100644
index 000000000..c2cb221ba
Binary files /dev/null and b/doc/src/JPG/pylammps_mc_energies_plot.jpg differ
diff --git a/doc/src/JPG/pylammps_mc_minimum.jpg b/doc/src/JPG/pylammps_mc_minimum.jpg
new file mode 100644
index 000000000..0aacc3559
Binary files /dev/null and b/doc/src/JPG/pylammps_mc_minimum.jpg differ
diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt
index 1d1357d4b..40288268a 100644
--- a/doc/src/Manual.txt
+++ b/doc/src/Manual.txt
@@ -1,340 +1,340 @@
<!-- HTML_ONLY -->
<HEAD>
<TITLE>LAMMPS Users Manual</TITLE>
-<META NAME="docnumber" CONTENT="17 Nov 2016 version">
+<META NAME="docnumber" CONTENT="30 Nov 2016 version">
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
</HEAD>
<BODY>
<!-- END_HTML_ONLY -->
"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
<H1></H1>
LAMMPS Documentation :c,h3
-17 Nov 2016 version :c,h4
+30 Nov 2016 version :c,h4
Version info: :h4
The LAMMPS "version" is the date when it was released, such as 1 May
2010. LAMMPS is updated continuously. Whenever we fix a bug or add a
feature, we release it immediately, and post a notice on "this page of
the WWW site"_bug. Every 2-4 months one of the incremental releases
is subjected to more thorough testing and labeled as a {stable} version.
Each dated copy of LAMMPS contains all the
features and bug-fixes up to and including that version date. The
version date is printed to the screen and logfile every time you run
LAMMPS. It is also in the file src/version.h and in the LAMMPS
directory name created when you unpack a tarball, and at the top of
the first page of the manual (this page).
If you browse the HTML doc pages on the LAMMPS WWW site, they always
describe the most current version of LAMMPS. :ulb,l
If you browse the HTML doc pages included in your tarball, they
describe the version you have. :l
The "PDF file"_Manual.pdf on the WWW site or in the tarball is updated
about once per month. This is because it is large, and we don't want
it to be part of every patch. :l
There is also a "Developer.pdf"_Developer.pdf file in the doc
directory, which describes the internal structure and algorithms of
LAMMPS. :l
:ule
LAMMPS stands for Large-scale Atomic/Molecular Massively Parallel
Simulator.
LAMMPS is a classical molecular dynamics simulation code designed to
run efficiently on parallel computers. It was developed at Sandia
National Laboratories, a US Department of Energy facility, with
funding from the DOE. It is an open-source code, distributed freely
under the terms of the GNU Public License (GPL).
The current core group of LAMMPS developers is at Sandia National
Labs and Temple University:
"Steve Plimpton"_sjp, sjplimp at sandia.gov :ulb,l
Aidan Thompson, athomps at sandia.gov :l
Stan Moore, stamoore at sandia.gov :l
"Axel Kohlmeyer"_ako, akohlmey at gmail.com :l
:ule
Past core developers include Paul Crozier, Ray Shan and Mark Stevens,
all at Sandia. The [LAMMPS home page] at
"http://lammps.sandia.gov"_http://lammps.sandia.gov has more information
about the code and its uses. Interaction with external LAMMPS developers,
bug reports and feature requests are mainly coordinated through the
"LAMMPS project on GitHub."_https://github.com/lammps/lammps
The lammps.org domain, currently hosting "public continuous integration
testing"_https://ci.lammps.org/job/lammps/ and "precompiled Linux
RPM and Windows installer packages"_http://rpm.lammps.org is located
at Temple University and managed by Richard Berger,
richard.berger at temple.edu.
:link(bug,http://lammps.sandia.gov/bug.html)
:link(sjp,http://www.sandia.gov/~sjplimp)
:link(ako,http://goo.gl/1wk0)
:line
The LAMMPS documentation is organized into the following sections. If
you find errors or omissions in this manual or have suggestions for
useful information to add, please send an email to the developers so
we can improve the LAMMPS documentation.
Once you are familiar with LAMMPS, you may want to bookmark "this
page"_Section_commands.html#comm at Section_commands.html#comm since
it gives quick access to documentation for all LAMMPS commands.
"PDF file"_Manual.pdf of the entire manual, generated by
"htmldoc"_http://freecode.com/projects/htmldoc
<!-- RST
.. toctree::
:maxdepth: 2
:numbered:
:caption: User Documentation
:name: userdoc
:includehidden:
Section_intro
Section_start
Section_commands
Section_packages
Section_accelerate
Section_howto
Section_example
Section_perf
Section_tools
Section_modify
Section_python
Section_errors
Section_history
.. toctree::
:caption: Index
:name: index
:hidden:
tutorials
commands
fixes
computes
pairs
bonds
angles
dihedrals
impropers
Indices and tables
==================
* :ref:`genindex`
* :ref:`search`
END_RST -->
<!-- HTML_ONLY -->
"Introduction"_Section_intro.html :olb,l
1.1 "What is LAMMPS"_intro_1 :ulb,b
1.2 "LAMMPS features"_intro_2 :b
1.3 "LAMMPS non-features"_intro_3 :b
1.4 "Open source distribution"_intro_4 :b
1.5 "Acknowledgments and citations"_intro_5 :ule,b
"Getting started"_Section_start.html :l
2.1 "What's in the LAMMPS distribution"_start_1 :ulb,b
2.2 "Making LAMMPS"_start_2 :b
2.3 "Making LAMMPS with optional packages"_start_3 :b
2.4 "Building LAMMPS via the Make.py script"_start_4 :b
2.5 "Building LAMMPS as a library"_start_5 :b
2.6 "Running LAMMPS"_start_6 :b
2.7 "Command-line options"_start_7 :b
2.8 "Screen output"_start_8 :b
2.9 "Tips for users of previous versions"_start_9 :ule,b
"Commands"_Section_commands.html :l
3.1 "LAMMPS input script"_cmd_1 :ulb,b
3.2 "Parsing rules"_cmd_2 :b
3.3 "Input script structure"_cmd_3 :b
3.4 "Commands listed by category"_cmd_4 :b
3.5 "Commands listed alphabetically"_cmd_5 :ule,b
"Packages"_Section_packages.html :l
4.1 "Standard packages"_pkg_1 :ulb,b
4.2 "User packages"_pkg_2 :ule,b
"Accelerating LAMMPS performance"_Section_accelerate.html :l
5.1 "Measuring performance"_acc_1 :ulb,b
5.2 "Algorithms and code options to boost performace"_acc_2 :b
5.3 "Accelerator packages with optimized styles"_acc_3 :b
5.3.1 "GPU package"_accelerate_gpu.html :ulb,b
5.3.2 "USER-INTEL package"_accelerate_intel.html :b
5.3.3 "KOKKOS package"_accelerate_kokkos.html :b
5.3.4 "USER-OMP package"_accelerate_omp.html :b
5.3.5 "OPT package"_accelerate_opt.html :ule,b
5.4 "Comparison of various accelerator packages"_acc_4 :ule,b
"How-to discussions"_Section_howto.html :l
6.1 "Restarting a simulation"_howto_1 :ulb,b
6.2 "2d simulations"_howto_2 :b
6.3 "CHARMM and AMBER force fields"_howto_3 :b
6.4 "Running multiple simulations from one input script"_howto_4 :b
6.5 "Multi-replica simulations"_howto_5 :b
6.6 "Granular models"_howto_6 :b
6.7 "TIP3P water model"_howto_7 :b
6.8 "TIP4P water model"_howto_8 :b
6.9 "SPC water model"_howto_9 :b
6.10 "Coupling LAMMPS to other codes"_howto_10 :b
6.11 "Visualizing LAMMPS snapshots"_howto_11 :b
6.12 "Triclinic (non-orthogonal) simulation boxes"_howto_12 :b
6.13 "NEMD simulations"_howto_13 :b
6.14 "Finite-size spherical and aspherical particles"_howto_14 :b
6.15 "Output from LAMMPS (thermo, dumps, computes, fixes, variables)"_howto_15 :b
6.16 "Thermostatting, barostatting, and compute temperature"_howto_16 :b
6.17 "Walls"_howto_17 :b
6.18 "Elastic constants"_howto_18 :b
6.19 "Library interface to LAMMPS"_howto_19 :b
6.20 "Calculating thermal conductivity"_howto_20 :b
6.21 "Calculating viscosity"_howto_21 :b
6.22 "Calculating a diffusion coefficient"_howto_22 :b
6.23 "Using chunks to calculate system properties"_howto_23 :b
6.24 "Setting parameters for pppm/disp"_howto_24 :b
6.25 "Polarizable models"_howto_25 :b
6.26 "Adiabatic core/shell model"_howto_26 :b
6.27 "Drude induced dipoles"_howto_27 :ule,b
"Example problems"_Section_example.html :l
"Performance & scalability"_Section_perf.html :l
"Additional tools"_Section_tools.html :l
"Modifying & extending LAMMPS"_Section_modify.html :l
10.1 "Atom styles"_mod_1 :ulb,b
10.2 "Bond, angle, dihedral, improper potentials"_mod_2 :b
10.3 "Compute styles"_mod_3 :b
10.4 "Dump styles"_mod_4 :b
10.5 "Dump custom output options"_mod_5 :b
10.6 "Fix styles"_mod_6 :b
10.7 "Input script commands"_mod_7 :b
10.8 "Kspace computations"_mod_8 :b
10.9 "Minimization styles"_mod_9 :b
10.10 "Pairwise potentials"_mod_10 :b
10.11 "Region styles"_mod_11 :b
10.12 "Body styles"_mod_12 :b
10.13 "Thermodynamic output options"_mod_13 :b
10.14 "Variable options"_mod_14 :b
10.15 "Submitting new features for inclusion in LAMMPS"_mod_15 :ule,b
"Python interface"_Section_python.html :l
11.1 "Overview of running LAMMPS from Python"_py_1 :ulb,b
11.2 "Overview of using Python from a LAMMPS script"_py_2 :b
11.3 "Building LAMMPS as a shared library"_py_3 :b
11.4 "Installing the Python wrapper into Python"_py_4 :b
11.5 "Extending Python with MPI to run in parallel"_py_5 :b
11.6 "Testing the Python-LAMMPS interface"_py_6 :b
11.7 "Using LAMMPS from Python"_py_7 :b
11.8 "Example Python scripts that use LAMMPS"_py_8 :ule,b
"Errors"_Section_errors.html :l
12.1 "Common problems"_err_1 :ulb,b
12.2 "Reporting bugs"_err_2 :b
12.3 "Error & warning messages"_err_3 :ule,b
"Future and history"_Section_history.html :l
13.1 "Coming attractions"_hist_1 :ulb,b
13.2 "Past versions"_hist_2 :ule,b
:ole
:link(intro_1,Section_intro.html#intro_1)
:link(intro_2,Section_intro.html#intro_2)
:link(intro_3,Section_intro.html#intro_3)
:link(intro_4,Section_intro.html#intro_4)
:link(intro_5,Section_intro.html#intro_5)
:link(start_1,Section_start.html#start_1)
:link(start_2,Section_start.html#start_2)
:link(start_3,Section_start.html#start_3)
:link(start_4,Section_start.html#start_4)
:link(start_5,Section_start.html#start_5)
:link(start_6,Section_start.html#start_6)
:link(start_7,Section_start.html#start_7)
:link(start_8,Section_start.html#start_8)
:link(start_9,Section_start.html#start_9)
:link(cmd_1,Section_commands.html#cmd_1)
:link(cmd_2,Section_commands.html#cmd_2)
:link(cmd_3,Section_commands.html#cmd_3)
:link(cmd_4,Section_commands.html#cmd_4)
:link(cmd_5,Section_commands.html#cmd_5)
:link(pkg_1,Section_packages.html#pkg_1)
:link(pkg_2,Section_packages.html#pkg_2)
:link(acc_1,Section_accelerate.html#acc_1)
:link(acc_2,Section_accelerate.html#acc_2)
:link(acc_3,Section_accelerate.html#acc_3)
:link(acc_4,Section_accelerate.html#acc_4)
:link(howto_1,Section_howto.html#howto_1)
:link(howto_2,Section_howto.html#howto_2)
:link(howto_3,Section_howto.html#howto_3)
:link(howto_4,Section_howto.html#howto_4)
:link(howto_5,Section_howto.html#howto_5)
:link(howto_6,Section_howto.html#howto_6)
:link(howto_7,Section_howto.html#howto_7)
:link(howto_8,Section_howto.html#howto_8)
:link(howto_9,Section_howto.html#howto_9)
:link(howto_10,Section_howto.html#howto_10)
:link(howto_11,Section_howto.html#howto_11)
:link(howto_12,Section_howto.html#howto_12)
:link(howto_13,Section_howto.html#howto_13)
:link(howto_14,Section_howto.html#howto_14)
:link(howto_15,Section_howto.html#howto_15)
:link(howto_16,Section_howto.html#howto_16)
:link(howto_17,Section_howto.html#howto_17)
:link(howto_18,Section_howto.html#howto_18)
:link(howto_19,Section_howto.html#howto_19)
:link(howto_20,Section_howto.html#howto_20)
:link(howto_21,Section_howto.html#howto_21)
:link(howto_22,Section_howto.html#howto_22)
:link(howto_23,Section_howto.html#howto_23)
:link(howto_24,Section_howto.html#howto_24)
:link(howto_25,Section_howto.html#howto_25)
:link(howto_26,Section_howto.html#howto_26)
:link(howto_27,Section_howto.html#howto_27)
:link(mod_1,Section_modify.html#mod_1)
:link(mod_2,Section_modify.html#mod_2)
:link(mod_3,Section_modify.html#mod_3)
:link(mod_4,Section_modify.html#mod_4)
:link(mod_5,Section_modify.html#mod_5)
:link(mod_6,Section_modify.html#mod_6)
:link(mod_7,Section_modify.html#mod_7)
:link(mod_8,Section_modify.html#mod_8)
:link(mod_9,Section_modify.html#mod_9)
:link(mod_10,Section_modify.html#mod_10)
:link(mod_11,Section_modify.html#mod_11)
:link(mod_12,Section_modify.html#mod_12)
:link(mod_13,Section_modify.html#mod_13)
:link(mod_14,Section_modify.html#mod_14)
:link(mod_15,Section_modify.html#mod_15)
:link(py_1,Section_python.html#py_1)
:link(py_2,Section_python.html#py_2)
:link(py_3,Section_python.html#py_3)
:link(py_4,Section_python.html#py_4)
:link(py_5,Section_python.html#py_5)
:link(py_6,Section_python.html#py_6)
:link(err_1,Section_errors.html#err_1)
:link(err_2,Section_errors.html#err_2)
:link(err_3,Section_errors.html#err_3)
:link(hist_1,Section_history.html#hist_1)
:link(hist_2,Section_history.html#hist_2)
<!-- END_HTML_ONLY -->
</BODY>
diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt
index 3323d184e..20503e852 100644
--- a/doc/src/Section_commands.txt
+++ b/doc/src/Section_commands.txt
@@ -1,1202 +1,1205 @@
"Previous Section"_Section_start.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_packages.html :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
3. Commands :h3
This section describes how a LAMMPS input script is formatted and the
input script commands used to define a LAMMPS simulation.
3.1 "LAMMPS input script"_#cmd_1
3.2 "Parsing rules"_#cmd_2
3.3 "Input script structure"_#cmd_3
3.4 "Commands listed by category"_#cmd_4
3.5 "Commands listed alphabetically"_#cmd_5 :all(b)
:line
:line
3.1 LAMMPS input script :link(cmd_1),h4
LAMMPS executes by reading commands from a input script (text file),
one line at a time. When the input script ends, LAMMPS exits. Each
command causes LAMMPS to take some action. It may set an internal
variable, read in a file, or run a simulation. Most commands have
default settings, which means you only need to use the command if you
wish to change the default.
In many cases, the ordering of commands in an input script is not
important. However the following rules apply:
(1) LAMMPS does not read your entire input script and then perform a
simulation with all the settings. Rather, the input script is read
one line at a time and each command takes effect when it is read.
Thus this sequence of commands:
timestep 0.5
run 100
run 100 :pre
does something different than this sequence:
run 100
timestep 0.5
run 100 :pre
In the first case, the specified timestep (0.5 fmsec) is used for two
simulations of 100 timesteps each. In the 2nd case, the default
timestep (1.0 fmsec) is used for the 1st 100 step simulation and a 0.5
fmsec timestep is used for the 2nd one.
(2) Some commands are only valid when they follow other commands. For
example you cannot set the temperature of a group of atoms until atoms
have been defined and a group command is used to define which atoms
belong to the group.
(3) Sometimes command B will use values that can be set by command A.
This means command A must precede command B in the input script if it
is to have the desired effect. For example, the
"read_data"_read_data.html command initializes the system by setting
up the simulation box and assigning atoms to processors. If default
values are not desired, the "processors"_processors.html and
"boundary"_boundary.html commands need to be used before read_data to
tell LAMMPS how to map processors to the simulation box.
Many input script errors are detected by LAMMPS and an ERROR or
WARNING message is printed. "This section"_Section_errors.html gives
more information on what errors mean. The documentation for each
command lists restrictions on how the command can be used.
:line
3.2 Parsing rules :link(cmd_2),h4
Each non-blank line in the input script is treated as a command.
LAMMPS commands are case sensitive. Command names are lower-case, as
are specified command arguments. Upper case letters may be used in
file names or user-chosen ID strings.
Here is how each line in the input script is parsed by LAMMPS:
(1) If the last printable character on the line is a "&" character,
the command is assumed to continue on the next line. The next line is
concatenated to the previous line by removing the "&" character and
line break. This allows long commands to be continued across two or
more lines. See the discussion of triple quotes in (6) for how to
continue a command across multiple line without using "&" characters.
(2) All characters from the first "#" character onward are treated as
comment and discarded. See an exception in (6). Note that a
comment after a trailing "&" character will prevent the command from
continuing on the next line. Also note that for multi-line commands a
single leading "#" will comment out the entire command.
(3) The line is searched repeatedly for $ characters, which indicate
variables that are replaced with a text string. See an exception in
(6).
If the $ is followed by curly brackets, then the variable name is the
text inside the curly brackets. If no curly brackets follow the $,
then the variable name is the single character immediately following
the $. Thus $\{myTemp\} and $x refer to variable names "myTemp" and
"x".
How the variable is converted to a text string depends on what style
of variable it is; see the "variable"_variable.html doc page for details.
It can be a variable that stores multiple text strings, and return one
of them. The returned text string can be multiple "words" (space
separated) which will then be interpreted as multiple arguments in the
input command. The variable can also store a numeric formula which
will be evaluated and its numeric result returned as a string.
As a special case, if the $ is followed by parenthesis, then the text
inside the parenthesis is treated as an "immediate" variable and
evaluated as an "equal-style variable"_variable.html. This is a way
to use numeric formulas in an input script without having to assign
them to variable names. For example, these 3 input script lines:
variable X equal (xlo+xhi)/2+sqrt(v_area)
region 1 block $X 2 INF INF EDGE EDGE
variable X delete :pre
can be replaced by
region 1 block $((xlo+xhi)/2+sqrt(v_area)) 2 INF INF EDGE EDGE :pre
so that you do not have to define (or discard) a temporary variable X.
Note that neither the curly-bracket or immediate form of variables can
contain nested $ characters for other variables to substitute for.
Thus you cannot do this:
variable a equal 2
variable b2 equal 4
print "B2 = $\{b$a\}" :pre
Nor can you specify this $($x-1.0) for an immediate variable, but
you could use $(v_x-1.0), since the latter is valid syntax for an
"equal-style variable"_variable.html.
See the "variable"_variable.html command for more details of how
strings are assigned to variables and evaluated, and how they can be
used in input script commands.
(4) The line is broken into "words" separated by whitespace (tabs,
spaces). Note that words can thus contain letters, digits,
underscores, or punctuation characters.
(5) The first word is the command name. All successive words in the
line are arguments.
(6) If you want text with spaces to be treated as a single argument,
it can be enclosed in either single or double or triple quotes. A
long single argument enclosed in single or double quotes can span
multiple lines if the "&" character is used, as described above. When
the lines are concatenated together (and the "&" characters and line
breaks removed), the text will become a single line. If you want
multiple lines of an argument to retain their line breaks, the text
can be enclosed in triple quotes, in which case "&" characters are not
needed. For example:
print "Volume = $v"
print 'Volume = $v'
if "$\{steps\} > 1000" then quit
variable a string "red green blue &
purple orange cyan"
print """
System volume = $v
System temperature = $t
""" :pre
In each case, the single, double, or triple quotes are removed when
the single argument they enclose is stored internally.
See the "dump modify format"_dump_modify.html, "print"_print.html,
"if"_if.html, and "python"_python.html commands for examples.
A "#" or "$" character that is between quotes will not be treated as a
comment indicator in (2) or substituted for as a variable in (3).
NOTE: If the argument is itself a command that requires a quoted
argument (e.g. using a "print"_print.html command as part of an
"if"_if.html or "run every"_run.html command), then single, double, or
triple quotes can be nested in the usual manner. See the doc pages
for those commands for examples. Only one of level of nesting is
allowed, but that should be sufficient for most use cases.
:line
3.3 Input script structure :h4,link(cmd_3)
This section describes the structure of a typical LAMMPS input script.
The "examples" directory in the LAMMPS distribution contains many
sample input scripts; the corresponding problems are discussed in
"Section 7"_Section_example.html, and animated on the "LAMMPS
WWW Site"_lws.
A LAMMPS input script typically has 4 parts:
Initialization
Atom definition
Settings
Run a simulation :ol
The last 2 parts can be repeated as many times as desired. I.e. run a
simulation, change some settings, run some more, etc. Each of the 4
parts is now described in more detail. Remember that almost all the
commands need only be used if a non-default value is desired.
(1) Initialization
Set parameters that need to be defined before atoms are created or
read-in from a file.
The relevant commands are "units"_units.html,
"dimension"_dimension.html, "newton"_newton.html,
"processors"_processors.html, "boundary"_boundary.html,
"atom_style"_atom_style.html, "atom_modify"_atom_modify.html.
If force-field parameters appear in the files that will be read, these
commands tell LAMMPS what kinds of force fields are being used:
"pair_style"_pair_style.html, "bond_style"_bond_style.html,
"angle_style"_angle_style.html, "dihedral_style"_dihedral_style.html,
"improper_style"_improper_style.html.
(2) Atom definition
There are 3 ways to define atoms in LAMMPS. Read them in from a data
or restart file via the "read_data"_read_data.html or
"read_restart"_read_restart.html commands. These files can contain
molecular topology information. Or create atoms on a lattice (with no
molecular topology), using these commands: "lattice"_lattice.html,
"region"_region.html, "create_box"_create_box.html,
"create_atoms"_create_atoms.html. The entire set of atoms can be
duplicated to make a larger simulation using the
"replicate"_replicate.html command.
(3) Settings
Once atoms and molecular topology are defined, a variety of settings
can be specified: force field coefficients, simulation parameters,
output options, etc.
Force field coefficients are set by these commands (they can also be
set in the read-in files): "pair_coeff"_pair_coeff.html,
"bond_coeff"_bond_coeff.html, "angle_coeff"_angle_coeff.html,
"dihedral_coeff"_dihedral_coeff.html,
"improper_coeff"_improper_coeff.html,
"kspace_style"_kspace_style.html, "dielectric"_dielectric.html,
"special_bonds"_special_bonds.html.
Various simulation parameters are set by these commands:
"neighbor"_neighbor.html, "neigh_modify"_neigh_modify.html,
"group"_group.html, "timestep"_timestep.html,
"reset_timestep"_reset_timestep.html, "run_style"_run_style.html,
"min_style"_min_style.html, "min_modify"_min_modify.html.
Fixes impose a variety of boundary conditions, time integration, and
diagnostic options. The "fix"_fix.html command comes in many flavors.
Various computations can be specified for execution during a
simulation using the "compute"_compute.html,
"compute_modify"_compute_modify.html, and "variable"_variable.html
commands.
Output options are set by the "thermo"_thermo.html, "dump"_dump.html,
and "restart"_restart.html commands.
(4) Run a simulation
A molecular dynamics simulation is run using the "run"_run.html
command. Energy minimization (molecular statics) is performed using
the "minimize"_minimize.html command. A parallel tempering
(replica-exchange) simulation can be run using the
"temper"_temper.html command.
:line
3.4 Commands listed by category :link(cmd_4),h4
This section lists all LAMMPS commands, grouped by category. The
"next section"_#cmd_5 lists the same commands alphabetically. The
next section also includes (long) lists of style options for entries
that appear in the following categories as a single command (fix,
compute, pair, etc). Commands that are added by user packages are not
included in these categories, but they are in the next section.
Initialization:
"newton"_newton.html,
"package"_package.html,
"processors"_processors.html,
"suffix"_suffix.html,
"units"_units.html
Setup simulation box:
"boundary"_boundary.html,
"box"_box.html,
"change_box"_change_box.html,
"create_box"_create_box.html,
"dimension"_dimension.html,
"lattice"_lattice.html,
"region"_region.html
Setup atoms:
"atom_modify"_atom_modify.html,
"atom_style"_atom_style.html,
"balance"_balance.html,
"create_atoms"_create_atoms.html,
"create_bonds"_create_bonds.html,
"delete_atoms"_delete_atoms.html,
"delete_bonds"_delete_bonds.html,
"displace_atoms"_displace_atoms.html,
"group"_group.html,
"mass"_mass.html,
"molecule"_molecule.html,
"read_data"_read_data.html,
"read_dump"_read_dump.html,
"read_restart"_read_restart.html,
"replicate"_replicate.html,
"set"_set.html,
"velocity"_velocity.html
Force fields:
"angle_coeff"_angle_coeff.html,
"angle_style"_angle_style.html,
"bond_coeff"_bond_coeff.html,
"bond_style"_bond_style.html,
"bond_write"_bond_write.html,
"dielectric"_dielectric.html,
"dihedral_coeff"_dihedral_coeff.html,
"dihedral_style"_dihedral_style.html,
"improper_coeff"_improper_coeff.html,
"improper_style"_improper_style.html,
"kspace_modify"_kspace_modify.html,
"kspace_style"_kspace_style.html,
"pair_coeff"_pair_coeff.html,
"pair_modify"_pair_modify.html,
"pair_style"_pair_style.html,
"pair_write"_pair_write.html,
"special_bonds"_special_bonds.html
Settings:
"comm_modify"_comm_modify.html,
"comm_style"_comm_style.html,
"info"_info.html,
"min_modify"_min_modify.html,
"min_style"_min_style.html,
"neigh_modify"_neigh_modify.html,
"neighbor"_neighbor.html,
"partition"_partition.html,
"reset_timestep"_reset_timestep.html,
"run_style"_run_style.html,
"timer"_timer.html,
"timestep"_timestep.html
Operations within timestepping (fixes) and diagnositics (computes):
"compute"_compute.html,
"compute_modify"_compute_modify.html,
"fix"_fix.html,
"fix_modify"_fix_modify.html,
"uncompute"_uncompute.html,
"unfix"_unfix.html
Output:
"dump image"_dump_image.html,
"dump movie"_dump_image.html,
"dump"_dump.html,
"dump_modify"_dump_modify.html,
"restart"_restart.html,
"thermo"_thermo.html,
"thermo_modify"_thermo_modify.html,
"thermo_style"_thermo_style.html,
"undump"_undump.html,
"write_coeff"_write_coeff.html,
"write_data"_write_data.html,
"write_dump"_write_dump.html,
"write_restart"_write_restart.html
Actions:
"minimize"_minimize.html,
"neb"_neb.html,
"prd"_prd.html,
"rerun"_rerun.html,
"run"_run.html,
"tad"_tad.html,
"temper"_temper.html
Input script control:
"clear"_clear.html,
"echo"_echo.html,
"if"_if.html,
"include"_include.html,
"jump"_jump.html,
"label"_label.html,
"log"_log.html,
"next"_next.html,
"print"_print.html,
"python"_python.html,
"quit"_quit.html,
"shell"_shell.html,
"variable"_variable.html
:line
3.5 Individual commands :h4,link(cmd_5),link(comm)
This section lists all LAMMPS commands alphabetically, with a separate
listing below of styles within certain commands. The "previous
section"_#cmd_4 lists the same commands, grouped by category. Note
that some style options for some commands are part of specific LAMMPS
packages, which means they cannot be used unless the package was
included when LAMMPS was built. Not all packages are included in a
default LAMMPS build. These dependencies are listed as Restrictions
in the command's documentation.
"angle_coeff"_angle_coeff.html,
"angle_style"_angle_style.html,
"atom_modify"_atom_modify.html,
"atom_style"_atom_style.html,
"balance"_balance.html,
"bond_coeff"_bond_coeff.html,
"bond_style"_bond_style.html,
"bond_write"_bond_write.html,
"boundary"_boundary.html,
"box"_box.html,
"change_box"_change_box.html,
"clear"_clear.html,
"comm_modify"_comm_modify.html,
"comm_style"_comm_style.html,
"compute"_compute.html,
"compute_modify"_compute_modify.html,
"create_atoms"_create_atoms.html,
"create_bonds"_create_bonds.html,
"create_box"_create_box.html,
"delete_atoms"_delete_atoms.html,
"delete_bonds"_delete_bonds.html,
"dielectric"_dielectric.html,
"dihedral_coeff"_dihedral_coeff.html,
"dihedral_style"_dihedral_style.html,
"dimension"_dimension.html,
"displace_atoms"_displace_atoms.html,
"dump"_dump.html,
"dump image"_dump_image.html,
"dump_modify"_dump_modify.html,
"dump movie"_dump_image.html,
"echo"_echo.html,
"fix"_fix.html,
"fix_modify"_fix_modify.html,
"group"_group.html,
"if"_if.html,
"info"_info.html,
"improper_coeff"_improper_coeff.html,
"improper_style"_improper_style.html,
"include"_include.html,
"jump"_jump.html,
"kspace_modify"_kspace_modify.html,
"kspace_style"_kspace_style.html,
"label"_label.html,
"lattice"_lattice.html,
"log"_log.html,
"mass"_mass.html,
"minimize"_minimize.html,
"min_modify"_min_modify.html,
"min_style"_min_style.html,
"molecule"_molecule.html,
"neb"_neb.html,
"neigh_modify"_neigh_modify.html,
"neighbor"_neighbor.html,
"newton"_newton.html,
"next"_next.html,
"package"_package.html,
"pair_coeff"_pair_coeff.html,
"pair_modify"_pair_modify.html,
"pair_style"_pair_style.html,
"pair_write"_pair_write.html,
"partition"_partition.html,
"prd"_prd.html,
"print"_print.html,
"processors"_processors.html,
"python"_python.html,
"quit"_quit.html,
"read_data"_read_data.html,
"read_dump"_read_dump.html,
"read_restart"_read_restart.html,
"region"_region.html,
"replicate"_replicate.html,
"rerun"_rerun.html,
"reset_timestep"_reset_timestep.html,
"restart"_restart.html,
"run"_run.html,
"run_style"_run_style.html,
"set"_set.html,
"shell"_shell.html,
"special_bonds"_special_bonds.html,
"suffix"_suffix.html,
"tad"_tad.html,
"temper"_temper.html,
"thermo"_thermo.html,
"thermo_modify"_thermo_modify.html,
"thermo_style"_thermo_style.html,
"timer"_timer.html,
"timestep"_timestep.html,
"uncompute"_uncompute.html,
"undump"_undump.html,
"unfix"_unfix.html,
"units"_units.html,
"variable"_variable.html,
"velocity"_velocity.html,
"write_coeff"_write_coeff.html,
"write_data"_write_data.html,
"write_dump"_write_dump.html,
"write_restart"_write_restart.html :tb(c=6,ea=c)
These are additional commands in USER packages, which can be used if
"LAMMPS is built with the appropriate
package"_Section_start.html#start_3.
"dump custom/vtk"_dump_custom_vtk.html,
"dump nc"_dump_nc.html,
"dump nc/mpiio"_dump_nc.html,
"group2ndx"_group2ndx.html,
-"ndx2group"_group2ndx.html :tb(c=3,ea=c)
+"ndx2group"_group2ndx.html,
+"temper/grem"_temper_grem.html :tb(c=3,ea=c)
:line
Fix styles :h4
See the "fix"_fix.html command for one-line descriptions of each style
or click on the style itself for a full description. Some of the
styles have accelerated versions, which can be used if LAMMPS is built
with the "appropriate accelerated package"_Section_accelerate.html.
This is indicated by additional letters in parenthesis: g = GPU, i =
USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.
"adapt"_fix_adapt.html,
"addforce"_fix_addforce.html,
"append/atoms"_fix_append_atoms.html,
"atom/swap"_fix_atom_swap.html,
"aveforce"_fix_aveforce.html,
"ave/atom"_fix_ave_atom.html,
"ave/chunk"_fix_ave_chunk.html,
"ave/correlate"_fix_ave_correlate.html,
"ave/histo"_fix_ave_histo.html,
"ave/histo/weight"_fix_ave_histo.html,
"ave/time"_fix_ave_time.html,
"balance"_fix_balance.html,
"bond/break"_fix_bond_break.html,
"bond/create"_fix_bond_create.html,
"bond/swap"_fix_bond_swap.html,
"box/relax"_fix_box_relax.html,
"cmap"_fix_cmap.html,
"controller"_fix_controller.html,
"deform (k)"_fix_deform.html,
"deposit"_fix_deposit.html,
"drag"_fix_drag.html,
"dt/reset"_fix_dt_reset.html,
"efield"_fix_efield.html,
"ehex"_fix_ehex.html,
"enforce2d"_fix_enforce2d.html,
"evaporate"_fix_evaporate.html,
"external"_fix_external.html,
"freeze"_fix_freeze.html,
"gcmc"_fix_gcmc.html,
"gld"_fix_gld.html,
"gravity (o)"_fix_gravity.html,
"halt"_fix_halt.html,
"heat"_fix_heat.html,
"indent"_fix_indent.html,
"langevin (k)"_fix_langevin.html,
"lineforce"_fix_lineforce.html,
"momentum"_fix_momentum.html,
"move"_fix_move.html,
"msst"_fix_msst.html,
"neb"_fix_neb.html,
"nph (ko)"_fix_nh.html,
"nphug (o)"_fix_nphug.html,
"nph/asphere (o)"_fix_nph_asphere.html,
"nph/body"_fix_nph_body.html,
"nph/sphere (o)"_fix_nph_sphere.html,
"npt (kio)"_fix_nh.html,
"npt/asphere (o)"_fix_npt_asphere.html,
"npt/body"_fix_npt_body.html,
"npt/sphere (o)"_fix_npt_sphere.html,
"nve (kio)"_fix_nve.html,
"nve/asphere (i)"_fix_nve_asphere.html,
"nve/asphere/noforce"_fix_nve_asphere_noforce.html,
"nve/body"_fix_nve_body.html,
"nve/limit"_fix_nve_limit.html,
"nve/line"_fix_nve_line.html,
"nve/noforce"_fix_nve_noforce.html,
"nve/sphere (o)"_fix_nve_sphere.html,
"nve/tri"_fix_nve_tri.html,
"nvt (iko)"_fix_nh.html,
"nvt/asphere (o)"_fix_nvt_asphere.html,
"nvt/body"_fix_nvt_body.html,
"nvt/sllod (io)"_fix_nvt_sllod.html,
"nvt/sphere (o)"_fix_nvt_sphere.html,
"oneway"_fix_oneway.html,
"orient/bcc"_fix_orient.html,
"orient/fcc"_fix_orient.html,
"planeforce"_fix_planeforce.html,
"poems"_fix_poems.html,
"pour"_fix_pour.html,
"press/berendsen"_fix_press_berendsen.html,
"print"_fix_print.html,
"property/atom"_fix_property_atom.html,
"qeq/comb (o)"_fix_qeq_comb.html,
"qeq/dynamic"_fix_qeq.html,
"qeq/fire"_fix_qeq.html,
"qeq/point"_fix_qeq.html,
"qeq/shielded"_fix_qeq.html,
"qeq/slater"_fix_qeq.html,
"rattle"_fix_shake.html,
"reax/bonds"_fix_reax_bonds.html,
"recenter"_fix_recenter.html,
"restrain"_fix_restrain.html,
"rigid (o)"_fix_rigid.html,
"rigid/nph (o)"_fix_rigid.html,
"rigid/npt (o)"_fix_rigid.html,
"rigid/nve (o)"_fix_rigid.html,
"rigid/nvt (o)"_fix_rigid.html,
"rigid/small (o)"_fix_rigid.html,
-"rigid/small/nph"_fix_rigid.html,
-"rigid/small/npt"_fix_rigid.html,
-"rigid/small/nve"_fix_rigid.html,
-"rigid/small/nvt"_fix_rigid.html,
+"rigid/small/nph (o)"_fix_rigid.html,
+"rigid/small/npt (o)"_fix_rigid.html,
+"rigid/small/nve (o)"_fix_rigid.html,
+"rigid/small/nvt (o)"_fix_rigid.html,
"setforce (k)"_fix_setforce.html,
"shake"_fix_shake.html,
"spring"_fix_spring.html,
"spring/chunk"_fix_spring_chunk.html,
"spring/rg"_fix_spring_rg.html,
"spring/self"_fix_spring_self.html,
"srd"_fix_srd.html,
"store/force"_fix_store_force.html,
"store/state"_fix_store_state.html,
"temp/berendsen"_fix_temp_berendsen.html,
"temp/csld"_fix_temp_csvr.html,
"temp/csvr"_fix_temp_csvr.html,
"temp/rescale"_fix_temp_rescale.html,
"tfmc"_fix_tfmc.html,
"thermal/conductivity"_fix_thermal_conductivity.html,
"tmd"_fix_tmd.html,
"ttm"_fix_ttm.html,
"tune/kspace"_fix_tune_kspace.html,
"vector"_fix_vector.html,
"viscosity"_fix_viscosity.html,
"viscous"_fix_viscous.html,
"wall/colloid"_fix_wall.html,
"wall/gran"_fix_wall_gran.html,
"wall/gran/region"_fix_wall_gran_region.html,
"wall/harmonic"_fix_wall.html,
"wall/lj1043"_fix_wall.html,
"wall/lj126"_fix_wall.html,
"wall/lj93"_fix_wall.html,
"wall/piston"_fix_wall_piston.html,
"wall/reflect (k)"_fix_wall_reflect.html,
"wall/region"_fix_wall_region.html,
"wall/srd"_fix_wall_srd.html :tb(c=8,ea=c)
These are additional fix styles in USER packages, which can be used if
"LAMMPS is built with the appropriate
package"_Section_start.html#start_3.
"adapt/fep"_fix_adapt_fep.html,
"addtorque"_fix_addtorque.html,
"atc"_fix_atc.html,
"ave/correlate/long"_fix_ave_correlate_long.html,
"colvars"_fix_colvars.html,
"dpd/energy"_fix_dpd_energy.html,
"drude"_fix_drude.html,
"drude/transform/direct"_fix_drude_transform.html,
"drude/transform/reverse"_fix_drude_transform.html,
"eos/cv"_fix_eos_cv.html,
"eos/table"_fix_eos_table.html,
"eos/table/rx"_fix_eos_table_rx.html,
"flow/gauss"_fix_flow_gauss.html,
"gle"_fix_gle.html,
+"grem"_fix_grem.html,
"imd"_fix_imd.html,
"ipi"_fix_ipi.html,
"langevin/drude"_fix_langevin_drude.html,
"langevin/eff"_fix_langevin_eff.html,
"lb/fluid"_fix_lb_fluid.html,
"lb/momentum"_fix_lb_momentum.html,
"lb/pc"_fix_lb_pc.html,
"lb/rigid/pc/sphere"_fix_lb_rigid_pc_sphere.html,
"lb/viscous"_fix_lb_viscous.html,
"meso"_fix_meso.html,
"manifoldforce"_fix_manifoldforce.html,
"meso/stationary"_fix_meso_stationary.html,
"nve/manifold/rattle"_fix_nve_manifold_rattle.html,
"nvt/manifold/rattle"_fix_nvt_manifold_rattle.html,
"nph/eff"_fix_nh_eff.html,
"npt/eff"_fix_nh_eff.html,
"nve/eff"_fix_nve_eff.html,
"nvt/eff"_fix_nh_eff.html,
"nvt/sllod/eff"_fix_nvt_sllod_eff.html,
"phonon"_fix_phonon.html,
"pimd"_fix_pimd.html,
"qbmsst"_fix_qbmsst.html,
"qeq/reax"_fix_qeq_reax.html,
"qmmm"_fix_qmmm.html,
"qtb"_fix_qtb.html,
"reax/c/bonds"_fix_reax_bonds.html,
"reax/c/species"_fix_reaxc_species.html,
"rx"_fix_rx.html,
"saed/vtk"_fix_saed_vtk.html,
"shardlow"_fix_shardlow.html,
"smd"_fix_smd.html,
"smd/adjust/dt"_fix_smd_adjust_dt.html,
"smd/integrate/tlsph"_fix_smd_integrate_tlsph.html,
"smd/integrate/ulsph"_fix_smd_integrate_ulsph.html,
"smd/move/triangulated/surface"_fix_smd_move_triangulated_surface.html,
"smd/setvel"_fix_smd_setvel.html,
"smd/wall/surface"_fix_smd_wall_surface.html,
"temp/rescale/eff"_fix_temp_rescale_eff.html,
"ti/spring"_fix_ti_spring.html,
"ttm/mod"_fix_ttm.html :tb(c=6,ea=c)
:line
Compute styles :h4
See the "compute"_compute.html command for one-line descriptions of
each style or click on the style itself for a full description. Some
of the styles have accelerated versions, which can be used if LAMMPS
is built with the "appropriate accelerated
package"_Section_accelerate.html. This is indicated by additional
letters in parenthesis: g = GPU, i = USER-INTEL, k =
KOKKOS, o = USER-OMP, t = OPT.
"angle"_compute_angle.html,
"angle/local"_compute_angle_local.html,
"angmom/chunk"_compute_angmom_chunk.html,
"body/local"_compute_body_local.html,
"bond"_compute_bond.html,
"bond/local"_compute_bond_local.html,
"centro/atom"_compute_centro_atom.html,
"chunk/atom"_compute_chunk_atom.html,
"cluster/atom"_compute_cluster_atom.html,
"cna/atom"_compute_cna_atom.html,
"com"_compute_com.html,
"com/chunk"_compute_com_chunk.html,
"contact/atom"_compute_contact_atom.html,
"coord/atom"_compute_coord_atom.html,
"damage/atom"_compute_damage_atom.html,
"dihedral"_compute_dihedral.html,
"dihedral/local"_compute_dihedral_local.html,
"dilatation/atom"_compute_dilatation_atom.html,
"dipole/chunk"_compute_dipole_chunk.html,
"displace/atom"_compute_displace_atom.html,
"erotate/asphere"_compute_erotate_asphere.html,
"erotate/rigid"_compute_erotate_rigid.html,
"erotate/sphere"_compute_erotate_sphere.html,
"erotate/sphere/atom"_compute_erotate_sphere_atom.html,
"event/displace"_compute_event_displace.html,
+"global/atom"_compute_global_atom.html,
"group/group"_compute_group_group.html,
"gyration"_compute_gyration.html,
"gyration/chunk"_compute_gyration_chunk.html,
"heat/flux"_compute_heat_flux.html,
"hexorder/atom"_compute_hexorder_atom.html,
"improper"_compute_improper.html,
"improper/local"_compute_improper_local.html,
"inertia/chunk"_compute_inertia_chunk.html,
"ke"_compute_ke.html,
"ke/atom"_compute_ke_atom.html,
"ke/rigid"_compute_ke_rigid.html,
"msd"_compute_msd.html,
"msd/chunk"_compute_msd_chunk.html,
"msd/nongauss"_compute_msd_nongauss.html,
"omega/chunk"_compute_omega_chunk.html,
"orientorder/atom"_compute_orientorder_atom.html,
"pair"_compute_pair.html,
"pair/local"_compute_pair_local.html,
"pe"_compute_pe.html,
"pe/atom"_compute_pe_atom.html,
"plasticity/atom"_compute_plasticity_atom.html,
"pressure"_compute_pressure.html,
"property/atom"_compute_property_atom.html,
"property/local"_compute_property_local.html,
"property/chunk"_compute_property_chunk.html,
"rdf"_compute_rdf.html,
"reduce"_compute_reduce.html,
"reduce/region"_compute_reduce.html,
"rigid/local"_compute_rigid_local.html,
"slice"_compute_slice.html,
"sna/atom"_compute_sna_atom.html,
"snad/atom"_compute_sna_atom.html,
"snav/atom"_compute_sna_atom.html,
"stress/atom"_compute_stress_atom.html,
"temp (k)"_compute_temp.html,
"temp/asphere"_compute_temp_asphere.html,
"temp/body"_compute_temp_body.html,
"temp/chunk"_compute_temp_chunk.html,
"temp/com"_compute_temp_com.html,
"temp/deform"_compute_temp_deform.html,
"temp/partial"_compute_temp_partial.html,
"temp/profile"_compute_temp_profile.html,
"temp/ramp"_compute_temp_ramp.html,
"temp/region"_compute_temp_region.html,
"temp/sphere"_compute_temp_sphere.html,
"ti"_compute_ti.html,
"torque/chunk"_compute_torque_chunk.html,
"vacf"_compute_vacf.html,
"vcm/chunk"_compute_vcm_chunk.html,
"voronoi/atom"_compute_voronoi_atom.html :tb(c=6,ea=c)
These are additional compute styles in USER packages, which can be
used if "LAMMPS is built with the appropriate
package"_Section_start.html#start_3.
"ackland/atom"_compute_ackland_atom.html,
"basal/atom"_compute_basal_atom.html,
"dpd"_compute_dpd.html,
"dpd/atom"_compute_dpd_atom.html,
"fep"_compute_fep.html,
"force/tally"_compute_tally.html,
"heat/flux/tally"_compute_tally.html,
"ke/eff"_compute_ke_eff.html,
"ke/atom/eff"_compute_ke_atom_eff.html,
"meso/e/atom"_compute_meso_e_atom.html,
"meso/rho/atom"_compute_meso_rho_atom.html,
"meso/t/atom"_compute_meso_t_atom.html,
"pe/tally"_compute_tally.html,
"pe/mol/tally"_compute_tally.html,
"saed"_compute_saed.html,
"smd/contact/radius"_compute_smd_contact_radius.html,
"smd/damage"_compute_smd_damage.html,
"smd/hourglass/error"_compute_smd_hourglass_error.html,
"smd/internal/energy"_compute_smd_internal_energy.html,
"smd/plastic/strain"_compute_smd_plastic_strain.html,
"smd/plastic/strain/rate"_compute_smd_plastic_strain_rate.html,
"smd/rho"_compute_smd_rho.html,
"smd/tlsph/defgrad"_compute_smd_tlsph_defgrad.html,
"smd/tlsph/dt"_compute_smd_tlsph_dt.html,
"smd/tlsph/num/neighs"_compute_smd_tlsph_num_neighs.html,
"smd/tlsph/shape"_compute_smd_tlsph_shape.html,
"smd/tlsph/strain"_compute_smd_tlsph_strain.html,
"smd/tlsph/strain/rate"_compute_smd_tlsph_strain_rate.html,
"smd/tlsph/stress"_compute_smd_tlsph_stress.html,
"smd/triangle/mesh/vertices"_compute_smd_triangle_mesh_vertices.html,
"smd/ulsph/num/neighs"_compute_smd_ulsph_num_neighs.html,
"smd/ulsph/strain"_compute_smd_ulsph_strain.html,
"smd/ulsph/strain/rate"_compute_smd_ulsph_strain_rate.html,
"smd/ulsph/stress"_compute_smd_ulsph_stress.html,
"smd/vol"_compute_smd_vol.html,
"stress/tally"_compute_tally.html,
"temp/drude"_compute_temp_drude.html,
"temp/eff"_compute_temp_eff.html,
"temp/deform/eff"_compute_temp_deform_eff.html,
"temp/region/eff"_compute_temp_region_eff.html,
"temp/rotate"_compute_temp_rotate.html,
"xrd"_compute_xrd.html :tb(c=6,ea=c)
:line
Pair_style potentials :h4
See the "pair_style"_pair_style.html command for an overview of pair
potentials. Click on the style itself for a full description. Many
of the styles have accelerated versions, which can be used if LAMMPS
is built with the "appropriate accelerated
package"_Section_accelerate.html. This is indicated by additional
letters in parenthesis: g = GPU, i = USER-INTEL, k =
KOKKOS, o = USER-OMP, t = OPT.
"none"_pair_none.html,
"zero"_pair_zero.html,
"hybrid"_pair_hybrid.html,
"hybrid/overlay"_pair_hybrid.html,
"adp (o)"_pair_adp.html,
"airebo (o)"_pair_airebo.html,
"airebo/morse (o)"_pair_airebo.html,
"beck (go)"_pair_beck.html,
"body"_pair_body.html,
"bop"_pair_bop.html,
"born (go)"_pair_born.html,
"born/coul/dsf"_pair_born.html,
"born/coul/dsf/cs"_pair_born.html,
"born/coul/long (go)"_pair_born.html,
"born/coul/long/cs"_pair_born.html,
"born/coul/msm (o)"_pair_born.html,
"born/coul/wolf (go)"_pair_born.html,
"brownian (o)"_pair_brownian.html,
"brownian/poly (o)"_pair_brownian.html,
"buck (gkio)"_pair_buck.html,
"buck/coul/cut (gkio)"_pair_buck.html,
"buck/coul/long (gkio)"_pair_buck.html,
"buck/coul/long/cs"_pair_buck.html,
"buck/coul/msm (o)"_pair_buck.html,
"buck/long/coul/long (o)"_pair_buck_long.html,
"colloid (go)"_pair_colloid.html,
"comb (o)"_pair_comb.html,
"comb3"_pair_comb.html,
"coul/cut (gko)"_pair_coul.html,
"coul/debye (gko)"_pair_coul.html,
"coul/dsf (gko)"_pair_coul.html,
"coul/long (gko)"_pair_coul.html,
"coul/long/cs"_pair_coul.html,
"coul/msm"_pair_coul.html,
"coul/streitz"_pair_coul.html,
"coul/wolf (ko)"_pair_coul.html,
-"dpd (o)"_pair_dpd.html,
-"dpd/tstat (o)"_pair_dpd.html,
+"dpd (go)"_pair_dpd.html,
+"dpd/tstat (go)"_pair_dpd.html,
"dsmc"_pair_dsmc.html,
"eam (gkot)"_pair_eam.html,
"eam/alloy (gkot)"_pair_eam.html,
"eam/fs (gkot)"_pair_eam.html,
"eim (o)"_pair_eim.html,
"gauss (go)"_pair_gauss.html,
"gayberne (gio)"_pair_gayberne.html,
"gran/hertz/history (o)"_pair_gran.html,
"gran/hooke (o)"_pair_gran.html,
"gran/hooke/history (o)"_pair_gran.html,
"hbond/dreiding/lj (o)"_pair_hbond_dreiding.html,
"hbond/dreiding/morse (o)"_pair_hbond_dreiding.html,
"kim"_pair_kim.html,
"lcbop"_pair_lcbop.html,
"line/lj"_pair_line_lj.html,
"lj/charmm/coul/charmm (ko)"_pair_charmm.html,
"lj/charmm/coul/charmm/implicit (ko)"_pair_charmm.html,
"lj/charmm/coul/long (giko)"_pair_charmm.html,
"lj/charmm/coul/msm"_pair_charmm.html,
"lj/class2 (gko)"_pair_class2.html,
"lj/class2/coul/cut (ko)"_pair_class2.html,
"lj/class2/coul/long (gko)"_pair_class2.html,
"lj/cubic (go)"_pair_lj_cubic.html,
"lj/cut (gikot)"_pair_lj.html,
"lj/cut/coul/cut (gko)"_pair_lj.html,
"lj/cut/coul/debye (gko)"_pair_lj.html,
"lj/cut/coul/dsf (gko)"_pair_lj.html,
"lj/cut/coul/long (gikot)"_pair_lj.html,
"lj/cut/coul/long/cs"_pair_lj.html,
"lj/cut/coul/msm (go)"_pair_lj.html,
"lj/cut/dipole/cut (go)"_pair_dipole.html,
"lj/cut/dipole/long"_pair_dipole.html,
"lj/cut/tip4p/cut (o)"_pair_lj.html,
"lj/cut/tip4p/long (ot)"_pair_lj.html,
"lj/expand (gko)"_pair_lj_expand.html,
"lj/gromacs (gko)"_pair_gromacs.html,
"lj/gromacs/coul/gromacs (ko)"_pair_gromacs.html,
"lj/long/coul/long (o)"_pair_lj_long.html,
"lj/long/dipole/long"_pair_dipole.html,
"lj/long/tip4p/long"_pair_lj_long.html,
"lj/smooth (o)"_pair_lj_smooth.html,
"lj/smooth/linear (o)"_pair_lj_smooth_linear.html,
"lj96/cut (go)"_pair_lj96.html,
"lubricate (o)"_pair_lubricate.html,
"lubricate/poly (o)"_pair_lubricate.html,
"lubricateU"_pair_lubricateU.html,
"lubricateU/poly"_pair_lubricateU.html,
"meam"_pair_meam.html,
"mie/cut (o)"_pair_mie.html,
"morse (got)"_pair_morse.html,
"nb3b/harmonic (o)"_pair_nb3b_harmonic.html,
"nm/cut (o)"_pair_nm.html,
"nm/cut/coul/cut (o)"_pair_nm.html,
"nm/cut/coul/long (o)"_pair_nm.html,
"peri/eps"_pair_peri.html,
"peri/lps (o)"_pair_peri.html,
"peri/pmb (o)"_pair_peri.html,
"peri/ves"_pair_peri.html,
"polymorphic"_pair_polymorphic.html,
"reax"_pair_reax.html,
"rebo (o)"_pair_airebo.html,
"resquared (go)"_pair_resquared.html,
"snap"_pair_snap.html,
"soft (go)"_pair_soft.html,
"sw (gkio)"_pair_sw.html,
"table (gko)"_pair_table.html,
"tersoff (gkio)"_pair_tersoff.html,
"tersoff/mod (gko)"_pair_tersoff_mod.html,
"tersoff/mod/c (o)"_pair_tersoff_mod.html,
"tersoff/zbl (gko)"_pair_tersoff_zbl.html,
"tip4p/cut (o)"_pair_coul.html,
"tip4p/long (o)"_pair_coul.html,
"tri/lj"_pair_tri_lj.html,
"vashishta (ko)"_pair_vashishta.html,
"vashishta/table (o)"_pair_vashishta.html,
"yukawa (go)"_pair_yukawa.html,
"yukawa/colloid (go)"_pair_yukawa_colloid.html,
"zbl (go)"_pair_zbl.html :tb(c=4,ea=c)
These are additional pair styles in USER packages, which can be used
if "LAMMPS is built with the appropriate
package"_Section_start.html#start_3.
"agni (o)"_pair_agni.html,
"awpmd/cut"_pair_awpmd.html,
"buck/mdf"_pair_mdf.html,
"coul/cut/soft (o)"_pair_lj_soft.html,
"coul/diel (o)"_pair_coul_diel.html,
"coul/long/soft (o)"_pair_lj_soft.html,
"dpd/fdt"_pair_dpd_fdt.html,
"dpd/fdt/energy"_pair_dpd_fdt.html,
"eam/cd (o)"_pair_eam.html,
"edip (o)"_pair_edip.html,
"eff/cut"_pair_eff.html,
"exp6/rx"_pair_exp6_rx.html,
"gauss/cut"_pair_gauss.html,
"lennard/mdf"_pair_mdf.html,
"list"_pair_list.html,
"lj/charmm/coul/long/soft (o)"_pair_charmm.html,
"lj/cut/coul/cut/soft (o)"_pair_lj_soft.html,
"lj/cut/coul/long/soft (o)"_pair_lj_soft.html,
"lj/cut/dipole/sf (go)"_pair_dipole.html,
"lj/cut/soft (o)"_pair_lj_soft.html,
"lj/cut/thole/long (o)"_pair_thole.html,
"lj/cut/tip4p/long/soft (o)"_pair_lj_soft.html,
"lj/mdf"_pair_mdf.html,
"lj/sdk (gko)"_pair_sdk.html,
"lj/sdk/coul/long (go)"_pair_sdk.html,
"lj/sdk/coul/msm (o)"_pair_sdk.html,
"lj/sf (o)"_pair_lj_sf.html,
"meam/spline (o)"_pair_meam_spline.html,
"meam/sw/spline"_pair_meam_sw_spline.html,
"mgpt"_pair_mgpt.html,
"morse/smooth/linear"_pair_morse.html,
"morse/soft"_pair_morse.html,
"multi/lucy"_pair_multi_lucy.html,
"multi/lucy/rx"_pair_multi_lucy_rx.html,
"quip"_pair_quip.html,
"reax/c (k)"_pair_reax_c.html,
"smd/hertz"_pair_smd_hertz.html,
"smd/tlsph"_pair_smd_tlsph.html,
"smd/triangulated/surface"_pair_smd_triangulated_surface.html,
"smd/ulsph"_pair_smd_ulsph.html,
"smtbq"_pair_smtbq.html,
"sph/heatconduction"_pair_sph_heatconduction.html,
"sph/idealgas"_pair_sph_idealgas.html,
"sph/lj"_pair_sph_lj.html,
"sph/rhosum"_pair_sph_rhosum.html,
"sph/taitwater"_pair_sph_taitwater.html,
"sph/taitwater/morris"_pair_sph_taitwater_morris.html,
"srp"_pair_srp.html,
"table/rx"_pair_table_rx.html,
"tersoff/table (o)"_pair_tersoff.html,
"thole"_pair_thole.html,
"tip4p/long/soft (o)"_pair_lj_soft.html :tb(c=4,ea=c)
:line
Bond_style potentials :h4
See the "bond_style"_bond_style.html command for an overview of bond
potentials. Click on the style itself for a full description. Some
of the styles have accelerated versions, which can be used if LAMMPS
is built with the "appropriate accelerated
package"_Section_accelerate.html. This is indicated by additional
letters in parenthesis: g = GPU, i = USER-INTEL, k =
KOKKOS, o = USER-OMP, t = OPT.
"none"_bond_none.html,
"zero"_bond_zero.html,
"hybrid"_bond_hybrid.html,
"class2 (o)"_bond_class2.html,
"fene (iko)"_bond_fene.html,
"fene/expand (o)"_bond_fene_expand.html,
"harmonic (ko)"_bond_harmonic.html,
"morse (o)"_bond_morse.html,
"nonlinear (o)"_bond_nonlinear.html,
"quartic (o)"_bond_quartic.html,
"table (o)"_bond_table.html :tb(c=4,ea=c)
These are additional bond styles in USER packages, which can be used
if "LAMMPS is built with the appropriate
package"_Section_start.html#start_3.
"harmonic/shift (o)"_bond_harmonic_shift.html,
"harmonic/shift/cut (o)"_bond_harmonic_shift_cut.html :tb(c=4,ea=c)
:line
Angle_style potentials :h4
See the "angle_style"_angle_style.html command for an overview of
angle potentials. Click on the style itself for a full description.
Some of the styles have accelerated versions, which can be used if
LAMMPS is built with the "appropriate accelerated
package"_Section_accelerate.html. This is indicated by additional
letters in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o =
USER-OMP, t = OPT.
"none"_angle_none.html,
"zero"_angle_zero.html,
"hybrid"_angle_hybrid.html,
"charmm (ko)"_angle_charmm.html,
"class2 (o)"_angle_class2.html,
"cosine (o)"_angle_cosine.html,
"cosine/delta (o)"_angle_cosine_delta.html,
"cosine/periodic (o)"_angle_cosine_periodic.html,
"cosine/squared (o)"_angle_cosine_squared.html,
"harmonic (iko)"_angle_harmonic.html,
"table (o)"_angle_table.html :tb(c=4,ea=c)
These are additional angle styles in USER packages, which can be used
if "LAMMPS is built with the appropriate
package"_Section_start.html#start_3.
"cosine/shift (o)"_angle_cosine_shift.html,
"cosine/shift/exp (o)"_angle_cosine_shift_exp.html,
"dipole (o)"_angle_dipole.html,
"fourier (o)"_angle_fourier.html,
"fourier/simple (o)"_angle_fourier_simple.html,
"quartic (o)"_angle_quartic.html,
"sdk"_angle_sdk.html :tb(c=4,ea=c)
:line
Dihedral_style potentials :h4
See the "dihedral_style"_dihedral_style.html command for an overview
of dihedral potentials. Click on the style itself for a full
description. Some of the styles have accelerated versions, which can
be used if LAMMPS is built with the "appropriate accelerated
package"_Section_accelerate.html. This is indicated by additional
letters in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o =
USER-OMP, t = OPT.
"none"_dihedral_none.html,
"zero"_dihedral_zero.html,
"hybrid"_dihedral_hybrid.html,
"charmm (ko)"_dihedral_charmm.html,
"class2 (o)"_dihedral_class2.html,
"harmonic (io)"_dihedral_harmonic.html,
"helix (o)"_dihedral_helix.html,
"multi/harmonic (o)"_dihedral_multi_harmonic.html,
"opls (iko)"_dihedral_opls.html :tb(c=4,ea=c)
These are additional dihedral styles in USER packages, which can be
used if "LAMMPS is built with the appropriate
package"_Section_start.html#start_3.
"cosine/shift/exp (o)"_dihedral_cosine_shift_exp.html,
"fourier (o)"_dihedral_fourier.html,
"nharmonic (o)"_dihedral_nharmonic.html,
"quadratic (o)"_dihedral_quadratic.html,
"spherical (o)"_dihedral_spherical.html,
"table (o)"_dihedral_table.html :tb(c=4,ea=c)
:line
Improper_style potentials :h4
See the "improper_style"_improper_style.html command for an overview
of improper potentials. Click on the style itself for a full
description. Some of the styles have accelerated versions, which can
be used if LAMMPS is built with the "appropriate accelerated
package"_Section_accelerate.html. This is indicated by additional
letters in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o =
USER-OMP, t = OPT.
"none"_improper_none.html,
"zero"_improper_zero.html,
"hybrid"_improper_hybrid.html,
"class2 (o)"_improper_class2.html,
"cvff (io)"_improper_cvff.html,
"harmonic (ko)"_improper_harmonic.html,
"umbrella (o)"_improper_umbrella.html :tb(c=4,ea=c)
These are additional improper styles in USER packages, which can be
used if "LAMMPS is built with the appropriate
package"_Section_start.html#start_3.
"cossq (o)"_improper_cossq.html,
"distance"_improper_distance.html,
"fourier (o)"_improper_fourier.html,
"ring (o)"_improper_ring.html :tb(c=4,ea=c)
:line
Kspace solvers :h4
See the "kspace_style"_kspace_style.html command for an overview of
Kspace solvers. Click on the style itself for a full description.
Some of the styles have accelerated versions, which can be used if
LAMMPS is built with the "appropriate accelerated
package"_Section_accelerate.html. This is indicated by additional
letters in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o =
USER-OMP, t = OPT.
"ewald (o)"_kspace_style.html,
"ewald/disp"_kspace_style.html,
"msm (o)"_kspace_style.html,
"msm/cg (o)"_kspace_style.html,
"pppm (go)"_kspace_style.html,
"pppm/cg (o)"_kspace_style.html,
"pppm/disp"_kspace_style.html,
"pppm/disp/tip4p"_kspace_style.html,
"pppm/stagger"_kspace_style.html,
"pppm/tip4p (o)"_kspace_style.html :tb(c=4,ea=c)
diff --git a/doc/src/Section_python.txt b/doc/src/Section_python.txt
index b3b5171e7..bd4dfcf53 100644
--- a/doc/src/Section_python.txt
+++ b/doc/src/Section_python.txt
@@ -1,826 +1,838 @@
"Previous Section"_Section_modify.html - "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc - "Next Section"_Section_errors.html :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
11. Python interface to LAMMPS :h3
-LAMMPS can work together with Python in two ways. First, Python can
+LAMMPS can work together with Python in three ways. First, Python can
wrap LAMMPS through the "LAMMPS library
interface"_Section_howto.html#howto_19, so that a Python script can
create one or more instances of LAMMPS and launch one or more
simulations. In Python lingo, this is "extending" Python with LAMMPS.
-Second, LAMMPS can use the Python interpreter, so that a LAMMPS input
+Second, the low-level Python interface can be used indirectly through the
+PyLammps and IPyLammps wrapper classes in Python. These wrappers try to
+simplify the usage of LAMMPS in Python by providing an object-based interface
+to common LAMMPS functionality. It also reduces the amount of code necessary to
+parameterize LAMMPS scripts through Python and makes variables and computes
+directly accessible. See "PyLammps interface"_#py_9 for more details.
+
+Third, LAMMPS can use the Python interpreter, so that a LAMMPS input
script can invoke Python code, and pass information back-and-forth
between the input script and Python functions you write. The Python
code can also callback to LAMMPS to query or change its attributes.
In Python lingo, this is "embedding" Python in LAMMPS.
-This section describes how to do both.
+This section describes how to use these three approaches.
11.1 "Overview of running LAMMPS from Python"_#py_1
11.2 "Overview of using Python from a LAMMPS script"_#py_2
11.3 "Building LAMMPS as a shared library"_#py_3
11.4 "Installing the Python wrapper into Python"_#py_4
11.5 "Extending Python with MPI to run in parallel"_#py_5
11.6 "Testing the Python-LAMMPS interface"_#py_6
11.7 "Using LAMMPS from Python"_#py_7
-11.8 "Example Python scripts that use LAMMPS"_#py_8 :ul
+11.8 "Example Python scripts that use LAMMPS"_#py_8
+11.9 "PyLammps interface"_#py_9 :ul
If you are not familiar with it, "Python"_http://www.python.org is a
powerful scripting and programming language which can essentially do
anything that faster, lower-level languages like C or C++ can do, but
typically with much fewer lines of code. When used in embedded mode,
Python can perform operations that the simplistic LAMMPS input script
syntax cannot. Python can be also be used as a "glue" language to
drive a program through its library interface, or to hook multiple
pieces of software together, such as a simulation package plus a
visualization package, or to run a coupled multiscale or multiphysics
model.
See "Section 6.10"_Section_howto.html#howto_10 of the manual and
the couple directory of the distribution for more ideas about coupling
LAMMPS to other codes. See "Section
6.19"_Section_howto.html#howto_19 for a description of the LAMMPS
library interface provided in src/library.cpp and src/library.h, and
how to extend it for your needs. As described below, that interface
is what is exposed to Python either when calling LAMMPS from Python or
when calling Python from a LAMMPS input script and then calling back
to LAMMPS from Python code. The library interface is designed to be
easy to add functions to. Thus the Python interface to LAMMPS is also
easy to extend as well.
If you create interesting Python scripts that run LAMMPS or
interesting Python functions that can be called from a LAMMPS input
script, that you think would be useful to other users, please "email
them to the developers"_http://lammps.sandia.gov/authors.html. We can
include them in the LAMMPS distribution.
:line
:line
11.1 Overview of running LAMMPS from Python :link(py_1),h4
The LAMMPS distribution includes a python directory with all you need
to run LAMMPS from Python. The python/lammps.py file wraps the LAMMPS
library interface, with one wrapper function per LAMMPS library
function. This file makes it is possible to do the following either
from a Python script, or interactively from a Python prompt: create
one or more instances of LAMMPS, invoke LAMMPS commands or give it an
input script, run LAMMPS incrementally, extract LAMMPS results, an
modify internal LAMMPS variables. From a Python script you can do
this in serial or parallel. Running Python interactively in parallel
does not generally work, unless you have a version of Python that
extends standard Python to enable multiple instances of Python to read
what you type.
To do all of this, you must first build LAMMPS as a shared library,
then insure that your Python can find the python/lammps.py file and
the shared library. These steps are explained in subsequent sections
11.3 and 11.4. Sections 11.5 and 11.6 discuss using MPI from a
parallel Python program and how to test that you are ready to use
LAMMPS from Python. Section 11.7 lists all the functions in the
current LAMMPS library interface and how to call them from Python.
Section 11.8 gives some examples of coupling LAMMPS to other tools via
Python. For example, LAMMPS can easily be coupled to a GUI or other
visualization tools that display graphs or animations in real time as
LAMMPS runs. Examples of such scripts are inlcluded in the python
directory.
Two advantages of using Python to run LAMMPS are how concise the
language is, and that it can be run interactively, enabling rapid
development and debugging of programs. If you use it to mostly invoke
costly operations within LAMMPS, such as running a simulation for a
reasonable number of timesteps, then the overhead cost of invoking
LAMMPS thru Python will be negligible.
The Python wrapper for LAMMPS uses the amazing and magical (to me)
"ctypes" package in Python, which auto-generates the interface code
needed between Python and a set of C interface routines for a library.
Ctypes is part of standard Python for versions 2.5 and later. You can
check which version of Python you have installed, by simply typing
"python" at a shell prompt.
:line
11.2 Overview of using Python from a LAMMPS script :link(py_2),h4
NOTE: It is not currently possible to use the "python"_python.html
command described in this section with Python 3, only with Python 2.
The C API changed from Python 2 to 3 and the LAMMPS code is not
compatible with both.
LAMMPS has a "python"_python.html command which can be used in an
input script to define and execute a Python function that you write
the code for. The Python function can also be assigned to a LAMMPS
python-style variable via the "variable"_variable.html command. Each
time the variable is evaluated, either in the LAMMPS input script
itself, or by another LAMMPS command that uses the variable, this will
trigger the Python function to be invoked.
The Python code for the function can be included directly in the input
script or in an auxiliary file. The function can have arguments which
are mapped to LAMMPS variables (also defined in the input script) and
it can return a value to a LAMMPS variable. This is thus a mechanism
for your input script to pass information to a piece of Python code,
ask Python to execute the code, and return information to your input
script.
Note that a Python function can be arbitrarily complex. It can import
other Python modules, instantiate Python classes, call other Python
functions, etc. The Python code that you provide can contain more
code than the single function. It can contain other functions or
Python classes, as well as global variables or other mechanisms for
storing state between calls from LAMMPS to the function.
The Python function you provide can consist of "pure" Python code that
only performs operations provided by standard Python. However, the
Python function can also "call back" to LAMMPS through its
Python-wrapped library interface, in the manner described in the
previous section 11.1. This means it can issue LAMMPS input script
commands or query and set internal LAMMPS state. As an example, this
can be useful in an input script to create a more complex loop with
branching logic, than can be created using the simple looping and
branching logic enabled by the "next"_next.html and "if"_if.html
commands.
See the "python"_python.html doc page and the "variable"_variable.html
doc page for its python-style variables for more info, including
examples of Python code you can write for both pure Python operations
and callbacks to LAMMPS.
To run pure Python code from LAMMPS, you only need to build LAMMPS
with the PYTHON package installed:
make yes-python
make machine :pre
Note that this will link LAMMPS with the Python library on your
system, which typically requires several auxiliary system libraries to
also be linked. The list of these libraries and the paths to find
them are specified in the lib/python/Makefile.lammps file. You need
to insure that file contains the correct information for your version
of Python and your machine to successfully build LAMMPS. See the
lib/python/README file for more info.
If you want to write Python code with callbacks to LAMMPS, then you
must also follow the steps overviewed in the preceeding section (11.1)
for running LAMMPS from Python. I.e. you must build LAMMPS as a
shared library and insure that Python can find the python/lammps.py
file and the shared library.
:line
11.3 Building LAMMPS as a shared library :link(py_3),h4
Instructions on how to build LAMMPS as a shared library are given in
"Section 2.5"_Section_start.html#start_5. A shared library is one
that is dynamically loadable, which is what Python requires to wrap
LAMMPS. On Linux this is a library file that ends in ".so", not ".a".
From the src directory, type
make foo mode=shlib :pre
where foo is the machine target name, such as linux or g++ or serial.
This should create the file liblammps_foo.so in the src directory, as
well as a soft link liblammps.so, which is what the Python wrapper will
load by default. Note that if you are building multiple machine
versions of the shared library, the soft link is always set to the
most recently built version.
NOTE: If you are building LAMMPS with an MPI or FFT library or other
auxiliary libraries (used by various packages), then all of these
extra libraries must also be shared libraries. If the LAMMPS
shared-library build fails with an error complaining about this, see
"Section 2.5"_Section_start.html#start_5 for more details.
:line
11.4 Installing the Python wrapper into Python :link(py_4),h4
For Python to invoke LAMMPS, there are 2 files it needs to know about:
python/lammps.py
src/liblammps.so :ul
Lammps.py is the Python wrapper on the LAMMPS library interface.
Liblammps.so is the shared LAMMPS library that Python loads, as
described above.
You can insure Python can find these files in one of two ways:
set two environment variables
run the python/install.py script :ul
If you set the paths to these files as environment variables, you only
have to do it once. For the csh or tcsh shells, add something like
this to your ~/.cshrc file, one line for each of the two files:
setenv PYTHONPATH $\{PYTHONPATH\}:/home/sjplimp/lammps/python
setenv LD_LIBRARY_PATH $\{LD_LIBRARY_PATH\}:/home/sjplimp/lammps/src :pre
If you use the python/install.py script, you need to invoke it every
time you rebuild LAMMPS (as a shared library) or make changes to the
python/lammps.py file.
You can invoke install.py from the python directory as
% python install.py \[libdir\] \[pydir\] :pre
The optional libdir is where to copy the LAMMPS shared library to; the
default is /usr/local/lib. The optional pydir is where to copy the
lammps.py file to; the default is the site-packages directory of the
version of Python that is running the install script.
Note that libdir must be a location that is in your default
LD_LIBRARY_PATH, like /usr/local/lib or /usr/lib. And pydir must be a
location that Python looks in by default for imported modules, like
its site-packages dir. If you want to copy these files to
non-standard locations, such as within your own user space, you will
need to set your PYTHONPATH and LD_LIBRARY_PATH environment variables
accordingly, as above.
If the install.py script does not allow you to copy files into system
directories, prefix the python command with "sudo". If you do this,
make sure that the Python that root runs is the same as the Python you
run. E.g. you may need to do something like
% sudo /usr/local/bin/python install.py \[libdir\] \[pydir\] :pre
You can also invoke install.py from the make command in the src
directory as
% make install-python :pre
In this mode you cannot append optional arguments. Again, you may
need to prefix this with "sudo". In this mode you cannot control
which Python is invoked by root.
Note that if you want Python to be able to load different versions of
the LAMMPS shared library (see "this section"_#py_5 below), you will
need to manually copy files like liblammps_g++.so into the appropriate
system directory. This is not needed if you set the LD_LIBRARY_PATH
environment variable as described above.
:line
11.5 Extending Python with MPI to run in parallel :link(py_5),h4
If you wish to run LAMMPS in parallel from Python, you need to extend
your Python with an interface to MPI. This also allows you to
make MPI calls directly from Python in your script, if you desire.
There are several Python packages available that purport to wrap MPI
as a library and allow MPI functions to be called from Python. However,
development on most of them seems to be halted except on:
"mpi4py"_https://bitbucket.org/mpi4py/mpi4py
"PyPar"_https://github.com/daleroberts/pypar :ul
Both packages, PyPar and mpi4py have been successfully tested with
LAMMPS. PyPar is simpler and easy to set up and use, but supports
only a subset of MPI. Mpi4py is more MPI-feature complete, but also a
bit more complex to use. As of version 2.0.0, mpi4py is the only
python MPI wrapper that allows passing a custom MPI communicator to
the LAMMPS constructor, which means one can easily run one or more
LAMMPS instances on subsets of the total MPI ranks.
:line
PyPar requires the ubiquitous "Numpy package"_http://numpy.scipy.org
be installed in your Python. After launching Python, type
import numpy :pre
to see if it is installed. If not, here is how to install it (version
1.3.0b1 as of April 2009). Unpack the numpy tarball and from its
top-level directory, type
python setup.py build
sudo python setup.py install :pre
The "sudo" is only needed if required to copy Numpy files into your
Python distribution's site-packages directory.
To install PyPar (version pypar-2.1.4_94 as of Aug 2012), unpack it
and from its "source" directory, type
python setup.py build
sudo python setup.py install :pre
Again, the "sudo" is only needed if required to copy PyPar files into
your Python distribution's site-packages directory.
If you have successully installed PyPar, you should be able to run
Python and type
import pypar :pre
without error. You should also be able to run python in parallel
on a simple test script
% mpirun -np 4 python test.py :pre
where test.py contains the lines
import pypar
print "Proc %d out of %d procs" % (pypar.rank(),pypar.size()) :pre
and see one line of output for each processor you run on.
NOTE: To use PyPar and LAMMPS in parallel from Python, you must insure
both are using the same version of MPI. If you only have one MPI
installed on your system, this is not an issue, but it can be if you
have multiple MPIs. Your LAMMPS build is explicit about which MPI it
is using, since you specify the details in your lo-level
src/MAKE/Makefile.foo file. PyPar uses the "mpicc" command to find
information about the MPI it uses to build against. And it tries to
load "libmpi.so" from the LD_LIBRARY_PATH. This may or may not find
the MPI library that LAMMPS is using. If you have problems running
both PyPar and LAMMPS together, this is an issue you may need to
address, e.g. by moving other MPI installations so that PyPar finds
the right one.
:line
To install mpi4py (version mpi4py-2.0.0 as of Oct 2015), unpack it
and from its main directory, type
python setup.py build
sudo python setup.py install :pre
Again, the "sudo" is only needed if required to copy mpi4py files into
your Python distribution's site-packages directory. To install with
user privilege into the user local directory type
python setup.py install --user :pre
If you have successully installed mpi4py, you should be able to run
Python and type
from mpi4py import MPI :pre
without error. You should also be able to run python in parallel
on a simple test script
% mpirun -np 4 python test.py :pre
where test.py contains the lines
from mpi4py import MPI
comm = MPI.COMM_WORLD
print "Proc %d out of %d procs" % (comm.Get_rank(),comm.Get_size()) :pre
and see one line of output for each processor you run on.
NOTE: To use mpi4py and LAMMPS in parallel from Python, you must
insure both are using the same version of MPI. If you only have one
MPI installed on your system, this is not an issue, but it can be if
you have multiple MPIs. Your LAMMPS build is explicit about which MPI
it is using, since you specify the details in your lo-level
src/MAKE/Makefile.foo file. Mpi4py uses the "mpicc" command to find
information about the MPI it uses to build against. And it tries to
load "libmpi.so" from the LD_LIBRARY_PATH. This may or may not find
the MPI library that LAMMPS is using. If you have problems running
both mpi4py and LAMMPS together, this is an issue you may need to
address, e.g. by moving other MPI installations so that mpi4py finds
the right one.
:line
11.6 Testing the Python-LAMMPS interface :link(py_6),h4
To test if LAMMPS is callable from Python, launch Python interactively
and type:
>>> from lammps import lammps
>>> lmp = lammps() :pre
If you get no errors, you're ready to use LAMMPS from Python. If the
2nd command fails, the most common error to see is
OSError: Could not load LAMMPS dynamic library :pre
which means Python was unable to load the LAMMPS shared library. This
typically occurs if the system can't find the LAMMPS shared library or
one of the auxiliary shared libraries it depends on, or if something
about the library is incompatible with your Python. The error message
should give you an indication of what went wrong.
You can also test the load directly in Python as follows, without
first importing from the lammps.py file:
>>> from ctypes import CDLL
>>> CDLL("liblammps.so") :pre
If an error occurs, carefully go thru the steps in "Section
2.5"_Section_start.html#start_5 and above about building a shared
library and about insuring Python can find the necessary two files
it needs.
[Test LAMMPS and Python in serial:] :h5
To run a LAMMPS test in serial, type these lines into Python
interactively from the bench directory:
>>> from lammps import lammps
>>> lmp = lammps()
>>> lmp.file("in.lj") :pre
Or put the same lines in the file test.py and run it as
% python test.py :pre
Either way, you should see the results of running the in.lj benchmark
on a single processor appear on the screen, the same as if you had
typed something like:
lmp_g++ -in in.lj :pre
[Test LAMMPS and Python in parallel:] :h5
To run LAMMPS in parallel, assuming you have installed the
"PyPar"_https://github.com/daleroberts/pypar package as discussed
above, create a test.py file containing these lines:
import pypar
from lammps import lammps
lmp = lammps()
lmp.file("in.lj")
print "Proc %d out of %d procs has" % (pypar.rank(),pypar.size()),lmp
pypar.finalize() :pre
To run LAMMPS in parallel, assuming you have installed the
"mpi4py"_https://bitbucket.org/mpi4py/mpi4py package as discussed
above, create a test.py file containing these lines:
from mpi4py import MPI
from lammps import lammps
lmp = lammps()
lmp.file("in.lj")
me = MPI.COMM_WORLD.Get_rank()
nprocs = MPI.COMM_WORLD.Get_size()
print "Proc %d out of %d procs has" % (me,nprocs),lmp
MPI.Finalize() :pre
You can either script in parallel as:
% mpirun -np 4 python test.py :pre
and you should see the same output as if you had typed
% mpirun -np 4 lmp_g++ -in in.lj :pre
Note that if you leave out the 3 lines from test.py that specify PyPar
commands you will instantiate and run LAMMPS independently on each of
the P processors specified in the mpirun command. In this case you
should get 4 sets of output, each showing that a LAMMPS run was made
on a single processor, instead of one set of output showing that
LAMMPS ran on 4 processors. If the 1-processor outputs occur, it
means that PyPar is not working correctly.
Also note that once you import the PyPar module, PyPar initializes MPI
for you, and you can use MPI calls directly in your Python script, as
described in the PyPar documentation. The last line of your Python
script should be pypar.finalize(), to insure MPI is shut down
correctly.
[Running Python scripts:] :h5
Note that any Python script (not just for LAMMPS) can be invoked in
one of several ways:
% python foo.script
% python -i foo.script
% foo.script :pre
The last command requires that the first line of the script be
something like this:
#!/usr/local/bin/python
#!/usr/local/bin/python -i :pre
where the path points to where you have Python installed, and that you
have made the script file executable:
% chmod +x foo.script :pre
Without the "-i" flag, Python will exit when the script finishes.
With the "-i" flag, you will be left in the Python interpreter when
the script finishes, so you can type subsequent commands. As
mentioned above, you can only run Python interactively when running
Python on a single processor, not in parallel.
:line
:line
11.7 Using LAMMPS from Python :link(py_7),h4
As described above, the Python interface to LAMMPS consists of a
Python "lammps" module, the source code for which is in
python/lammps.py, which creates a "lammps" object, with a set of
methods that can be invoked on that object. The sample Python code
below assumes you have first imported the "lammps" module in your
Python script, as follows:
from lammps import lammps :pre
These are the methods defined by the lammps module. If you look at
the files src/library.cpp and src/library.h you will see that they
correspond one-to-one with calls you can make to the LAMMPS library
from a C++ or C or Fortran program, and which are described in
"Section 6.19"_Section_howto.html#howto_19 of the manual.
lmp = lammps() # create a LAMMPS object using the default liblammps.so library
# 4 optional args are allowed: name, cmdargs, ptr, comm
lmp = lammps(ptr=lmpptr) # use lmpptr as previously created LAMMPS object
lmp = lammps(comm=split) # create a LAMMPS object with a custom communicator, requires mpi4py 2.0.0 or later
lmp = lammps(name="g++") # create a LAMMPS object using the liblammps_g++.so library
lmp = lammps(name="g++",cmdargs=list) # add LAMMPS command-line args, e.g. list = \["-echo","screen"\] :pre
lmp.close() # destroy a LAMMPS object :pre
version = lmp.version() # return the numerical version id, e.g. LAMMPS 2 Sep 2015 -> 20150902
lmp.file(file) # run an entire input script, file = "in.lj"
lmp.command(cmd) # invoke a single LAMMPS command, cmd = "run 100" :pre
lmp.commands_list(cmdlist) # invoke commands in cmdlist = ["run 10", "run 20"]
lmp.commands_string(multicmd) # invoke commands in multicmd = "run 10\nrun 20"
xlo = lmp.extract_global(name,type) # extract a global quantity
# name = "boxxlo", "nlocal", etc
# type = 0 = int
# 1 = double :pre
coords = lmp.extract_atom(name,type) # extract a per-atom quantity
# name = "x", "type", etc
# type = 0 = vector of ints
# 1 = array of ints
# 2 = vector of doubles
# 3 = array of doubles :pre
eng = lmp.extract_compute(id,style,type) # extract value(s) from a compute
v3 = lmp.extract_fix(id,style,type,i,j) # extract value(s) from a fix
# id = ID of compute or fix
# style = 0 = global data
# 1 = per-atom data
# 2 = local data
# type = 0 = scalar
# 1 = vector
# 2 = array
# i,j = indices of value in global vector or array :pre
var = lmp.extract_variable(name,group,flag) # extract value(s) from a variable
# name = name of variable
# group = group ID (ignored for equal-style variables)
# flag = 0 = equal-style variable
# 1 = atom-style variable :pre
flag = lmp.set_variable(name,value) # set existing named string-style variable to value, flag = 0 if successful
value = lmp.get_thermo(name) # return current value of a thermo keyword
natoms = lmp.get_natoms() # total # of atoms as int
data = lmp.gather_atoms(name,type,count) # return atom attribute of all atoms gathered into data, ordered by atom ID
# name = "x", "charge", "type", etc
# count = # of per-atom values, 1 or 3, etc
lmp.scatter_atoms(name,type,count,data) # scatter atom attribute of all atoms from data, ordered by atom ID
# name = "x", "charge", "type", etc
# count = # of per-atom values, 1 or 3, etc :pre
:line
The lines
from lammps import lammps
lmp = lammps() :pre
create an instance of LAMMPS, wrapped in a Python class by the lammps
Python module, and return an instance of the Python class as lmp. It
is used to make all subequent calls to the LAMMPS library.
Additional arguments to lammps() can be used to tell Python the name
of the shared library to load or to pass arguments to the LAMMPS
instance, the same as if LAMMPS were launched from a command-line
prompt.
If the ptr argument is set like this:
lmp = lammps(ptr=lmpptr) :pre
then lmpptr must be an argument passed to Python via the LAMMPS
"python"_python.html command, when it is used to define a Python
function that is invoked by the LAMMPS input script. This mode of
using Python with LAMMPS is described above in 11.2. The variable
lmpptr refers to the instance of LAMMPS that called the embedded
Python interpreter. Using it as an argument to lammps() allows the
returned Python class instance "lmp" to make calls to that instance of
LAMMPS. See the "python"_python.html command doc page for examples
using this syntax.
Note that you can create multiple LAMMPS objects in your Python
script, and coordinate and run multiple simulations, e.g.
from lammps import lammps
lmp1 = lammps()
lmp2 = lammps()
lmp1.file("in.file1")
lmp2.file("in.file2") :pre
The file(), command(), commands_list(), commands_string() methods
allow an input script, a single command, or multiple commands to be
invoked.
The extract_global(), extract_atom(), extract_compute(),
extract_fix(), and extract_variable() methods return values or
pointers to data structures internal to LAMMPS.
For extract_global() see the src/library.cpp file for the list of
valid names. New names could easily be added. A double or integer is
returned. You need to specify the appropriate data type via the type
argument.
For extract_atom(), a pointer to internal LAMMPS atom-based data is
returned, which you can use via normal Python subscripting. See the
extract() method in the src/atom.cpp file for a list of valid names.
Again, new names could easily be added. A pointer to a vector of
doubles or integers, or a pointer to an array of doubles (double **)
or integers (int **) is returned. You need to specify the appropriate
data type via the type argument.
For extract_compute() and extract_fix(), the global, per-atom, or
local data calulated by the compute or fix can be accessed. What is
returned depends on whether the compute or fix calculates a scalar or
vector or array. For a scalar, a single double value is returned. If
the compute or fix calculates a vector or array, a pointer to the
internal LAMMPS data is returned, which you can use via normal Python
subscripting. The one exception is that for a fix that calculates a
global vector or array, a single double value from the vector or array
is returned, indexed by I (vector) or I and J (array). I,J are
zero-based indices. The I,J arguments can be left out if not needed.
See "Section 6.15"_Section_howto.html#howto_15 of the manual for a
discussion of global, per-atom, and local data, and of scalar, vector,
and array data types. See the doc pages for individual
"computes"_compute.html and "fixes"_fix.html for a description of what
they calculate and store.
For extract_variable(), an "equal-style or atom-style
variable"_variable.html is evaluated and its result returned.
For equal-style variables a single double value is returned and the
group argument is ignored. For atom-style variables, a vector of
doubles is returned, one value per atom, which you can use via normal
Python subscripting. The values will be zero for atoms not in the
specified group.
The get_natoms() method returns the total number of atoms in the
simulation, as an int.
The gather_atoms() method returns a ctypes vector of ints or doubles
as specified by type, of length count*natoms, for the property of all
the atoms in the simulation specified by name, ordered by count and
then by atom ID. The vector can be used via normal Python
subscripting. If atom IDs are not consecutively ordered within
LAMMPS, a None is returned as indication of an error.
Note that the data structure gather_atoms("x") returns is different
from the data structure returned by extract_atom("x") in four ways.
(1) Gather_atoms() returns a vector which you index as x\[i\];
extract_atom() returns an array which you index as x\[i\]\[j\]. (2)
Gather_atoms() orders the atoms by atom ID while extract_atom() does
not. (3) Gathert_atoms() returns a list of all atoms in the
simulation; extract_atoms() returns just the atoms local to each
processor. (4) Finally, the gather_atoms() data structure is a copy
of the atom coords stored internally in LAMMPS, whereas extract_atom()
returns an array that effectively points directly to the internal
data. This means you can change values inside LAMMPS from Python by
assigning a new values to the extract_atom() array. To do this with
the gather_atoms() vector, you need to change values in the vector,
then invoke the scatter_atoms() method.
The scatter_atoms() method takes a vector of ints or doubles as
specified by type, of length count*natoms, for the property of all the
atoms in the simulation specified by name, ordered by bount and then
by atom ID. It uses the vector of data to overwrite the corresponding
properties for each atom inside LAMMPS. This requires LAMMPS to have
its "map" option enabled; see the "atom_modify"_atom_modify.html
command for details. If it is not, or if atom IDs are not
consecutively ordered, no coordinates are reset.
The array of coordinates passed to scatter_atoms() must be a ctypes
vector of ints or doubles, allocated and initialized something like
this:
from ctypes import *
natoms = lmp.get_natoms()
n3 = 3*natoms
x = (n3*c_double)()
x\[0\] = x coord of atom with ID 1
x\[1\] = y coord of atom with ID 1
x\[2\] = z coord of atom with ID 1
x\[3\] = x coord of atom with ID 2
...
x\[n3-1\] = z coord of atom with ID natoms
lmp.scatter_coords("x",1,3,x) :pre
Alternatively, you can just change values in the vector returned by
gather_atoms("x",1,3), since it is a ctypes vector of doubles.
:line
As noted above, these Python class methods correspond one-to-one with
the functions in the LAMMPS library interface in src/library.cpp and
library.h. This means you can extend the Python wrapper via the
following steps:
Add a new interface function to src/library.cpp and
src/library.h. :ulb,l
Rebuild LAMMPS as a shared library. :l
Add a wrapper method to python/lammps.py for this interface
function. :l
You should now be able to invoke the new interface function from a
Python script. Isn't ctypes amazing? :l
:ule
:line
:line
11.8 Example Python scripts that use LAMMPS :link(py_8),h4
These are the Python scripts included as demos in the python/examples
directory of the LAMMPS distribution, to illustrate the kinds of
things that are possible when Python wraps LAMMPS. If you create your
own scripts, send them to us and we can include them in the LAMMPS
distribution.
trivial.py, read/run a LAMMPS input script thru Python,
demo.py, invoke various LAMMPS library interface routines,
simple.py, run in parallel, similar to examples/COUPLE/simple/simple.cpp,
split.py, same as simple.py but running in parallel on a subset of procs,
gui.py, GUI go/stop/temperature-slider to control LAMMPS,
plot.py, real-time temeperature plot with GnuPlot via Pizza.py,
viz_tool.py, real-time viz via some viz package,
vizplotgui_tool.py, combination of viz_tool.py and plot.py and gui.py :tb(c=2)
:line
For the viz_tool.py and vizplotgui_tool.py commands, replace "tool"
with "gl" or "atomeye" or "pymol" or "vmd", depending on what
visualization package you have installed.
Note that for GL, you need to be able to run the Pizza.py GL tool,
which is included in the pizza sub-directory. See the "Pizza.py doc
pages"_pizza for more info:
:link(pizza,http://www.sandia.gov/~sjplimp/pizza.html)
Note that for AtomEye, you need version 3, and there is a line in the
scripts that specifies the path and name of the executable. See the
AtomEye WWW pages "here"_atomeye or "here"_atomeye3 for more details:
http://mt.seas.upenn.edu/Archive/Graphics/A
http://mt.seas.upenn.edu/Archive/Graphics/A3/A3.html :pre
:link(atomeye,http://mt.seas.upenn.edu/Archive/Graphics/A)
:link(atomeye3,http://mt.seas.upenn.edu/Archive/Graphics/A3/A3.html)
The latter link is to AtomEye 3 which has the scriping
capability needed by these Python scripts.
Note that for PyMol, you need to have built and installed the
open-source version of PyMol in your Python, so that you can import it
from a Python script. See the PyMol WWW pages "here"_pymolhome or
"here"_pymolopen for more details:
http://www.pymol.org
http://sourceforge.net/scm/?type=svn&group_id=4546 :pre
:link(pymolhome,http://www.pymol.org)
:link(pymolopen,http://sourceforge.net/scm/?type=svn&group_id=4546)
The latter link is to the open-source version.
Note that for VMD, you need a fairly current version (1.8.7 works for
me) and there are some lines in the pizza/vmd.py script for 4 PIZZA
variables that have to match the VMD installation on your system.
:line
See the python/README file for instructions on how to run them and the
source code for individual scripts for comments about what they do.
Here are screenshots of the vizplotgui_tool.py script in action for
different visualization package options. Click to see larger images:
:image(JPG/screenshot_gl_small.jpg,JPG/screenshot_gl.jpg)
:image(JPG/screenshot_atomeye_small.jpg,JPG/screenshot_atomeye.jpg)
:image(JPG/screenshot_pymol_small.jpg,JPG/screenshot_pymol.jpg)
:image(JPG/screenshot_vmd_small.jpg,JPG/screenshot_vmd.jpg)
+
+11.9 PyLammps interface :link(py_9),h4
+
+Please see the "PyLammps Tutorial"_tutorial_pylammps.html.
diff --git a/doc/src/compute_chunk_atom.txt b/doc/src/compute_chunk_atom.txt
index 60516fe42..e6083ad61 100644
--- a/doc/src/compute_chunk_atom.txt
+++ b/doc/src/compute_chunk_atom.txt
@@ -1,665 +1,666 @@
"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 chunk/atom command :h3
[Syntax:]
compute ID group-ID chunk/atom style args keyword values ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
chunk/atom = style name of this compute command :l
style = {bin/1d} or {bin/2d} or {bin/3d} or {bin/sphere} or {type} or {molecule} or {compute/fix/variable}
{bin/1d} args = dim origin delta
dim = {x} or {y} or {z}
origin = {lower} or {center} or {upper} or coordinate value (distance units)
delta = thickness of spatial bins in dim (distance units)
{bin/2d} args = dim origin delta dim origin delta
dim = {x} or {y} or {z}
origin = {lower} or {center} or {upper} or coordinate value (distance units)
delta = thickness of spatial bins in dim (distance units)
{bin/3d} args = dim origin delta dim origin delta dim origin delta
dim = {x} or {y} or {z}
origin = {lower} or {center} or {upper} or coordinate value (distance units)
delta = thickness of spatial bins in dim (distance units)
{bin/sphere} args = xorig yorig zorig rmin rmax nsbin
xorig,yorig,zorig = center point of sphere
srmin,srmax = bin from sphere radius rmin to rmax
nsbin = # of spherical shell bins between rmin and rmax
{bin/cylinder} args = dim origin delta c1 c2 rmin rmax ncbin
dim = {x} or {y} or {z} = axis of cylinder axis
origin = {lower} or {center} or {upper} or coordinate value (distance units)
delta = thickness of spatial bins in dim (distance units)
c1,c2 = coords of cylinder axis in other 2 dimensions (distance units)
crmin,crmax = bin from cylinder radius rmin to rmax (distance units)
ncbin = # of concentric circle bins between rmin and rmax
{type} args = none
{molecule} args = none
{compute/fix/variable} = c_ID, c_ID\[I\], f_ID, f_ID\[I\], v_name with no args
c_ID = per-atom vector calculated by a compute with ID
c_ID\[I\] = Ith column of per-atom array calculated by a compute with ID
f_ID = per-atom vector calculated by a fix with ID
f_ID\[I\] = Ith column of per-atom array calculated by a fix with ID
v_name = per-atom vector calculated by an atom-style variable with name :pre
zero or more keyword/values pairs may be appended :l
keyword = {region} or {nchunk} or {static} or {compress} or {bound} or {discard} or {pbc} or {units} :l
{region} value = region-ID
region-ID = ID of region atoms must be in to be part of a chunk
{nchunk} value = {once} or {every}
once = only compute the number of chunks once
every = re-compute the number of chunks whenever invoked
{limit} values = 0 or Nc max or Nc exact
0 = no limit on the number of chunks
Nc max = limit number of chunks to be <= Nc
Nc exact = set number of chunks to exactly Nc
{ids} value = {once} or {nfreq} or {every}
once = assign chunk IDs to atoms only once, they persist thereafter
nfreq = assign chunk IDs to atoms only once every Nfreq steps (if invoked by "fix ave/chunk"_fix_ave_chunk.html which sets Nfreq)
every = assign chunk IDs to atoms whenever invoked
{compress} value = {yes} or {no}
yes = compress chunk IDs to eliminate IDs with no atoms
no = do not compress chunk IDs even if some IDs have no atoms
{discard} value = {yes} or {no} or {mixed}
yes = discard atoms with out-of-range chunk IDs by assigning a chunk ID = 0
no = keep atoms with out-of-range chunk IDs by assigning a valid chunk ID
mixed = keep or discard such atoms according to spatial binning rule
{bound} values = x/y/z lo hi
x/y/z = {x} or {y} or {z} to bound sptial bins in this dimension
lo = {lower} or coordinate value (distance units)
hi = {upper} or coordinate value (distance units)
{pbc} value = {no} or {yes}
yes = use periodic distance for bin/sphere and bin/cylinder styles
{units} value = {box} or {lattice} or {reduced} :pre
:ule
[Examples:]
compute 1 all chunk/atom type
compute 1 all chunk/atom bin/1d z lower 0.02 units reduced
compute 1 all chunk/atom bin/2d z lower 1.0 y 0.0 2.5
compute 1 all chunk/atom molecule region sphere nchunk once ids once compress yes
compute 1 all chunk/atom bin/sphere 5 5 5 2.0 5.0 5 discard yes
compute 1 all chunk/atom bin/cylinder z lower 2 10 10 2.0 5.0 3 discard yes :pre
[Description:]
Define a computation that calculates an integer chunk ID from 1 to
Nchunk for each atom in the group. Values of chunk IDs are determined
by the {style} of chunk, which can be based on atom type or molecule
ID or spatial binning or a per-atom property or value calculated by
another "compute"_compute.html, "fix"_fix.html, or "atom-style
variable"_variable.html. Per-atom chunk IDs can be used by other
computes with "chunk" in their style name, such as "compute
com/chunk"_compute_com_chunk.html or "compute
msd/chunk"_compute_msd_chunk.html. Or they can be used by the "fix
ave/chunk"_fix_ave_chunk.html command to sum and time average a
variety of per-atom properties over the atoms in each chunk. Or they
can simply be accessed by any command that uses per-atom values from a
compute as input, as discussed in "Section
6.15"_Section_howto.html#howto_15.
See "Section 6.23"_Section_howto.html#howto_23 for an overview of
how this compute can be used with a variety of other commands to
tabulate properties of a simulation. The howto section gives several
examples of input script commands that can be used to calculate
interesting properties.
Conceptually it is important to realize that this compute does two
simple things. First, it sets the value of {Nchunk} = the number of
chunks, which can be a constant value or change over time. Second, it
assigns each atom to a chunk via a chunk ID. Chunk IDs range from 1
to {Nchunk} inclusive; some chunks may have no atoms assigned to them.
Atoms that do not belong to any chunk are assigned a value of 0. Note
that the two operations are not always performed together. For
example, spatial bins can be setup once (which sets {Nchunk}), and
atoms assigned to those bins many times thereafter (setting their
chunk IDs).
All other commands in LAMMPS that use chunk IDs assume there are
{Nchunk} number of chunks, and that every atom is assigned to one of
those chunks, or not assigned to any chunk.
There are many options for specifying for how and when {Nchunk} is
calculated, and how and when chunk IDs are assigned to atoms. The
details depend on the chunk {style} and its {args}, as well as
optional keyword settings. They can also depend on whether a "fix
ave/chunk"_fix_ave_chunk.html command is using this compute, since
that command requires {Nchunk} to remain static across windows of
timesteps it specifies, while it accumulates per-chunk averages.
The details are described below.
:line
:line
The different chunk styles operate as follows. For each style, how it
calculates {Nchunk} and assigns chunk IDs to atoms is explained. Note
that using the optional keywords can change both of those actions, as
described further below where the keywords are discussed.
:line
The {binning} styles perform a spatial binning of atoms, and assign an
atom the chunk ID corresponding to the bin number it is in. {Nchunk}
is set to the number of bins, which can change if the simulation box
size changes.
The {bin/1d}, {bin/2d}, and {bin/3d} styles define bins as 1d layers
(slabs), 2d pencils, or 3d boxes. The {dim}, {origin}, and {delta}
settings are specified 1, 2, or 3 times. For 2d or 3d bins, there is
no restriction on specifying dim = x before dim = y or z, or dim = y
before dim = z. Bins in a particular {dim} have a bin size in that
dimension given by {delta}. In each dimension, bins are defined
relative to a specified {origin}, which may be the lower/upper edge of
the simulation box (in that dimension), or its center point, or a
specified coordinate value. Starting at the origin, sufficient bins
are created in both directions to completely span the simulation box
or the bounds specified by the optional {bounds} keyword.
For orthogonal simulation boxes, the bins are layers, pencils, or
boxes aligned with the xyz coordinate axes. For triclinic
(non-orthogonal) simulation boxes, the bin faces are parallel to the
tilted faces of the simulation box. See "this
section"_Section_howto.html#howto_12 of the manual for a discussion of
the geometry of triclinic boxes in LAMMPS. As described there, a
tilted simulation box has edge vectors a,b,c. In that nomenclature,
bins in the x dimension have faces with normals in the "b" cross "c"
direction. Bins in y have faces normal to the "a" cross "c"
direction. And bins in z have faces normal to the "a" cross "b"
direction. Note that in order to define the size and position of
these bins in an unambiguous fashion, the {units} option must be set
to {reduced} when using a triclinic simulation box, as noted below.
The meaning of {origin} and {delta} for triclinic boxes is as follows.
Consider a triclinic box with bins that are 1d layers or slabs in the
x dimension. No matter how the box is tilted, an {origin} of 0.0
means start layers at the lower "b" cross "c" plane of the simulation
box and an {origin} of 1.0 means to start layers at the upper "b"
cross "c" face of the box. A {delta} value of 0.1 in {reduced} units
means there will be 10 layers from 0.0 to 1.0, regardless of the
current size or shape of the simulation box.
The {bin/sphere} style defines a set of spherical shell bins around
the origin ({xorig},{yorig},{zorig}), using {nsbin} bins with radii
equally spaced between {srmin} and {srmax}. This is effectively a 1d
vector of bins. For example, if {srmin} = 1.0 and {srmax} = 10.0 and
{nsbin} = 9, then the first bin spans 1.0 < r < 2.0, and the last bin
spans 9.0 < r 10.0. The geometry of the bins is the same whether the
simulation box is orthogonal or triclinic; i.e. the spherical shells
are not tilted or scaled differently in different dimensions to
transform them into ellipsoidal shells.
The {bin/cylinder} style defines bins for a cylinder oriented along
the axis {dim} with the axis coordinates in the other two radial
dimensions at ({c1},{c2}). For dim = x, c1/c2 = y/z; for dim = y,
c1/c2 = x/z; for dim = z, c1/c2 = x/y. This is effectively a 2d array
of bins. The first dimension is along the cylinder axis, the second
dimension is radially outward from the cylinder axis. The bin size
and positions along the cylinder axis are specified by the {origin}
and {delta} values, the same as for the {bin/1d}, {bin/2d}, and
{bin/3d} styles. There are {ncbin} concentric circle bins in the
radial direction from the cylinder axis with radii equally spaced
between {crmin} and {crmax}. For example, if {crmin} = 1.0 and
{crmax} = 10.0 and {ncbin} = 9, then the first bin spans 1.0 < r <
2.0, and the last bin spans 9.0 < r 10.0. The geometry of the bins in
the radial dimensions is the same whether the simulation box is
orthogonal or triclinic; i.e. the concetric circles are not tilted or
scaled differently in the two different dimensions to transform them
into ellipses.
The created bins (and hence the chunk IDs) are numbered consecutively
from 1 to the number of bins = {Nchunk}. For {bin2d} and {bin3d}, the
numbering varies most rapidly in the first dimension (which could be
x, y, or z), next rapidly in the 2nd dimension, and most slowly in the
3rd dimension. For {bin/sphere}, the bin with smallest radii is chunk
1 and the bni with largest radii is chunk Nchunk = {ncbin}. For
{bin/cylinder}, the numbering varies most rapidly in the dimension
along the cylinder axis and most slowly in the radial direction.
Each time this compute is invoked, each atom is mapped to a bin based
on its current position. Note that between reneighboring timesteps,
atoms can move outside the current simulation box. If the box is
periodic (in that dimension) the atom is remapping into the periodic
box for purposes of binning. If the box in not periodic, the atom may
have moved outside the bounds of all bins. If an atom is not inside
any bin, the {discard} keyword is used to determine how a chunk ID is
assigned to the atom.
:line
The {type} style uses the atom type as the chunk ID. {Nchunk} is set
to the number of atom types defined for the simulation, e.g. via the
"create_box"_create_box.html or "read_data"_read_data.html commands.
:line
The {molecule} style uses the molecule ID of each atom as its chunk
ID. {Nchunk} is set to the largest chunk ID. Note that this excludes
molecule IDs for atoms which are not in the specified group or
optional region.
There is no requirement that all atoms in a particular molecule are
assigned the same chunk ID (zero or non-zero), though you probably
want that to be the case, if you wish to compute a per-molecule
property. LAMMPS will issue a warning if that is not the case, but
only the first time that {Nchunk} is calculated.
Note that atoms with a molecule ID = 0, which may be non-molecular
solvent atoms, have an out-of-range chunk ID. These atoms are
discarded (not assigned to any chunk) or assigned to {Nchunk},
depending on the value of the {discard} keyword.
:line
The {compute/fix/variable} styles set the chunk ID of each atom based
on a quantity calculated and stored by a compute, fix, or variable.
In each case, it must be a per-atom quantity. In each case the
referenced floating point values are converted to an integer chunk ID
as follows. The floating point value is truncated (rounded down) to
an integer value. If the integer value is <= 0, then a chunk ID of 0
is assigned to the atom. If the integer value is > 0, it becomes the
chunk ID to the atom. {Nchunk} is set to the largest chunk ID. Note
that this excludes atoms which are not in the specified group or
optional region.
If the style begins with "c_", a compute ID must follow which has been
previously defined in the input script. If no bracketed integer is
appended, the per-atom vector calculated by the compute is used. If a
bracketed integer is appended, the Ith column of the per-atom array
calculated by the compute is used. Users can also write code for
their own compute styles and "add them to LAMMPS"_Section_modify.html.
If the style begins with "f_", a fix ID must follow which has been
previously defined in the input script. If no bracketed integer is
appended, the per-atom vector calculated by the fix is used. If a
bracketed integer is appended, the Ith column of the per-atom array
calculated by the fix is used. Note that some fixes only produce
their values on certain timesteps, which must be compatible with the
timestep on which this compute accesses the fix, else an error
results. Users can also write code for their own fix styles and "add
them to LAMMPS"_Section_modify.html.
If a value begins with "v_", a variable name for an {atom} or
{atomfile} style "variable"_variable.html must follow which has been
previously defined in the input script. Variables of style {atom} can
reference thermodynamic keywords and various per-atom attributes, or
invoke other computes, fixes, or variables when they are evaluated, so
this is a very general means of generating per-atom quantities to
treat as a chunk ID.
:line
:line
Normally, {Nchunk} = the number of chunks, is re-calculated every time
this fix is invoked, though the value may or may not change. As
explained below, the {nchunk} keyword can be set to {once} which means
{Nchunk} will never change.
If a "fix ave/chunk"_fix_ave_chunk.html command uses this compute, it
can also turn off the re-calculation of {Nchunk} for one or more
windows of timesteps. The extent of the windows, during which Nchunk
is held constant, are determined by the {Nevery}, {Nrepeat}, {Nfreq}
values and the {ave} keyword setting that are used by the "fix
ave/chunk"_fix_ave_chunk.html command.
Specifically, if {ave} = {one}, then for each span of {Nfreq}
timesteps, {Nchunk} is held constant between the first timestep when
averaging is done (within the Nfreq-length window), and the last
timestep when averaging is done (multiple of Nfreq). If {ave} =
{running} or {window}, then {Nchunk} is held constant forever,
starting on the first timestep when the "fix
ave/chunk"_fix_ave_chunk.html command invokes this compute.
Note that multiple "fix ave/chunk"_fix_ave_chunk.html commands can use
the same compute chunk/atom compute. However, the time windows they
induce for holding {Nchunk} constant must be identical, else an error
will be generated.
:line
:line
The various optional keywords operate as follows. Note that some of
them function differently or are ignored by different chunk styles.
Some of them also have different default values, depending on
the chunk style, as listed below.
The {region} keyword applies to all chunk styles. If used, an atom
must be in both the specified group and the specified geometric
"region"_region.html to be assigned to a chunk.
:line
The {nchunk} keyword applies to all chunk styles. It specifies how
often {Nchunk} is recalculated, which in turn can affect the chunk IDs
assigned to individual atoms.
If {nchunk} is set to {once}, then {Nchunk} is only calculated once,
the first time this compute is invoked. If {nchunk} is set to
{every}, then {Nchunk} is re-calculated every time the compute is
invoked. Note that, as described above, the use of this compute
by the "fix ave/chunk"_fix_ave_chunk.html command can override
the {every} setting.
The default values for {nchunk} are listed below and depend on the
chunk style and other system and keyword settings. They attempt to
represent typical use cases for the various chunk styles. The
{nchunk} value can always be set explicitly if desired.
:line
The {limit} keyword can be used to limit the calculated value of
{Nchunk} = the number of chunks. The limit is applied each time
{Nchunk} is calculated, which also limits the chunk IDs assigned to
any atom. The {limit} keyword is used by all chunk styles except the
{binning} styles, which ignore it. This is because the number of bins
can be tailored using the {bound} keyword (described below) which
effectively limits the size of {Nchunk}.
If {limit} is set to {Nc} = 0, then no limit is imposed on {Nchunk},
though the {compress} keyword can still be used to reduce {Nchunk}, as
described below.
If {Nc} > 0, then the effect of the {limit} keyword depends on whether
the {compress} keyword is also used with a setting of {yes}, and
whether the {compress} keyword is specified before the {limit} keyword
or after.
In all cases, {Nchunk} is first calculated in the usual way for each
chunk style, as described above.
First, here is what occurs if {compress yes} is not set. If {limit}
is set to {Nc max}, then {Nchunk} is reset to the smaller of {Nchunk}
and {Nc}. If {limit} is set to {Nc exact}, then {Nchunk} is reset to
{Nc}, whether the original {Nchunk} was larger or smaller than {Nc}.
If {Nchunk} shrank due to the {limit} setting, then atom chunk IDs >
{Nchunk} will be reset to 0 or {Nchunk}, depending on the setting of
the {discard} keyword. If {Nchunk} grew, there will simply be some
chunks with no atoms assigned to them.
If {compress yes} is set, and the {compress} keyword comes before the
{limit} keyword, the compression operation is performed first, as
described below, which resets {Nchunk}. The {limit} keyword is then
applied to the new {Nchunk} value, exactly as described in the
preceeding paragraph. Note that in this case, all atoms will end up
with chunk IDs <= {Nc}, but their original values (e.g. molecule ID or
compute/fix/variable value) may have been > {Nc}, because of the
compression operation.
If {compress yes} is set, and the {compress} keyword comes after the
{limit} keyword, then the {limit} value of {Nc} is applied first to
the uncompressed value of {Nchunk}, but only if {Nc} < {Nchunk}
(whether {Nc max} or {Nc exact} is used). This effectively means all
atoms with chunk IDs > {Nc} have their chunk IDs reset to 0 or {Nc},
depending on the setting of the {discard} keyword. The compression
operation is then performed, which may shrink {Nchunk} further. If
the new {Nchunk} < {Nc} and {limit} = {Nc exact} is specified, then
{Nchunk} is reset to {Nc}, which results in extra chunks with no atoms
assigned to them. Note that in this case, all atoms will end up with
chunk IDs <= {Nc}, and their original values (e.g. molecule ID or
compute/fix/variable value) will also have been <= {Nc}.
:line
The {ids} keyword applies to all chunk styles. If the setting is
{once} then the chunk IDs assigned to atoms the first time this
compute is invoked will be permanent, and never be re-computed.
If the setting is {nfreq} and if a "fix ave/chunk"_fix_ave_chunk.html
command is using this compute, then in each of the {Nchunk} = constant
time windows (discussed above), the chunk ID's assigned to atoms on
the first step of the time window will persist until the end of the
time window.
If the setting is {every}, which is the default, then chunk IDs are
re-calculated on any timestep this compute is invoked.
NOTE: If you want the persistent chunk-IDs calculated by this compute
to be continuous when running from a "restart file"_read_restart.html,
then you should use the same ID for this compute, as in the original
run. This is so that the fix this compute creates to store per-atom
quantities will also have the same ID, and thus be initialized
correctly with chunk IDs from the restart file.
:line
The {compress} keyword applies to all chunk styles and affects how
{Nchunk} is calculated, which in turn affects the chunk IDs assigned
to each atom. It is useful for converting a "sparse" set of chunk IDs
(with many IDs that have no atoms assigned to them), into a "dense"
set of IDs, where every chunk has one or more atoms assigned to it.
Two possible use cases are as follows. If a large simulation box is
mostly empty space, then the {binning} style may produce many bins
with no atoms. If {compress} is set to {yes}, only bins with atoms
will be contribute to {Nchunk}. Likewise, the {molecule} or
{compute/fix/variable} styles may produce large {Nchunk} values. For
example, the "compute cluster/atom"_compute_cluster_atom.html command
assigns every atom an atom ID for one of the atoms it is clustered
with. For a million-atom system with 5 clusters, there would only be
5 unique chunk IDs, but the largest chunk ID might be 1 million,
resulting in {Nchunk} = 1 million. If {compress} is set to {yes},
{Nchunk} will be reset to 5.
If {compress} is set to {no}, which is the default, no compression is
done. If it is set to {yes}, all chunk IDs with no atoms are removed
from the list of chunk IDs, and the list is sorted. The remaining
chunk IDs are renumbered from 1 to {Nchunk} where {Nchunk} is the new
length of the list. The chunk IDs assigned to each atom reflect
the new renumbering from 1 to {Nchunk}.
The original chunk IDs (before renumbering) can be accessed by the
"compute property/chunk"_compute_property_chunk.html command and its
{id} keyword, or by the "fix ave/chunk"_fix_ave_chunk.html command
which outputs the original IDs as one of the columns in its global
output array. For example, using the "compute cluster/atom" command
discussed above, the original 5 unique chunk IDs might be atom IDs
(27,4982,58374,857838,1000000). After compresion, these will be
renumbered to (1,2,3,4,5). The original values (27,...,1000000) can
be output to a file by the "fix ave/chunk"_fix_ave_chunk.html command,
or by using the "fix ave/time"_fix_ave_time.html command in
conjunction with the "compute
property/chunk"_compute_property_chunk.html command.
NOTE: The compression operation requires global communication across
all processors to share their chunk ID values. It can require large
memory on every processor to store them, even after they are
compressed, if there are are a large number of unique chunk IDs with
atoms assigned to them. It uses a STL map to find unique chunk IDs
and store them in sorted order. Each time an atom is assigned a
compressed chunk ID, it must access the STL map. All of this means
that compression can be expensive, both in memory and CPU time. The
use of the {limit} keyword in conjunction with the {compress} keyword
can affect these costs, depending on which keyword is used first. So
use this option with care.
:line
The {discard} keyword applies to all chunk styles. It affects what
chunk IDs are assigned to atoms that do not match one of the valid
chunk IDs from 1 to {Nchunk}. Note that it does not apply to atoms
that are not in the specified group or optionally specified region.
Those atoms are always assigned a chunk ID = 0.
If the calculated chunk ID for an atom is not within the range 1 to
{Nchunk} then it is a "discard" atom. Note that {Nchunk} may have
been shrunk by the {limit} keyword. Or the {compress} keyword may
have eliminated chunk IDs that were valid before the compression took
place, and are now not in the compressed list. Also note that for the
{molecule} chunk style, if new molecules are added to the system,
their chunk IDs may exceed a previously calculated {Nchunk}.
Likewise, evaluation of a compute/fix/variable on a later timestep may
return chunk IDs that are invalid for the previously calculated
{Nchunk}.
All the chunk styles except the {binning} styles, must use {discard}
set to either {yes} or {no}. If {discard} is set to {yes}, which is
the default, then every "discard" atom has its chunk ID set to 0. If
{discard} is set to {no}, every "discard" atom has its chunk ID set to
{Nchunk}. I.e. it becomes part of the last chunk.
The {binning} styles use the {discard} keyword to decide whether to
discard atoms outside the spatial domain covered by bins, or to assign
them to the bin they are nearest to.
For the {bin/1d}, {bin/2d}, {bin/3d} styles the details are as
follows. If {discard} is set to {yes}, an out-of-domain atom will
have its chunk ID set to 0. If {discard} is set to {no}, the atom
will have its chunk ID set to the first or last bin in that dimension.
If {discard} is set to {mixed}, which is the default, it will only
have its chunk ID set to the first or last bin if bins extend to the
simulation box boundary in that dimension. This is the case if the
{bound} keyword settings are {lower} and {upper}, which is the
default. If the {bound} keyword settings are numeric values, then the
atom will have its chunk ID set to 0 if it is outside the bounds of
any bin. Note that in this case, it is possible that the first or
last bin extends beyond the numeric {bounds} settings, depending on
the specified {origin}. If this is the case, the chunk ID of the atom
is only set to 0 if it is outside the first or last bin, not if it is
simply outside the numeric {bounds} setting.
For the {bin/sphere} style the details are as follows. If {discard}
is set to {yes}, an out-of-domain atom will have its chunk ID set to
0. If {discard} is set to {no} or {mixed}, the atom will have its
chunk ID set to the first or last bin, i.e. the innermost or outermost
spherical shell. If the distance of the atom from the origin is less
than {rmin}, it will be assigned to the first bin. If the distance of
the atom from the origin is greater than {rmax}, it will be assigned
to the last bin.
For the {bin/cylinder} style the details are as follows. If {discard}
is set to {yes}, an out-of-domain atom will have its chunk ID set to
0. If {discard} is set to {no}, the atom will have its chunk ID set
to the first or last bin in both the radial and axis dimensions. If
{discard} is set to {mixed}, which is the default, the radial
dimension is treated the same as for {discard} = no. But for the axis
dimensinon, it will only have its chunk ID set to the first or last
bin if bins extend to the simulation box boundary in the axis
dimension. This is the case if the {bound} keyword settings are
{lower} and {upper}, which is the default. If the {bound} keyword
settings are numeric values, then the atom will have its chunk ID set
to 0 if it is outside the bounds of any bin. Note that in this case,
it is possible that the first or last bin extends beyond the numeric
{bounds} settings, depending on the specified {origin}. If this is
the case, the chunk ID of the atom is only set to 0 if it is outside
the first or last bin, not if it is simply outside the numeric
{bounds} setting.
If {discard} is set to {no} or {mixed}, the atom will have its
chunk ID set to the first or last bin, i.e. the innermost or outermost
spherical shell. If the distance of the atom from the origin is less
than {rmin}, it will be assigned to the first bin. If the distance of
the atom from the origin is greater than {rmax}, it will be assigned
to the last bin.
:line
The {bound} keyword only applies to the {bin/1d}, {bin/2d}, {bin/3d}
styles and to the axis dimension of the {bin/cylinder} style;
otherwise it is ignored. It can be used one or more times to limit
the extent of bin coverage in a specified dimension, i.e. to only bin
a portion of the box. If the {lo} setting is {lower} or the {hi}
setting is {upper}, the bin extent in that direction extends to the
box boundary. If a numeric value is used for {lo} and/or {hi}, then
the bin extent in the {lo} or {hi} direction extends only to that
value, which is assumed to be inside (or at least near) the simulation
box boundaries, though LAMMPS does not check for this. Note that
using the {bound} keyword typically reduces the total number of bins
and thus the number of chunks {Nchunk}.
The {pbc} keyword only applies to the {bin/sphere} and {bin/cylinder}
styles. If set to {yes}, the distance an atom is from the sphere
origin or cylinder axis is calculated in a minimum image sense with
respect to periodic dimensions, when determining which bin the atom is
in. I.e. if x is a periodic dimension and the distance between the
atom and the sphere center in the x dimension is greater than 0.5 *
simulation box length in x, then a box length is subtracted to give a
distance < 0.5 * simulation box length. This allosws the sphere or
cylinder center to be near a box edge, and atoms on the other side of
the periodic box will still be close to the center point/axis. Note
that with a setting of {yes}, the outer sphere or cylinder radius must
also be <= 0.5 * simulation box length in any periodic dimension
except for the cylinder axis dimension, or an error is generated.
The {units} keyword only applies to the {binning} styles; otherwise it
is ignored. For the {bin/1d}, {bin/2d}, {bin/3d} styles, it
determines the meaning of the distance units used for the bin sizes
{delta} and for {origin} and {bounds} values if they are coordinate
values. For the {bin/sphere} style it determines the meaning of the
distance units used for {xorig},{yorig},{zorig} and the radii {srmin}
and {srmax}. For the {bin/cylinder} style it determines the meaning
of the distance units used for {delta},{c1},{c2} and the radii {crmin}
and {crmax}.
For orthogonal simulation boxes, any of the 3 options may
be used. For non-orthogonal (triclinic) simulation boxes, only the
{reduced} option may be used.
A {box} value selects standard distance units as defined by the
"units"_units.html command, e.g. Angstroms for units = real or metal.
A {lattice} value means the distance units are in lattice spacings.
The "lattice"_lattice.html command must have been previously used to
define the lattice spacing. A {reduced} value means normalized
unitless values between 0 and 1, which represent the lower and upper
faces of the simulation box respectively. Thus an {origin} value of
0.5 means the center of the box in any dimension. A {delta} value of
0.1 means 10 bins span the box in that dimension.
Note that for the {bin/sphere} style, the radii {srmin} and {srmax} are
scaled by the lattice spacing or reduced value of the {x} dimension.
Note that for the {bin/cylinder} style, the radii {crmin} and {crmax}
are scaled by the lattice spacing or reduced value of the 1st
dimension perpendicular to the cylinder axis. E.g. y for an x-axis
cylinder, x for a y-axis cylinder, and x for a z-axis cylinder.
:line
[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 are unitless chunk IDs, ranging from 1 to
{Nchunk} (inclusive) for atoms assigned to chunks, and 0 for atoms not
belonging to a chunk.
[Restrictions:]
Even if the {nchunk} keyword is set to {once}, the chunk IDs assigned
to each atom are not stored in a restart files. This means you cannot
expect those assignments to persist in a restarted simulation.
Instead you must re-specify this command and assign atoms to chunks when
the restarted simulation begins.
[Related commands:]
-"fix ave/chunk"_fix_ave_chunk.html
+"fix ave/chunk"_fix_ave_chunk.html,
+"compute global/atom"_compute_global_atom.html
[Default:]
The option defaults are as follows:
region = none
nchunk = every, if compress is yes, overriding other defaults listed here
nchunk = once, for type style
nchunk = once, for mol style if region is none
nchunk = every, for mol style if region is set
nchunk = once, for binning style if the simulation box size is static or units = reduced
nchunk = every, for binning style if the simulation box size is dynamic and units is lattice or box
nchunk = every, for compute/fix/variable style
limit = 0
ids = every
compress = no
discard = yes, for all styles except binning
discard = mixed, for binning styles
bound = lower and upper in all dimensions
pbc = no
units = lattice :ul
diff --git a/doc/src/compute_cluster_atom.txt b/doc/src/compute_cluster_atom.txt
index 3ebf1e600..147d06c2a 100644
--- a/doc/src/compute_cluster_atom.txt
+++ b/doc/src/compute_cluster_atom.txt
@@ -1,73 +1,73 @@
"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 cluster/atom command :h3
[Syntax:]
compute ID group-ID cluster/atom cutoff :pre
ID, group-ID are documented in "compute"_compute.html command
cluster/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
[Description:]
Define a computation that assigns each atom a cluster 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.
Only atoms in the compute group are clustered and assigned cluster
IDs. Atoms not in the compute group are assigned a cluster ID = 0.
The neighbor list needed to compute this quantity is constructed each
time the calculation is performed (i.e. each time a snapshot of atoms
is dumped). Thus it can be inefficient to compute/dump this quantity
too frequently or to have multiple compute/dump commands, each of a
-{clsuter/atom} style.
+{cluster/atom} style.
NOTE: If you have a bonded system, then the settings of
"special_bonds"_special_bonds.html command can remove pairwise
interactions between atoms in the same bond, angle, or dihedral. This
is the default setting for the "special_bonds"_special_bonds.html
command, and means those pairwise interactions do not appear in the
neighbor list. Because this fix uses the neighbor list, it also means
those pairs will not be included when computing the clusters. This
does not apply when using long-range coulomb ({coul/long}, {coul/msm},
{coul/wolf} or similar. One way to get around this would be to set
special_bond scaling factors to very tiny numbers that are not exactly
zero (e.g. 1.0e-50). Another workaround is to write a dump file, and
use the "rerun"_rerun.html command to compute the clusters for
snapshots in the dump file. The rerun script can use a
"special_bonds"_special_bonds.html command that includes all pairs in
the neighbor list.
[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 an ID > 0, as explained above.
[Restrictions:] none
[Related commands:]
"compute coord/atom"_compute_coord_atom.html
[Default:] none
diff --git a/doc/src/compute_global_atom.txt b/doc/src/compute_global_atom.txt
new file mode 100644
index 000000000..f62efcff2
--- /dev/null
+++ b/doc/src/compute_global_atom.txt
@@ -0,0 +1,220 @@
+"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 global/atom command :h3
+
+[Syntax:]
+
+compute ID group-ID style index input1 input2 ... :pre
+
+ID, group-ID are documented in "compute"_compute.html command :ulb,l
+global/atom = style name of this compute command :l
+index = c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :l
+ c_ID = per-atom vector calculated by a compute with ID
+ c_ID\[I\] = Ith column of per-atom array calculated by a compute with ID
+ f_ID = per-atom vector calculated by a fix with ID
+ f_ID\[I\] = Ith column of per-atom array calculated by a fix with ID
+ v_name = per-atom vector calculated by an atom-style variable with name :pre
+one or more inputs can be listed :l
+input = c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name :l
+ c_ID = global vector calculated by a compute with ID
+ c_ID\[I\] = Ith column of global array calculated by a compute with ID, I can include wildcard (see below)
+ f_ID = global vector calculated by a fix with ID
+ f_ID\[I\] = Ith column of global array calculated by a fix with ID, I can include wildcard (see below)
+ v_name = global vector calculated by a vector-style variable with name :pre
+:ule
+
+[Examples:]
+
+compute 1 all global/atom c_chunk c_com\[1\\] c_com\[2\\] c_com\[3\\]
+compute 1 all global/atom c_chunk c_com\[*\\] :pre
+
+[Description:]
+
+Define a calculation that assigns global values to each atom from
+vectors or arrays of global values. The specified {index} parameter
+is used to determine which global value is assigned to each atom.
+
+The {index} parameter must reference a per-atom vector or array from a
+"compute"_compute.html or "fix"_fix.html or the evaluation of an
+atom-style "variable"_variable.html. Each {input} value must
+reference a global vector or array from a "compute"_compute.html or
+"fix"_fix.html or the evaluation of an vector-style
+"variable"_variable.html. Details are given below.
+
+The {index} value for an atom is used as a index I (from 1 to N) into
+the vector associated with each of the input values. The Ith value
+from the input vector becomes one output value for that atom. If the
+atom is not in the specified group, or the index I < 1 or I > M, where
+M is the actual length of the input vector, then an output value of
+0.0 is assigned to the atom.
+
+An example of how this command is useful, is in the context of
+"chunks" which are static or dyanmic subsets of atoms. The "compute
+chunk/atom"_compute_chunk_atom.html command assigns unique chunk IDs
+to each atom. It's output can be used as the {index} parameter for
+this command. Various other computes with "chunk" in their style
+name, such as "compute com/chunk"_compute_com_chunk.html or "compute
+msd/chunk"_compute_msd_chunk.html, calculate properties for each
+chunk. The output of these commands are global vectors or arrays,
+with one or more values per chunk, and can be used as input values for
+this command. This command will then assign the global chunk value to
+each atom in the chunk, producing a per-atom vector or per-atom array
+as output. The per-atom values can then be output to a dump file or
+used by any command that uses per-atom values from a compute as input,
+as discussed in "Section 6.15"_Section_howto.html#howto_15.
+
+As a concrete example, these commands will calculate the displacement
+of each atom from the center-of-mass of the molecule it is in, and
+dump those values to a dump file. In this case, each molecule is a
+chunk.
+
+compute cc1 all chunk/atom molecule
+compute myChunk all com/chunk cc1
+compute prop all property/atom xu yu zu
+compute glob all global/atom c_cc1 c_myChunk\[*\]
+variable dx atom c_prop\[1\]-c_glob\[1\]
+variable dy atom c_prop\[2\]-c_glob\[2\]
+variable dz atom c_prop\[3\]-c_glob\[3\]
+variable dist atom sqrt(v_dx*v_dx+v_dy*v_dy+v_dz*v_dz)
+dump 1 all custom 100 tmp.dump id xu yu zu c_glob\[1\] c_glob\[2\] c_glob\[3\] &
+ v_dx v_dy v_dz v_dist
+dump_modify 1 sort id :pre
+
+You can add these commands to the bench/in.chain script to see how
+they work.
+
+:line
+
+Note that for input values from a compute or fix, the bracketed index
+I can be specified using a wildcard asterisk with the index to
+effectively specify multiple values. This takes the form "*" or "*n"
+or "n*" or "m*n". If N = the size of the vector (for {mode} = scalar)
+or the number of columns in the array (for {mode} = vector), then an
+asterisk with no numeric values means all indices from 1 to N. A
+leading asterisk means all indices from 1 to n (inclusive). A
+trailing asterisk means all indices from n to N (inclusive). A middle
+asterisk means all indices from m to n (inclusive).
+
+Using a wildcard is the same as if the individual columns of the array
+had been listed one by one. E.g. these 2 compute global/atom commands
+are equivalent, since the "compute com/chunk"_compute_com_chunk.html
+command creates a global array with 3 columns:
+
+compute cc1 all chunk/atom molecule
+compute com all com/chunk cc1
+compute 1 all global/atom c_cc1 c_com\[1\] c_com\[2\] c_com\[3\]
+compute 1 all global/atom c_cc1 c_com\[*\] :pre
+
+:line
+
+This section explains the {index} parameter. Note that it must
+reference per-atom values, as contrasted with the {input} values which
+must reference global values.
+
+Note that all of these options generate floating point values. When
+they are used as an index into the specified input vectors, they
+simple rounded down to convert the value to integer indices. The
+final values should range from 1 to N (inclusive), since they are used
+to access values from N-length vectors.
+
+If {index} begins with "c_", a compute ID must follow which has been
+previously defined in the input script. The compute must generate
+per-atom quantities. See the individual "compute"_compute.html doc
+page for details. If no bracketed integer is appended, the per-atom
+vector calculated by the compute is used. If a bracketed integer is
+appended, the Ith column of the per-atom array calculated by the
+compute is used. Users can also write code for their own compute
+styles and "add them to LAMMPS"_Section_modify.html. See the
+discussion above for how I can be specified with a wildcard asterisk
+to effectively specify multiple values.
+
+If {index} begins with "f_", a fix ID must follow which has been
+previously defined in the input script. The Fix must generate
+per-atom quantities. See the individual "fix"_fix.html doc page for
+details. Note that some fixes only produce their values on certain
+timesteps, which must be compatible with when compute global/atom
+references the values, else an error results. If no bracketed integer
+is appended, the per-atom vector calculated by the fix is used. If a
+bracketed integer is appended, the Ith column of the per-atom array
+calculated by the fix is used. Users can also write code for their
+own fix style and "add them to LAMMPS"_Section_modify.html. See the
+discussion above for how I can be specified with a wildcard asterisk
+to effectively specify multiple values.
+
+If {index} begins with "v_", a variable name must follow which has
+been previously defined in the input script. It must be an
+"atom-style variable"_variable.html. Atom-style variables can
+reference thermodynamic keywords and various per-atom attributes, or
+invoke other computes, fixes, or variables when they are evaluated, so
+this is a very general means of generating per-atom quantities to use
+as {index}.
+
+:line
+
+This section explains the kinds of {input} values that can be used.
+Note that inputs reference global values, as contrasted with the
+{index} parameter which must reference per-atom values.
+
+If a value begins with "c_", a compute ID must follow which has been
+previously defined in the input script. The compute must generate a
+global vector or array. See the individual "compute"_compute.html doc
+page for details. If no bracketed integer is appended, the vector
+calculated by the compute is used. If a bracketed integer is
+appended, the Ith column of the array calculated by the compute is
+used. Users can also write code for their own compute styles and "add
+them to LAMMPS"_Section_modify.html. See the discussion above for how
+I can be specified with a wildcard asterisk to effectively specify
+multiple values.
+
+If a value begins with "f_", a fix ID must follow which has been
+previously defined in the input script. The fix must generate a
+global vector or array. See the individual "fix"_fix.html doc page
+for details. Note that some fixes only produce their values on
+certain timesteps, which must be compatible with when compute
+global/atom references the values, else an error results. If no
+bracketed integer is appended, the vector calculated by the fix is
+used. If a bracketed integer is appended, the Ith column of the array
+calculated by the fix is used. Users can also write code for their
+own fix style and "add them to LAMMPS"_Section_modify.html. See the
+discussion above for how I can be specified with a wildcard asterisk
+to effectively specify multiple values.
+
+If a value begins with "v_", a variable name must follow which has
+been previously defined in the input script. It must be a
+"vector-style variable"_variable.html. Vector-style variables can
+reference thermodynamic keywords and various other attributes of
+atoms, or invoke other computes, fixes, or variables when they are
+evaluated, so this is a very general means of generating a vector of
+global quantities which the {index} parameter will reference for
+assignement of global values to atoms.
+
+:line
+
+[Output info:]
+
+If a single input is specified this compute produces a per-atom
+vector. If multiple inputs are specified, this compute produces a
+per-atom array values, where the number of columns is equal to the
+number of inputs specified. These values can be used by any command
+that uses per-atom vector or array 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 or array values will be in whatever units the
+corresponsing input values are in.
+
+[Restrictions:] none
+
+[Related commands:]
+
+"compute"_compute.html, "fix"_fix.html, "variable"_variable.html,
+"compute chunk/atom"_compute_chunk_atom.html, "compute
+reduce"_compute_reduce.html
+
+[Default:] none
diff --git a/doc/src/compute_smd_contact_radius.txt b/doc/src/compute_smd_contact_radius.txt
index a2cb378be..69fe45334 100644
--- a/doc/src/compute_smd_contact_radius.txt
+++ b/doc/src/compute_smd_contact_radius.txt
@@ -1,55 +1,55 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute smd/contact/radius command :h3
[Syntax:]
compute ID group-ID smd/contact/radius :pre
ID, group-ID are documented in "compute"_compute.html command
smd/contact/radius = style name of this compute command :ul
[Examples:]
compute 1 all smd/contact/radius :pre
[Description:]
Define a computation which outputs the contact radius, i.e., the
radius used to prevent particles from penetrating each other. The
contact radius is used only to prevent particles belonging to
different physical bodies from penetrating each other. It is used by
the contact pair styles, e.g., smd/hertz and smd/tri_surface.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to using Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth
Mach Dynamics in LAMMPS.
The value of the contact radius will be 0.0 for particles not in the
specified compute group.
[Output info:]
This compute calculates a per-particle vector, which can be accessed by
any command that uses per-particle values from a compute as input. See
"Section 6.15"_Section_howto.html#howto_15 for an overview of
LAMMPS output options.
The per-particle vector values will be in distance "units"_units.html.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"dump custom"_dump.html smd/hertz smd/tri_surface
[Default:] none
diff --git a/doc/src/compute_smd_damage.txt b/doc/src/compute_smd_damage.txt
index 30ca114fb..b6c75a3b2 100644
--- a/doc/src/compute_smd_damage.txt
+++ b/doc/src/compute_smd_damage.txt
@@ -1,48 +1,48 @@
"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 smd/damage command :h3
[Syntax:]
compute ID group-ID smd/damage :pre
ID, group-ID are documented in "compute"_compute.html command
smd/damage = style name of this compute command :ul
[Examples:]
compute 1 all smd/damage :pre
[Description:]
Define a computation that calculates the damage status of SPH particles
according to the damage model which is defined via the SMD SPH pair styles, e.g., the maximum plastic strain failure criterion.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to use Smooth Mach Dynamics in LAMMPS.
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to use Smooth Mach Dynamics in LAMMPS.
[Output Info:]
This compute calculates a per-particle vector, which can be accessed by
any command that uses per-particle values from a compute as input. See
"How-to discussions, section 6.15"_Section_howto.html#howto_15
for an overview of LAMMPS output options.
The per-particle values are dimensionless an in the range of zero to one.
[Restrictions:]
This compute is part of the USER-SMD 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:]
"smd/plastic_strain"_compute_smd_plastic_strain.html, "smd/tlsph_stress"_compute_smd_tlsph_stress.html
[Default:] none
diff --git a/doc/src/compute_smd_hourglass_error.txt b/doc/src/compute_smd_hourglass_error.txt
index 36978cc9e..a15b79e64 100644
--- a/doc/src/compute_smd_hourglass_error.txt
+++ b/doc/src/compute_smd_hourglass_error.txt
@@ -1,62 +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 smd/hourglass/error command :h3
[Syntax:]
compute ID group-ID smd/hourglass/error :pre
ID, group-ID are documented in "compute"_compute.html command
smd/hourglass/error = style name of this compute command :ul
[Examples:]
compute 1 all smd/hourglass/error :pre
[Description:]
Define a computation which outputs the error of the approximated
relative separation with respect to the actual relative separation of
the particles i and j. Ideally, if the deformation gradient is exact,
and there exists a unique mapping between all particles' positions
within the neighborhood of the central node and the deformation
gradient, the approximated relative separation will coincide with the
actual relative separation of the particles i and j in the deformed
configuration. This compute is only really useful for debugging the
hourglass control mechanim which is part of the Total-Lagrangian SPH
pair style.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to use Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to use Smooth
Mach Dynamics in LAMMPS.
[Output Info:]
This compute calculates a per-particle vector, which can be accessed by
any command that uses per-particle values from a compute as input. See
"How-to discussions, section 6.15"_Section_howto.html#howto_15
for an overview of LAMMPS output options.
The per-particle vector values will are dimensionless. See
"units"_units.html.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info.
This quantity will be computed only for particles which interact with
tlsph pair style.
[Related Commands:]
"smd/tlsph_defgrad"_compute_smd_tlsph_defgrad.html
[Default:]
diff --git a/doc/src/compute_smd_internal_energy.txt b/doc/src/compute_smd_internal_energy.txt
index f556b79c3..bc6f9e0f2 100644
--- a/doc/src/compute_smd_internal_energy.txt
+++ b/doc/src/compute_smd_internal_energy.txt
@@ -1,49 +1,49 @@
"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 smd/internal/energy command :h3
[Syntax:]
compute ID group-ID smd/internal/energy :pre
ID, group-ID are documented in "compute"_compute.html command
smd/smd/internal/energy = style name of this compute command :ul
[Examples:]
compute 1 all smd/internal/energy :pre
[Description:]
Define a computation which outputs the per-particle enthalpy, i.e.,
the sum of potential energy and heat.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to use Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to use Smooth
Mach Dynamics in LAMMPS.
[Output Info:]
This compute calculates a per-particle vector, which can be accessed
by any command that uses per-particle values from a compute as input.
See "How-to discussions, section 6.15"_Section_howto.html#howto_15 for
an overview of LAMMPS output options.
The per-particle vector values will be given in "units"_units.html of energy.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info. This compute
can only be used for particles which interact via the updated
Lagrangian or total Lagrangian SPH pair styles.
[Related Commands:]
[Default:]
diff --git a/doc/src/compute_smd_plastic_strain.txt b/doc/src/compute_smd_plastic_strain.txt
index c149bc96c..af5b16445 100644
--- a/doc/src/compute_smd_plastic_strain.txt
+++ b/doc/src/compute_smd_plastic_strain.txt
@@ -1,54 +1,54 @@
"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 smd/plastic/strain command :h3
[Syntax:]
compute ID group-ID smd/plastic/strain :pre
ID, group-ID are documented in "compute"_compute.html command
smd/plastic/strain = style name of this compute command :ul
[Examples:]
compute 1 all smd/plastic/strain :pre
[Description:]
Define a computation that outputs the equivalent plastic strain per
particle. This command is only meaningful if a material model with
plasticity is defined.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to use Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to use Smooth
Mach Dynamics in LAMMPS.
[Output Info:]
This compute calculates a per-particle vector, which can be accessed
by any command that uses per-particle values from a compute as input.
See "How-to discussions, section 6.15"_Section_howto.html#howto_15 for
an overview of LAMMPS output options.
The per-particle values will be given dimensionless. See "units"_units.html.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info. This compute
can only be used for particles which interact via the updated
Lagrangian or total Lagrangian SPH pair styles.
[Related commands:]
"smd/plastic/strain/rate"_compute_smd_tlsph_strain.html,
"smd/tlsph/strain/rate"_compute_smd_tlsph_strain_rate.html,
"smd/tlsph/strain"_compute_smd_tlsph_strain.html
[Default:] none
diff --git a/doc/src/compute_smd_plastic_strain_rate.txt b/doc/src/compute_smd_plastic_strain_rate.txt
index 2b222b9a7..ba7b3176d 100644
--- a/doc/src/compute_smd_plastic_strain_rate.txt
+++ b/doc/src/compute_smd_plastic_strain_rate.txt
@@ -1,54 +1,54 @@
"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 smd/plastic/strain/rate command :h3
[Syntax:]
compute ID group-ID smd/plastic/strain/rate :pre
ID, group-ID are documented in "compute"_compute.html command
smd/plastic/strain/rate = style name of this compute command :ul
[Examples:]
compute 1 all smd/plastic/strain/rate :pre
[Description:]
Define a computation that outputs the time rate of the equivalent
plastic strain. This command is only meaningful if a material model
with plasticity is defined.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to use Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to use Smooth
Mach Dynamics in LAMMPS.
[Output Info:]
This compute calculates a per-particle vector, which can be accessed
by any command that uses per-particle values from a compute as input.
See "How-to discussions, section 6.15"_Section_howto.html#howto_15 for
an overview of LAMMPS output options.
The per-particle values will be given in "units"_units.html of one over time.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info. This compute
can only be used for particles which interact via the updated
Lagrangian or total Lagrangian SPH pair styles.
[Related commands:]
"smd/plastic/strain"_compute_smd_plastic_strain.html,
"smd/tlsph/strain/rate"_compute_smd_tlsph_strain_rate.html,
"smd/tlsph/strain"_compute_smd_tlsph_strain.html
[Default:] none
diff --git a/doc/src/compute_smd_rho.txt b/doc/src/compute_smd_rho.txt
index 1d4ca6329..ae5052672 100644
--- a/doc/src/compute_smd_rho.txt
+++ b/doc/src/compute_smd_rho.txt
@@ -1,51 +1,51 @@
"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 smd/rho command :h3
[Syntax:]
compute ID group-ID smd/rho :pre
ID, group-ID are documented in "compute"_compute.html command
smd/rho = style name of this compute command :ul
[Examples:]
compute 1 all smd/rho :pre
[Description:]
Define a computation that calculates the per-particle mass density.
The mass density is the mass of a particle which is constant during
the course of a simulation, divided by its volume, which can change
due to mechanical deformation.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to use Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to use Smooth
Mach Dynamics in LAMMPS.
[Output info:]
This compute calculates a per-particle vector, which can be accessed
by any command that uses per-particle values from a compute as input.
See "How-to discussions, section 6.15"_Section_howto.html#howto_15 for
an overview of LAMMPS output options.
The per-particle values will be in "units"_units.html of mass over volume.
[Restrictions:]
This compute is part of the USER-SMD 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:]
"compute smd/vol"_compute_smd_vol.html
[Default:] none
diff --git a/doc/src/compute_smd_tlsph_defgrad.txt b/doc/src/compute_smd_tlsph_defgrad.txt
index 86351e42f..68b5dffa1 100644
--- a/doc/src/compute_smd_tlsph_defgrad.txt
+++ b/doc/src/compute_smd_tlsph_defgrad.txt
@@ -1,57 +1,57 @@
"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 smd/tlsph/defgrad command :h3
[Syntax:]
compute ID group-ID smd/tlsph/defgrad :pre
ID, group-ID are documented in "compute"_compute.html command
smd/tlsph/defgrad = style name of this compute command :ul
[Examples:]
compute 1 all smd/tlsph/defgrad :pre
[Description:]
Define a computation that calculates the deformation gradient. It is
only meaningful for particles which interact according to the
Total-Lagrangian SPH pair style.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to use Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to use Smooth
Mach Dynamics in LAMMPS.
[Output info:]
This compute outputss a per-particle vector of vectors (tensors),
which can be accessed by any command that uses per-particle values
from a compute as input. See "How-to discussions, section
6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The per-particle vector values will be given dimensionless. See
"units"_units.html. The per-particle vector has 10 entries. The first
nine entries correspond to the xx, xy, xz, yx, yy, yz, zx, zy, zz
components of the asymmetric deformation gradient tensor. The tenth
entry is the determinant of the deformation gradient.
[Restrictions:]
This compute is part of the USER-SMD 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. TThis
compute can only be used for particles which interact via the total
Lagrangian SPH pair style.
[Related commands:]
"smd/hourglass/error"_compute_smd_hourglass_error.html
[Default:] none
diff --git a/doc/src/compute_smd_tlsph_dt.txt b/doc/src/compute_smd_tlsph_dt.txt
index 1f1aa5bcf..560a9b6fd 100644
--- a/doc/src/compute_smd_tlsph_dt.txt
+++ b/doc/src/compute_smd_tlsph_dt.txt
@@ -1,58 +1,58 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute smd/tlsph/dt command :h3
[Syntax:]
compute ID group-ID smd/tlsph/dt :pre
ID, group-ID are documented in "compute"_compute.html command
smd/tlsph/dt = style name of this compute command :ul
[Examples:]
compute 1 all smd/tlsph/dt :pre
[Description:]
Define a computation that outputs the CFL-stable time increment per
particle. This time increment is essentially given by the speed of
sound, divided by the SPH smoothing length. Because both the speed of
sound and the smoothing length typically change during the course of a
simulation, the stable time increment needs to be recomputed every
time step. This calculation is performed automatically in the
relevant SPH pair styles and this compute only serves to make the
stable time increment accessible for output purposes.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to using Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth
Mach Dynamics in LAMMPS.
[Output info:]
This compute calculates a per-particle vector, which can be accessed
by any command that uses per-particle values from a compute as input.
See "How-to discussions, section 6.15"_Section_howto.html#howto_15 for
an overview of LAMMPS output options.
The per-particle values will be given in "units"_units.html of time.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info.
This compute can only be used for particles interacting with the
Total-Lagrangian SPH pair style.
[Related commands:]
"smd/adjust/dt"_fix_smd_adjust_dt.html
[Default:] none
diff --git a/doc/src/compute_smd_tlsph_num_neighs.txt b/doc/src/compute_smd_tlsph_num_neighs.txt
index 7c6434201..0420d1903 100644
--- a/doc/src/compute_smd_tlsph_num_neighs.txt
+++ b/doc/src/compute_smd_tlsph_num_neighs.txt
@@ -1,53 +1,53 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute smd/tlsph/num/neighs command :h3
[Syntax:]
compute ID group-ID smd/tlsph/num/neighs :pre
ID, group-ID are documented in "compute"_compute.html command
smd/tlsph/num/neighs = style name of this compute command :ul
[Examples:]
compute 1 all smd/tlsph/num/neighs :pre
[Description:]
Define a computation that calculates the number of particles inside of
the smoothing kernel radius for particles interacting via the
Total-Lagrangian SPH pair style.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to using Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth
Mach Dynamics in LAMMPS.
[Output info:]
This compute calculates a per-particle vector, which can be accessed
by any command that uses per-particle values from a compute as input.
See "How-to discussions, section 6.15"_Section_howto.html#howto_15 for
an overview of LAMMPS output options.
The per-particle values are dimensionless. See "units"_units.html.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info.
This quantity will be computed only for particles which interact with
the Total-Lagrangian pair style.
[Related commands:]
"smd/ulsph/num/neighs"_compute_smd_ulsph_num_neighs.html
[Default:] none
diff --git a/doc/src/compute_smd_tlsph_shape.txt b/doc/src/compute_smd_tlsph_shape.txt
index d95d95acf..02bd0c50d 100644
--- a/doc/src/compute_smd_tlsph_shape.txt
+++ b/doc/src/compute_smd_tlsph_shape.txt
@@ -1,61 +1,61 @@
"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 smd/tlsph/shape command :h3
[Syntax:]
compute ID group-ID smd/tlsph/shape :pre
ID, group-ID are documented in "compute"_compute.html command
smd/tlsph/shape = style name of this compute command :ul
[Examples:]
compute 1 all smd/tlsph/shape :pre
[Description:]
Define a computation that outputs the current shape of the volume
associated with a particle as a rotated ellipsoid. It is only
meaningful for particles which interact according to the
Total-Lagrangian SPH pair style.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to use Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to use Smooth
Mach Dynamics in LAMMPS.
[Output info:]
This compute calculates a per-particle vector of vectors, which can be
accessed by any command that uses per-particle values from a compute
as input. See "How-to discussions, section
6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The per-particle vector has 7 entries. The first three entries
correspond to the lengths of the ellipsoid's axes and have units of
length. These axis valus are computed as the contact radius times the
xx, yy, or zz components of the Green-Lagrange strain tensor
associated with the particle. The next 4 values are quaternions
(order: q, x, y, z) which describe the spatial rotation of the
particle relative to its initial state.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info.
This quantity will be computed only for particles which interact with
the Total-Lagrangian SPH pair style.
[Related commands:]
"smd/contact/radius"_compute_smd_contact_radius.html
[Default:] none
diff --git a/doc/src/compute_smd_tlsph_strain.txt b/doc/src/compute_smd_tlsph_strain.txt
index 68d446b3b..f25d1b77d 100644
--- a/doc/src/compute_smd_tlsph_strain.txt
+++ b/doc/src/compute_smd_tlsph_strain.txt
@@ -1,58 +1,58 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute smd/tlsph/strain command :h3
[Syntax:]
compute ID group-ID smd/tlsph/strain :pre
ID, group-ID are documented in "compute"_compute.html command
smd/tlsph/strain = style name of this compute command :ul
[Examples:]
compute 1 all smd/tlsph/strain :pre
[Description:]
Define a computation that calculates the Green-Lagrange strain tensor
for particles interacting via the Total-Lagrangian SPH pair style.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to using Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth
Mach Dynamics in LAMMPS.
[Output info:]
This compute calculates a per-particle vector of vectors (tensors),
which can be accessed by any command that uses per-particle values
from a compute as input. See "How-to discussions, section
6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The per-particle tensor values will be given dimensionless. See
"units"_units.html.
The per-particle vector has 6 entries, corresponding to the xx, yy,
zz, xy, xz, yz components of the symmetric strain tensor.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info.
This quantity will be computed only for particles which interact with
the Total-Lagrangian SPH pair style.
[Related commands:]
"smd/tlsph/strain/rate"_compute_smd_tlsph_strain_rate.html,
"smd/tlsph/stress"_compute_smd_tlsph_stress.html
[Default:] none
diff --git a/doc/src/compute_smd_tlsph_strain_rate.txt b/doc/src/compute_smd_tlsph_strain_rate.txt
index 88224ea0e..13ca57ac4 100644
--- a/doc/src/compute_smd_tlsph_strain_rate.txt
+++ b/doc/src/compute_smd_tlsph_strain_rate.txt
@@ -1,57 +1,57 @@
"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 smd/tlsph/strain/rate command :h3
[Syntax:]
compute ID group-ID smd/tlsph/strain/rate :pre
ID, group-ID are documented in "compute"_compute.html command
smd/tlsph/strain/rate = style name of this compute command :ul
[Examples:]
compute 1 all smd/tlsph/strain/rate :pre
[Description:]
Define a computation that calculates the rate of the strain tensor for
particles interacting via the Total-Lagrangian SPH pair style.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to using Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth
Mach Dynamics in LAMMPS.
[Output info:]
This compute calculates a per-particle vector of vectors (tensors),
which can be accessed by any command that uses per-particle values
from a compute as input. See "How-to discussions, section
6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The values will be given in "units"_units.html of one over time.
The per-particle vector has 6 entries, corresponding to the xx, yy,
zz, xy, xz, yz components of the symmetric strain rate tensor.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info.
This quantity will be computed only for particles which interact with
Total-Lagrangian SPH pair style.
[Related commands:]
"compute smd/tlsph/strain"_compute_smd_tlsph_strain.html, "compute
smd/tlsph/stress"_compute_smd_tlsph_stress.html
[Default:] none
diff --git a/doc/src/compute_smd_tlsph_stress.txt b/doc/src/compute_smd_tlsph_stress.txt
index 0929e5ea0..5d707d4c2 100644
--- a/doc/src/compute_smd_tlsph_stress.txt
+++ b/doc/src/compute_smd_tlsph_stress.txt
@@ -1,59 +1,59 @@
"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 smd/tlsph/stress command :h3
[Syntax:]
compute ID group-ID smd/tlsph/stress :pre
ID, group-ID are documented in "compute"_compute.html command
smd/tlsph/stress = style name of this compute command :ul
[Examples:]
compute 1 all smd/tlsph/stress :pre
[Description:]
Define a computation that outputs the Cauchy stress tensor for
particles interacting via the Total-Lagrangian SPH pair style.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to using Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth
Mach Dynamics in LAMMPS.
[Output info:]
This compute calculates a per-particle vector of vectors (tensors), which can be
accessed by any command that uses per-particle values from a compute
as input. See
"How-to discussions, section 6.15"_Section_howto.html#howto_15
for an overview of LAMMPS output options.
The values will be given in "units"_units.html of pressure.
The per-particle vector has 7 entries. The first six entries
correspond to the xx, yy, zz, xy, xz and yz components of the
symmetric Cauchy stress tensor. The seventh entry is the second
invariant of the stress tensor, i.e., the von Mises equivalent stress.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info.
This quantity will be computed only for particles which interact with
the Total-Lagrangian SPH pair style.
[Related commands:]
"compute smd/tlsph/strain"_compute_smd_tlsph_strain.html, "cmopute
smd/tlsph/strain/rate"_compute_smd_tlsph_strain_rate.html
[Default:] none
diff --git a/doc/src/compute_smd_triangle_mesh_vertices.txt b/doc/src/compute_smd_triangle_mesh_vertices.txt
index 1cec0090b..5b0f0afc4 100644
--- a/doc/src/compute_smd_triangle_mesh_vertices.txt
+++ b/doc/src/compute_smd_triangle_mesh_vertices.txt
@@ -1,62 +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 smd/triangle/mesh/vertices :h3
[Syntax:]
compute ID group-ID smd/triangle/mesh/vertices :pre
ID, group-ID are documented in "compute"_compute.html command
smd/triangle/mesh/vertices = style name of this compute command :ul
[Examples:]
compute 1 all smd/triangle/mesh/vertices :pre
[Description:]
Define a computation that returns the coordinates of the vertices
corresponding to the triangle-elements of a mesh created by the "fix
smd/wall_surface"_fix_smd_wall_surface.html.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to using Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth
Mach Dynamics in LAMMPS.
[Output info:]
This compute returns a per-particle vector of vectors, which can be
accessed by any command that uses per-particle values from a compute as
input. See "How-to discussions, section 6.15"_Section_howto.html#howto_15
for an overview of LAMMPS output options.
The per-particle vector has nine entries, (x1/y1/z1), (x2/y2/z2), and
(x3/y3/z3) corresponding to the first, second, and third vertex of
each triangle.
It is only meaningful to use this compute for a group of particles
which is created via the "fix smd/wall_surface"_fix_smd_wall_surface.html command.
The output of this compute can be used with the dump2vtk_tris tool to
generate a VTK representation of the smd/wall_surface mesh for
visualization purposes.
The values will be given in "units"_units.html of distance.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info.
[Related commands:]
"fix smd/move/tri/surf"_fix_smd_move_triangulated_surface.html,
"fix smd/wall_surface"_fix_smd_wall_surface.html
[Default:] none
diff --git a/doc/src/compute_smd_ulsph_num_neighs.txt b/doc/src/compute_smd_ulsph_num_neighs.txt
index 1e08e0cca..95af1b216 100644
--- a/doc/src/compute_smd_ulsph_num_neighs.txt
+++ b/doc/src/compute_smd_ulsph_num_neighs.txt
@@ -1,52 +1,52 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute smd/ulsph/num/neighs command :h3
[Syntax:]
compute ID group-ID smd/ulsph/num/neighs :pre
ID, group-ID are documented in "compute"_compute.html command
smd/ulsph/num/neighs = style name of this compute command :ul
[Examples:]
compute 1 all smd/ulsph/num/neighs :pre
[Description:]
Define a computation that returns the number of neighbor particles
inside of the smoothing kernel radius for particles interacting via
the updated Lagrangian SPH pair style.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to using Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth
Mach Dynamics in LAMMPS.
[Output info:]
This compute returns a per-particle vector, which can be accessed by
any command that uses per-particle values from a compute as input.
See "Section 6.15"_Section_howto.html#howto_15 for an overview of
LAMMPS output options.
The per-particle values will be given dimentionless, see "units"_units.html.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_2 section for more info. This compute
can only be used for particles which interact with the updated
Lagrangian SPH pair style.
[Related commands:]
"compute smd/tlsph/num/neighs"_compute_smd_tlsph_num_neighs.html
[Default:] none
diff --git a/doc/src/compute_smd_ulsph_strain.txt b/doc/src/compute_smd_ulsph_strain.txt
index 1eb6bc7c2..b7d425b12 100644
--- a/doc/src/compute_smd_ulsph_strain.txt
+++ b/doc/src/compute_smd_ulsph_strain.txt
@@ -1,55 +1,55 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute smd/ulsph/strain command :h3
[Syntax:]
compute ID group-ID smd/ulsph/strain :pre
ID, group-ID are documented in "compute"_compute.html command
smd/ulsph/strain = style name of this compute command :ul
[Examples:]
compute 1 all smd/ulsph/strain :pre
[Description:]
Define a computation that outputs the logarithmic strain tensor. for
particles interacting via the updated Lagrangian SPH pair style.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to using Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth
Mach Dynamics in LAMMPS.
[Output info:]
This compute calculates a per-particle tensor, which can be accessed
by any command that uses per-particle values from a compute as input.
See "Section 6.15"_Section_howto.html#howto_15 for an overview of
LAMMPS output options.
The per-particle vector has 6 entries, corresponding to the xx, yy,
zz, xy, xz, yz components of the symmetric strain rate tensor.
The per-particle tensor values will be given dimensionless, see
"units"_units.html.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info. This compute
can only be used for particles which interact with the updated
Lagrangian SPH pair style.
[Related commands:]
"compute smd/tlsph/strain"_compute_smd_tlsph_strain.html
[Default:] none
diff --git a/doc/src/compute_smd_ulsph_strain_rate.txt b/doc/src/compute_smd_ulsph_strain_rate.txt
index eb9318e07..e2c349c26 100644
--- a/doc/src/compute_smd_ulsph_strain_rate.txt
+++ b/doc/src/compute_smd_ulsph_strain_rate.txt
@@ -1,56 +1,56 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute smd/ulsph/strain/rate command :h3
[Syntax:]
compute ID group-ID smd/ulsph/strain/rate :pre
ID, group-ID are documented in "compute"_compute.html command
smd/ulsph/strain/rate = style name of this compute command :ul
[Examples:]
compute 1 all smd/ulsph/strain/rate :pre
[Description:]
Define a computation that outputs the rate of the logarithmic strain
tensor for particles interacting via the updated Lagrangian SPH pair
style.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to using Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth
Mach Dynamics in LAMMPS.
[Output info:]
This compute calculates a per-particle vector of vectors (tensors),
which can be accessed by any command that uses per-particle values
from a compute as input. See "Section
6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The values will be given in "units"_units.html of one over time.
The per-particle vector has 6 entries, corresponding to the xx, yy,
zz, xy, xz, yz components of the symmetric strain rate tensor.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_2 section for more info. This compute
can only be used for particles which interact with the updated
Lagrangian SPH pair style.
[Related commands:]
"compute smd/tlsph/strain/rate"_compute_smd_tlsph_strain_rate.html
[Default:] none
diff --git a/doc/src/compute_smd_ulsph_stress.txt b/doc/src/compute_smd_ulsph_stress.txt
index 115a4d14b..47f903d3b 100644
--- a/doc/src/compute_smd_ulsph_stress.txt
+++ b/doc/src/compute_smd_ulsph_stress.txt
@@ -1,58 +1,58 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute smd/ulsph/stress command :h3
[Syntax:]
compute ID group-ID smd/ulsph/stress :pre
ID, group-ID are documented in "compute"_compute.html command
smd/ulsph/stress = style name of this compute command :ul
[Examples:]
compute 1 all smd/ulsph/stress :pre
[Description:]
Define a computation that outputs the Cauchy stress tensor.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to using Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth
Mach Dynamics in LAMMPS.
[Output info:]
This compute calculates a per-particle vector of vectors (tensors),
which can be accessed by any command that uses per-particle values
from a compute as input. See "Section
6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
The values will be given in "units"_units.html of pressure.
The per-particle vector has 7 entries. The first six entries
correspond to the xx, yy, zz, xy, xz, yz components of the symmetric
Cauchy stress tensor. The seventh entry is the second invariant of the
stress tensor, i.e., the von Mises equivalent stress.
[Restrictions:]
This compute is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info. This compute
can only be used for particles which interact with the updated
Lagrangian SPH pair style.
[Related commands:]
"compute smd/ulsph/strain"_compute_smd_ulsph_strain.html, "compute
smd/ulsph/strain/rate"_compute_smd_ulsph_strain_rate.html "compute
smd/tlsph/stress"_compute_smd_tlsph_stress.html
[Default:] none
diff --git a/doc/src/compute_smd_vol.txt b/doc/src/compute_smd_vol.txt
index 239ab1a1d..fc736a5bf 100644
--- a/doc/src/compute_smd_vol.txt
+++ b/doc/src/compute_smd_vol.txt
@@ -1,53 +1,53 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
compute smd/vol command :h3
[Syntax:]
compute ID group-ID smd/vol :pre
ID, group-ID are documented in "compute"_compute.html command
smd/vol = style name of this compute command :ul
[Examples:]
compute 1 all smd/vol :pre
[Description:]
Define a computation that provides the per-particle volume and the sum
of the per-particle volumes of the group for which the fix is defined.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to using Smooth
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth
Mach Dynamics in LAMMPS.
[Output info:]
This compute calculates a per-particle vector, which can be accessed
by any command that uses per-particle values from a compute as input.
See "How-to discussions, section 6.15"_Section_howto.html#howto_15 for
an overview of LAMMPS output options.
The per-particle vector values will be given in "units"_units.html of
volume.
Additionally, the compute returns a scalar, which is the sum of the
per-particle volumes of the group for which the fix is defined.
[Restrictions:]
This compute is part of the USER-SMD 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:]
"compute smd/rho"_compute_smd_rho.html
[Default:] none
diff --git a/doc/src/fix_grem.txt b/doc/src/fix_grem.txt
new file mode 100644
index 000000000..eac4d6f4b
--- /dev/null
+++ b/doc/src/fix_grem.txt
@@ -0,0 +1,111 @@
+"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 grem command :h3
+
+[Syntax:]
+
+fix ID group-ID grem lambda eta H0 thermostat-ID :pre
+
+ID, group-ID are documented in "fix"_fix.html command :ulb,l
+grem = style name of this fix command :l
+lambda = intercept parameter of linear effective temperature function :l
+eta = slope parameter of linear effective temperature function :l
+H0 = shift parameter of linear effective temperature function :l
+thermostat-ID = ID of Nose-Hoover thermostat or barostat used in simulation :l,ule
+
+[Examples:]
+
+fix fxgREM all grem 400 -0.01 -30000 fxnpt
+thermo_modify press fxgREM_press :pre
+
+fix fxgREM all grem 502 -0.15 -80000 fxnvt :pre
+
+[Description:]
+
+This fix implements the molecular dynamics version of the generalized
+replica exchange method (gREM) originally developed by "(Kim)"_#Kim,
+which uses non-Boltzmann ensembles to sample over first order phase
+transitions. The is done by defining replicas with an enthalpy
+dependent effective temperature
+
+:c,image(Eqs/fix_grem.jpg)
+
+with {eta} negative and steep enough to only intersect the
+characteristic microcanonical temperature (Ts) of the system once,
+ensuring a unimodal enthalpy distribution in that replica. {Lambda} is
+the intercept and effects the generalized ensemble similar to how
+temperature effects a Boltzmann ensemble. {H0} is a reference
+enthalpy, and is typically set as the lowest desired sampled enthalpy.
+Further explanation can be found in our recent papers
+"(Malolepsza)"_#Malolepsza.
+
+This fix requires a Nose-Hoover thermostat fix reference passed to the
+grem as {thermostat-ID}. Two distinct temperatures exist in this
+generalized ensemble, the effective temperature defined above, and a
+kinetic temperature that controls the velocity distribution of
+particles as usual. Either constant volume or constant pressure
+algorithms can be used.
+
+The fix enforces a generalized ensemble in a single replica
+only. Typically, this ideaology is combined with replica exchange with
+replicas differing by {lambda} only for simplicity, but this is not
+required. A multi-replica simulation can be run within the LAMMPS
+environment using the "temper/grem"_temper_grem.html command. This
+utilizes LAMMPS partition mode and requires the number of available
+processors be on the order of the number of desired replicas. A
+100-replica simulation would require at least 100 processors (1 per
+world at minimum). If a many replicas are needed on a small number of
+processors, multi-replica runs can be run outside of LAMMPS. An
+example of this can be found in examples/USER/misc/grem and has no
+limit on the number of replicas per processor. However, this is very
+inefficient and error prone and should be avoided if possible.
+
+In general, defining the generalized ensembles is unique for every
+system. When starting a many-replica simulation without any knowledge
+of the underlying microcanonical temperature, there are several tricks
+we have utilized to optimize the process. Choosing a less-steep {eta}
+yields broader distributions, requiring fewer replicas to map the
+microcanonical temperature. While this likely struggles from the same
+sampling problems gREM was built to avoid, it provides quick insight
+to Ts. Initially using an evenly-spaced {lambda} distribution
+identifies regions where small changes in enthalpy lead to large
+temperature changes. Replicas are easily added where needed.
+
+:line
+
+[Restart, fix_modify, output, run start/stop, minimize info:]
+
+No information about this fix is written to "binary restart
+files"_restart.html.
+
+The "thermo_modify"_thermo_modify.html {press} option is supported
+by this fix to add the rescaled kinetic pressure as part of
+"thermodynamic output"_thermo_style.html.
+
+[Restrictions:]
+
+This fix is part of the USER-MISC package. It is only enabled if
+LAMMPS was built with that package. See the "Making
+LAMMPS"_Section_start.html#start_3 section for more info.
+
+[Related commands:]
+
+"temper/grem"_temper_grem.html, "fix nvt"_fix_nh.html, "fix
+npt"_fix_nh.html, "thermo_modify"_thermo_modify.html
+
+[Default:] none
+
+:line
+
+:link(Kim)
+[(Kim)] Kim, Keyes, Straub, J Chem. Phys, 132, 224107 (2010).
+
+:link(Malolepsza)
+[(Malolepsza)] Malolepsza, Secor, Keyes, J Phys Chem B 119 (42),
+13379-13384 (2015).
diff --git a/doc/src/fix_ipi.txt b/doc/src/fix_ipi.txt
index 3899f5052..b1533830b 100644
--- a/doc/src/fix_ipi.txt
+++ b/doc/src/fix_ipi.txt
@@ -1,91 +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 ipi command :h3
[Syntax:]
-fix ID group-ID ipi address port \[unix\] :pre
+fix ID group-ID ipi address port \[unix\] \[reset\] :pre
ID, group-ID are documented in "fix"_fix.html command
ipi = style name of this fix command
address = internet address (FQDN or IP), or UNIX socket name
port = port number (ignored for UNIX sockets)
-optional keyword = {unix}, if present uses a unix socket :ul
+optional keyword = {unix}, if present uses a unix socket
+optional keyword = {reset}, if present reset electrostatics at each call :ul
[Examples:]
fix 1 all ipi my.server.com 12345
-fix 1 all ipi mysocket 666 unix
+fix 1 all ipi mysocket 666 unix reset
[Description:]
This fix enables LAMMPS to be run as a client for the i-PI Python
wrapper "(IPI)"_#ipihome for performing a path integral molecular dynamics
(PIMD) simulation. The philosophy behind i-PI is described in the
following publication "(IPI-CPC)"_#IPICPC.
A version of the i-PI package, containing only files needed for use
with LAMMPS, is provided in the tools/i-pi directory. See the
tools/i-pi/manual.pdf for an introduction to i-PI. The
examples/USER/i-pi directory contains example scripts for using i-PI
with LAMMPS.
In brief, the path integral molecular dynamics is performed by the
Python wrapper, while the client (LAMMPS in this case) simply computes
forces and energy for each configuration. The communication between
the two components takes place using sockets, and is reduced to the
bare minimum. All the parameters of the dynamics are specified in the
input of i-PI, and all the parameters of the force field must be
specified as LAMMPS inputs, preceding the {fix ipi} command.
The server address must be specified by the {address} argument, and
can be either the IP address, the fully-qualified name of the server,
or the name of a UNIX socket for local, faster communication. In the
case of internet sockets, the {port} argument specifies the port
number on which i-PI is listening, while the {unix} optional switch
specifies that the socket is a UNIX socket.
Note that there is no check of data integrity, or that the atomic
configurations make sense. It is assumed that the species in the i-PI
input are listed in the same order as in the data file of LAMMPS. The
initial configuration is ignored, as it will be substituted with the
coordinates received from i-PI before forces are ever evaluated.
+A note of caution when using potentials that contain long-range
+electrostatics, or that contain parameters that depend on box size:
+all of these options will be initialized based on the cell size in the
+LAMMPS-side initial configuration and kept constant during the run.
+This is required to e.g. obtain reproducible and conserved forces.
+If the cell varies too wildly, it may be advisable to reinitialize
+these interactions at each call. This behavior can be requested by
+setting the {reset} switch.
+
[Restart, fix_modify, output, run start/stop, minimize info:]
There is no restart information associated with this fix, since all
the dynamical parameters are dealt with by i-PI.
[Restrictions:]
Using this fix on anything other than all atoms requires particular
care, since i-PI will know nothing on atoms that are not those whose
coordinates are transferred. However, one could use this strategy to
define an external potential acting on the atoms that are moved by
i-PI.
This fix is part of the USER-MISC package. It is only enabled if
LAMMPS was built with that package. See the "Making
LAMMPS"_Section_start.html#start_3 section for more info. Because of
the use of UNIX domain sockets, this fix will only work in a UNIX
environment.
[Related commands:]
"fix nve"_fix_nve.html
:line
:link(IPICPC)
[(IPI-CPC)] Ceriotti, More and Manolopoulos, Comp Phys Comm, 185,
1019-1026 (2014).
:link(ipihome)
[(IPI)]
"http://epfl-cosmo.github.io/gle4md/index.html?page=ipi"_http://epfl-cosmo.github.io/gle4md/index.html?page=ipi
diff --git a/doc/src/fix_smd_adjust_dt.txt b/doc/src/fix_smd_adjust_dt.txt
index 04a0a7bec..86b736330 100644
--- a/doc/src/fix_smd_adjust_dt.txt
+++ b/doc/src/fix_smd_adjust_dt.txt
@@ -1,55 +1,55 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix smd/adjust_dt command :h3
[Syntax:]
fix ID group-ID smd/adjust_dt arg :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
smd/adjust_dt = style name of this fix command :l
arg = {s_fact} :l
{s_fact} = safety factor :pre
:ule
[Examples:]
fix 1 all smd/adjust_dt 0.1 :pre
[Description:]
The fix calculates a new stable time increment for use with the SMD time integrators.
The stable time increment is based on multiple conditions. For the SPH pair styles, a
CFL criterion (Courant, Friedrichs & Lewy, 1928) is evaluated, which determines the speed of
sound cannot propagate further than a typical spacing between particles within a single time step to ensure
no information is lost. For the contact pair styles, a linear analysis of the pair potential determines a
stable maximum time step.
This fix inquires the minimum stable time increment across all particles contained in the group for which this
fix is defined. An additional safety factor {s_fact} is applied to the time increment.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to use Smooth Mach Dynamics in LAMMPS.
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to use Smooth Mach Dynamics in LAMMPS.
[Restart, fix_modify, output, run start/stop, minimize info:]
Currently, no part of USER-SMD supports restarting nor minimization.
[Restrictions:]
This fix is part of the USER-SMD 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:]
"smd/tlsph_dt"_compute_smd_tlsph_dt.html
[Default:] none
diff --git a/doc/src/fix_smd_integrate_tlsph.txt b/doc/src/fix_smd_integrate_tlsph.txt
index 8948acbb3..24d319bdb 100644
--- a/doc/src/fix_smd_integrate_tlsph.txt
+++ b/doc/src/fix_smd_integrate_tlsph.txt
@@ -1,54 +1,54 @@
"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 smd/integrate_tlsph command :h3
[Syntax:]
fix ID group-ID smd/integrate_tlsph keyword values :pre
ID, group-ID are documented in "fix"_fix.html command
smd/integrate_tlsph = style name of this fix command
zero or more keyword/value pairs may be appended :ul
keyword = {limit_velocity} :l
{limit_velocity} value = max_vel
max_vel = maximum allowed velocity :pre
:ule
[Examples:]
fix 1 all smd/integrate_tlsph
fix 1 all smd/integrate_tlsph limit_velocity 1000 :pre
[Description:]
The fix performs explicit time integration for particles which interact according with the Total-Lagrangian SPH pair style.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to using Smooth Mach Dynamics in LAMMPS.
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth Mach Dynamics in LAMMPS.
The {limit_velocity} keyword will control the velocity, scaling the norm of
the velocity vector to max_vel in case it exceeds this velocity limit.
[Restart, fix_modify, output, run start/stop, minimize info:]
Currently, no part of USER-SMD supports restarting nor minimization. This fix has no outputs.
[Restrictions:]
This fix is part of the USER-SMD 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:]
"smd/integrate_ulsph"_fix_smd_integrate_ulsph.html
[Default:] none
diff --git a/doc/src/fix_smd_integrate_ulsph.txt b/doc/src/fix_smd_integrate_ulsph.txt
index dfbdf51cc..0dfb9451d 100644
--- a/doc/src/fix_smd_integrate_ulsph.txt
+++ b/doc/src/fix_smd_integrate_ulsph.txt
@@ -1,60 +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
fix smd/integrate_ulsph command :h3
[Syntax:]
fix ID group-ID smd/integrate_ulsph keyword :pre
ID, group-ID are documented in "fix"_fix.html command
smd/integrate_ulsph = style name of this fix command
zero or more keyword/value pairs may be appended :ul
keyword = adjust_radius or limit_velocity
adjust_radius values = adjust_radius_factor min_nn max_nn
adjust_radius_factor = factor which scale the smooth/kernel radius
min_nn = minimum number of neighbors
max_nn = maximum number of neighbors
limit_velocity values = max_velocity
max_velocity = maximum allowed velocity.
[Examples:]
fix 1 all smd/integrate_ulsph adjust_radius 1.02 25 50 :pre
fix 1 all smd/integrate_ulsph limit_velocity 1000 :pre
[Description:]
The fix performs explicit time integration for particles which interact with the updated Lagrangian SPH pair style.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to using Smooth Mach Dynamics in LAMMPS.
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth Mach Dynamics in LAMMPS.
The {adjust_radius} keyword activates dynamic adjustment of the per-particle SPH smoothing kernel radius such that the number of neighbors per particles remains
within the interval {min_nn} to {max_nn}. The parameter {adjust_radius_factor} determines the amount of adjustment per timestep. Typical values are
{adjust_radius_factor}=1.02, {min_nn}=15, and {max_nn}=20.
The {limit_velocity} keyword will control the velocity, scaling the norm of
the velocity vector to max_vel in case it exceeds this velocity limit.
[Restart, fix_modify, output, run start/stop, minimize info:]
Currently, no part of USER-SMD supports restarting nor minimization. This fix has no outputs.
[Restrictions:]
This fix is part of the USER-SMD 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:]
[Default:] none
diff --git a/doc/src/fix_smd_move_triangulated_surface.txt b/doc/src/fix_smd_move_triangulated_surface.txt
index 9fa6947ff..2cba00126 100644
--- a/doc/src/fix_smd_move_triangulated_surface.txt
+++ b/doc/src/fix_smd_move_triangulated_surface.txt
@@ -1,75 +1,75 @@
"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 smd/move_tri_surf command :h3
[Syntax:]
fix ID group-ID smd/move_tri_surf keyword :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
smd/move_tri_surf keyword = style name of this fix command :l
keyword = {*LINEAR} or {*WIGGLE} or {*ROTATE} :l
{*LINEAR} args = Vx Vy Vz
Vx,Vy,Vz = components of velocity vector (velocity units), any component can be specified as NULL
{*WIGGLE} args = Vx Vy Vz max_travel
vx,vy,vz = components of velocity vector (velocity units), any component can be specified as NULL
max_travel = wiggle amplitude
{*ROTATE} args = Px Py Pz Rx Ry Rz period
Px,Py,Pz = origin point of axis of rotation (distance units)
Rx,Ry,Rz = axis of rotation vector
period = period of rotation (time units) :pre
:ule
[Examples:]
fix 1 tool smd/move_tri_surf *LINEAR 20 20 10
fix 2 tool smd/move_tri_surf *WIGGLE 20 20 10
fix 2 tool smd/move_tri_surf *ROTATE 0 0 0 5 2 1 :pre
[Description:]
This fix applies only to rigid surfaces read from .STL files via fix "smd/wall_surface"_fix_smd_wall_surface.html .
It updates position and velocity for the particles in the group each timestep without regard to forces on the particles.
The rigid surfaces can thus be moved along simple trajectories during the simulation.
The {*LINEAR} style moves particles with the specified constant velocity
vector V = (Vx,Vy,Vz). This style also sets the velocity of each particle
to V = (Vx,Vy,Vz).
The {*WIGGLE} style moves particles in an oscillatory fashion.
Particles are moved along (vx, vy, vz) with constant velocity until a
displacement of max_travel is reached. Then, the velocity vector is
reversed. This process is repeated.
The {*ROTATE} style rotates particles around a rotation axis R = (Rx,Ry,Rz) that
goes through a point P = (Px,Py,Pz). The period of the rotation is also
specified. This style also sets the velocity of each particle to (omega cross
Rperp) where omega is its angular velocity around the rotation axis and
Rperp is a perpendicular vector from the rotation axis to the particle.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to using Smooth Mach Dynamics in LAMMPS.
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to using Smooth Mach Dynamics in LAMMPS.
[Restart, fix_modify, output, run start/stop, minimize info:]
Currently, no part of USER-SMD supports restarting nor minimization. This fix has no outputs.
[Restrictions:]
This fix is part of the USER-SMD 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:]
"smd/triangle_mesh_vertices"_compute_smd_triangle_mesh_vertices.html, "smd/wall_surface"_fix_smd_wall_surface.html
[Default:] none
diff --git a/doc/src/fix_smd_wall_surface.txt b/doc/src/fix_smd_wall_surface.txt
index 19f0f3d80..4ea592be1 100644
--- a/doc/src/fix_smd_wall_surface.txt
+++ b/doc/src/fix_smd_wall_surface.txt
@@ -1,58 +1,58 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
fix smd/wall_surface command :h3
[Syntax:]
fix ID group-ID smd/wall_surface arg type mol-ID :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
smd/wall_surface = style name of this fix command :l
arg = {file} :l
{file} = file name of a triangular mesh in stl format :pre
type = particle type to be given to the new particles created by this fix :l
mol-ID = molecule-ID to be given to the new particles created by this fix (must be >= 65535) :l
:ule
[Examples:]
fix stl_surf all smd/wall_surface tool.stl 2 65535 :pre
[Description:]
This fix creates reads a traingulated surface from a file in .STL format.
For each triangle, a new particle is created which stores the barycenter of the triangle and the vertex positions.
The radius of the new particle is that of the minimum circle which encompasses the triangle vertices.
The triangulated surface can be used as a complex rigid wall via the "smd/tri_surface"_pair_smd_triangulated_surface.html pair style.
It is possible to move the triangulated surface via the "smd/move_tri_surf"_fix_smd_move_triangulated_surface.html fix style.
Immediately after a .STL file has been read, the simulation needs to be run for 0 timesteps in order to properly register the new particles
in the system. See the "funnel_flow" example in the USER-SMD examples directory.
-See "this PDF guide"_USER/smd/SMD_LAMMPS_userguide.pdf to use Smooth Mach Dynamics in LAMMPS.
+See "this PDF guide"_PDF/SMD_LAMMPS_userguide.pdf to use Smooth Mach Dynamics in LAMMPS.
[Restart, fix_modify, output, run start/stop, minimize info:]
Currently, no part of USER-SMD supports restarting nor minimization. This fix has no outputs.
[Restrictions:]
This fix is part of the USER-SMD package. It is only enabled if
LAMMPS was built with that package. See the "Making LAMMPS"_Section_start.html#start_3
section for more info. The molecule ID given to the particles created by this fix have to be equal to or larger than 65535.
Within each .STL file, only a single triangulated object must be present, even though the STL format allows for the possibility of multiple objects in one file.
[Related commands:]
"smd/triangle_mesh_vertices"_compute_smd_triangle_mesh_vertices.html, "smd/move_tri_surf"_fix_smd_move_triangulated_surface.html, "smd/tri_surface"_pair_smd_triangulated_surface.html
[Default:] none
diff --git a/doc/src/fixes.txt b/doc/src/fixes.txt
index 10f4dfa86..d17b88306 100644
--- a/doc/src/fixes.txt
+++ b/doc/src/fixes.txt
@@ -1,159 +1,160 @@
Fixes :h1
<!-- RST
.. toctree::
:maxdepth: 1
fix_adapt
fix_adapt_fep
fix_addforce
fix_addtorque
fix_append_atoms
fix_atc
fix_atom_swap
fix_ave_atom
fix_ave_chunk
fix_ave_correlate
fix_ave_correlate_long
fix_ave_histo
fix_ave_time
fix_aveforce
fix_balance
fix_bond_break
fix_bond_create
fix_bond_swap
fix_box_relax
fix_cmap
fix_colvars
fix_controller
fix_deform
fix_deposit
fix_drag
fix_drude
fix_drude_transform
fix_dpd_energy
fix_dt_reset
fix_efield
fix_ehex
fix_enforce2d
fix_eos_cv
fix_eos_table
fix_eos_table_rx
fix_evaporate
fix_external
fix_flow_gauss
fix_freeze
fix_gcmc
fix_gld
fix_gle
fix_gravity
+ fix_grem
fix_halt
fix_heat
fix_imd
fix_indent
fix_ipi
fix_langevin
fix_langevin_drude
fix_langevin_eff
fix_lb_fluid
fix_lb_momentum
fix_lb_pc
fix_lb_rigid_pc_sphere
fix_lb_viscous
fix_lineforce
fix_manifoldforce
fix_meso
fix_meso_stationary
fix_momentum
fix_move
fix_msst
fix_neb
fix_nh
fix_nh_eff
fix_nph_asphere
fix_nph_body
fix_nph_sphere
fix_nphug
fix_npt_asphere
fix_npt_body
fix_npt_sphere
fix_nve
fix_nve_asphere
fix_nve_asphere_noforce
fix_nve_body
fix_nve_eff
fix_nve_limit
fix_nve_line
fix_nve_manifold_rattle
fix_nve_noforce
fix_nve_sphere
fix_nve_tri
fix_nvt_asphere
fix_nvt_body
fix_nvt_manifold_rattle
fix_nvt_sllod
fix_nvt_sllod_eff
fix_nvt_sphere
fix_oneway
fix_orient
fix_phonon
fix_pimd
fix_planeforce
fix_poems
fix_pour
fix_press_berendsen
fix_print
fix_property_atom
fix_qbmsst
fix_qeq
fix_qeq_comb
fix_qeq_reax
fix_qmmm
fix_qtb
fix_reax_bonds
fix_reaxc_species
fix_recenter
fix_restrain
fix_rigid
fix_rx
fix_saed_vtk
fix_setforce
fix_shake
fix_shardlow
fix_smd
fix_smd_adjust_dt
fix_smd_integrate_tlsph
fix_smd_integrate_ulsph
fix_smd_move_triangulated_surface
fix_smd_setvel
fix_smd_wall_surface
fix_spring
fix_spring_chunk
fix_spring_rg
fix_spring_self
fix_srd
fix_store_force
fix_store_state
fix_temp_berendsen
fix_temp_csvr
fix_temp_rescale
fix_temp_rescale_eff
fix_tfmc
fix_thermal_conductivity
fix_ti_spring
fix_tmd
fix_ttm
fix_tune_kspace
fix_vector
fix_viscosity
fix_viscous
fix_wall
fix_wall_gran
fix_wall_gran_region
fix_wall_piston
fix_wall_reflect
fix_wall_region
fix_wall_srd
END_RST -->
diff --git a/doc/src/lammps.book b/doc/src/lammps.book
index 937e0d33b..ec689adf1 100644
--- a/doc/src/lammps.book
+++ b/doc/src/lammps.book
@@ -1,629 +1,631 @@
#HTMLDOC 1.8.27
-t pdf14 -f "../Manual.pdf" --book --toclevels 4 --no-numbered --toctitle "Table of Contents" --title --textcolor #000000 --linkcolor #0000ff --linkstyle plain --bodycolor #ffffff --size Universal --left 1.00in --right 0.50in --top 0.50in --bottom 0.50in --header .t. --header1 ... --footer ..1 --nup 1 --tocheader .t. --tocfooter ..i --portrait --color --no-pscommands --no-xrxcomments --compression=1 --jpeg=0 --fontsize 11.0 --fontspacing 1.2 --headingfont helvetica --bodyfont times --headfootsize 11.0 --headfootfont helvetica --charset iso-8859-1 --links --embedfonts --pagemode document --pagelayout single --firstpage c1 --pageeffect none --pageduration 10 --effectduration 1.0 --no-encryption --permissions all --owner-password "" --user-password "" --browserwidth 680 --no-strict --no-overflow
Manual.html
Section_intro.html
Section_start.html
Section_commands.html
Section_packages.html
Section_accelerate.html
accelerate_gpu.html
accelerate_intel.html
accelerate_kokkos.html
accelerate_omp.html
accelerate_opt.html
Section_howto.html
Section_example.html
Section_perf.html
Section_tools.html
Section_modify.html
Section_python.html
Section_errors.html
Section_history.html
tutorial_drude.html
tutorial_github.html
body.html
manifolds.html
angle_coeff.html
angle_style.html
atom_modify.html
atom_style.html
balance.html
bond_coeff.html
bond_style.html
bond_write.html
boundary.html
box.html
change_box.html
clear.html
comm_modify.html
comm_style.html
compute.html
compute_modify.html
create_atoms.html
create_bonds.html
create_box.html
delete_atoms.html
delete_bonds.html
dielectric.html
dihedral_coeff.html
dihedral_style.html
dimension.html
displace_atoms.html
dump.html
dump_custom_vtk.html
dump_h5md.html
dump_image.html
dump_modify.html
dump_molfile.html
dump_nc.html
echo.html
fix.html
fix_modify.html
group.html
group2ndx.html
if.html
improper_coeff.html
improper_style.html
include.html
info.html
jump.html
kspace_modify.html
kspace_style.html
label.html
lattice.html
log.html
mass.html
min_modify.html
min_style.html
minimize.html
molecule.html
neb.html
neigh_modify.html
neighbor.html
newton.html
next.html
package.html
pair_coeff.html
pair_modify.html
pair_style.html
pair_write.html
partition.html
prd.html
print.html
processors.html
python.html
quit.html
read_data.html
read_dump.html
read_restart.html
region.html
replicate.html
rerun.html
reset_timestep.html
restart.html
run.html
run_style.html
set.html
shell.html
special_bonds.html
suffix.html
tad.html
temper.html
thermo.html
thermo_modify.html
thermo_style.html
timer.html
timestep.html
uncompute.html
undump.html
unfix.html
units.html
variable.html
velocity.html
write_coeff.html
write_data.html
write_dump.html
write_restart.html
fix_adapt.html
fix_adapt_fep.html
fix_addforce.html
fix_addtorque.html
fix_append_atoms.html
fix_atc.html
fix_atom_swap.html
fix_ave_atom.html
fix_ave_chunk.html
fix_ave_correlate.html
fix_ave_correlate_long.html
fix_ave_histo.html
fix_ave_time.html
fix_aveforce.html
fix_balance.html
fix_bond_break.html
fix_bond_create.html
fix_bond_swap.html
fix_box_relax.html
fix_cmap.html
fix_colvars.html
fix_controller.html
fix_deform.html
fix_deposit.html
fix_dpd_energy.html
fix_drag.html
fix_drude.html
fix_drude_transform.html
fix_dt_reset.html
fix_efield.html
fix_ehex.html
fix_enforce2d.html
fix_eos_cv.html
fix_eos_table.html
fix_eos_table_rx.html
fix_evaporate.html
fix_external.html
fix_flow_gauss.html
fix_freeze.html
fix_gcmc.html
fix_gld.html
fix_gle.html
fix_gravity.html
+fix_grem.html
fix_halt.html
fix_heat.html
fix_imd.html
fix_indent.html
fix_ipi.html
fix_langevin.html
fix_langevin_drude.html
fix_langevin_eff.html
fix_lb_fluid.html
fix_lb_momentum.html
fix_lb_pc.html
fix_lb_rigid_pc_sphere.html
fix_lb_viscous.html
fix_lineforce.html
fix_manifoldforce.html
fix_meso.html
fix_meso_stationary.html
fix_momentum.html
fix_move.html
fix_msst.html
fix_neb.html
fix_nh.html
fix_nh_eff.html
fix_nph_asphere.html
fix_nph_body.html
fix_nph_sphere.html
fix_nphug.html
fix_npt_asphere.html
fix_npt_body.html
fix_npt_sphere.html
fix_nve.html
fix_nve_asphere.html
fix_nve_asphere_noforce.html
fix_nve_body.html
fix_nve_eff.html
fix_nve_limit.html
fix_nve_line.html
fix_nve_manifold_rattle.html
fix_nve_noforce.html
fix_nve_sphere.html
fix_nve_tri.html
fix_nvt_asphere.html
fix_nvt_body.html
fix_nvt_manifold_rattle.html
fix_nvt_sllod.html
fix_nvt_sllod_eff.html
fix_nvt_sphere.html
fix_oneway.html
fix_orient.html
fix_phonon.html
fix_pimd.html
fix_planeforce.html
fix_poems.html
fix_pour.html
fix_press_berendsen.html
fix_print.html
fix_property_atom.html
fix_qbmsst.html
fix_qeq.html
fix_qeq_comb.html
fix_qeq_reax.html
fix_qmmm.html
fix_qtb.html
fix_reax_bonds.html
fix_reaxc_species.html
fix_recenter.html
fix_restrain.html
fix_rigid.html
fix_rx.html
fix_saed_vtk.html
fix_setforce.html
fix_shake.html
fix_shardlow.html
fix_smd.html
fix_smd_adjust_dt.html
fix_smd_integrate_tlsph.html
fix_smd_integrate_ulsph.html
fix_smd_move_triangulated_surface.html
fix_smd_setvel.html
fix_smd_wall_surface.html
fix_spring.html
fix_spring_chunk.html
fix_spring_rg.html
fix_spring_self.html
fix_srd.html
fix_store_force.html
fix_store_state.html
fix_temp_berendsen.html
fix_temp_csvr.html
fix_temp_rescale.html
fix_temp_rescale_eff.html
fix_tfmc.html
fix_thermal_conductivity.html
fix_ti_spring.html
fix_tmd.html
fix_ttm.html
fix_tune_kspace.html
fix_vector.html
fix_viscosity.html
fix_viscous.html
fix_wall.html
fix_wall_gran.html
fix_wall_gran_region.html
fix_wall_piston.html
fix_wall_reflect.html
fix_wall_region.html
fix_wall_srd.html
compute_ackland_atom.html
compute_angle.html
compute_angle_local.html
compute_angmom_chunk.html
compute_basal_atom.html
compute_body_local.html
compute_bond.html
compute_bond_local.html
compute_centro_atom.html
compute_chunk_atom.html
compute_cluster_atom.html
compute_cna_atom.html
compute_com.html
compute_com_chunk.html
compute_contact_atom.html
compute_coord_atom.html
compute_damage_atom.html
compute_dihedral.html
compute_dihedral_local.html
compute_dilatation_atom.html
compute_dipole_chunk.html
compute_displace_atom.html
compute_dpd.html
compute_dpd_atom.html
compute_erotate_asphere.html
compute_erotate_rigid.html
compute_erotate_sphere.html
compute_erotate_sphere_atom.html
compute_event_displace.html
compute_fep.html
+compute_global_atom.html
compute_group_group.html
compute_gyration.html
compute_gyration_chunk.html
compute_heat_flux.html
compute_hexorder_atom.html
compute_improper.html
compute_improper_local.html
compute_inertia_chunk.html
compute_ke.html
compute_ke_atom.html
compute_ke_atom_eff.html
compute_ke_eff.html
compute_ke_rigid.html
compute_meso_e_atom.html
compute_meso_rho_atom.html
compute_meso_t_atom.html
compute_msd.html
compute_msd_chunk.html
compute_msd_nongauss.html
compute_omega_chunk.html
compute_orientorder_atom.html
compute_pair.html
compute_pair_local.html
compute_pe.html
compute_pe_atom.html
compute_plasticity_atom.html
compute_pressure.html
compute_property_atom.html
compute_property_chunk.html
compute_property_local.html
compute_rdf.html
compute_reduce.html
compute_rigid_local.html
compute_saed.html
compute_slice.html
compute_smd_contact_radius.html
compute_smd_damage.html
compute_smd_hourglass_error.html
compute_smd_internal_energy.html
compute_smd_plastic_strain.html
compute_smd_plastic_strain_rate.html
compute_smd_rho.html
compute_smd_tlsph_defgrad.html
compute_smd_tlsph_dt.html
compute_smd_tlsph_num_neighs.html
compute_smd_tlsph_shape.html
compute_smd_tlsph_strain.html
compute_smd_tlsph_strain_rate.html
compute_smd_tlsph_stress.html
compute_smd_triangle_mesh_vertices.html
compute_smd_ulsph_num_neighs.html
compute_smd_ulsph_strain.html
compute_smd_ulsph_strain_rate.html
compute_smd_ulsph_stress.html
compute_smd_vol.html
compute_sna_atom.html
compute_stress_atom.html
compute_tally.html
compute_temp.html
compute_temp_asphere.html
compute_temp_body.html
compute_temp_chunk.html
compute_temp_com.html
compute_temp_cs.html
compute_temp_deform.html
compute_temp_deform_eff.html
compute_temp_drude.html
compute_temp_eff.html
compute_temp_partial.html
compute_temp_profile.html
compute_temp_ramp.html
compute_temp_region.html
compute_temp_region_eff.html
compute_temp_rotate.html
compute_temp_sphere.html
compute_ti.html
compute_torque_chunk.html
compute_vacf.html
compute_vcm_chunk.html
compute_voronoi_atom.html
compute_xrd.html
pair_adp.html
pair_agni.html
pair_airebo.html
pair_awpmd.html
pair_beck.html
pair_body.html
pair_bop.html
pair_born.html
pair_brownian.html
pair_buck.html
pair_buck_long.html
pair_charmm.html
pair_class2.html
pair_colloid.html
pair_comb.html
pair_coul.html
pair_coul_diel.html
pair_cs.html
pair_dipole.html
pair_dpd.html
pair_dpd_fdt.html
pair_dsmc.html
pair_eam.html
pair_edip.html
pair_eff.html
pair_eim.html
pair_exp6_rx.html
pair_gauss.html
pair_gayberne.html
pair_gran.html
pair_gromacs.html
pair_hbond_dreiding.html
pair_hybrid.html
pair_kim.html
pair_lcbop.html
pair_line_lj.html
pair_list.html
pair_lj.html
pair_lj96.html
pair_lj_cubic.html
pair_lj_expand.html
pair_lj_long.html
pair_lj_sf.html
pair_lj_smooth.html
pair_lj_smooth_linear.html
pair_lj_soft.html
pair_lubricate.html
pair_lubricateU.html
pair_mdf.html
pair_meam.html
pair_meam_spline.html
pair_meam_sw_spline.html
pair_mgpt.html
pair_mie.html
pair_morse.html
pair_multi_lucy.html
pair_multi_lucy_rx.html
pair_nb3b_harmonic.html
pair_nm.html
pair_none.html
pair_peri.html
pair_polymorphic.html
pair_quip.html
pair_reax.html
pair_reax_c.html
pair_resquared.html
pair_sdk.html
pair_smd_hertz.html
pair_smd_tlsph.html
pair_smd_triangulated_surface.html
pair_smd_ulsph.html
pair_smtbq.html
pair_snap.html
pair_soft.html
pair_sph_heatconduction.html
pair_sph_idealgas.html
pair_sph_lj.html
pair_sph_rhosum.html
pair_sph_taitwater.html
pair_sph_taitwater_morris.html
pair_srp.html
pair_sw.html
pair_table.html
pair_table_rx.html
pair_tersoff.html
pair_tersoff_mod.html
pair_tersoff_zbl.html
pair_thole.html
pair_tri_lj.html
pair_vashishta.html
pair_yukawa.html
pair_yukawa_colloid.html
pair_zbl.html
pair_zero.html
bond_class2.html
bond_fene.html
bond_fene_expand.html
bond_harmonic.html
bond_harmonic_shift.html
bond_harmonic_shift_cut.html
bond_hybrid.html
bond_morse.html
bond_none.html
bond_nonlinear.html
bond_quartic.html
bond_table.html
bond_zero.html
angle_charmm.html
angle_class2.html
angle_cosine.html
angle_cosine_delta.html
angle_cosine_periodic.html
angle_cosine_shift.html
angle_cosine_shift_exp.html
angle_cosine_squared.html
angle_dipole.html
angle_fourier.html
angle_fourier_simple.html
angle_harmonic.html
angle_hybrid.html
angle_none.html
angle_quartic.html
angle_sdk.html
angle_table.html
angle_zero.html
dihedral_charmm.html
dihedral_class2.html
dihedral_cosine_shift_exp.html
dihedral_fourier.html
dihedral_harmonic.html
dihedral_helix.html
dihedral_hybrid.html
dihedral_multi_harmonic.html
dihedral_nharmonic.html
dihedral_none.html
dihedral_opls.html
dihedral_quadratic.html
dihedral_spherical.html
dihedral_table.html
dihedral_zero.html
improper_class2.html
improper_cossq.html
improper_cvff.html
improper_distance.html
improper_fourier.html
improper_harmonic.html
improper_hybrid.html
improper_none.html
improper_ring.html
improper_umbrella.html
improper_zero.html
USER/atc/man_add_molecule.html
USER/atc/man_add_species.html
USER/atc/man_atom_element_map.html
USER/atc/man_atom_weight.html
USER/atc/man_atomic_charge.html
USER/atc/man_boundary.html
USER/atc/man_boundary_dynamics.html
USER/atc/man_boundary_faceset.html
USER/atc/man_boundary_integral.html
USER/atc/man_consistent_fe_initialization.html
USER/atc/man_contour_integral.html
USER/atc/man_control.html
USER/atc/man_control_momentum.html
USER/atc/man_control_thermal.html
USER/atc/man_control_thermal_correction_max_iterations.html
USER/atc/man_decomposition.html
USER/atc/man_electron_integration.html
USER/atc/man_equilibrium_start.html
USER/atc/man_extrinsic_exchange.html
USER/atc/man_fe_md_boundary.html
USER/atc/man_fem_mesh.html
USER/atc/man_filter_scale.html
USER/atc/man_filter_type.html
USER/atc/man_fix_atc.html
USER/atc/man_fix_flux.html
USER/atc/man_fix_nodes.html
USER/atc/man_hardy_computes.html
USER/atc/man_hardy_fields.html
USER/atc/man_hardy_gradients.html
USER/atc/man_hardy_kernel.html
USER/atc/man_hardy_on_the_fly.html
USER/atc/man_hardy_rates.html
USER/atc/man_initial.html
USER/atc/man_internal_atom_integrate.html
USER/atc/man_internal_element_set.html
USER/atc/man_internal_quadrature.html
USER/atc/man_kernel_function.html
USER/atc/man_localized_lambda.html
USER/atc/man_lumped_lambda_solve.html
USER/atc/man_mask_direction.html
USER/atc/man_mass_matrix.html
USER/atc/man_material.html
USER/atc/man_mesh_add_to_nodeset.html
USER/atc/man_mesh_create.html
USER/atc/man_mesh_create_elementset.html
USER/atc/man_mesh_create_faceset_box.html
USER/atc/man_mesh_create_faceset_plane.html
USER/atc/man_mesh_create_nodeset.html
USER/atc/man_mesh_delete_elements.html
USER/atc/man_mesh_nodeset_to_elementset.html
USER/atc/man_mesh_output.html
USER/atc/man_mesh_quadrature.html
USER/atc/man_mesh_read.html
USER/atc/man_mesh_write.html
USER/atc/man_momentum_time_integration.html
USER/atc/man_output.html
USER/atc/man_output_elementset.html
USER/atc/man_output_nodeset.html
USER/atc/man_pair_interactions.html
USER/atc/man_poisson_solver.html
USER/atc/man_read_restart.html
USER/atc/man_remove_molecule.html
USER/atc/man_remove_source.html
USER/atc/man_remove_species.html
USER/atc/man_reset_atomic_reference_positions.html
USER/atc/man_reset_time.html
USER/atc/man_sample_frequency.html
USER/atc/man_set.html
USER/atc/man_source.html
USER/atc/man_source_integration.html
USER/atc/man_temperature_definition.html
USER/atc/man_thermal_time_integration.html
USER/atc/man_time_filter.html
USER/atc/man_track_displacement.html
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_smd_tlsph.txt b/doc/src/pair_smd_tlsph.txt
index a81d2e25c..f73acf74e 100644
--- a/doc/src/pair_smd_tlsph.txt
+++ b/doc/src/pair_smd_tlsph.txt
@@ -1,67 +1,67 @@
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)
:line
pair_style smd/tlsph command :h3
[Syntax:]
pair_style smd/tlsph args :pre
[Examples:]
pair_style smd/tlsph
[Description:]
The {smd/tlsph} style computes particle interactions according to continuum mechanics constitutive laws and a Total-Lagrangian Smooth-Particle Hydrodynamics algorithm.
This pair style is invoked with the following command:
pair_style smd/tlsph
pair_coeff i j *COMMON rho0 E nu Q1 Q2 hg Cp &
*END :pre
Here, {i} and {j} denote the {LAMMPS} particle types for which this pair style is
defined. Note that {i} and {j} must be equal, i.e., no {tlsph} cross interactions
between different particle types are allowed.
In contrast to the usual {LAMMPS} {pair coeff} definitions, which are given solely a
number of floats and integers, the {tlsph} {pair coeff} definition is organised using
keywords. These keywords mark the beginning of different sets of parameters for particle properties,
material constitutive models, and damage models. The {pair coeff} line must be terminated with
the {*END} keyword. The use the line continuation operator {&} is recommended. A typical
invocation of the {tlsph} for a solid body would consist of an equation of state for computing
the pressure (the diagonal components of the stress tensor), and a material model to compute shear
stresses (the off-diagonal components of the stress tensor). Damage and failure models can also be added.
-Please see the "SMD user guide"_USER/smd/SMD_LAMMPS_userguide.pdf for a complete listing of the possible keywords and material models.
+Please see the "SMD user guide"_PDF/SMD_LAMMPS_userguide.pdf for a complete listing of the possible keywords and material models.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
No mixing is performed automatically.
Currently, no part of USER-SMD supports restarting nor minimization.
rRESPA does not apply to this pair style.
:line
[Restrictions:]
This fix is part of the USER-SMD 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
[Default:] none
:line
diff --git a/doc/src/pair_smd_ulsph.txt b/doc/src/pair_smd_ulsph.txt
index d4c9fc41f..b9efeb8fc 100644
--- a/doc/src/pair_smd_ulsph.txt
+++ b/doc/src/pair_smd_ulsph.txt
@@ -1,71 +1,71 @@
"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 smd/ulsph command :h3
[Syntax:]
pair_style smd/ulsph args :pre
these keywords must be given :l
keyword = {*DENSITY_SUMMATION} or {*DENSITY_CONTINUITY} and {*VELOCITY_GRADIENT} or {*NO_VELOCITY_GRADIENT} and {*GRADIENT_CORRECTION} or {*NO_GRADIENT_CORRECTION}
[Examples:]
pair_style smd/ulsph *DENSITY_CONTINUITY *VELOCITY_GRADIENT *NO_GRADIENT_CORRECTION
[Description:]
The {smd/ulsph} style computes particle interactions according to continuum mechanics constitutive laws and an updated Lagrangian Smooth-Particle Hydrodynamics algorithm.
This pair style is invoked similar to the following command:
pair_style smd/ulsph *DENSITY_CONTINUITY *VELOCITY_GRADIENT *NO_GRADIENT_CORRECTION
pair_coeff i j *COMMON rho0 c0 Q1 Cp hg &
*END :pre
Here, {i} and {j} denote the {LAMMPS} particle types for which this pair style is
defined. Note that {i} and {j} can be different, i.e., {ulsph} cross interactions
between different particle types are allowed. However, {i}--{i} respectively {j}--{j} pair_coeff lines have to preceed a cross interaction.
In contrast to the usual {LAMMPS} {pair coeff} definitions, which are given solely a
number of floats and integers, the {ulsph} {pair coeff} definition is organised using
keywords. These keywords mark the beginning of different sets of parameters for particle properties,
material constitutive models, and damage models. The {pair coeff} line must be terminated with
the {*END} keyword. The use the line continuation operator {&} is recommended. A typical
invocation of the {ulsph} for a solid body would consist of an equation of state for computing
the pressure (the diagonal components of the stress tensor), and a material model to compute shear
stresses (the off-diagonal components of the stress tensor).
Note that the use of *GRADIENT_CORRECTION can lead to severe numerical instabilities. For a general fluid simulation, *NO_GRADIENT_CORRECTION is recommended.
-Please see the "SMD user guide"_USER/smd/SMD_LAMMPS_userguide.pdf for a complete listing of the possible keywords and material models.
+Please see the "SMD user guide"_PDF/SMD_LAMMPS_userguide.pdf for a complete listing of the possible keywords and material models.
:line
[Mixing, shift, table, tail correction, restart, rRESPA info]:
No mixing is performed automatically.
Currently, no part of USER-SMD supports restarting nor minimization.
rRESPA does not apply to this pair style.
:line
[Restrictions:]
This fix is part of the USER-SMD 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
[Default:] none
:line
diff --git a/doc/src/temper_grem.txt b/doc/src/temper_grem.txt
new file mode 100644
index 000000000..b41bbdf02
--- /dev/null
+++ b/doc/src/temper_grem.txt
@@ -0,0 +1,109 @@
+"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
+
+:link(lws,http://lammps.sandia.gov)
+:link(ld,Manual.html)
+:link(lc,Section_commands.html#comm)
+
+:line
+
+temper/grem command :h3
+
+[Syntax:]
+
+temper/grem N M lambda fix-ID thermostat-ID seed1 seed2 index :pre
+
+N = total # of timesteps to run
+M = attempt a tempering swap every this many steps
+lambda = initial lambda for this ensemble
+fix-ID = ID of fix_grem
+thermostat-ID = ID of the thermostat that controls kinetic temperature
+seed1 = random # seed used to decide on adjacent temperature to partner with
+seed2 = random # seed for Boltzmann factor in Metropolis swap
+index = which temperature (0 to N-1) I am simulating (optional) :ul
+
+[Examples:]
+
+temper/grem 100000 1000 ${lambda} fxgREM fxnvt 0 58728
+temper/grem 40000 100 ${lambda} fxgREM fxnpt 0 32285 ${walkers} :pre
+
+[Description:]
+
+Run a parallel tempering or replica exchange simulation in LAMMPS
+partition mode using multiple generalized replicas (ensembles) of a
+system defined by "fix grem"_fix_grem.html, which stands for the
+generalized replica exchange method (gREM) originally developed by
+"(Kim)"_#Kim. It uses non-Boltzmann ensembles to sample over first
+order phase transitions. The is done by defining replicas with an
+enthalpy dependent effective temperature
+
+Two or more replicas must be used. See the "temper"_temper.html
+command for an explanation of how to run replicas on multiple
+partitions of one or more processors.
+
+This command is a modification of the "temper"_temper.html command and
+has the same dependencies, restraints, and input variables which are
+discussed there in greater detail.
+
+Instead of temperature, this command performs replica exchanges in
+lambda as per the generalized ensemble enforced by "fix
+grem"_fix_grem.html. The desired lambda is specified by {lambda},
+which is typically a variable previously set in the input script, so
+that each partition is assigned a different temperature. See the
+"variable"_variable.html command for more details. For example:
+
+variable lambda world 400 420 440 460
+fix fxnvt all nvt temp 300.0 300.0 100.0
+fix fxgREM all grem ${lambda} -0.05 -50000 fxnvt
+temper 100000 100 ${lambda} fxgREM fxnvt 3847 58382 :pre
+
+would define 4 lambdas with constant kinetic temperature but unique
+generalized temperature, and assign one of them to "fix
+grem"_fix_grem.html used by each replica, and to the grem command.
+
+As the gREM simulation runs for {N} timesteps, a swap between adjacent
+ensembles will be attempted every {M} timesteps. If {seed1} is 0,
+then the swap attempts will alternate between odd and even pairings.
+If {seed1} is non-zero then it is used as a seed in a random number
+generator to randomly choose an odd or even pairing each time. Each
+attempted swap of temperatures is either accepted or rejected based on
+a Metropolis criterion, derived for gREM by "(Kim)"_#Kim, which uses
+{seed2} in the random number generator.
+
+File management works identical to the "temper"_temper.html command.
+Dump files created by this fix contain continuous trajectories and
+require post-processing to obtain per-replica information.
+
+The last argument {index} in the grem command is optional and is used
+when restarting a run from a set of restart files (one for each
+replica) which had previously swapped to new lambda. This is done
+using a variable. For example if the log file listed the following for
+a simulation with 5 replicas:
+
+500000 2 4 0 1 3 :pre
+
+then a setting of
+
+variable walkers world 2 4 0 1 3 :pre
+
+would be used to restart the run with a grem command like the example
+above with ${walkers} as the last argument. This functionality is
+identical to "temper"_temper.html.
+
+:line
+
+[Restrictions:]
+
+This command can only be used if LAMMPS was built with the USER-MISC
+package. See the "Making LAMMPS"_Section_start.html#start_3 section
+for more info on packages.
+
+This command must be used with "fix grem"_fix_grem.html.
+
+[Related commands:]
+
+"fix grem"_fix_grem.html, "temper"_temper.html, "variable"_variable.html
+
+[Default:] none
+
+:link(Kim)
+[(Kim)] Kim, Keyes, Straub, J Chem Phys, 132, 224107 (2010).
diff --git a/doc/src/tutorial_pylammps.txt b/doc/src/tutorial_pylammps.txt
new file mode 100644
index 000000000..6966bb90b
--- /dev/null
+++ b/doc/src/tutorial_pylammps.txt
@@ -0,0 +1,462 @@
+"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
+
+PyLammps Tutorial :h1
+
+<!-- RST
+.. contents::
+END_RST -->
+
+Overview :h2
+
+PyLammps is a Python wrapper class which can be created on its own or use an
+existing lammps Python object. It creates a simpler, Python-like interface to
+common LAMMPS functionality. Unlike the original flat C-types interface, it
+exposes a discoverable API. It no longer requires knowledge of the underlying
+C++ code implementation. Finally, the IPyLammps wrapper builds on top of
+PyLammps and adds some additional features for IPython integration into IPython
+notebooks, e.g. for embedded visualization output from dump/image.
+
+Comparison of lammps and PyLammps interfaces :h3
+
+lammps.lammps :h4
+
+uses C-Types
+direct memory access to native C++ data
+provides functions to send and receive data to LAMMPS
+requires knowledge of how LAMMPS internally works (C pointers, etc) :ul
+
+lammps.PyLammps :h4
+
+higher-level abstraction built on top of original C-Types interface
+manipulation of Python objects
+communication with LAMMPS is hidden from API user
+shorter, more concise Python
+better IPython integration, designed for quick prototyping :ul
+
+
+Quick Start :h2
+
+System-wide Installation :h3
+
+Step 1: Building LAMMPS as a shared library :h4
+
+To use LAMMPS inside of Python it has to be compiled as shared library. This
+library is then loaded by the Python interface. In this example, we use the
+Make.py utility to create a Makefile with C++ exceptions, PNG, JPEG and FFMPEG
+output support enabled. Finally, we also enable the MOLECULE package and compile
+using the generated {auto} Makefile.
+
+cd $LAMMPS_DIR/src :pre
+
+# generate custom Makefile
+python2 Make.py -jpg -png -s ffmpeg exceptions -m mpi -a file :pre
+
+# add packages if necessary
+make yes-MOLECULE :pre
+
+# compile shared library using Makefile
+make mode=shlib auto :pre
+
+Step 2: Installing the LAMMPS Python package :h4
+
+PyLammps is part of the lammps Python package. To install it simply install
+that package into your current Python installation.
+
+cd $LAMMPS_DIR/python
+python install.py :pre
+
+NOTE: Recompiling the shared library requires reinstalling the Python package
+
+
+Installation inside of a virtualenv :h3
+
+You can use virtualenv to create a custom Python environment specifically tuned
+for your workflow.
+
+Benefits of using a virtualenv :h4
+
+isolation of your system Python installation from your development installation
+installation can happen in your user directory without root access (useful for HPC clusters)
+installing packages through pip allows you to get newer versions of packages than e.g., through apt-get or yum package managers (and without root access)
+you can even install specific old versions of a package if necessary :ul
+
+[Prerequisite (e.g. on Ubuntu)]
+
+apt-get install python-virtualenv :pre
+
+Creating a virtualenv with lammps installed :h4
+
+# create virtualenv name 'testing' :pre
+
+# activate 'testing' environment
+source testing/bin/activate :pre
+
+# install LAMMPS package in virtualenv
+(testing) cd $LAMMPS_DIR/python
+(testing) python install.py :pre
+
+# install other useful packages
+(testing) pip install matplotlib jupyter mpi4py :pre
+
+... :pre
+
+# return to original shell
+(testing) deactivate :pre
+
+
+Creating a new instance of PyLammps :h2
+
+To create a PyLammps object you need to first import the class from the lammps
+module. By using the default constructor, a new {lammps} instance is created.
+
+from lammps import PyLammps
+L = PyLammps() :pre
+
+You can also initialize PyLammps on top of this existing {lammps} object:
+
+from lammps import lammps, PyLammps
+lmp = lammps()
+L = PyLammps(ptr=lmp) :pre
+
+Commands :h2
+
+Sending a LAMMPS command with the existing library interfaces is done using
+the command method of the lammps object instance.
+
+For instance, let's take the following LAMMPS command:
+
+region box block 0 10 0 5 -0.5 0.5 :pre
+
+In the original interface this command can be executed with the following
+Python code if {L} was a lammps instance:
+
+L.command("region box block 0 10 0 5 -0.5 0.5") :pre
+
+With the PyLammps interface, any command can be split up into arbitrary parts
+separated by whitespace, passed as individual arguments to a region method.
+
+L.region("box block", 0, 10, 0, 5, -0.5, 0.5) :pre
+
+Note that each parameter is set as Python literal floating-point number. In the
+PyLammps interface, each command takes an arbitrary parameter list and transparently
+merges it to a single command string, separating individual parameters by whitespace.
+
+The benefit of this approach is avoiding redundant command calls and easier
+parameterization. In the original interface parametrization needed to be done
+manually by creating formatted strings.
+
+L.command("region box block %f %f %f %f %f %f" % (xlo, xhi, ylo, yhi, zlo, zhi)) :pre
+
+In contrast, methods of PyLammps accept parameters directly and will convert
+them automatically to a final command string.
+
+L.region("box block", xlo, xhi, ylo, yhi, zlo, zhi) :pre
+
+System state :h2
+
+In addition to dispatching commands directly through the PyLammps object, it
+also provides several properties which allow you to query the system state.
+
+:dlb
+
+L.system :dt
+
+Is a dictionary describing the system such as the bounding box or number of atoms :dd
+
+L.system.xlo, L.system.xhi :dt
+
+bounding box limits along x-axis :dd
+
+L.system.ylo, L.system.yhi :dt
+
+bounding box limits along y-axis :dd
+
+L.system.zlo, L.system.zhi :dt
+
+bounding box limits along z-axis :dd
+
+L.communication :dt
+
+configuration of communication subsystem, such as the number of threads or processors :dd
+
+L.communication.nthreads :dt
+
+number of threads used by each LAMMPS process :dd
+
+L.communication.nprocs :dt
+
+number of MPI processes used by LAMMPS :dd
+
+L.fixes :dt
+
+List of fixes in the current system :dd
+
+L.computes :dt
+
+List of active computes in the current system :dd
+
+L.dump :dt
+
+List of active dumps in the current system :dd
+
+L.groups :dt
+
+List of groups present in the current system :dd
+
+:dle
+
+Working with LAMMPS variables :h2
+
+LAMMPS variables can be both defined and accessed via the PyLammps interface.
+
+To define a variable you can use the "variable"_variable.html command:
+
+L.variable("a index 2") :pre
+
+A dictionary of all variables is returned by L.variables
+
+you can access an individual variable by retrieving a variable object from the
+L.variables dictionary by name
+
+a = L.variables\['a'\] :pre
+
+The variable value can then be easily read and written by accessing the value
+property of this object.
+
+print(a.value)
+a.value = 4 :pre
+
+Retrieving the value of an arbitrary LAMMPS expressions :h2
+
+LAMMPS expressions can be immediately evaluated by using the eval method. The
+passed string parameter can be any expression containing global thermo values,
+variables, compute or fix data.
+
+result = L.eval("ke") # kinetic energy
+result = L.eval("pe") # potential energy :pre
+
+result = L.eval("v_t/2.0") :pre
+
+Accessing atom data :h2
+
+All atoms in the current simulation can be accessed by using the L.atoms list.
+Each element of this list is an object which exposes its properties (id, type,
+position, velocity, force, etc.).
+
+# access first atom
+L.atoms\[0\].id
+L.atoms\[0\].type :pre
+
+# access second atom
+L.atoms\[1\].position
+L.atoms\[1\].velocity
+L.atoms\[1\].force :pre
+
+Some properties can also be used to set:
+
+# set position in 2D simulation
+L.atoms\[0\].position = (1.0, 0.0) :pre
+
+# set position in 3D simulation
+L.atoms\[0\].position = (1.0, 0.0, 1.) :pre
+
+Evaluating thermo data :h2
+
+Each simulation run usually produces thermo output based on system state,
+computes, fixes or variables. The trajectories of these values can be queried
+after a run via the L.runs list. This list contains a growing list of run data.
+The first element is the output of the first run, the second element that of
+the second run.
+
+L.run(1000)
+L.runs\[0\] # data of first 1000 time steps :pre
+
+L.run(1000)
+L.runs\[1\] # data of second 1000 time steps :pre
+
+Each run contains a dictionary of all trajectories. Each trajectory is
+accessible through its thermo name:
+
+L.runs\[0\].step # list of time steps in first run
+L.runs\[0\].ke # list of kinetic energy values in first run :pre
+
+Together with matplotlib plotting data out of LAMMPS becomes simple:
+
+import matplotlib.plot as plt
+
+steps = L.runs\[0\].step
+ke = L.runs\[0\].ke
+plt.plot(steps, ke) :pre
+
+Error handling with PyLammps :h2
+
+Compiling the shared library with C++ exception support provides a better error
+handling experience. Without exceptions the LAMMPS code will terminate the
+current Python process with an error message. C++ exceptions allow capturing
+them on the C++ side and rethrowing them on the Python side. This way you
+can handle LAMMPS errors through the Python exception handling mechanism.
+
+IMPORTANT NOTE: Capturing a LAMMPS exception in Python can still mean that the
+current LAMMPS process is in an illegal state and must be terminated. It is
+advised to save your data and terminate the Python instance as quickly as
+possible.
+
+Using PyLammps in IPython notebooks and Jupyter :h2
+
+If the LAMMPS Python package is installed for the same Python interpreter as
+IPython, you can use PyLammps directly inside of an IPython notebook inside of
+Jupyter. Jupyter is a powerful integrated development environment (IDE) for
+many dynamic languages like Python, Julia and others, which operates inside of
+any web browser. Besides auto-completion and syntax highlighting it allows you
+to create formatted documents using Markup, mathematical formulas, graphics and
+animations intermixed with executable Python code. It is a great format for
+tutorials and showcasing your latest research.
+
+To launch an instance of Jupyter simply run the following command inside your
+Python environment (this assumes you followed the Quick Start instructions):
+
+jupyter notebook :pre
+
+IPyLammps Examples :h2
+
+Examples of IPython notebooks can be found in the python/examples/pylammps
+subdirectory. To open these notebooks launch {jupyter notebook} inside this
+directory and navigate to one of them. If you compiled and installed
+a LAMMPS shared library with execeptions, PNG, JPEG and FFMPEG support
+you should be able to rerun all of these notebooks.
+
+Validating a dihedral potential :h3
+
+This example showcases how an IPython Notebook can be used to compare a simple
+LAMMPS simulation of a harmonic dihedral potential to its analytical solution.
+Four atoms are placed in the simulation and the dihedral potential is applied on
+them using a datafile. Then one of the atoms is rotated along the central axis by
+setting its position from Python, which changes the dihedral angle.
+
+phi = \[d * math.pi / 180 for d in range(360)\] :pre
+
+pos = \[(1.0, math.cos(p), math.sin(p)) for p in phi\] :pre
+
+pe = \[\]
+for p in pos:
+ L.atoms\[3\].position = p
+ L.run(0)
+ pe.append(L.eval("pe")) :pre
+
+By evaluating the potential energy for each position we can verify that
+trajectory with the analytical formula. To compare both solutions, we plot
+both trajectories over each other using matplotlib, which embeds the generated
+plot inside the IPython notebook.
+
+:c,image(JPG/pylammps_dihedral.jpg)
+
+Running a Monte Carlo relaxation :h3
+
+This second example shows how to use PyLammps to create a 2D Monte Carlo Relaxation
+simulation, computing and plotting energy terms and even embedding video output.
+
+Initially, a 2D system is created in a state with minimal energy.
+
+:c,image(JPG/pylammps_mc_minimum.jpg)
+
+It is then disordered by moving each atom by a random delta.
+
+random.seed(27848)
+deltaperturb = 0.2 :pre
+
+for i in range(L.system.natoms):
+ x, y = L.atoms\[i\].position
+ dx = deltaperturb * random.uniform(-1, 1)
+ dy = deltaperturb * random.uniform(-1, 1)
+ L.atoms\[i\].position = (x+dx, y+dy) :pre
+
+L.run(0) :pre
+
+:c,image(JPG/pylammps_mc_disordered.jpg)
+
+Finally, the Monte Carlo algorithm is implemented in Python. It continuously
+moves random atoms by a random delta and only accepts certain moves.
+
+estart = L.eval("pe")
+elast = estart :pre
+
+naccept = 0
+energies = \[estart\] :pre
+
+niterations = 3000
+deltamove = 0.1
+kT = 0.05 :pre
+
+natoms = L.system.natoms :pre
+
+for i in range(niterations):
+ iatom = random.randrange(0, natoms)
+ current_atom = L.atoms\[iatom\] :pre
+
+ x0, y0 = current_atom.position :pre
+
+ dx = deltamove * random.uniform(-1, 1)
+ dy = deltamove * random.uniform(-1, 1) :pre
+
+ current_atom.position = (x0+dx, y0+dy) :pre
+
+ L.run(1, "pre no post no") :pre
+
+ e = L.eval("pe")
+ energies.append(e) :pre
+
+ if e <= elast:
+ naccept += 1
+ elast = e
+ elif random.random() <= math.exp(natoms*(elast-e)/kT):
+ naccept += 1
+ elast = e
+ else:
+ current_atom.position = (x0, y0) :pre
+
+The energies of each iteration are collected in a Python list and finally plotted using matplotlib.
+
+:c,image(JPG/pylammps_mc_energies_plot.jpg)
+
+The IPython notebook also shows how to use dump commands and embed video files
+inside of the IPython notebook.
+
+Using PyLammps and mpi4py (Experimental) :h2
+
+PyLammps can be run in parallel using mpi4py. This python package can be installed using
+
+pip install mpi4py :pre
+
+The following is a short example which reads in an existing LAMMPS input file and
+executes it in parallel. You can find in.melt in the examples/melt folder.
+
+from mpi4py import MPI
+from lammps import PyLammps :pre
+
+L = PyLammps()
+L.file("in.melt") :pre
+
+if MPI.COMM_WORLD.rank == 0:
+ print("Potential energy: ", L.eval("pe")) :pre
+
+MPI.Finalize() :pre
+
+To run this script (melt.py) in parallel using 4 MPI processes we invoke the
+following mpirun command:
+
+mpirun -np 4 python melt.py :pre
+
+IMPORTANT NOTE: Any command must be executed by all MPI processes. However, evaluations and querying the system state is only available on rank 0.
+
+Feedback and Contributing :h2
+
+If you find this Python interface useful, please feel free to provide feedback
+and ideas on how to improve it to Richard Berger (richard.berger@temple.edu). We also
+want to encourage people to write tutorial style IPython notebooks showcasing LAMMPS usage
+and maybe their latest research results.
diff --git a/doc/src/tutorials.txt b/doc/src/tutorials.txt
index 98c748f3a..569ad892b 100644
--- a/doc/src/tutorials.txt
+++ b/doc/src/tutorials.txt
@@ -1,13 +1,14 @@
Tutorials :h1
<!-- RST
.. toctree::
:maxdepth: 1
tutorial_drude
tutorial_github
+ tutorial_pylammps
body
manifolds
END_RST -->
diff --git a/examples/USER/misc/grem/README b/examples/USER/misc/grem/README
new file mode 100644
index 000000000..a9d37ea86
--- /dev/null
+++ b/examples/USER/misc/grem/README
@@ -0,0 +1,81 @@
+Generalized Replica Exchange Method (gREM) examples
+===================================================
+
+Examples:
+---------------------------------------------------
+
+ lj-single:
+ This example is the simplest case scenario utilizing the generalized
+ ensemble defined by fix_grem. It utilizes only 1 replica and requires
+ the LAMMPS executable to be run as usual:
+
+ mpirun -np 4 lmp_mpi -in in.gREM-npt
+ ./lmp_serial -in in.gREM-nvt
+
+ While this does not obtain any information about Ts(H), it is most similar to
+ a microcanonical simulation and "single-replica gREM" can be useful for
+ studying non-equilibrium processes as well.
+
+ lj-6rep:
+ This example utilizes an external python script to handle swaps between
+ replicas. Included is run.sh, which requires the path to your LAMMPS
+ executable. The python script is fragile as it relies on parsing output files
+ from the LAMMPS run and moving LAMMPS data files between directories. Use
+ caution if modifying this example further. If complied with mpi, multiple
+ processors can be used as:
+
+ ./run.sh $NUM_PROCS
+
+ a serial run is completed simply as
+
+ ./run.sh 1
+
+ where the executable provided must be serial if "1" is provided as the number
+ of procs. While this external replica exchange module is quite slow and
+ inefficient, it allows for many replicas to be used on a single processor.
+ While here there are only 6 replicas, this example could be extended to >100
+ replicas while still using a serial compilation. This is also beneficial for
+ running on high performance nodes with few cores to complete a full-scale gREM
+ simulation with a large number of replicas.
+
+ A quick note on efficiency: frequent exchanges slow down this script
+ substantially because LAMMPS is restarted every exchange attempt. The script
+ works best for large systems with infrequent exchanges.
+
+ lj-temper:
+ This is an example using the internal replica exchange module. While fast
+ in comparison to the python version, it requires substantial resources
+ (at least 1 proc per replica). Instead of stopping LAMMPS every exchange
+ attempt, all replicas are run concurrently, and exchanges take place
+ internally. This requires use of LAMMPS partition mode, via the command
+ line using the -p flag. Input files require world type variables defining
+ the parameters of each replica. The included example with 4 replicas must
+ run on at least 4 procs, in that case LAMMPS could be initiated as:
+
+ mpirun -np 4 lmp_mpi -p 4x1 -in in.gREM-temper
+
+ spawning 4 partitions with 1 replica each. Multiple procs per replica could
+ be used. In the case of a 16 system with 4 replicas, the
+ following logic could be used:
+
+ mpirun -np 16 lmp_mpi -p 4x4 -in in.gREM-temper
+
+ Once started, a universe log file will be created as well as log files for
+ each replica. The universe (log.lammps) contains exchange information, while
+ the replicas (*/log.lammps.*) contains the thermo_output as usual. In this
+ example, in.gREM-temper moves the log files to their respective folders.
+
+
+Closing Notes:
+---------------------------------------------------
+
+ Of significant difference between lj-6rep and lj-temper is the format of data.
+ In lj-6rep, data is stored as 'replicas' meaning discontinuous trajectories, as
+ files are moved between directories labeled by the 'lambda' of the replica. In
+ lj-temper, data is stored as 'walkers' with continuous trajectories, but
+ discontinuous parameters. The later is significantly more efficient, but
+ requires post-processing to obtain per-replica information.
+
+
+Any problems/questions should be directed to <dstelter@bu.edu>.
+
diff --git a/examples/USER/misc/grem/lj-6rep/400/restart.init b/examples/USER/misc/grem/lj-6rep/400/restart.init
new file mode 100644
index 000000000..5330b12af
--- /dev/null
+++ b/examples/USER/misc/grem/lj-6rep/400/restart.init
@@ -0,0 +1,1022 @@
+LAMMPS data file via write_data, version 5 Nov 2016, timestep = 10000
+
+500 atoms
+1 atom types
+
+1.2587558416919933e+00 2.3741244158307843e+01 xlo xhi
+1.2587558416919933e+00 2.3741244158307843e+01 ylo yhi
+1.2587558416919933e+00 2.3741244158307843e+01 zlo zhi
+
+Masses
+
+1 62.5
+
+Pair Coeffs # lj/cut
+
+1 1.1 2.8
+
+Atoms # full
+
+8 0 1 0.0000000000000000e+00 1.4989436530976059e+00 5.4514116950157581e+00 1.7652005936377544e+00 0 0 0
+107 0 1 0.0000000000000000e+00 3.0554573442555486e+00 2.3490242236375639e+01 4.0993652080545644e+00 0 -1 0
+86 0 1 0.0000000000000000e+00 5.1179718573028570e+00 2.2394648609728480e+00 1.6141204057868603e+00 0 1 0
+28 0 1 0.0000000000000000e+00 3.4921048510343962e+00 4.3492440013098248e+00 3.6958954612584063e+00 0 0 0
+185 0 1 0.0000000000000000e+00 6.7572742624198296e+00 3.8694645265564822e+00 3.9455573605136540e+00 0 1 0
+186 0 1 0.0000000000000000e+00 8.1339966910977850e+00 1.8826313751287409e+00 1.8831180987782723e+00 0 1 0
+109 0 1 0.0000000000000000e+00 9.7953335757390487e+00 3.3675728663051303e+00 4.0395150816557823e+00 0 0 0
+31 0 1 0.0000000000000000e+00 1.1775257699982788e+01 4.5725899823442386e+00 1.8536099912555699e+00 0 0 0
+10 0 1 0.0000000000000000e+00 1.1152494678805050e+01 1.4532924742385456e+00 2.0064921886278890e+00 0 0 0
+111 0 1 0.0000000000000000e+00 1.3112670859072711e+01 2.9620987712762772e+00 3.9950958145518727e+00 0 0 0
+16 0 1 0.0000000000000000e+00 1.4891476421174392e+01 4.3418339703150384e+00 1.7466681768734722e+00 0 0 0
+420 0 1 0.0000000000000000e+00 1.6224673816034350e+01 2.4617740438418765e+00 3.9492246150863655e+00 0 0 1
+18 0 1 0.0000000000000000e+00 1.8023570092257067e+01 3.9624562028511892e+00 1.7281813352402833e+00 0 0 0
+117 0 1 0.0000000000000000e+00 1.9356910648772320e+01 2.1829905250180830e+00 4.0119888035061884e+00 0 0 0
+1 0 1 0.0000000000000000e+00 2.1163300760612028e+01 3.3783978329670012e+00 1.8937480869954952e+00 -1 0 0
+101 0 1 0.0000000000000000e+00 2.2859121261696782e+01 4.2725031606250390e+00 4.5077199128751495e+00 -1 0 0
+22 0 1 0.0000000000000000e+00 3.4455982479533178e+00 7.3358197133909462e+00 2.2071658825789453e+00 0 0 0
+32 0 1 0.0000000000000000e+00 4.0862434855101926e+00 7.6037324542033007e+00 4.8308748121541818e+00 0 0 0
+38 0 1 0.0000000000000000e+00 2.3078030255532266e+01 7.5933364136947539e+00 4.1793436930995469e+00 0 0 0
+25 0 1 0.0000000000000000e+00 5.4788138418535066e+00 5.3892266706144794e+00 1.6750944207426874e+00 0 0 0
+412 0 1 0.0000000000000000e+00 8.4714944833822052e+00 5.1152805722380563e+00 1.7878780099049001e+00 0 0 1
+27 0 1 0.0000000000000000e+00 7.1246156448356395e+00 6.8047788661047299e+00 4.1881870325670025e+00 0 0 0
+26 0 1 0.0000000000000000e+00 5.9003499741940670e+00 8.9201063521803690e+00 1.8663888499985899e+00 0 0 0
+447 0 1 0.0000000000000000e+00 8.7867635293422595e+00 8.1994422667907614e+00 1.7534354176846443e+00 0 0 1
+11 0 1 0.0000000000000000e+00 1.0264460693699430e+01 6.5726886640150921e+00 4.0663531636546608e+00 0 0 0
+432 0 1 0.0000000000000000e+00 1.2044307952118890e+01 7.9168383971685028e+00 1.8317574833093295e+00 0 0 1
+116 0 1 0.0000000000000000e+00 1.3358444724335804e+01 6.2470903601166432e+00 4.0044427126506568e+00 0 0 0
+130 0 1 0.0000000000000000e+00 1.5291444152911064e+01 7.4164325040117740e+00 1.7589505161917622e+00 0 0 0
+114 0 1 0.0000000000000000e+00 1.6596490620600179e+01 5.6816822959609929e+00 3.9397030453720010e+00 0 0 0
+35 0 1 0.0000000000000000e+00 1.9763180202438157e+01 5.2165080422256160e+00 3.9410000570792381e+00 0 0 0
+440 0 1 0.0000000000000000e+00 1.8275012612722492e+01 7.0251682885873672e+00 1.9091749359974177e+00 0 0 1
+57 0 1 0.0000000000000000e+00 2.0049759710678195e+01 8.1681482450887550e+00 4.0738056294179250e+00 0 0 0
+39 0 1 0.0000000000000000e+00 2.1250505898321091e+01 6.6786100943208515e+00 1.5254203659689187e+00 0 0 0
+41 0 1 0.0000000000000000e+00 4.4784628476799462e+00 1.0760336800500193e+01 4.3272223830300529e+00 0 0 0
+45 0 1 0.0000000000000000e+00 7.6837879443846813e+00 9.9849798716097151e+00 4.0124361766953536e+00 0 0 0
+46 0 1 0.0000000000000000e+00 6.4229932937492880e+00 1.1821264783805114e+01 1.6913946766824972e+00 0 0 0
+146 0 1 0.0000000000000000e+00 1.0778282861417669e+01 9.5473716673621905e+00 4.0950465682645998e+00 0 0 0
+153 0 1 0.0000000000000000e+00 9.4087379584773316e+00 1.1116013025904193e+01 1.9009462176270582e+00 0 0 0
+149 0 1 0.0000000000000000e+00 1.2398855430265751e+01 1.1077343158660687e+01 1.7765048845524833e+00 0 0 0
+150 0 1 0.0000000000000000e+00 1.3819658595189864e+01 9.2849889114391537e+00 3.9865103824458243e+00 0 0 0
+156 0 1 0.0000000000000000e+00 1.5454641445515449e+01 1.0429784810177848e+01 1.6393242965922998e+00 0 0 0
+71 0 1 0.0000000000000000e+00 1.4359997555882677e+01 1.2395072275255936e+01 3.9934777681887521e+00 0 0 0
+134 0 1 0.0000000000000000e+00 1.7056738469893364e+01 8.7378460639884992e+00 3.9256928901586421e+00 0 0 0
+354 0 1 0.0000000000000000e+00 1.7382352717090708e+01 1.1976761405625096e+01 4.0047807272403988e+00 0 0 1
+78 0 1 0.0000000000000000e+00 1.8766017213157493e+01 1.0302283029987992e+01 1.8484361128954561e+00 0 0 0
+24 0 1 0.0000000000000000e+00 2.1729896887877068e+01 9.6733822967727772e+00 1.9820693631466195e+00 -1 0 0
+60 0 1 0.0000000000000000e+00 2.0624635465385978e+01 1.1487806785683500e+01 4.0300115330393727e+00 0 0 0
+43 0 1 0.0000000000000000e+00 1.4170648915386010e+00 1.1018572113818442e+01 4.2794433188262637e+00 0 0 0
+158 0 1 0.0000000000000000e+00 1.8385905723595024e+00 1.3828989283334478e+01 4.2578778992922395e+00 1 0 0
+42 0 1 0.0000000000000000e+00 5.1346948348700341e+00 1.3751721353328644e+01 4.4583524678572442e+00 0 0 0
+52 0 1 0.0000000000000000e+00 8.0657337450899131e+00 1.3339713148502709e+01 4.0186463917112825e+00 0 0 0
+65 0 1 0.0000000000000000e+00 6.5304241782034254e+00 1.4908251362108834e+01 1.6335758370466256e+00 0 0 0
+73 0 1 0.0000000000000000e+00 1.0976492016075293e+01 1.2855421223038729e+01 3.9610321179505950e+00 0 0 0
+72 0 1 0.0000000000000000e+00 9.7290130374780333e+00 1.4601229546256233e+01 1.7488398765352755e+00 0 0 0
+91 0 1 0.0000000000000000e+00 1.1758810604614048e+01 1.5893009085431823e+01 3.9253080982414486e+00 0 0 0
+76 0 1 0.0000000000000000e+00 1.2738514096187842e+01 1.4215660630176901e+01 1.5699982655885425e+00 0 0 0
+174 0 1 0.0000000000000000e+00 1.4953545889900402e+01 1.5325284836585848e+01 4.1697560288353905e+00 0 0 0
+77 0 1 0.0000000000000000e+00 1.6206921524557096e+01 1.3620154644572104e+01 1.7973892892044772e+00 0 0 0
+75 0 1 0.0000000000000000e+00 1.8036409380058466e+01 1.5001197187097006e+01 4.1461788802072821e+00 0 0 0
+59 0 1 0.0000000000000000e+00 1.9436712538837430e+01 1.3227388359079763e+01 1.9603267561468392e+00 0 0 0
+154 0 1 0.0000000000000000e+00 2.1211013403668272e+01 1.4165021451021923e+01 4.3124676957178512e+00 0 0 0
+63 0 1 0.0000000000000000e+00 2.2925750128243276e+01 1.5680914757594486e+01 2.1626896620502474e+00 -1 0 0
+181 0 1 0.0000000000000000e+00 2.2727877107835059e+00 1.6988006250797845e+01 4.2668613186412010e+00 0 0 0
+484 0 1 0.0000000000000000e+00 4.1233935942497553e+00 1.8477905960648126e+01 1.8762322723221270e+00 0 0 1
+162 0 1 0.0000000000000000e+00 5.6044265287450736e+00 1.6670268026231078e+01 4.2204616829260910e+00 0 0 0
+170 0 1 0.0000000000000000e+00 8.7546977244943704e+00 1.6683504472878653e+01 3.9804499258584705e+00 0 0 0
+142 0 1 0.0000000000000000e+00 7.3423210505255270e+00 1.8183453482047643e+01 1.7439496937468595e+00 0 0 0
+83 0 1 0.0000000000000000e+00 9.1375872620595011e+00 1.9760126811228453e+01 4.0901576812871383e+00 0 0 0
+70 0 1 0.0000000000000000e+00 1.2304973135306387e+01 1.9129035114733171e+01 3.9629386269874525e+00 0 0 0
+69 0 1 0.0000000000000000e+00 1.0494172261536573e+01 1.7646686310116518e+01 1.8910814286978317e+00 0 0 0
+214 0 1 0.0000000000000000e+00 1.5462721900632815e+01 1.8629025842333682e+01 4.1246726003936542e+00 0 -1 0
+471 0 1 0.0000000000000000e+00 1.3584169240615385e+01 1.7261024800453352e+01 1.7982054774459366e+00 0 0 1
+475 0 1 0.0000000000000000e+00 1.6703227637294773e+01 1.6765787356505633e+01 1.9284630354618109e+00 0 0 1
+197 0 1 0.0000000000000000e+00 1.8582353227175030e+01 1.8044780848644184e+01 4.1839063134393690e+00 0 0 0
+74 0 1 0.0000000000000000e+00 1.9727258484505978e+01 1.6450756248998662e+01 1.7946425209546453e+00 0 0 0
+490 0 1 0.0000000000000000e+00 1.7245943739393837e+01 1.9867068184387474e+01 1.9650356358141625e+00 0 0 1
+161 0 1 0.0000000000000000e+00 2.3482098831995089e+01 1.9112809192634558e+01 1.9697090147606278e+00 -1 0 0
+496 0 1 0.0000000000000000e+00 2.0401863903663731e+01 1.9398231669156559e+01 2.0200348137109736e+00 0 0 1
+98 0 1 0.0000000000000000e+00 2.1637013386646387e+01 1.7497163258305349e+01 4.2065691276074579e+00 0 0 0
+7 0 1 0.0000000000000000e+00 1.8211264820907349e+00 2.6516332758289658e+00 1.6332671127492742e+00 0 0 0
+102 0 1 0.0000000000000000e+00 2.8129950697595216e+00 2.0483215163564402e+01 4.1280003331555255e+00 0 -1 0
+64 0 1 0.0000000000000000e+00 5.9602328969448060e+00 1.9960989071221576e+01 3.8410436631695415e+00 0 0 0
+88 0 1 0.0000000000000000e+00 6.1069958040711185e+00 2.3207318017995412e+01 4.0452991388064694e+00 0 0 0
+66 0 1 0.0000000000000000e+00 7.5718436035788681e+00 2.1517135761491492e+01 1.7733014532396021e+00 0 0 0
+67 0 1 0.0000000000000000e+00 9.3346920238794322e+00 2.2836474624476988e+01 4.2282001635919642e+00 0 0 0
+472 0 1 0.0000000000000000e+00 1.0806331002785011e+01 2.0870729305624664e+01 1.6962385167150664e+00 0 0 1
+13 0 1 0.0000000000000000e+00 1.2571113456204525e+01 2.2226797512872043e+01 3.9369145777953700e+00 0 -1 0
+14 0 1 0.0000000000000000e+00 1.4408756048141813e+01 2.3631794768877317e+01 1.9147819699623518e+00 0 -1 0
+94 0 1 0.0000000000000000e+00 1.5724882893933726e+01 2.1765572794343282e+01 4.0410666566422453e+00 0 0 0
+491 0 1 0.0000000000000000e+00 1.3930070005351194e+01 2.0467845334784592e+01 1.7616469959519634e+00 0 0 1
+500 0 1 0.0000000000000000e+00 1.7445403353369169e+01 2.3228694599128517e+01 1.8809467313247832e+00 0 0 1
+100 0 1 0.0000000000000000e+00 1.8849031695596867e+01 2.1349377329950975e+01 4.3258281391388724e+00 0 0 0
+2 0 1 0.0000000000000000e+00 2.2554350136077133e+01 1.2822268308263820e+00 4.1413973586810311e+00 -1 0 0
+82 0 1 0.0000000000000000e+00 1.4377365226986960e+00 2.2063921700576696e+01 1.8341409256392844e+00 0 0 0
+419 0 1 0.0000000000000000e+00 2.0843472206490972e+01 2.2975816313723044e+01 1.7371456943537882e+00 0 -1 1
+84 0 1 0.0000000000000000e+00 2.1946719155467552e+01 2.0746733302861390e+01 4.1651356476845027e+00 -1 0 0
+19 0 1 0.0000000000000000e+00 1.8928681953423898e+00 2.7197363171482594e+00 6.3784670901258744e+00 1 0 0
+125 0 1 0.0000000000000000e+00 4.9363031547582352e+00 2.5175111804531314e+00 6.3481936713585334e+00 0 0 0
+87 0 1 0.0000000000000000e+00 8.1320818498461218e+00 2.2158162524059928e+00 6.4099275225243604e+00 0 1 0
+110 0 1 0.0000000000000000e+00 1.1672186377879827e+01 4.6865618385720964e+00 6.2655638900498785e+00 0 0 0
+192 0 1 0.0000000000000000e+00 9.9936976624919343e+00 3.2865452373829749e+00 8.5606964838756596e+00 0 1 0
+191 0 1 0.0000000000000000e+00 1.1226788154747540e+01 1.5717673685344744e+00 6.0888388536488831e+00 0 1 0
+120 0 1 0.0000000000000000e+00 1.4858406242487666e+01 4.4034746771063702e+00 6.1833692877317148e+00 0 0 0
+209 0 1 0.0000000000000000e+00 1.3268886166407720e+01 2.9889809144926991e+00 8.5113336538822431e+00 0 0 0
+115 0 1 0.0000000000000000e+00 1.6277896928848435e+01 2.3009138572209444e+00 8.5162825192376914e+00 0 0 0
+113 0 1 0.0000000000000000e+00 1.7966390191512595e+01 3.8968079126148312e+00 6.4385045140364570e+00 0 0 0
+217 0 1 0.0000000000000000e+00 1.9283528978532548e+01 2.0122276054832202e+00 8.6277430997793232e+00 0 0 0
+34 0 1 0.0000000000000000e+00 2.0750207482959929e+01 3.1868840357654333e+00 6.3468945600553344e+00 0 0 0
+106 0 1 0.0000000000000000e+00 2.0165198173458911e+00 5.9405260259614598e+00 6.4364818944698410e+00 0 0 0
+108 0 1 0.0000000000000000e+00 5.2449323259661664e+00 5.3866547571736545e+00 6.3044896866791591e+00 0 0 0
+129 0 1 0.0000000000000000e+00 7.3464751412124301e+00 6.8213075214348748e+00 8.6446812038392444e+00 0 0 0
+105 0 1 0.0000000000000000e+00 8.4604335244850084e+00 5.1512176060487533e+00 6.3978948305017216e+00 0 0 0
+131 0 1 0.0000000000000000e+00 9.0300001633179114e+00 8.2252493569201910e+00 6.3128282997894258e+00 0 0 0
+232 0 1 0.0000000000000000e+00 1.0419986742452471e+01 6.5191632938274626e+00 8.5356931389978961e+00 0 0 0
+151 0 1 0.0000000000000000e+00 1.1971463478741567e+01 8.0484089777858010e+00 6.4463825014781149e+00 0 0 0
+135 0 1 0.0000000000000000e+00 1.5068098994512148e+01 7.4277287702524779e+00 6.2595648808197373e+00 0 0 0
+112 0 1 0.0000000000000000e+00 1.3618301413248590e+01 5.9422688245540822e+00 8.5076318982453643e+00 0 0 0
+233 0 1 0.0000000000000000e+00 1.6467815222086664e+01 5.3567202245631158e+00 8.6636728770927345e+00 0 0 0
+139 0 1 0.0000000000000000e+00 1.8337326515955908e+01 6.8135607963434159e+00 6.0557542718117308e+00 0 0 0
+194 0 1 0.0000000000000000e+00 1.9590932492408189e+01 5.0220328211586214e+00 8.6971844747078961e+00 0 1 0
+118 0 1 0.0000000000000000e+00 2.0245868032320672e+01 8.2339776438586227e+00 8.7070129247436014e+00 0 0 0
+37 0 1 0.0000000000000000e+00 2.1400519957488374e+01 6.4191457320452452e+00 6.4688992121854572e+00 0 0 0
+23 0 1 0.0000000000000000e+00 2.4009405975118137e+00 9.4764871548006635e+00 6.3434724716406228e+00 0 0 0
+141 0 1 0.0000000000000000e+00 4.3724800231056493e+00 1.0441570413544518e+01 8.4899786349503579e+00 0 0 0
+148 0 1 0.0000000000000000e+00 6.4808051093112748e+00 1.1899130015033315e+01 6.5938483307728966e+00 0 0 0
+132 0 1 0.0000000000000000e+00 6.2727398127028531e+00 8.9200091844908087e+00 6.3996518107913722e+00 0 0 0
+47 0 1 0.0000000000000000e+00 7.6581222147996808e+00 1.0138690622385289e+01 8.7217203717700773e+00 0 0 0
+126 0 1 0.0000000000000000e+00 9.4323430819836478e+00 1.1438508939959753e+01 6.2948433174892848e+00 0 0 0
+147 0 1 0.0000000000000000e+00 1.0881244752292067e+01 9.7855780418956009e+00 8.5726604457868305e+00 0 0 0
+152 0 1 0.0000000000000000e+00 1.2389974728874186e+01 1.1130398402480946e+01 6.0199480566919332e+00 0 0 0
+173 0 1 0.0000000000000000e+00 1.5608762321484482e+01 1.0441244834929345e+01 6.2691380160060142e+00 0 0 0
+196 0 1 0.0000000000000000e+00 1.4232619449160557e+01 1.2539865135491121e+01 8.4133172943100991e+00 0 0 0
+230 0 1 0.0000000000000000e+00 1.3872754285642785e+01 9.3763925731013664e+00 8.5062995754989892e+00 0 0 0
+136 0 1 0.0000000000000000e+00 1.7224040769409129e+01 8.4327516583660227e+00 8.3245919515100955e+00 0 0 0
+137 0 1 0.0000000000000000e+00 1.8684888493997306e+01 1.0166320290525828e+01 6.0433575064652754e+00 0 0 0
+179 0 1 0.0000000000000000e+00 1.7356758270324693e+01 1.2012093708834840e+01 8.6252373268532487e+00 0 0 0
+157 0 1 0.0000000000000000e+00 2.1876076832575183e+01 9.5224137842195766e+00 6.3660395988610734e+00 0 0 0
+273 0 1 0.0000000000000000e+00 2.0369449470489194e+01 1.1340883729212024e+01 8.6174859724766044e+00 0 0 0
+143 0 1 0.0000000000000000e+00 3.0359898714008313e+00 1.2299012376389829e+01 6.7018670856953060e+00 0 0 0
+258 0 1 0.0000000000000000e+00 5.2054084100403859e+00 1.3614075886660279e+01 8.6909431895593698e+00 1 0 0
+48 0 1 0.0000000000000000e+00 6.9889018591223051e+00 1.4962940804747285e+01 6.3158995163454792e+00 0 0 0
+263 0 1 0.0000000000000000e+00 8.2201069002437173e+00 1.3242708165664498e+01 8.6099575589210211e+00 0 0 0
+249 0 1 0.0000000000000000e+00 1.1121438505913423e+01 1.2917051989808041e+01 8.4174097141438260e+00 0 0 0
+172 0 1 0.0000000000000000e+00 9.9407032780757767e+00 1.4549479354966083e+01 6.0611817049341088e+00 0 0 0
+246 0 1 0.0000000000000000e+00 1.1848210190891960e+01 1.6033339578164139e+01 8.5807306034794451e+00 0 0 0
+250 0 1 0.0000000000000000e+00 1.2968643548238399e+01 1.4081606471679065e+01 6.0905504840862461e+00 0 0 0
+278 0 1 0.0000000000000000e+00 1.4823926171093774e+01 1.5649400135719997e+01 8.4975146959427086e+00 0 0 0
+40 0 1 0.0000000000000000e+00 1.6149959867500812e+01 1.3507638378083447e+01 6.4338192616585372e+00 0 0 0
+138 0 1 0.0000000000000000e+00 1.9140363384919439e+01 1.3252262469261350e+01 6.3490751980759770e+00 0 0 0
+277 0 1 0.0000000000000000e+00 1.7964964898056934e+01 1.5123668927419100e+01 8.4250255667453438e+00 0 0 0
+163 0 1 0.0000000000000000e+00 2.2403882556719996e+01 1.2529765421969952e+01 6.6094098197020736e+00 -1 0 0
+99 0 1 0.0000000000000000e+00 2.2779599039205088e+01 1.5777196065402356e+01 6.3200170837720613e+00 0 0 0
+140 0 1 0.0000000000000000e+00 2.1195234259931492e+01 1.4439129819467801e+01 8.7020539563386663e+00 0 0 0
+68 0 1 0.0000000000000000e+00 3.9159976056552996e+00 1.5370850946054691e+01 6.4761055280626580e+00 0 0 0
+166 0 1 0.0000000000000000e+00 4.0533027419131136e+00 1.8541859879757737e+01 6.5251718443176374e+00 0 0 0
+168 0 1 0.0000000000000000e+00 8.7961157745839138e+00 1.6303946788741808e+01 8.4372640173206133e+00 0 0 0
+165 0 1 0.0000000000000000e+00 7.1944390389120354e+00 1.8015704464970508e+01 6.3080428484884887e+00 0 0 0
+262 0 1 0.0000000000000000e+00 5.5574000967207313e+00 1.6617322781612025e+01 8.5556876283262575e+00 0 0 0
+266 0 1 0.0000000000000000e+00 9.1249613850505220e+00 1.9696394859834871e+01 8.4579978677430319e+00 0 0 0
+269 0 1 0.0000000000000000e+00 1.0599527715121342e+01 1.7633347577309138e+01 6.3070940999435576e+00 0 0 0
+270 0 1 0.0000000000000000e+00 1.2331516572687239e+01 1.9247815350665981e+01 8.2483620150524288e+00 0 0 0
+176 0 1 0.0000000000000000e+00 1.3649572097660231e+01 1.7255029728231740e+01 6.2084037880538911e+00 0 0 0
+291 0 1 0.0000000000000000e+00 1.5309112985100773e+01 1.8633925372853415e+01 8.4867543874921374e+00 0 0 0
+293 0 1 0.0000000000000000e+00 1.6881506774168194e+01 1.6782791317902934e+01 6.3823357618855976e+00 0 0 0
+80 0 1 0.0000000000000000e+00 1.9910371991839504e+01 1.6244172923292268e+01 6.4633946114503402e+00 0 0 0
+164 0 1 0.0000000000000000e+00 2.3662817122309271e+01 1.9070238387462730e+01 6.6552084054194420e+00 -1 0 0
+198 0 1 0.0000000000000000e+00 2.0320867775900290e+01 1.9579462117766678e+01 6.6615160769525668e+00 0 0 0
+298 0 1 0.0000000000000000e+00 1.3207377942870764e+00 2.2056110908933530e+01 6.4249375664468777e+00 1 0 0
+103 0 1 0.0000000000000000e+00 4.4415692446533601e+00 2.1499103930494336e+01 6.3431544330206062e+00 0 -1 0
+183 0 1 0.0000000000000000e+00 2.8267061454800091e+00 2.0418465170723120e+01 8.6852614161883519e+00 0 0 0
+104 0 1 0.0000000000000000e+00 3.0341995118400127e+00 2.3389090653152536e+01 8.4925215699902896e+00 0 -1 0
+169 0 1 0.0000000000000000e+00 7.5984580355535360e+00 2.1265466524950241e+01 6.2035083651675196e+00 0 0 0
+187 0 1 0.0000000000000000e+00 6.3772980283318024e+00 2.3267423359130959e+01 8.5012656335133716e+00 0 0 0
+286 0 1 0.0000000000000000e+00 9.2984970074564686e+00 2.2828299628528729e+01 8.3844292688301643e+00 0 0 0
+189 0 1 0.0000000000000000e+00 1.0895096251155291e+01 2.0978846383587708e+01 6.4370828425849957e+00 0 0 0
+96 0 1 0.0000000000000000e+00 1.4501767640512060e+01 2.3654792665895787e+01 6.1319668266621639e+00 0 0 0
+292 0 1 0.0000000000000000e+00 1.2869729514552962e+01 2.2420652257265512e+01 8.4107666570401101e+00 0 0 0
+193 0 1 0.0000000000000000e+00 1.4023672782625125e+01 2.0512359861481919e+01 6.1560478393778633e+00 0 0 0
+17 0 1 0.0000000000000000e+00 1.5742574230929938e+01 2.1831186940379776e+01 8.5347070612074063e+00 0 -1 0
+190 0 1 0.0000000000000000e+00 1.7012364758137032e+01 2.0141343187158348e+01 6.3625653077727033e+00 0 0 0
+200 0 1 0.0000000000000000e+00 1.7459690630714565e+01 2.3219056280398046e+01 6.2207896763449737e+00 0 0 0
+199 0 1 0.0000000000000000e+00 1.9011571772199222e+01 2.1446762941149938e+01 8.5408972304891755e+00 0 0 0
+182 0 1 0.0000000000000000e+00 2.0702495340591398e+01 2.2637867522849724e+01 6.2825897030811184e+00 -1 0 0
+124 0 1 0.0000000000000000e+00 3.3214815955862997e+00 4.2307407984908405e+00 8.7620818275933470e+00 0 0 0
+218 0 1 0.0000000000000000e+00 1.8546186818657964e+00 2.9196818632334693e+00 1.0930785821631805e+01 1 0 0
+206 0 1 0.0000000000000000e+00 6.4673118371455409e+00 3.7430861165015368e+00 8.4117202664289010e+00 0 0 0
+203 0 1 0.0000000000000000e+00 4.8614635737539844e+00 2.3809032689554970e+00 1.0942871786885688e+01 0 0 0
+188 0 1 0.0000000000000000e+00 7.9515938017672783e+00 1.9590583105675559e+00 1.0769623364430307e+01 0 1 0
+227 0 1 0.0000000000000000e+00 1.1576157586517766e+01 4.8515288082893555e+00 1.0903954428202054e+01 0 0 0
+207 0 1 0.0000000000000000e+00 1.1357162621695061e+01 1.9525098024775356e+00 1.0878543542991620e+01 0 0 0
+211 0 1 0.0000000000000000e+00 1.4845689184228254e+01 4.1713058355044019e+00 1.0810047586233162e+01 0 0 0
+334 0 1 0.0000000000000000e+00 1.7908124474679976e+01 3.7049767212739395e+00 1.0792282797072271e+01 0 0 0
+237 0 1 0.0000000000000000e+00 2.2211340291601932e+01 1.7142999133478685e+00 8.5608714808423976e+00 0 0 0
+4 0 1 0.0000000000000000e+00 2.2686888115344448e+01 4.7389779105433760e+00 8.8290341143978637e+00 -1 0 0
+119 0 1 0.0000000000000000e+00 2.0944830122716802e+01 3.4439050278526708e+00 1.0936535826336140e+01 0 0 0
+122 0 1 0.0000000000000000e+00 4.0281563821028108e+00 7.1244697185556927e+00 8.3864602559310164e+00 0 0 0
+224 0 1 0.0000000000000000e+00 2.0953922578476023e+00 6.1172784246960825e+00 1.0887616238340469e+01 0 0 0
+225 0 1 0.0000000000000000e+00 5.3368055122400975e+00 5.7560745905738209e+00 1.0696904259985375e+01 0 0 0
+228 0 1 0.0000000000000000e+00 8.5538667585207477e+00 5.0351043311563703e+00 1.0707692769768505e+01 0 0 0
+229 0 1 0.0000000000000000e+00 1.2147208613383846e+01 8.0095912628614485e+00 1.1005647659194432e+01 0 0 0
+226 0 1 0.0000000000000000e+00 9.1699236446704120e+00 8.4215420024069196e+00 1.0710760283711174e+01 0 0 0
+235 0 1 0.0000000000000000e+00 1.5106684511028863e+01 7.3107967467761741e+00 1.0694775878452228e+01 0 0 0
+240 0 1 0.0000000000000000e+00 1.8422422220557678e+01 6.9326265626538008e+00 1.1118168080073112e+01 0 0 0
+221 0 1 0.0000000000000000e+00 2.3456937389551026e+01 8.0133609888638979e+00 8.6582851280784219e+00 -1 0 0
+20 0 1 0.0000000000000000e+00 2.1542146399076447e+01 6.5339952010980724e+00 1.0879997081768257e+01 0 0 0
+241 0 1 0.0000000000000000e+00 2.9485444406029870e+00 9.1499218249130418e+00 1.0949511979299682e+01 0 0 0
+145 0 1 0.0000000000000000e+00 3.0702282910363135e+00 1.2329406097263998e+01 1.1251828313217180e+01 0 0 0
+128 0 1 0.0000000000000000e+00 6.0673811984414350e+00 8.6590680164793863e+00 1.0901481214745123e+01 0 0 0
+252 0 1 0.0000000000000000e+00 6.3204210492002968e+00 1.1719193742148599e+01 1.0833510672884630e+01 0 0 0
+265 0 1 0.0000000000000000e+00 9.6429393402943067e+00 1.1571063666282537e+01 1.0804059706890449e+01 0 0 0
+231 0 1 0.0000000000000000e+00 1.2591858882012419e+01 1.1225241511847404e+01 1.1146449781376667e+01 0 0 0
+234 0 1 0.0000000000000000e+00 1.5725904569654814e+01 1.0394398315944638e+01 1.0763077030828143e+01 0 0 0
+238 0 1 0.0000000000000000e+00 1.8935081138713002e+01 9.9998222864194606e+00 1.0762961635888784e+01 0 0 0
+121 0 1 0.0000000000000000e+00 2.3705221720786742e+01 1.0893717939043107e+01 8.7602027240546221e+00 -1 0 0
+123 0 1 0.0000000000000000e+00 2.1955683180163739e+01 9.4505649132609175e+00 1.0982691151753542e+01 -1 0 0
+261 0 1 0.0000000000000000e+00 1.7267534911730933e+00 1.4023543340590779e+01 8.7407610988843221e+00 0 0 0
+144 0 1 0.0000000000000000e+00 3.7469950052666334e+00 1.5427127707234154e+01 1.0825835973053856e+01 0 0 0
+285 0 1 0.0000000000000000e+00 6.9514208603595433e+00 1.4922548437610969e+01 1.0685355570376197e+01 0 0 0
+167 0 1 0.0000000000000000e+00 1.0117262672284884e+01 1.4513802145742233e+01 1.0809517146205375e+01 0 0 0
+171 0 1 0.0000000000000000e+00 1.3156397374549961e+01 1.4276830780632526e+01 1.0860694763495868e+01 0 0 0
+160 0 1 0.0000000000000000e+00 1.6224835039918275e+01 1.3969572777599051e+01 1.0766063997064663e+01 0 0 0
+155 0 1 0.0000000000000000e+00 1.9107912861406177e+01 1.3487805435508358e+01 1.0905330121542105e+01 0 0 0
+159 0 1 0.0000000000000000e+00 2.2473879751907042e+01 1.2910027766595546e+01 1.1030006488383760e+01 0 0 0
+283 0 1 0.0000000000000000e+00 2.3066076349617692e+01 1.5941500486164029e+01 1.0949004853962306e+01 -1 0 0
+264 0 1 0.0000000000000000e+00 2.4486213166734840e+00 1.6909233613014777e+01 8.6473478808142339e+00 0 0 0
+184 0 1 0.0000000000000000e+00 4.1574057433592895e+00 1.8643493662582163e+01 1.0681264602136254e+01 0 0 0
+268 0 1 0.0000000000000000e+00 7.1862589464729627e+00 1.8158631183808971e+01 1.0673227735999706e+01 0 0 0
+289 0 1 0.0000000000000000e+00 1.0298881121207636e+01 1.8055035976019493e+01 1.0630754919522106e+01 0 0 0
+294 0 1 0.0000000000000000e+00 1.3524555641367369e+01 1.7308682412549391e+01 1.0858575205566371e+01 0 0 0
+95 0 1 0.0000000000000000e+00 1.8491380694450438e+01 1.8089111195633617e+01 8.6467799989521001e+00 0 0 0
+378 0 1 0.0000000000000000e+00 1.9650454154964518e+01 1.6646398200276636e+01 1.0836795657212996e+01 0 0 0
+274 0 1 0.0000000000000000e+00 1.6714271339571013e+01 1.7021255814086068e+01 1.0746103519820684e+01 0 0 0
+180 0 1 0.0000000000000000e+00 2.1827832542803517e+01 1.7537236671158020e+01 8.6639195968380243e+00 0 0 0
+281 0 1 0.0000000000000000e+00 2.0260710870421374e+01 1.9640860912824706e+01 1.0681668428360117e+01 -1 0 0
+299 0 1 0.0000000000000000e+00 2.3529545366785783e+01 1.9014888248100178e+01 1.0789691592742498e+01 0 0 0
+363 0 1 0.0000000000000000e+00 4.7379801940368473e+00 2.1775596933882358e+01 1.0687967188476339e+01 0 0 0
+301 0 1 0.0000000000000000e+00 1.2911719272953393e+00 2.2241426686692865e+01 1.0861251705896649e+01 0 -1 0
+282 0 1 0.0000000000000000e+00 5.9543582716536712e+00 1.9974439699141282e+01 8.4993292591386549e+00 0 0 0
+288 0 1 0.0000000000000000e+00 7.7459873320398929e+00 2.1305802686491869e+01 1.0871275490728159e+01 0 0 0
+290 0 1 0.0000000000000000e+00 1.0920660875384451e+01 2.1220776054626501e+01 1.0814270743576635e+01 0 0 0
+272 0 1 0.0000000000000000e+00 1.3837784203959957e+01 2.0573206642291279e+01 1.0723367237845554e+01 0 0 0
+390 0 1 0.0000000000000000e+00 1.4667711136499078e+01 2.3567645456859761e+01 1.0769640017340345e+01 0 0 0
+394 0 1 0.0000000000000000e+00 1.7191736156175622e+01 2.0203472368997133e+01 1.0824030481062675e+01 0 0 0
+210 0 1 0.0000000000000000e+00 1.7664294670849639e+01 2.3047856610157556e+01 1.1025003865253332e+01 0 -1 0
+381 0 1 0.0000000000000000e+00 2.2103198496696823e+01 2.0774239058328870e+01 8.7633168205997567e+00 -1 0 0
+201 0 1 0.0000000000000000e+00 2.0576545167090352e+01 2.2741034778767492e+01 1.0927251998241934e+01 -1 -1 0
+321 0 1 0.0000000000000000e+00 3.5457173317663413e+00 4.3050749419456036e+00 1.3203611883177238e+01 0 0 0
+324 0 1 0.0000000000000000e+00 1.7694221884931065e+00 2.8321076905150360e+00 1.5431790307090527e+01 0 0 0
+304 0 1 0.0000000000000000e+00 4.8522101171062904e+00 2.1706455808408203e+00 1.5249763053979439e+01 0 0 0
+204 0 1 0.0000000000000000e+00 6.8246975028813681e+00 3.7654502981925391e+00 1.3136704415256890e+01 0 0 0
+305 0 1 0.0000000000000000e+00 8.1651513520460508e+00 2.2097272586016494e+00 1.5504769052072671e+01 0 0 0
+202 0 1 0.0000000000000000e+00 9.9884413212921608e+00 3.5552127918997458e+00 1.3146833586056967e+01 0 0 0
+307 0 1 0.0000000000000000e+00 1.1117081690542864e+01 1.6883927178416613e+00 1.5365427368510618e+01 0 0 0
+306 0 1 0.0000000000000000e+00 1.1925953151196749e+01 4.9225440708583630e+00 1.5440587301176951e+01 0 0 0
+333 0 1 0.0000000000000000e+00 1.2985545671986976e+01 3.0468323648869626e+00 1.3095275016493982e+01 0 0 0
+340 0 1 0.0000000000000000e+00 1.4700434559029230e+01 4.0853290327665359e+00 1.5507096186290493e+01 0 0 0
+213 0 1 0.0000000000000000e+00 1.6174959495120131e+01 2.5474348326594383e+00 1.3109101123975634e+01 0 0 0
+314 0 1 0.0000000000000000e+00 1.9508427688674836e+01 2.1771503024703902e+00 1.3180808832743152e+01 0 0 0
+335 0 1 0.0000000000000000e+00 1.7752847220010782e+01 3.9432702407254725e+00 1.5512343685691226e+01 0 0 0
+239 0 1 0.0000000000000000e+00 2.2343783940547631e+01 1.6048514087954959e+00 1.3075153682470471e+01 0 0 0
+318 0 1 0.0000000000000000e+00 2.1060546713454610e+01 3.3834237376342076e+00 1.5413608099955749e+01 0 0 0
+337 0 1 0.0000000000000000e+00 2.2748737811746068e+01 4.7235096939094614e+00 1.3149509744144074e+01 0 0 0
+243 0 1 0.0000000000000000e+00 3.9905320791796863e+00 7.2140067693494281e+00 1.3041553461722469e+01 0 0 0
+322 0 1 0.0000000000000000e+00 2.0896621080757027e+00 6.1311231210256638e+00 1.5577766748265015e+01 0 0 0
+127 0 1 0.0000000000000000e+00 7.2851843257713735e+00 6.7278582014272619e+00 1.3233139286096815e+01 0 0 0
+222 0 1 0.0000000000000000e+00 5.2460432925096798e+00 5.5838653852125768e+00 1.5374686024938210e+01 0 0 0
+208 0 1 0.0000000000000000e+00 8.5757323830156480e+00 5.2189113050461327e+00 1.5370384575055800e+01 0 0 0
+245 0 1 0.0000000000000000e+00 8.8059060748296218e+00 8.2931325471531849e+00 1.5556999143216037e+01 0 0 0
+251 0 1 0.0000000000000000e+00 1.0440004208814793e+01 6.7082114145369713e+00 1.3446263482598534e+01 0 0 0
+332 0 1 0.0000000000000000e+00 1.2186994302468992e+01 7.9274678090968544e+00 1.5432170728341667e+01 0 0 0
+326 0 1 0.0000000000000000e+00 1.3557394532836815e+01 6.2657248488808399e+00 1.3033323511265232e+01 0 0 0
+355 0 1 0.0000000000000000e+00 1.5282434814776993e+01 7.4208058285462117e+00 1.5269631823657869e+01 0 0 0
+216 0 1 0.0000000000000000e+00 1.6465824996273042e+01 5.6757007101068657e+00 1.3171806192481382e+01 0 0 0
+336 0 1 0.0000000000000000e+00 1.9724393317088278e+01 5.2031404774315941e+00 1.3367837274505364e+01 0 0 0
+212 0 1 0.0000000000000000e+00 1.7184428699317724e+01 8.8686381600108888e+00 1.3193474312541120e+01 0 0 0
+279 0 1 0.0000000000000000e+00 1.8479578170540321e+01 7.2114290339665068e+00 1.5363228342433347e+01 0 0 0
+353 0 1 0.0000000000000000e+00 2.0249542447754024e+01 8.2265753809846842e+00 1.3079260136465424e+01 0 0 0
+259 0 1 0.0000000000000000e+00 2.3372686077166744e+01 7.7574279939152149e+00 1.3198579844740447e+01 0 0 0
+458 0 1 0.0000000000000000e+00 2.1535040207341254e+01 6.3873665595606983e+00 1.5405538958186314e+01 0 0 0
+339 0 1 0.0000000000000000e+00 2.6225278240979417e+00 9.1660067865690174e+00 1.5221212835744938e+01 1 0 0
+323 0 1 0.0000000000000000e+00 4.5419981597668491e+00 1.0728072798325170e+01 1.3220750279597542e+01 0 0 0
+242 0 1 0.0000000000000000e+00 1.2943443960581931e+00 1.0827196760821783e+01 1.2965066366798531e+01 0 0 0
+328 0 1 0.0000000000000000e+00 5.7711073707683642e+00 8.8971647046067908e+00 1.5406296629599160e+01 0 0 0
+345 0 1 0.0000000000000000e+00 7.5515917787314280e+00 1.0166232846345791e+01 1.3324763914619869e+01 0 0 0
+428 0 1 0.0000000000000000e+00 6.3265392665642288e+00 1.2080065757620437e+01 1.5235912675387628e+01 0 0 0
+253 0 1 0.0000000000000000e+00 1.0758243096879257e+01 9.7376398624110188e+00 1.3094485184972079e+01 0 0 0
+366 0 1 0.0000000000000000e+00 9.2053074840937157e+00 1.1542804014675603e+01 1.5112868585355603e+01 0 0 0
+374 0 1 0.0000000000000000e+00 1.2448315991677374e+01 1.0969713815554767e+01 1.5341711809919488e+01 0 0 0
+330 0 1 0.0000000000000000e+00 1.3955938967152608e+01 9.2497123653472126e+00 1.3120283136562765e+01 0 0 0
+260 0 1 0.0000000000000000e+00 1.5607981340311216e+01 1.0745305257073934e+01 1.5402814067757907e+01 0 0 0
+349 0 1 0.0000000000000000e+00 1.4372707273097678e+01 1.2448755656067515e+01 1.3299497151612501e+01 0 0 0
+236 0 1 0.0000000000000000e+00 1.8995673479861512e+01 1.0334465630083232e+01 1.5398991422208843e+01 0 0 0
+255 0 1 0.0000000000000000e+00 1.7292668569490072e+01 1.2259372187965116e+01 1.3420390070316374e+01 0 0 0
+244 0 1 0.0000000000000000e+00 2.0413407206057776e+01 1.1524629725245163e+01 1.2977057331105375e+01 -1 0 0
+379 0 1 0.0000000000000000e+00 2.1962212920398368e+01 9.5614986551235592e+00 1.5524656487897026e+01 0 0 0
+341 0 1 0.0000000000000000e+00 2.7876749991326806e+00 1.2124385399492988e+01 1.5144546890078169e+01 0 0 0
+377 0 1 0.0000000000000000e+00 1.7632695372951683e+00 1.4313272502291534e+01 1.3316609956813219e+01 1 0 0
+364 0 1 0.0000000000000000e+00 3.6366247782223011e+00 1.5656362919418456e+01 1.5233776124098844e+01 0 0 0
+267 0 1 0.0000000000000000e+00 4.9305882205663902e+00 1.3822577526248327e+01 1.3024981283842328e+01 0 0 0
+248 0 1 0.0000000000000000e+00 8.1135114054675874e+00 1.3369557885323879e+01 1.2952029269473952e+01 0 0 0
+369 0 1 0.0000000000000000e+00 6.7481122816191990e+00 1.5146295154096356e+01 1.5132825542941790e+01 0 0 0
+177 0 1 0.0000000000000000e+00 1.1220991418344695e+01 1.2706165748520847e+01 1.3056257573497358e+01 0 0 0
+393 0 1 0.0000000000000000e+00 9.7194013897884677e+00 1.4682157542070287e+01 1.5131506164012462e+01 0 0 0
+175 0 1 0.0000000000000000e+00 1.4854027988306731e+01 1.5660562699786968e+01 1.2881023070655967e+01 0 0 0
+275 0 1 0.0000000000000000e+00 1.3066230973238111e+01 1.4308782118760128e+01 1.5357103362939501e+01 0 0 0
+444 0 1 0.0000000000000000e+00 1.9332603742633992e+01 1.3472291604170776e+01 1.5424883661828563e+01 -1 0 0
+257 0 1 0.0000000000000000e+00 1.8086059021076643e+01 1.5301759100810965e+01 1.3005857929767703e+01 0 0 0
+344 0 1 0.0000000000000000e+00 2.2219194886203027e+01 1.2882499795491693e+01 1.5132577367618568e+01 -1 0 0
+297 0 1 0.0000000000000000e+00 2.1109402499745812e+01 1.4838070326492948e+01 1.3029062029478476e+01 0 0 0
+358 0 1 0.0000000000000000e+00 2.2938854368703208e+01 1.6196354556452736e+01 1.5218021559440690e+01 0 0 0
+399 0 1 0.0000000000000000e+00 2.3940547342363119e+00 1.7362446245275233e+01 1.3044921760947437e+01 1 0 0
+401 0 1 0.0000000000000000e+00 4.1529169868172229e+00 1.8708823775939656e+01 1.5270227413872970e+01 0 -1 0
+361 0 1 0.0000000000000000e+00 5.3153662103371557e+00 1.6868266687739329e+01 1.2992367294160756e+01 0 0 0
+371 0 1 0.0000000000000000e+00 7.2998095220840344e+00 1.8153926890243760e+01 1.5133690493946451e+01 0 0 0
+370 0 1 0.0000000000000000e+00 8.6046434259134372e+00 1.6463767617270499e+01 1.2772618966096898e+01 0 0 0
+287 0 1 0.0000000000000000e+00 5.9838661859458337e+00 1.9927101616050074e+01 1.3018930183509516e+01 0 0 0
+365 0 1 0.0000000000000000e+00 1.1744884698620224e+01 1.6056835253702772e+01 1.3018822208584030e+01 0 0 0
+392 0 1 0.0000000000000000e+00 1.0389723080462037e+01 1.7923241440673639e+01 1.5315958071812190e+01 0 0 0
+309 0 1 0.0000000000000000e+00 1.2410944906760561e+01 1.8894122894366223e+01 1.3304253593776032e+01 0 -1 0
+387 0 1 0.0000000000000000e+00 9.1016029968733356e+00 1.9346758400921278e+01 1.2944331219579675e+01 0 0 0
+295 0 1 0.0000000000000000e+00 1.5466505282690781e+01 1.8667024758144159e+01 1.3147015092411053e+01 0 0 0
+276 0 1 0.0000000000000000e+00 1.3640151985416587e+01 1.7287690396706285e+01 1.5642722873706218e+01 0 0 0
+317 0 1 0.0000000000000000e+00 1.8560001473567244e+01 1.8479852044760648e+01 1.3085267532752942e+01 0 -1 0
+215 0 1 0.0000000000000000e+00 1.6854086448432923e+01 1.6984680277165474e+01 1.5550763005869698e+01 0 -1 0
+397 0 1 0.0000000000000000e+00 1.9814096221603567e+01 1.6546009545118260e+01 1.5275434509323375e+01 0 0 0
+284 0 1 0.0000000000000000e+00 2.0329039625099856e+01 1.9876867951892049e+01 1.5116579655915430e+01 -1 0 0
+362 0 1 0.0000000000000000e+00 2.1593702955156012e+01 1.7902725379915424e+01 1.2873113755101079e+01 -1 0 0
+385 0 1 0.0000000000000000e+00 2.3314433088423009e+01 1.9204932879346174e+01 1.5208748954731906e+01 -1 0 0
+223 0 1 0.0000000000000000e+00 3.0032532980507076e+00 2.3523413789628648e+01 1.3129002933177659e+01 0 -1 0
+382 0 1 0.0000000000000000e+00 2.7368527684041810e+00 2.0415012303544874e+01 1.2996437322112095e+01 0 0 0
+384 0 1 0.0000000000000000e+00 4.6695679600075035e+00 2.1656054595803766e+01 1.5129931638858309e+01 0 0 0
+437 0 1 0.0000000000000000e+00 1.3881740049708591e+00 2.2171170583608159e+01 1.5230444684757231e+01 1 -1 0
+386 0 1 0.0000000000000000e+00 6.1723668245320749e+00 2.3062175677496526e+01 1.2922245028283589e+01 0 0 0
+331 0 1 0.0000000000000000e+00 7.5740171194732362e+00 2.1509968227928866e+01 1.5298391785068995e+01 0 -1 0
+205 0 1 0.0000000000000000e+00 9.5260858525216463e+00 2.2932744802239100e+01 1.3013071257494243e+01 0 -1 0
+395 0 1 0.0000000000000000e+00 1.0676586620548473e+01 2.1006571339317794e+01 1.5288121308458926e+01 0 0 0
+313 0 1 0.0000000000000000e+00 1.4188079475165903e+01 2.3599533262054369e+01 1.5196883321842719e+01 0 -1 0
+311 0 1 0.0000000000000000e+00 1.5792794214821866e+01 2.1791572369263321e+01 1.3077240299579570e+01 0 -1 0
+430 0 1 0.0000000000000000e+00 1.2665403313909783e+01 2.2336057912585357e+01 1.3023633479789163e+01 0 -1 0
+315 0 1 0.0000000000000000e+00 1.3704895758308455e+01 2.0512680820769486e+01 1.5358187509102889e+01 0 -1 0
+220 0 1 0.0000000000000000e+00 1.7103300509565564e+01 2.0204744574372199e+01 1.5357201105518145e+01 0 -1 0
+195 0 1 0.0000000000000000e+00 1.8852902483883756e+01 2.1418909113555220e+01 1.3088653664553201e+01 0 0 0
+296 0 1 0.0000000000000000e+00 1.7448525807626513e+01 2.3170537335840717e+01 1.5387122732518812e+01 0 0 0
+303 0 1 0.0000000000000000e+00 2.2170478113690155e+01 2.0780067635540295e+01 1.2821697148521711e+01 -1 -1 0
+219 0 1 0.0000000000000000e+00 2.0864692410464308e+01 2.2851225939739127e+01 1.5265060151053348e+01 0 -1 0
+422 0 1 0.0000000000000000e+00 3.6047710240709980e+00 4.2797756491361714e+00 1.7481910403525234e+01 0 0 0
+483 0 1 0.0000000000000000e+00 1.8649922366711413e+00 2.9837546937349932e+00 1.9818268920027567e+01 0 1 0
+6 0 1 0.0000000000000000e+00 4.8648035715792517e+00 2.4384301047174270e+00 1.9581801773638396e+01 0 0 -1
+402 0 1 0.0000000000000000e+00 6.6485941506677140e+00 3.7689972716595377e+00 1.7457288596713674e+01 0 0 0
+466 0 1 0.0000000000000000e+00 8.3141188280876204e+00 2.1908249570617473e+00 1.9732467083563936e+01 0 1 0
+302 0 1 0.0000000000000000e+00 9.9205997748573527e+00 3.7082048044654399e+00 1.7503774983903618e+01 0 0 0
+492 0 1 0.0000000000000000e+00 1.1292168115230458e+01 1.5873429267149604e+00 1.9874600551860677e+01 0 1 0
+429 0 1 0.0000000000000000e+00 1.1509221957467577e+01 4.8118518947135902e+00 1.9617923600912484e+01 0 0 0
+410 0 1 0.0000000000000000e+00 1.2882020922991403e+01 2.9087387420371149e+00 1.7515664942690918e+01 0 0 0
+434 0 1 0.0000000000000000e+00 1.4738555384908096e+01 4.3248937020448057e+00 1.9793372229264264e+01 0 0 0
+415 0 1 0.0000000000000000e+00 1.6123662613859111e+01 2.5989416550086695e+00 1.7752828666015251e+01 0 0 0
+300 0 1 0.0000000000000000e+00 1.9324111786399456e+01 2.0730893946686866e+00 1.7641228295275386e+01 0 1 0
+357 0 1 0.0000000000000000e+00 1.9637246204718547e+01 5.1068834633694271e+00 1.7439571621947501e+01 0 0 0
+438 0 1 0.0000000000000000e+00 2.2830198525559219e+01 4.7839519786813396e+00 1.7808564809104787e+01 0 0 0
+383 0 1 0.0000000000000000e+00 2.2489769829201350e+01 1.5761643273610897e+00 1.7608180275739677e+01 -1 1 0
+320 0 1 0.0000000000000000e+00 2.0887134067745631e+01 3.4446737894439274e+00 1.9785672492839677e+01 0 0 0
+457 0 1 0.0000000000000000e+00 3.9258297798779220e+00 7.5687132648948330e+00 1.7643498840096026e+01 1 0 0
+439 0 1 0.0000000000000000e+00 2.3693146416504849e+00 6.1841908259234355e+00 1.9593192613591899e+01 1 0 0
+427 0 1 0.0000000000000000e+00 5.5444891297476460e+00 5.8393281587482262e+00 1.9735469370425125e+01 0 0 0
+312 0 1 0.0000000000000000e+00 7.0750660803036975e+00 6.8865209520098345e+00 1.7430263867218184e+01 0 0 0
+90 0 1 0.0000000000000000e+00 8.5559161467451545e+00 5.1054390547244779e+00 1.9781826288545528e+01 0 1 -1
+329 0 1 0.0000000000000000e+00 1.0257745132305674e+01 6.6955462768229443e+00 1.7514789059135378e+01 0 0 0
+350 0 1 0.0000000000000000e+00 8.8056987117777563e+00 8.2145841819660799e+00 1.9818959369698138e+01 0 0 0
+30 0 1 0.0000000000000000e+00 1.1978730298784198e+01 7.7281424006973722e+00 1.9786086317889868e+01 0 0 -1
+433 0 1 0.0000000000000000e+00 1.3460574608204112e+01 6.2280865810430139e+00 1.7545946738692724e+01 0 0 0
+356 0 1 0.0000000000000000e+00 1.5170720257187551e+01 7.5098184992990822e+00 1.9872231152180042e+01 0 0 0
+373 0 1 0.0000000000000000e+00 1.6822364479507954e+01 8.8008620024274897e+00 1.7457423161997639e+01 0 0 0
+338 0 1 0.0000000000000000e+00 1.6625133641035301e+01 5.7705596967421968e+00 1.7613337360986474e+01 0 0 0
+455 0 1 0.0000000000000000e+00 2.0035153454322217e+01 8.3842162578696620e+00 1.7571224689726172e+01 0 0 0
+459 0 1 0.0000000000000000e+00 2.3402524584484073e+01 7.8782247892018793e+00 1.7548250009254378e+01 0 0 0
+343 0 1 0.0000000000000000e+00 4.3571588604701832e+00 1.0753639298500236e+01 1.7438281846975752e+01 0 0 0
+424 0 1 0.0000000000000000e+00 2.4875091633218798e+00 9.4411195975779805e+00 1.9617465338993316e+01 0 0 0
+441 0 1 0.0000000000000000e+00 2.3668377050140773e+01 1.1170185670006687e+01 1.7672744641450084e+01 -1 0 0
+347 0 1 0.0000000000000000e+00 3.0817788206112757e+00 1.2515884121576971e+01 1.9652170613096406e+01 0 0 0
+325 0 1 0.0000000000000000e+00 7.5225554449837553e+00 1.0004081421369509e+01 1.7688538617970551e+01 0 0 0
+247 0 1 0.0000000000000000e+00 6.1302572769776482e+00 1.2083023739708276e+01 1.9785334348093848e+01 0 0 0
+327 0 1 0.0000000000000000e+00 5.6846035838154698e+00 8.8204626664499983e+00 1.9782241778284313e+01 0 0 0
+271 0 1 0.0000000000000000e+00 1.0594238182088437e+01 9.6580473616892455e+00 1.7520067506572754e+01 0 0 0
+436 0 1 0.0000000000000000e+00 9.1335130022318509e+00 1.1298628814225150e+01 1.9707639628615642e+01 0 0 0
+389 0 1 0.0000000000000000e+00 1.2441937651797394e+01 1.1163105006951092e+01 1.9588963843137648e+01 0 0 0
+453 0 1 0.0000000000000000e+00 1.3753935545587611e+01 9.3751186721650317e+00 1.7773155225381874e+01 0 0 0
+351 0 1 0.0000000000000000e+00 1.5451405308224388e+01 1.0707205836458392e+01 1.9780037204161250e+01 0 0 0
+375 0 1 0.0000000000000000e+00 1.8709567902812861e+01 1.0229619947927532e+01 1.9691165425042691e+01 0 0 0
+254 0 1 0.0000000000000000e+00 1.7478404655377474e+01 1.2076558190898103e+01 1.7433600921066255e+01 0 0 0
+360 0 1 0.0000000000000000e+00 2.0560648565981854e+01 1.1723422026282114e+01 1.7716934986896945e+01 0 0 0
+442 0 1 0.0000000000000000e+00 1.7407766705652770e+00 1.4103619993277752e+01 1.7373035567835917e+01 0 0 0
+464 0 1 0.0000000000000000e+00 3.6710360625982275e+00 1.5671950268438746e+01 1.9847615391436584e+01 0 0 0
+342 0 1 0.0000000000000000e+00 4.7139758899123443e+00 1.3739012224961895e+01 1.7274231103584594e+01 0 0 0
+346 0 1 0.0000000000000000e+00 7.7968327892967464e+00 1.3202576153644269e+01 1.7555078909258551e+01 0 0 0
+448 0 1 0.0000000000000000e+00 6.6445569254539008e+00 1.5310140265485824e+01 1.9667858160856387e+01 0 0 0
+486 0 1 0.0000000000000000e+00 1.0999988948055719e+01 1.2967135517793354e+01 1.7321893991510798e+01 0 0 0
+256 0 1 0.0000000000000000e+00 1.4288908479541842e+01 1.2370318946850267e+01 1.7535194577968998e+01 0 0 0
+376 0 1 0.0000000000000000e+00 1.4848186138882719e+01 1.5758422245924031e+01 1.7871306450020331e+01 0 0 0
+352 0 1 0.0000000000000000e+00 1.3219079982806495e+01 1.4210713306805816e+01 1.9777700935733755e+01 0 0 0
+380 0 1 0.0000000000000000e+00 1.9289734189450257e+01 1.3569322022030551e+01 1.9969956759912662e+01 0 0 0
+456 0 1 0.0000000000000000e+00 1.6375282413026589e+01 1.3759945092813556e+01 1.9804003083202350e+01 0 0 0
+280 0 1 0.0000000000000000e+00 1.8131798798977872e+01 1.5274003198590393e+01 1.7637756431506229e+01 0 0 0
+497 0 1 0.0000000000000000e+00 1.9789236378057069e+01 1.6846154115747765e+01 1.9871998308454124e+01 0 0 0
+477 0 1 0.0000000000000000e+00 2.1123908310945595e+01 1.4787054711360021e+01 1.7598491283243632e+01 0 0 0
+58 0 1 0.0000000000000000e+00 2.2380747880757529e+01 1.2748361203556243e+01 1.9734071383893752e+01 0 0 -1
+461 0 1 0.0000000000000000e+00 2.3081444022250778e+01 1.5903164248162836e+01 1.9572996277291654e+01 -1 0 0
+468 0 1 0.0000000000000000e+00 2.3052853224886243e+00 1.7283206267052012e+01 1.7441121812344349e+01 0 0 0
+485 0 1 0.0000000000000000e+00 3.8727602736037747e+00 1.8725040704086236e+01 1.9729573949510964e+01 0 0 0
+368 0 1 0.0000000000000000e+00 5.4174675368801539e+00 1.6922443282091233e+01 1.7370035183406969e+01 0 0 0
+465 0 1 0.0000000000000000e+00 6.9809507164764968e+00 1.8321027048271247e+01 1.9625350884689286e+01 0 0 0
+462 0 1 0.0000000000000000e+00 8.3424235910800366e+00 1.6290778565896854e+01 1.7330635212139313e+01 0 0 0
+405 0 1 0.0000000000000000e+00 5.8367601397778461e+00 2.0098445263229479e+01 1.7427148063493796e+01 0 -1 0
+473 0 1 0.0000000000000000e+00 1.1540741390052471e+01 1.6116256105598112e+01 1.7544758632205262e+01 0 0 0
+372 0 1 0.0000000000000000e+00 1.2050759526399091e+01 1.9012927797191168e+01 1.7528235309766433e+01 0 0 0
+367 0 1 0.0000000000000000e+00 9.9107515252630822e+00 1.7630255805667385e+01 1.9650854810714304e+01 0 0 0
+400 0 1 0.0000000000000000e+00 8.9725720388704495e+00 1.9825677090071554e+01 1.7624287534415952e+01 0 0 0
+93 0 1 0.0000000000000000e+00 1.5533457186571610e+01 1.8892600148368803e+01 1.7779790388165402e+01 0 0 -1
+413 0 1 0.0000000000000000e+00 1.8616693801379153e+01 1.8442062758479146e+01 1.7573844078783313e+01 0 -1 0
+478 0 1 0.0000000000000000e+00 1.6617623092388005e+01 1.7079204342569565e+01 1.9981135156046069e+01 0 0 0
+479 0 1 0.0000000000000000e+00 2.0397426526008186e+01 1.9799916388669686e+01 1.9919262533642154e+01 0 0 0
+498 0 1 0.0000000000000000e+00 2.1497952652707006e+01 1.7949697393580639e+01 1.7512429993822643e+01 0 0 0
+85 0 1 0.0000000000000000e+00 2.3307897600611479e+01 1.9249371620716161e+01 1.9698649459877146e+01 -1 0 -1
+421 0 1 0.0000000000000000e+00 3.0426605996591150e+00 2.3429147458844142e+01 1.7708493220653981e+01 0 -1 0
+482 0 1 0.0000000000000000e+00 2.7860965510054818e+00 2.0539955943192236e+01 1.7586428732536625e+01 0 0 0
+408 0 1 0.0000000000000000e+00 4.5723446894828932e+00 2.1730502288615323e+01 1.9698185471059489e+01 0 -1 0
+308 0 1 0.0000000000000000e+00 6.3754454559831064e+00 2.3195463896762909e+01 1.7538666931190612e+01 0 -1 0
+470 0 1 0.0000000000000000e+00 7.6170746129397227e+00 2.1427214008509292e+01 1.9584857166800266e+01 0 0 0
+388 0 1 0.0000000000000000e+00 9.4233600460847136e+00 2.2737182296514707e+01 1.7394302183788700e+01 0 0 0
+391 0 1 0.0000000000000000e+00 1.2305465516286580e+01 2.2147354781427548e+01 1.7536839140618422e+01 0 0 0
+319 0 1 0.0000000000000000e+00 1.5571092953336716e+01 2.1768517952066201e+01 1.7576714405961081e+01 0 -1 0
+493 0 1 0.0000000000000000e+00 1.3897646478488751e+01 2.0480626734545250e+01 1.9713678572543959e+01 0 0 0
+396 0 1 0.0000000000000000e+00 1.8973649680863922e+01 2.1491598163352094e+01 1.7537933038415911e+01 0 0 0
+418 0 1 0.0000000000000000e+00 2.3585664018349547e+01 2.2119713874975620e+01 1.9737734973266466e+01 0 -1 0
+398 0 1 0.0000000000000000e+00 2.2005876760011617e+01 2.0919518037102595e+01 1.7579651234810658e+01 0 0 0
+417 0 1 0.0000000000000000e+00 2.0745374401991313e+01 2.2753363344028390e+01 1.9796026760307583e+01 0 -1 0
+403 0 1 0.0000000000000000e+00 3.6122480426973711e+00 4.0319423485599959e+00 2.2032657363126322e+01 0 0 0
+406 0 1 0.0000000000000000e+00 3.1096914267780376e+00 2.3454485977881784e+01 2.1761317684317024e+01 0 -1 0
+9 0 1 0.0000000000000000e+00 6.6178518040959950e+00 3.7186713963866835e+00 2.1916970579769686e+01 0 0 -1
+92 0 1 0.0000000000000000e+00 9.9201046861862316e+00 3.3675355274869307e+00 2.2280366396785855e+01 0 1 -1
+431 0 1 0.0000000000000000e+00 1.3112915675968116e+01 2.8684699073747160e+00 2.2134133756271510e+01 0 0 0
+15 0 1 0.0000000000000000e+00 1.6010470280919904e+01 2.5354276915879472e+00 2.2100790906951080e+01 0 0 -1
+435 0 1 0.0000000000000000e+00 1.7790371312923668e+01 3.8545315433361584e+00 1.9595950891581705e+01 0 0 0
+404 0 1 0.0000000000000000e+00 1.9159917947494055e+01 2.1387537728157038e+00 2.2236040660958846e+01 -1 0 0
+481 0 1 0.0000000000000000e+00 2.2713770909943758e+01 4.8877112985868063e+00 2.1680900113506414e+01 -1 1 0
+316 0 1 0.0000000000000000e+00 1.9487480929817750e+01 5.1419393520120327e+00 2.1747545853022476e+01 0 0 0
+423 0 1 0.0000000000000000e+00 3.9948691519547372e+00 7.3657895938865909e+00 2.1743527089696759e+01 0 0 0
+425 0 1 0.0000000000000000e+00 7.1479405293395173e+00 7.0509954535860215e+00 2.2012210610196298e+01 0 0 0
+29 0 1 0.0000000000000000e+00 1.0183448193890953e+01 6.3193748713258104e+00 2.2065992583274532e+01 0 0 -1
+33 0 1 0.0000000000000000e+00 1.3473898084031312e+01 6.0695432976656223e+00 2.1963395690904353e+01 0 0 -1
+133 0 1 0.0000000000000000e+00 1.6686130187188517e+01 5.8152054043941641e+00 2.2082851584954369e+01 0 0 -1
+460 0 1 0.0000000000000000e+00 1.8242881029837285e+01 7.1819774437085764e+00 1.9707553372101327e+01 0 0 0
+53 0 1 0.0000000000000000e+00 1.6879396310247571e+01 8.8369287841999906e+00 2.1975632688038697e+01 0 0 -1
+359 0 1 0.0000000000000000e+00 2.1300168513088590e+01 6.8039770410403602e+00 1.9742823142089005e+01 0 0 0
+44 0 1 0.0000000000000000e+00 1.9809469931024523e+01 8.2191026187958549e+00 2.1946184963507466e+01 -1 0 -1
+21 0 1 0.0000000000000000e+00 2.3202406984258324e+01 8.2252788623379285e+00 2.2111960239632573e+01 -1 0 -1
+454 0 1 0.0000000000000000e+00 2.1638408714327721e+01 9.7934457718789734e+00 1.9629319282845699e+01 0 0 0
+61 0 1 0.0000000000000000e+00 2.2140968534686962e+00 9.8428254780270041e+00 1.6065477022069103e+00 0 0 0
+445 0 1 0.0000000000000000e+00 4.3943974512652417e+00 1.0603248811174568e+01 2.1876065515987619e+01 0 0 0
+79 0 1 0.0000000000000000e+00 3.4117364937833599e+00 1.2521136397893571e+01 1.7393187294080479e+00 1 0 0
+51 0 1 0.0000000000000000e+00 7.7099391650611633e+00 1.0080983758769191e+01 2.1969456403660573e+01 0 0 -1
+12 0 1 0.0000000000000000e+00 1.0737413438113734e+01 9.7843718935382320e+00 2.1870677333590407e+01 0 0 -1
+36 0 1 0.0000000000000000e+00 1.3825188668203428e+01 9.1347203334522611e+00 2.2053265001316063e+01 0 0 -1
+56 0 1 0.0000000000000000e+00 1.4460844036502866e+01 1.2551149979934108e+01 2.2048628473739534e+01 0 0 -1
+480 0 1 0.0000000000000000e+00 1.7539001280021722e+01 1.1858921984477854e+01 2.2030080180249673e+01 0 0 0
+62 0 1 0.0000000000000000e+00 2.2814944770339917e+01 1.2496627523873462e+01 1.8457451960155793e+00 -1 0 0
+449 0 1 0.0000000000000000e+00 2.0469702826430588e+01 1.1562911545085631e+01 2.1796938367093340e+01 0 0 0
+443 0 1 0.0000000000000000e+00 2.3648128602941650e+01 1.1186305632618048e+01 2.1825401552534451e+01 -1 0 0
+467 0 1 0.0000000000000000e+00 3.5092237092800236e+00 1.5581387931254646e+01 1.9742062234499109e+00 0 0 1
+469 0 1 0.0000000000000000e+00 4.7991730433295832e+00 1.3932050055950965e+01 2.2089078281381529e+01 0 0 0
+348 0 1 0.0000000000000000e+00 1.8462580361420102e+00 1.4017942430850720e+01 2.1973772407385614e+01 0 0 0
+49 0 1 0.0000000000000000e+00 8.0739840397650582e+00 1.3283794754843937e+01 2.1976264707496547e+01 0 0 -1
+426 0 1 0.0000000000000000e+00 9.8987791684872697e+00 1.4644273726931685e+01 1.9662514080447970e+01 0 0 0
+55 0 1 0.0000000000000000e+00 1.1315901957868213e+01 1.2727196332520000e+01 2.1838213596865465e+01 0 0 -1
+54 0 1 0.0000000000000000e+00 1.1680533170277537e+01 1.5870002797417673e+01 2.2062491504236458e+01 0 0 -1
+450 0 1 0.0000000000000000e+00 1.4831864618955953e+01 1.5411368802241505e+01 2.2258975254269565e+01 0 0 0
+474 0 1 0.0000000000000000e+00 1.8030162306420564e+01 1.5360184648403184e+01 2.2002567764537357e+01 0 0 0
+178 0 1 0.0000000000000000e+00 2.1426583450453037e+01 1.4489084943600389e+01 2.2296451552740958e+01 0 0 -1
+487 0 1 0.0000000000000000e+00 2.2430327842598810e+00 1.7114384533057478e+01 2.2052957169662225e+01 0 0 0
+446 0 1 0.0000000000000000e+00 5.5947758095167792e+00 1.6812341141570165e+01 2.2074482803928838e+01 0 0 0
+452 0 1 0.0000000000000000e+00 8.4778910253339141e+00 1.6430008860446517e+01 2.2178751219269099e+01 0 0 0
+409 0 1 0.0000000000000000e+00 8.8515579684399022e+00 1.9387550204725557e+01 2.1863090413945340e+01 0 -1 0
+407 0 1 0.0000000000000000e+00 5.9183488436008416e+00 2.0098394530159165e+01 2.1793000336764003e+01 0 -1 0
+50 0 1 0.0000000000000000e+00 1.2170977690619930e+01 1.9069648012437948e+01 2.2074572637312553e+01 0 0 -1
+451 0 1 0.0000000000000000e+00 1.3422696831942037e+01 1.7354311230582308e+01 1.9972495171032453e+01 0 0 0
+494 0 1 0.0000000000000000e+00 1.5404609855313881e+01 1.8740800329955583e+01 2.2210730994555465e+01 0 0 0
+476 0 1 0.0000000000000000e+00 1.8481452352709905e+01 1.8642952248740635e+01 2.2216763497900200e+01 0 0 0
+463 0 1 0.0000000000000000e+00 2.1475964484825276e+01 1.7582128021531489e+01 2.2121898890229268e+01 -1 0 0
+81 0 1 0.0000000000000000e+00 2.2030037911126009e+01 2.1118132712799774e+01 2.2224445024667578e+01 -1 0 -1
+5 0 1 0.0000000000000000e+00 4.4117950202789089e+00 2.1804152322102503e+01 1.7341992674471947e+00 0 -1 0
+3 0 1 0.0000000000000000e+00 2.9533913981631965e+00 2.0533933410857863e+01 2.1853063734592276e+01 0 -1 -1
+488 0 1 0.0000000000000000e+00 6.3376074545847612e+00 2.3245182683730391e+01 2.1914895836002948e+01 0 0 0
+310 0 1 0.0000000000000000e+00 1.0567377624160079e+01 2.0944258034974435e+01 2.0020759997895940e+01 0 -1 0
+89 0 1 0.0000000000000000e+00 9.6638478182457437e+00 2.2836907772612783e+01 2.2102178680226178e+01 0 0 -1
+489 0 1 0.0000000000000000e+00 1.4446033580130898e+01 2.3695985142587777e+01 2.0013737446937515e+01 0 0 0
+416 0 1 0.0000000000000000e+00 1.2728342140293723e+01 2.2263921658517539e+01 2.2221176924420604e+01 0 -1 0
+411 0 1 0.0000000000000000e+00 1.5798667174943207e+01 2.1829089122925797e+01 2.2236937117627058e+01 0 -1 0
+495 0 1 0.0000000000000000e+00 1.7156592145324787e+01 2.0109786409054500e+01 1.9937776409175520e+01 0 0 0
+414 0 1 0.0000000000000000e+00 1.7481667782119551e+01 2.3288712208077079e+01 1.9977058725943149e+01 0 -1 0
+499 0 1 0.0000000000000000e+00 1.9103456318900655e+01 2.1592027133810586e+01 2.2059639290097806e+01 0 0 0
+97 0 1 0.0000000000000000e+00 2.2288908438935373e+01 1.6870620941988177e+00 2.1818900403757858e+01 0 1 -1
+
+Velocities
+
+8 -2.8834374603377154e-03 4.2733839908451398e-03 1.4664995710633713e-03
+107 8.5753791026784023e-05 2.8767713720232249e-04 -2.5594562725288024e-03
+86 -2.0607990577849468e-03 6.0862059699772321e-05 2.3233497687082124e-04
+28 -2.3049499902348348e-03 3.0108180151471623e-03 -1.1252510171678644e-03
+185 -1.0318889084217904e-03 -2.9295030625450065e-04 -2.6320031373324837e-04
+186 2.1345650974999614e-03 1.0302582542020653e-03 3.6805347620861317e-03
+109 8.7258057013190574e-04 -7.2813483100902111e-04 -3.6670607899329205e-03
+31 -1.1103602986727054e-03 1.3898297303472475e-03 4.2400098896767864e-04
+10 2.4045934086326529e-03 2.2717762689738802e-03 -1.1986976892491401e-03
+111 -8.6157861147075901e-04 3.1720201594225756e-03 -4.9000276608118581e-04
+16 -4.4289512491919929e-04 -7.5620115880822663e-04 1.9267744791895320e-03
+420 1.6202286820769573e-04 3.5056216545635900e-03 -3.6968111589592216e-03
+18 -5.3607348452039438e-04 -5.1191149246962550e-04 3.5075071141083668e-03
+117 -1.4747070875960702e-03 7.3410578952933024e-04 -1.3134091582668153e-04
+1 -3.9462663193329389e-03 4.5885080738683704e-03 -4.3118363224880791e-03
+101 -1.4644879862853811e-03 7.4009812245060501e-04 -3.0730046117580503e-03
+22 1.9182989068395008e-03 1.5506806351390798e-03 -3.9341847718597209e-04
+32 6.8668561394886010e-04 1.9539609858980540e-03 4.3473220547249085e-03
+38 2.9299169946941030e-03 -6.9389938397822356e-04 -1.2843854663849290e-03
+25 -4.2247283785052444e-04 -4.9983092118180521e-03 -3.1617657501630059e-03
+412 7.1682100841869453e-04 -1.9779774419685544e-04 -1.3256377350536093e-03
+27 -1.1900317649038820e-03 -4.5475578165558219e-03 -1.7087046294216653e-03
+26 3.3758011259409143e-03 -1.1880485784825112e-04 6.6391187140534225e-05
+447 -1.5838602769681711e-03 4.4896852561827471e-03 -1.4333017954532860e-03
+11 6.8191680090936278e-04 6.0221726373823616e-04 -1.0284343058392024e-03
+432 1.0987442359112992e-03 1.4110499746530815e-04 -8.5896890562724485e-04
+116 -3.7891574643402761e-04 -1.1720431026871199e-03 -5.6066238186592676e-04
+130 7.1089939561999217e-05 -1.3150634717341297e-04 1.0682315248872504e-03
+114 -7.2224603012052569e-05 -7.4046176528440861e-05 -1.4666098076134145e-03
+35 1.4786616409343954e-03 -1.4435555608449890e-03 -2.1465882245783959e-03
+440 -4.3527209158113625e-03 -8.2805402279238801e-05 3.7141662677454802e-04
+57 9.5848586468080843e-06 7.4841598456773550e-04 9.0952444836738390e-04
+39 -2.2712060677630283e-03 8.3637781458694818e-05 -2.3451958181825681e-03
+41 -1.6253185562569478e-03 -4.1682591094669213e-03 -1.7905623136353309e-03
+45 -9.1847750102545605e-04 -1.2151263972449843e-03 7.7889583112053257e-05
+46 -3.6586610237580131e-04 -1.5452674214698015e-04 1.8226924898155873e-03
+146 4.7731756512576920e-03 -5.8088237825278219e-04 2.5312373109577391e-03
+153 5.7083700371624467e-03 -2.4414748610212373e-03 -1.2113998893916724e-03
+149 2.4833853688635674e-04 -2.6899051344169704e-03 4.9362425255205806e-03
+150 -3.5452056914472922e-04 1.6507648984212726e-03 -1.3544177772208886e-04
+156 2.2962678607537164e-03 1.1607422144794489e-03 9.6978095276630005e-04
+71 -1.2474646719683527e-03 1.5424653109205448e-06 3.1573979611991747e-03
+134 -5.5294486551211910e-04 3.3402520998572851e-04 -7.4778917354125516e-04
+354 -2.2334630308734685e-03 5.4459174305427445e-04 3.7813477336892448e-03
+78 3.2525453217700086e-03 -5.2356234001153176e-03 -1.1511781466931026e-04
+24 -1.7307443120117641e-03 -1.9337754001743927e-03 -9.8207491217957698e-04
+60 -5.4270649052324247e-04 4.6195396769862316e-03 -4.4819890345994663e-04
+43 9.8478615642460989e-04 3.3102424461970916e-03 4.7541346734209216e-03
+158 9.8840435858380178e-04 -1.0227014811936286e-03 9.6001456086764099e-04
+42 -1.2086335838080176e-04 9.6824460818098837e-04 1.8539693688546667e-03
+52 -2.6930492122668901e-05 -7.8221186780254846e-04 4.3800009076019083e-04
+65 1.6210279129164722e-03 -1.8349862185952396e-03 1.2029859627513463e-03
+73 1.6149540265175209e-03 -8.5895658709083051e-04 3.4153996971107580e-03
+72 -2.6084521911528612e-03 2.0787879312497763e-04 -9.9428625537394729e-04
+91 2.0053920374408988e-03 4.4296155517166660e-05 1.8046210636932308e-03
+76 3.3853065314435205e-03 -3.6501456736769684e-03 6.9023733907367217e-05
+174 3.8865860961031107e-04 8.3958139774070175e-04 5.0350876377203398e-03
+77 1.9513123271721199e-03 -9.2732291855248370e-04 -6.4731313486355809e-04
+75 1.2048067621780439e-03 3.6870787690482928e-03 2.3930837265928200e-03
+59 3.6546398448192665e-04 -5.3635518589216903e-04 5.2218477860205205e-04
+154 2.2193869832512611e-03 2.5193591507364347e-03 -1.5078826897770312e-03
+63 4.9234561910924523e-03 -3.6195335661698164e-04 -4.4213379047948849e-03
+181 -1.4349961291543650e-03 1.1366480940243344e-03 -8.9757296197413459e-04
+484 -8.8319260320254063e-04 2.6848967916940415e-03 -2.1252302738098146e-05
+162 1.6560638274325931e-03 1.4147039440011732e-03 -1.3725731201707522e-03
+170 3.0944918204231539e-03 3.0280104685216015e-03 -1.7298534475270215e-03
+142 1.7269690288783759e-03 1.0206474312640542e-03 -2.5878901699527357e-03
+83 -2.2897606361357643e-03 -2.2063525076780593e-03 -3.6586860630846566e-04
+70 3.4080143811227282e-05 -3.5634353435130542e-03 5.9632670486143473e-04
+69 -2.6226328279231386e-03 -2.7392504582657265e-03 -1.4865749156298983e-03
+214 -1.3923783649086626e-03 1.3323155838762277e-03 -2.3677780512496136e-03
+471 -1.0384142410003756e-03 4.4447677662126945e-03 -8.4307316825992656e-04
+475 -1.0560655895055925e-03 4.4782283056772655e-03 2.1340625195047343e-03
+197 -6.7252090713011388e-05 3.1771603314878177e-03 1.6822169848235791e-03
+74 -1.7783108148448402e-03 -3.2321741785799906e-04 -5.9386828320961147e-04
+490 1.6179487325765638e-03 1.1972811708729401e-03 7.0360113886221544e-04
+161 1.5888702129727165e-03 -1.9823474535410126e-04 -1.5353776158175815e-03
+496 1.6104312632690809e-04 7.8153684918822245e-04 -1.0846222735890832e-03
+98 7.8927100521795842e-05 -3.3305790052856037e-03 2.1429709230268195e-04
+7 3.2374314851558784e-03 4.3910566353778926e-03 -2.1195443019609377e-03
+102 -1.8737364835333468e-03 1.1696227063493925e-03 -7.6011049880500840e-04
+64 1.7212055257902778e-03 -2.5324656648268839e-04 -1.3126701816170128e-03
+88 -1.9958737215942939e-03 -2.5193473594855146e-03 -4.1915519094691744e-03
+66 -4.8362833994213596e-04 2.8463918927860174e-04 2.0296679649909185e-03
+67 2.5960479294439469e-03 1.3660688669531573e-03 1.1000419777151644e-03
+472 -1.1170121809882605e-03 -2.9935661803147653e-03 -2.5580336215992312e-03
+13 -1.1561193602497633e-03 7.9430563442438654e-04 3.4392746312963008e-03
+14 -1.0787411817765262e-04 -3.9076150595769325e-03 3.6104927054292748e-03
+94 -1.3691202349912120e-03 -1.4338186854602329e-04 -3.2642274945345214e-04
+491 -3.1484987926590807e-03 2.6706891314143711e-03 -1.1254635466225425e-03
+500 -1.3880123911523398e-03 7.8186580845106355e-04 1.4902138838170573e-03
+100 7.6144203700968533e-04 2.3257684608199864e-04 -7.4443649076422864e-04
+2 -4.9932486604292229e-05 -2.6827396316008835e-03 9.7799189421146453e-04
+82 4.2152502111399712e-04 7.7493225782539492e-04 -1.0988857218357929e-03
+419 -1.0866295431698669e-03 -2.0026072844869106e-03 8.9882574343698733e-04
+84 -4.4286894009111502e-03 -5.9370051468065775e-04 -1.8235556267342517e-03
+19 9.8203334347773973e-04 -2.1072636956876120e-04 4.6443013221573391e-04
+125 -1.8156493216017481e-04 -4.9000727265839216e-04 -4.5465237077524058e-04
+87 -5.3808460820456558e-04 -6.5685808726455416e-04 1.6909604131192573e-04
+110 -6.7345548364726335e-05 1.1048274542161068e-03 -2.4790187355925256e-03
+192 1.7682573180335349e-03 5.5394856521241546e-04 2.0097818353882781e-05
+191 -2.0073356799592520e-04 2.2837116456803307e-03 -6.9189515666020953e-04
+120 -9.9247882767447429e-04 1.4854732588521591e-03 2.5493251915106102e-03
+209 -8.6479720987720659e-04 1.5917597982545433e-03 -8.4790429478276712e-04
+115 -3.8644485863543309e-03 -2.7144212777965048e-03 -4.2092751202282520e-03
+113 2.0685856561980125e-03 -7.9793296096237728e-04 -9.3132691215599408e-04
+217 2.5725253310001300e-04 2.6096612521410139e-03 -4.5168671432038070e-04
+34 -1.3781203176465768e-03 5.7869618015311091e-05 8.2345715692689844e-04
+106 2.1666836548366831e-03 -4.7134699480006793e-04 1.7266307157543304e-03
+108 -1.4522069841021129e-03 1.5222181197536355e-05 2.0615698976442481e-04
+129 -4.0562080603574383e-04 -2.3009353871141771e-03 1.5754747377873331e-03
+105 -1.5058510168866531e-04 1.0185868561009529e-03 7.1421976905195047e-04
+131 7.6857837460009466e-04 1.4044499701790926e-03 -1.5095602418088141e-03
+232 1.5646567270409070e-04 8.3279426317992228e-04 -1.7815938969491835e-03
+151 -3.3468392319349291e-03 -1.3783956158379893e-03 5.8680873202160942e-04
+135 -1.4514827672236436e-03 -1.8604491955977833e-03 -2.6872282185065702e-04
+112 8.9610737130470816e-04 9.1040224547763826e-04 -6.1335338157964095e-05
+233 -2.3270120544403670e-03 -7.1436064691901557e-04 -2.2913110984673969e-03
+139 -1.9249558348733839e-03 1.2903969613778680e-03 -2.1638668919674239e-03
+194 -1.0641542951690445e-03 -2.0658400524673336e-03 1.5467072305899265e-03
+118 6.3662488856626161e-04 2.8635025010422641e-03 6.0955452795981725e-04
+37 2.9702698814866486e-03 -4.3664095087497974e-03 -1.1831604716043261e-03
+23 9.5497504748898209e-04 5.1043709695807781e-03 2.4802137854181830e-03
+141 -1.6637091082923169e-03 -1.1243058314422173e-03 -8.2252522109631341e-04
+148 -2.2681125536492505e-04 -4.7842002657742767e-04 1.3847958214411490e-04
+132 -1.8884336481171814e-03 2.3823729508412653e-03 6.5618662947276686e-05
+47 1.0809901353163926e-03 -3.6554384892764267e-03 2.4027410374621097e-03
+126 1.9819255071055627e-03 -1.5782429345696379e-03 5.1246821704705701e-03
+147 -2.3261866298652017e-03 1.5384401736650145e-03 -2.6481365294838280e-03
+152 4.2232037458546784e-03 2.3330931592204706e-03 -1.5626439325197401e-04
+173 -3.1860094297691778e-03 4.0616085653725132e-05 5.1362080409130754e-04
+196 -1.0847342053779856e-03 2.3926027174461404e-04 -2.5004698645850892e-03
+230 -1.6164255056715497e-03 -2.3815415240516064e-03 -1.9845430389654312e-03
+136 -3.8865393601228561e-03 3.6205842191794511e-03 -9.6730802808271213e-05
+137 9.1032644246044343e-04 1.5074411088104201e-03 1.2589246028020581e-03
+179 -2.1092444671036090e-03 -9.9606283478899491e-04 1.1344726535991944e-03
+157 -2.5238190110435186e-03 -6.3398131568908342e-04 -5.8606158167754992e-03
+273 2.3472659769362204e-04 -2.2628408749466589e-03 2.1075028635676087e-04
+143 -2.8111719612418755e-03 -2.1450355349263896e-03 -4.4522689971938586e-04
+258 -4.2005665949378483e-03 4.1931626722073058e-05 3.8324229705013406e-04
+48 -3.6169419937522837e-04 -3.1009625947633181e-03 -1.6118256936804825e-03
+263 -1.3767749614875173e-03 -1.8956580189905732e-03 -3.3734110926743940e-03
+249 7.9043893591641042e-04 1.7566808522126611e-04 1.8671122356924390e-04
+172 -6.0680186272751837e-03 1.2904626117671181e-03 -1.1900736474539640e-03
+246 3.7175222504900437e-03 1.0507732112041779e-03 3.1534119369259449e-03
+250 -4.1273172515327863e-04 -1.5659925784774527e-04 7.1271211325620921e-04
+278 -4.7246163534426233e-03 -8.6588141917722167e-04 -1.4213331555801457e-03
+40 -1.7959360550530469e-03 2.2222924831817527e-03 3.6048863794625654e-03
+138 4.6706728346054384e-03 -1.0111174881835957e-03 -1.6840947670902790e-03
+277 2.5535474138838805e-03 -6.6577507982659842e-04 -2.8038220416558924e-03
+163 2.4175496264423990e-03 2.9770820856756084e-03 4.7581040546018213e-03
+99 -6.0625605204883931e-04 1.5257145806222702e-03 2.5976852894234111e-04
+140 -9.7296825340955240e-04 -1.3073543754829001e-03 -2.2482096085040858e-03
+68 -1.3756881200091763e-03 2.3853505422732819e-03 -3.8812914875534662e-03
+166 -3.5632267221034411e-06 4.0222494827577291e-03 9.9318034955870799e-05
+168 -2.7118682405686775e-04 -6.5724004776750774e-04 -2.3621404065274332e-03
+165 1.2615108450218944e-03 1.4525209855371151e-03 -6.3915600842055374e-04
+262 3.6217118516205663e-03 4.3031896493787121e-03 9.8975983863631230e-04
+266 -1.3805767623109879e-03 -2.3396891127589192e-03 -1.9835573517621038e-03
+269 1.3695564331973513e-03 -2.8473914980988928e-03 -1.1492477267688716e-03
+270 -2.4302434773291586e-04 -3.3019096656781337e-04 9.0651698112579455e-04
+176 -1.5051683203564572e-03 -2.2168587061595552e-03 4.2929729939709862e-03
+291 -1.4340557285031006e-03 3.2407826766828201e-04 1.2096490551861921e-03
+293 -2.8469106138548027e-03 2.2754520560072820e-03 1.7185654878991918e-03
+80 5.1022728962343269e-04 9.1898850998239185e-04 -2.1892646190774714e-04
+164 6.6943451078955193e-04 2.0948314172197506e-03 1.0589359531595923e-03
+198 2.8981485468752505e-03 -6.0644144935505728e-04 -1.8237708056328757e-03
+298 8.5455663470232728e-04 2.2764997723564457e-03 -1.2394169705113491e-03
+103 -2.0528899840722256e-03 2.3472962877124541e-03 -2.7327010356291512e-04
+183 1.3554713002318524e-03 -4.9214977235187060e-04 -8.0369604052110113e-04
+104 -2.2473043638042492e-03 1.5577691505614516e-03 3.1991666096220137e-04
+169 -5.4541889693584796e-04 -2.4822716611343234e-03 1.9950085443493173e-03
+187 -1.0974298551630775e-03 -2.5814872673027497e-03 -4.4517735101026816e-04
+286 -2.1878647954138033e-03 1.4513078885912412e-03 1.8921702715664222e-03
+189 -1.5678274693260602e-03 2.2645953260854490e-04 -1.4806742568057041e-03
+96 5.0970641864860034e-04 6.6942303398837683e-04 2.7826514011545967e-03
+292 3.8596327239297313e-03 -1.0362253511878251e-03 -2.4868095213059690e-04
+193 2.9045494876602210e-03 -2.1728233621971398e-03 -2.0227164400328152e-03
+17 3.1511850877561975e-04 -1.2984111833815454e-03 2.6631783802918535e-03
+190 5.9129769604091898e-04 4.2886546731626821e-04 2.4109345476915440e-03
+200 3.7259327157414843e-03 -1.6151048824697160e-03 -2.7373564046689492e-03
+199 5.6388442971593660e-05 -1.7340180150971212e-04 -4.0178438723541404e-03
+182 1.4303828229620663e-03 1.0551494890339702e-03 1.5421183441875119e-03
+124 1.6598911569449695e-03 -9.3552955759364383e-04 -4.8807801327608201e-03
+218 2.4759163723788863e-03 1.4845181552596287e-03 2.1672498218974264e-03
+206 -2.2514866751113051e-04 -1.1116921607721049e-03 -5.0367300313924682e-03
+203 -1.9681953213760298e-03 3.1038256578076518e-03 -9.5286250921832827e-04
+188 7.0708795056226010e-04 2.4958312932199097e-03 -9.7834580712241495e-04
+227 -1.9738201316675951e-03 1.4259675812345405e-03 6.4546791596550737e-04
+207 5.6983359793448710e-05 1.9558772342593965e-04 -8.0664326791218431e-04
+211 -2.1220378340003603e-03 2.7443482450447180e-04 1.1783413267444462e-03
+334 -2.1498775838974921e-03 2.4336930571885141e-03 -3.3598940857506154e-03
+237 2.2215151557735502e-03 2.2838055453577497e-03 -1.9859978811015162e-03
+4 1.0518508479114516e-03 -3.8743130904319738e-04 1.1467949909789129e-03
+119 2.7397081291240708e-03 6.8335314089171858e-04 -1.4242912491937531e-04
+122 -2.0663477142597118e-03 5.0575112189706495e-05 -6.3806516532531881e-04
+224 -1.7816468913264573e-03 3.4709472335127183e-04 8.4090548893845144e-04
+225 -6.0440772554578408e-03 -2.5046120070975867e-03 1.2985004536428789e-03
+228 -5.1740874259542869e-05 -3.0944084576121772e-03 -1.9346275585598423e-04
+229 3.8935077139010132e-04 -4.6018832862813651e-03 5.1051870558304886e-04
+226 1.5137529453195680e-03 -1.7443875791452021e-03 2.9296494438377494e-03
+235 9.2358143322607614e-04 2.6108053610624329e-03 2.0224765823796298e-03
+240 -1.6946371103303849e-03 -1.0332802248976909e-03 -6.7835312441631875e-04
+221 -1.5522214691936823e-03 -1.3198440004174455e-03 -3.5605543576414296e-03
+20 1.9080476656890559e-03 1.8232806212252397e-03 -1.3993846404552960e-03
+241 1.8613821852243345e-03 -4.2520552921970848e-04 -1.0934483189025393e-03
+145 1.4031791044961806e-03 -1.7257127283420524e-03 -1.0269923880857734e-03
+128 2.2187220793786740e-03 3.3960854053958988e-03 -3.6705037817870412e-03
+252 4.3722471634419849e-03 2.9295812238085703e-03 8.7450907990247351e-04
+265 -8.5631700794104267e-04 -1.6599047421123375e-03 2.2492951659469772e-03
+231 7.4508574576964866e-04 -1.8934041981807255e-03 -2.4651613029961906e-03
+234 7.7495959009507413e-04 -1.5854851600231800e-03 -4.0387711865245805e-04
+238 -2.2329460984457238e-03 3.2882938240514229e-03 8.0556091172959913e-04
+121 4.7786272555593880e-04 1.2282628409018954e-03 -1.7259303289527620e-03
+123 1.6897098039034143e-03 -2.0245188169137028e-04 -3.2137021910657519e-04
+261 -1.6617760630687998e-03 2.1474737417877046e-03 7.3989188284929108e-04
+144 -7.6162094887744153e-04 -5.9891323182791631e-04 -2.3675314675894265e-04
+285 2.8025239402960261e-04 -4.0436483144036886e-04 -2.3284074947294898e-03
+167 -3.5414267283292878e-03 1.3306412565024270e-03 -2.3731636530210557e-04
+171 -4.0019604577092435e-03 -7.4180112811882148e-04 -1.0244287066527784e-03
+160 1.1542255887755212e-03 6.7243885558250830e-04 -1.8679012727998807e-03
+155 1.2950901738602823e-03 1.2294246298750052e-03 3.2251577154948927e-03
+159 2.3740561617332900e-05 2.3764732874731269e-03 -5.0919930247063459e-03
+283 -1.1817166391920890e-03 -2.1131715231016306e-03 -1.2833331840265032e-03
+264 2.7473666090068976e-03 1.6541068633941789e-03 -1.2172743900096959e-04
+184 2.5789264962341237e-03 -1.3785212546449761e-03 1.0735377518401223e-03
+268 -2.5612032679308955e-03 -2.6157923994780661e-03 1.1236604492159271e-03
+289 -3.3709995703839189e-03 -2.0360423438618028e-03 -3.0323457132972989e-03
+294 1.9642205648852163e-03 1.7915350415947330e-03 -1.8376713121720561e-03
+95 -5.9932015132702207e-04 3.3092390404014988e-03 -1.8117113780192050e-04
+378 -1.1975527199252667e-03 -1.9099661107667193e-03 -1.1474103720918209e-03
+274 3.0465489624783310e-03 -1.8914219300250246e-03 4.4925953886891072e-03
+180 7.3669814304626454e-04 1.5027914023992401e-03 -2.0564657851203326e-04
+281 3.0987468000316302e-03 -1.4368291240616439e-03 9.7660514308362673e-04
+299 -1.4796828667218011e-03 -4.0781843524859687e-03 6.4217546803914730e-04
+363 8.0650395773266637e-04 2.4195670068876724e-03 4.4754502142336605e-04
+301 4.4143121340639861e-04 1.0741912084398304e-03 7.8983482601790674e-04
+282 1.5954378977955546e-03 -2.7737986608854312e-05 -3.8035125670639004e-03
+288 -9.5945243583423542e-04 -3.2003955978824284e-03 -9.7328499616160583e-04
+290 2.5919709848069416e-03 -7.7803138825445158e-04 1.0958271512495166e-03
+272 5.8259390811002095e-03 -8.3280929476355471e-04 -9.2175915373285991e-05
+390 -2.1354070048522846e-03 8.1219505702933648e-04 -3.6809299194085209e-04
+394 1.7850084584806218e-03 -3.8039479067693581e-04 6.0955279318006673e-04
+210 -2.7029764920641413e-03 1.1289670318569327e-03 -3.9137606633589855e-04
+381 6.0632776357768875e-04 5.6312413712870392e-04 4.7397223624227799e-04
+201 -1.0326597919450441e-03 -1.6896656494560442e-03 -8.8334630775480457e-05
+321 1.0739392430846218e-03 4.1132970028268432e-04 1.4009233576485383e-03
+324 1.6615839151399837e-03 -1.0997331664278139e-03 7.3317907887805465e-05
+304 -3.2303832442447124e-03 1.1989575086340288e-03 -4.9826626828163034e-04
+204 -4.3944648919476268e-04 3.9027498732100151e-04 -1.5498977623634416e-03
+305 -4.5871065693927374e-04 -1.5137315567903184e-03 -2.4341418139821889e-03
+202 1.1232746608557080e-04 1.7494032693251753e-03 8.1785923895726900e-04
+307 4.0988713599993138e-03 1.9063459052251028e-03 -3.7478509684555158e-04
+306 1.2795429773499220e-03 1.0388679138433553e-03 7.6616488864066375e-05
+333 -3.1563081433972394e-03 -1.4522773738193783e-03 -4.6452718646156142e-04
+340 2.9746237159775579e-04 2.8565052636226069e-03 9.2269061669065350e-04
+213 -1.1286461166870887e-03 8.5088410750119815e-04 2.8042709313840521e-03
+314 -1.1186065044185704e-03 -3.7965536114810937e-04 3.2588182442343916e-04
+335 -3.5278942275785100e-03 2.6918406611577362e-03 -4.1734154810360588e-03
+239 -1.2092092750809976e-03 -1.7654738806046351e-05 3.0366783910367682e-03
+318 -1.6008589055497282e-03 -1.4267593771689036e-03 4.8787036530771009e-03
+337 -2.8186717295860583e-03 -2.3888784188325946e-03 5.6905684012222122e-04
+243 5.0492859234237521e-04 2.6967185776669135e-05 3.6997613012854794e-03
+322 1.7979895486526108e-04 -1.5823010449981479e-03 1.2942708307827088e-03
+127 4.7482177408421475e-04 -8.4679843986569775e-04 -8.5654785810900262e-04
+222 1.6894491366344665e-03 -5.6818427812751170e-04 -6.3393576766157761e-04
+208 -1.8783378506675070e-03 -1.4327174550338769e-03 -3.5421883513783825e-03
+245 -3.6388468422003982e-03 6.4676241056664757e-04 1.9495201549294579e-03
+251 -6.0049578803878585e-04 -9.0144952905744081e-05 1.2116944940312249e-04
+332 -1.7216905212654663e-04 1.1748026959375320e-03 4.5099496910155315e-04
+326 -4.6742226107841693e-03 -3.1749381624783762e-03 -1.7347941357574266e-03
+355 -1.4704688859992639e-03 2.2037739813229557e-05 1.4942421427185421e-03
+216 -1.3616968118337293e-03 -1.2572906465773627e-03 2.3919332825712270e-03
+336 2.0920049810011286e-03 8.8612872582386165e-04 -9.2578935110692066e-04
+212 1.5213822155103380e-03 -1.5810013662708336e-03 4.4235861440229769e-03
+279 -1.6637161637193913e-03 3.5699453333493748e-05 -1.7749144063564496e-03
+353 4.7676991324155397e-03 7.8545111439048715e-04 -2.0301568544218388e-03
+259 -7.5691054913174080e-04 -4.3785291352695224e-04 1.8316334286439292e-03
+458 3.4964219337828284e-03 1.3603216557962856e-03 -1.2453982237964241e-03
+339 2.4355866259139006e-03 6.9253624587651815e-04 4.8054795528234854e-03
+323 -1.5045899333467391e-03 -2.2213308916497682e-04 1.8137956750497622e-03
+242 -3.3019637841910326e-03 -3.3923669107706767e-03 -7.0868551000371474e-04
+328 -1.1149409075604576e-03 1.1710568064670817e-03 7.1098000708065093e-05
+345 1.8027578113149626e-03 -3.9056358940186492e-03 -2.0477470520964668e-03
+428 -1.0736775945471757e-03 -9.7257843889218798e-04 -1.6124536536941659e-03
+253 -4.3368103300405721e-03 1.5657991395955815e-03 -3.3092434438504199e-03
+366 -8.4144043399410340e-04 -1.4712583723982905e-04 -2.5148322860657170e-03
+374 -1.6393252729088967e-03 3.8836357797138199e-03 -2.9892526021794226e-03
+330 1.4133092705463232e-03 3.5789729700415303e-03 -3.2459490296183622e-03
+260 2.3492668984838412e-03 -8.0041385434451758e-04 1.5697463677641506e-03
+349 -1.4888338780170889e-03 -8.4381680704299997e-04 6.2894781540806034e-04
+236 1.3368720032253137e-03 3.7065274307376101e-04 2.9704875784891368e-03
+255 2.7543260363374939e-03 8.9555716439564342e-04 3.9182858671994603e-03
+244 -6.9533053502540492e-04 -5.8661665292849489e-04 -2.8337107437508215e-03
+379 6.4026839162462774e-04 -3.1299955841111982e-03 -1.0617519031858146e-04
+341 -2.3473341479106177e-03 -1.7617695621353591e-03 4.8140421816707967e-04
+377 2.4318803437313788e-03 -7.2884176612099383e-04 -1.7647454404745350e-03
+364 3.6476788757923749e-03 -5.2713593158938167e-04 -5.5369792663401227e-04
+267 -2.0519520770619108e-03 -1.1979257666818364e-03 3.0177863803880305e-04
+248 -2.2269014287472832e-03 1.5866249232426603e-03 2.7405883904369523e-03
+369 -3.1245101331798473e-04 1.8016187543143354e-03 1.8330643953432088e-03
+177 -3.3312061958195574e-03 1.4287796563261688e-03 1.0372779247110170e-03
+393 -4.1115927364688019e-04 6.4594548148662171e-04 3.2653889646278196e-04
+175 -2.3907774636287966e-03 7.7485628566794675e-04 -1.1962156764226441e-03
+275 -8.0845481618827843e-04 8.2734963279401533e-04 -1.0745544236297300e-03
+444 1.3468797486994126e-03 -2.9360253664561115e-04 4.0219791305890007e-03
+257 2.6428533334662612e-03 -2.6776802699834994e-04 -1.1198780781456459e-03
+344 3.3462422905651914e-03 2.5960731756604293e-03 3.7238306459065715e-04
+297 1.6517322259473064e-03 2.4243253962232137e-03 2.4997034770614587e-03
+358 -4.2345935040708632e-03 2.1583278456463752e-03 2.2238794860822437e-03
+399 -3.8672612435896726e-03 -1.6440974184093052e-03 1.8474859242769983e-03
+401 1.2781499880620188e-03 -4.1430381312207096e-03 -2.5527746269844447e-03
+361 1.9011000346207396e-03 -1.8561129422648437e-03 -6.6442438976201503e-04
+371 3.9212619463145182e-04 6.6666056072812682e-04 -2.6497787634960036e-03
+370 -8.3433028471645992e-04 1.1338228759008883e-03 9.7235886799428175e-05
+287 2.0110277121869217e-03 -1.8990399137954299e-04 1.8587627733175273e-03
+365 4.0022238214785019e-05 5.4408166765827174e-04 -1.0391632449921659e-03
+392 -1.9541565223213185e-04 2.1551195644758372e-03 2.6776013430773157e-04
+309 -3.2492925443928047e-03 6.8461008607554859e-04 1.9634610446261948e-03
+387 3.6960823086368516e-04 -8.8305216124557944e-04 -1.4987150530811322e-03
+295 1.0779061522040861e-03 -5.5642432292978277e-04 1.0715804899221135e-04
+276 -3.7931541376938697e-03 -7.8492949452517620e-04 -1.6083970670293598e-03
+317 2.4971072770374133e-04 -1.4728904798976660e-03 1.6936084248456778e-03
+215 6.8792643644866665e-04 -1.4591212821703632e-04 2.4598295602776417e-03
+397 2.9831090355467234e-03 -1.5253423709603734e-03 3.0223339754430813e-04
+284 3.3280032812246425e-03 3.4229132816864102e-04 2.7763622059735512e-03
+362 3.1675428654692094e-04 -5.2990881995479411e-04 5.9461448761550151e-04
+385 2.1355222535766019e-03 -6.4715659516349539e-04 -1.5581827039147448e-03
+223 -1.0474428836790147e-03 4.2998542120759850e-04 -1.9268998682736235e-04
+382 -5.0137069795326919e-04 -3.0862087377837191e-03 7.3708795558879319e-04
+384 6.0890770294249046e-04 -1.7275550254613379e-03 -5.4259416847561137e-04
+437 -1.2829682151896957e-03 -2.6210112042928346e-05 2.7607762733386576e-03
+386 1.8398459433507637e-03 4.1409939243010129e-04 3.1046385790239541e-03
+331 -1.5822456980820370e-03 6.1152183075670818e-04 1.7696523901573385e-03
+205 2.5256267815186096e-04 -2.7557713951737073e-03 -2.9201374752553500e-04
+395 3.1168002291158048e-03 1.2453371448448527e-03 -4.2301055206199267e-04
+313 -1.8559932758147270e-03 -1.1797256663929130e-03 -2.1742358443223343e-03
+311 9.0688322019576758e-04 -1.3468122672256747e-03 2.6799201101411828e-03
+430 3.7753807925659522e-03 3.0356647998772824e-03 -3.5751253082421178e-03
+315 -2.4309607225436671e-03 2.0785035710029422e-03 1.6986123261954452e-03
+220 3.9888470901637309e-03 -7.1702634457791996e-04 -2.3427624575160485e-03
+195 -2.0680579102946484e-04 -1.3356894581314038e-03 -1.9213393595289929e-03
+296 -1.3711728106865827e-03 -1.4039277116855290e-03 2.0092273938251857e-03
+303 6.5980586433938247e-04 -1.4142730487851491e-03 1.0960943882279674e-04
+219 2.4621911792583081e-03 4.4799769884141795e-04 1.7640209197306411e-03
+422 1.7277482499424262e-04 -3.1080551177887231e-04 3.6894569796538813e-03
+483 1.2702346018427920e-03 3.2849157795228146e-03 -1.9833859152707327e-03
+6 -2.9251199886437783e-03 3.1993952960840517e-03 4.1500992235345754e-03
+402 -7.9058592172398621e-04 -1.6343136123648503e-03 2.1648478962757959e-03
+466 -1.6612591370557418e-03 2.1829693272298333e-04 -6.8241419712153394e-04
+302 2.0333788300220864e-03 2.8980863294244936e-03 6.7041130445047133e-04
+492 1.0698904354080553e-03 -6.9469948340631727e-04 -3.7065715674595963e-03
+429 3.0266463948178536e-04 1.2939501051453316e-03 1.0893836235843770e-03
+410 -3.7302836443363791e-04 8.7977956082877797e-04 -2.8321479849355308e-03
+434 2.2909445806528071e-03 4.1423402641425798e-03 -1.6220073211152372e-03
+415 -4.8233633043692258e-03 1.4152327159327055e-03 -9.7774030457875279e-04
+300 3.6649325344565481e-03 -1.3469796720150947e-03 1.8903652426664544e-03
+357 -5.8282114796945025e-04 4.9387055251713641e-04 1.6520711231701787e-03
+438 -2.6205785947082433e-03 -1.9220588111391855e-03 2.3621805533161010e-03
+383 -4.6670110860066706e-04 -1.0203815714196255e-03 2.7322359444282560e-03
+320 1.9369477853227104e-03 -1.1647701012781622e-03 2.5898750222897180e-03
+457 1.3726315247889818e-04 -2.2753106436567546e-03 -2.8030413929573303e-03
+439 3.7582505745233606e-03 -1.8176683406259636e-03 -2.4435339605155038e-03
+427 -1.1533161447647559e-03 -2.3359426695898806e-03 -3.0822057380578750e-04
+312 1.5482640979783886e-03 -1.0235286731638178e-03 -1.0584096467863753e-04
+90 -3.3557661641584291e-03 2.7988217570885324e-03 -4.4254279455345708e-03
+329 -3.1248664540522307e-03 -3.5397819617592943e-03 8.9226110882463809e-04
+350 -3.2215726729983660e-03 -2.6179929108207812e-03 -7.5499087749644387e-05
+30 2.5307123866764982e-03 -1.4854097630925863e-03 -1.0486320734752338e-03
+433 -6.0198846247865414e-04 9.8289179241627957e-04 1.3580865503003458e-03
+356 2.3784443755035570e-03 1.1757984251288920e-03 -3.1325634778877628e-04
+373 -3.4404133929379888e-03 -1.6878205589152258e-03 2.1646285865248278e-04
+338 5.2650339767338142e-04 -1.2776726759987959e-03 3.1640038535524989e-03
+455 -3.1911720080610561e-03 1.1632431845438769e-03 -3.6549211472717748e-03
+459 -2.1936539510300041e-03 -2.2764854466318339e-03 2.5461708590066314e-03
+343 -1.0819194891499833e-04 -7.1272540438533077e-04 4.0482078832468902e-04
+424 1.0875898457520254e-03 2.7869285314279838e-03 -1.1220075202795124e-03
+441 -1.5034710406064300e-03 -1.0473615165149481e-03 3.3029292303150571e-04
+347 4.5494536238836931e-03 -1.5460283733832677e-03 -3.7848539071407964e-03
+325 1.3789507114401473e-03 9.9745633450210903e-04 1.1486053523186808e-03
+247 -8.4125368436795112e-04 2.8589892129178481e-04 1.7669101819912771e-03
+327 -1.2548235537559441e-03 7.6951182632855849e-04 4.3053296794601818e-03
+271 -6.5593466139671512e-04 3.7362391716595778e-03 -2.4512768310627189e-04
+436 -3.4352181067975884e-04 -1.8258188298325762e-03 6.9025979080822449e-04
+389 -2.9200770101608231e-04 -2.8392439644923024e-03 9.1178853131087720e-04
+453 4.0199958516995562e-04 -8.3186885287713636e-04 -2.2377016217735150e-03
+351 1.5775378833761628e-03 -3.5035389883262148e-03 -1.3197465496172000e-03
+375 -5.2884304588299499e-03 -1.1949923795823894e-03 1.3015452589907248e-03
+254 1.6685843361449895e-03 -7.3573457222263553e-04 3.4211305614266813e-03
+360 1.1561201554537977e-03 2.6311347679287113e-03 2.9506393413005735e-04
+442 -5.4331159408675547e-04 -1.1611900780361512e-03 4.3344570927829496e-03
+464 -5.2649073532893274e-04 -2.5203433059333585e-03 1.6969938150799872e-03
+342 -5.7971318525908610e-04 -1.5547750894886006e-03 7.5671646692139570e-04
+346 -2.2405956584911368e-03 -1.8619777005566057e-03 -1.4759991999147085e-03
+448 2.7026446869019083e-03 -4.0135456586177414e-03 2.1240075553607741e-03
+486 2.5272710739009563e-03 2.0837509641090822e-03 3.3376576277160527e-03
+256 -1.0707492138877215e-03 -1.8484706003679635e-03 -1.3539513059201563e-03
+376 -9.4962221597113150e-04 2.8557514000036206e-03 -8.0192968122352252e-04
+352 9.2278622527557108e-04 -1.2647704586383911e-03 -1.3733454294538763e-03
+380 1.8066418117126610e-03 2.8824872968904415e-03 6.9149888815996866e-04
+456 -9.4258563558922114e-04 -5.4667092203442426e-04 4.9587291637813880e-04
+280 1.0745665772182523e-03 1.6621853804248633e-03 2.1916837126920705e-03
+497 2.8418465198508198e-03 2.9434170300899017e-03 1.9173032373522424e-03
+477 -1.1866739542733048e-03 -3.3448707079101960e-04 5.3953817506695676e-07
+58 -9.2174799270792291e-04 6.9375801597522740e-05 3.0554622378829418e-03
+461 -3.6759158152114630e-04 -1.8413710058973454e-03 3.3325272072082922e-03
+468 -4.0280072720417131e-03 -5.1895201034404370e-04 5.1509565455354681e-04
+485 1.8074137961991438e-03 2.3930323995804883e-03 3.3278208012122012e-03
+368 3.2727129124971898e-05 -1.8008068476924328e-03 3.2108067729876067e-03
+465 2.0248386720457551e-03 5.2139946784645870e-04 -1.1205862219019571e-03
+462 5.0485033605521441e-04 1.5969912697964047e-04 6.8610227166278597e-04
+405 -3.0172250942106841e-03 9.5318510911305394e-04 -1.9435218430129851e-03
+473 5.0781655075798513e-04 1.8833182464838116e-03 -1.7131995646611088e-03
+372 4.8643713390544808e-03 1.3817675162251946e-03 4.6077700732167061e-05
+367 7.4671629275878602e-05 -3.6836850358448452e-03 -1.4455647471337202e-04
+400 -7.1623534135438927e-04 2.3969110742487489e-03 1.9184901316082826e-03
+93 1.9371557947896578e-03 4.2211625598672338e-03 -1.7823630704260696e-03
+413 1.7980802672329870e-04 -1.6063192402035189e-03 -1.0539983142579698e-04
+478 3.6917467734784992e-03 8.8062404658202317e-04 -2.2938143945868432e-03
+479 4.2204218402598177e-03 -1.9904155492124339e-03 2.8223733885198337e-05
+498 4.4084610747738397e-03 6.2728811462604383e-04 3.9529805504181980e-03
+85 1.0313046098338642e-03 -1.3054583579348049e-03 1.9895716595298494e-03
+421 1.9702791595775930e-03 -3.5037051698011941e-03 -5.6442273090407259e-04
+482 -2.8976215451497297e-04 1.9001519843355181e-03 -1.1786013836983493e-04
+408 -9.9421052398229195e-04 1.0855973787714697e-04 2.4336478005064751e-03
+308 -9.9335854801032479e-04 -2.5208673031439331e-03 2.4504264836407684e-03
+470 3.0800927681871554e-03 -2.1698214160551965e-03 -4.8205646326407786e-03
+388 -2.0146277660365026e-03 -3.8372500225303550e-04 9.2963471264895798e-05
+391 -6.1133022125516349e-04 -3.2962297802804170e-03 -4.0995845417406643e-03
+319 -2.4298948302468992e-03 3.0749775215422066e-03 1.2667799887341322e-04
+493 6.9924590061980327e-04 3.2963862139886216e-03 -2.8381275272909030e-03
+396 1.5002155180701016e-03 -3.2225687006978953e-04 -1.8564729875719362e-04
+418 -8.0009067851176028e-04 1.4942732891617017e-04 3.6493504375640904e-03
+398 -2.0771871875676293e-03 -1.4697500308041619e-03 2.8661356105934535e-03
+417 1.7926255661202591e-03 1.6896222291386542e-03 2.2884484225151216e-03
+403 1.8234938594321314e-03 -8.5208035925185370e-04 3.2841858851191232e-03
+406 -1.5939439792621928e-04 -1.4871426339956727e-03 2.9281886664349560e-04
+9 -3.4771819857047273e-04 1.1602126935067748e-04 -3.9943996248615367e-03
+92 -2.0380859330401597e-03 8.4046509212588058e-04 1.4263878124182939e-04
+431 -1.5691044937562375e-03 -7.4749698439677834e-04 -5.1165538953283889e-04
+15 1.1550585188784370e-03 -1.1387614286735080e-03 -5.4714798512178161e-06
+435 -1.0288973033871355e-03 -4.8356991002833962e-04 -3.7188190652754677e-03
+404 6.2852754976606756e-04 -6.6086331046861747e-03 1.1473058996153650e-03
+481 -8.1621347462886625e-04 -2.0092984342339765e-03 -2.9739964554293999e-03
+316 -2.0774028303256063e-03 4.4626944645298266e-04 -1.6336190374773337e-03
+423 3.2813943182973199e-03 2.7675805046418595e-03 -2.4272815733537177e-03
+425 1.1185552682214032e-03 2.7480348218193333e-04 -4.0232864679890061e-03
+29 -1.4847219835748709e-03 -2.8630978121625445e-03 3.3981121862565250e-03
+33 9.4630125113303329e-04 9.1760710305394545e-04 6.9956538245897945e-05
+133 2.7935967011456808e-03 6.5690548117768835e-04 1.4361820899916292e-03
+460 -5.7883113965457884e-03 2.0205203150839689e-03 -1.1346834491357844e-03
+53 -8.5108282570632197e-04 4.5137183163711800e-04 -3.0813929902036071e-03
+359 2.1559391196702541e-03 1.2814479184430146e-03 1.5588630998576217e-03
+44 9.6155719070058177e-04 8.0464941103684958e-04 -5.3624176712970938e-04
+21 3.0005677455151474e-03 -1.5771924707877246e-03 4.8795295421570953e-04
+454 2.2483364137737502e-03 -3.0462642583308619e-04 -4.3420026747932443e-04
+61 7.8480894148476362e-03 -1.0420709780738300e-03 1.7351217014669506e-03
+445 -1.5233546121350993e-05 -4.7205978496318304e-04 4.3074467877353010e-03
+79 1.5589443770932124e-03 1.0862644510076587e-03 -4.3416792233440223e-03
+51 2.2311159581260933e-03 -1.2421623227059375e-03 1.2351779862386132e-03
+12 -1.6964218704851740e-03 3.1293609412679142e-03 -6.1906101168290081e-04
+36 -9.8118259865522255e-04 -3.3967217776737333e-03 -6.0306893263938001e-04
+56 -8.0531177731711623e-04 3.9466780163846128e-03 1.7373468220420270e-03
+480 2.6287259501601550e-04 -1.8110587762462313e-04 -1.0340497791689570e-03
+62 1.6293856450145080e-04 1.0968031462659834e-03 -3.3502113234555437e-03
+449 2.1988784127693066e-03 -3.8341725334550516e-04 -8.9865436101878359e-04
+443 6.3516387369389144e-04 -4.7897956922715304e-03 -4.9068224352069902e-03
+467 3.1302504691852677e-04 2.7991893199129634e-03 -4.6853879380343872e-03
+469 3.5577454612856441e-04 -1.9785354851356643e-03 -2.3034293955061427e-03
+348 1.6324829850539494e-03 -1.6037513335230764e-04 -1.2118762352019052e-03
+49 1.7673846529268216e-03 -1.5427539579450863e-03 3.9494572245834825e-04
+426 -6.8514021035789266e-04 -4.0111344970229215e-04 2.7848415752862910e-04
+55 -1.8473310923230659e-03 -2.4946753781393153e-04 4.5611331305276098e-03
+54 -5.3293771610981970e-04 -2.2578517587378798e-03 -2.7718300418898951e-03
+450 -2.3445815618680951e-03 1.0189006591913563e-03 -1.0172015385169406e-03
+474 3.7529529665703107e-03 -3.1360622781855200e-03 -1.2038479274906579e-04
+178 6.8471709195624421e-04 3.5945344960237345e-05 1.0758646812413675e-03
+487 -8.4216914228408591e-04 -2.8271926843904580e-03 -9.1263172649980932e-04
+446 3.1721856557082517e-03 1.6644967830620435e-03 1.7843171843813710e-03
+452 3.1715135149972906e-04 -1.6648155048379337e-03 -2.8239672732289535e-04
+409 7.5198190041851675e-04 1.4396065738711186e-03 1.5608524345725866e-03
+407 -1.0472887098212850e-03 -2.6038553751849274e-03 1.3008633555173824e-04
+50 -3.9529484549799380e-05 1.8592992310097500e-03 5.9855678771198362e-04
+451 -2.7650794115899871e-03 2.9689267909098977e-03 -3.8176875218925066e-04
+494 -8.9040412557108990e-04 2.8431711157683498e-04 1.4404265680679012e-03
+476 -3.6297036839302984e-03 1.5487386826254293e-03 -6.5332706519661719e-04
+463 -4.2615257413848731e-03 -3.2526171082581904e-03 3.0370634769847525e-03
+81 -2.2872682314227883e-03 2.7840510539332737e-03 6.4459242613707553e-03
+5 1.0880613607474148e-03 2.8114443537430403e-03 -1.9625968858398082e-03
+3 -1.2443549055701833e-03 -2.4678940318673009e-03 -3.1664967351184337e-04
+488 8.1769213967992926e-04 -1.0685858255228438e-03 -7.9802215883680602e-04
+310 -4.9045765445414693e-04 2.1762602511081349e-03 -2.7395649268726024e-04
+89 -1.7460379487093799e-03 4.4356699635485821e-04 -1.8299450600151531e-03
+489 -2.6725868789889222e-03 4.6612454066287124e-04 -1.3221885958434346e-04
+416 -4.3707388575974605e-04 1.7879409497392647e-03 -1.1922995379064231e-03
+411 -1.1672522621960031e-03 1.0763115277623823e-03 1.7818399910067896e-03
+495 4.1696172658033451e-03 7.8848054005472559e-04 1.9852204214574247e-03
+414 1.2245218121169937e-04 -1.8952869270219166e-03 -2.0086592856568158e-03
+499 4.5932994597075905e-04 -1.1257206439190621e-03 1.5198329858717499e-03
+97 -5.1390432842355000e-04 -4.0446920245074484e-05 -5.2158991800019814e-04
diff --git a/examples/USER/misc/grem/lj-6rep/405/restart.init b/examples/USER/misc/grem/lj-6rep/405/restart.init
new file mode 100644
index 000000000..018ce7d04
--- /dev/null
+++ b/examples/USER/misc/grem/lj-6rep/405/restart.init
@@ -0,0 +1,1022 @@
+LAMMPS data file via write_data, version 5 Nov 2016, timestep = 10000
+
+500 atoms
+1 atom types
+
+1.2241895764161672e+00 2.3775810423583533e+01 xlo xhi
+1.2241895764161672e+00 2.3775810423583533e+01 ylo yhi
+1.2241895764161672e+00 2.3775810423583533e+01 zlo zhi
+
+Masses
+
+1 62.5
+
+Pair Coeffs # lj/cut
+
+1 1.1 2.8
+
+Atoms # full
+
+8 0 1 0.0000000000000000e+00 2.2367351778863620e+00 4.3397812343410447e+00 2.1026801897226846e+00 0 0 0
+107 0 1 0.0000000000000000e+00 3.8592368755011521e+00 2.5203497926882878e+00 4.4809160539222912e+00 0 0 0
+86 0 1 0.0000000000000000e+00 4.8070031995581113e+00 1.9150815957483038e+00 1.5925658928688478e+00 0 1 0
+7 0 1 0.0000000000000000e+00 1.9104993755548345e+00 2.3692309420940195e+01 2.3506848367864830e+00 0 -1 0
+185 0 1 0.0000000000000000e+00 6.6596939759489651e+00 3.3402850144619070e+00 3.8972460879794224e+00 0 1 0
+186 0 1 0.0000000000000000e+00 7.8080813886336724e+00 1.6054277745707473e+00 1.6708895453563164e+00 0 1 0
+412 0 1 0.0000000000000000e+00 8.3829537565436070e+00 4.4614668403626760e+00 1.7320402379993904e+00 0 0 1
+109 0 1 0.0000000000000000e+00 9.7871569948118982e+00 3.0376060151568387e+00 3.9618233427606286e+00 0 0 0
+31 0 1 0.0000000000000000e+00 1.1662036730416872e+01 3.8507404018157487e+00 1.7848263324390086e+00 0 0 0
+111 0 1 0.0000000000000000e+00 1.2826410178884048e+01 2.4885325784657146e+00 4.2049807265779471e+00 0 0 0
+420 0 1 0.0000000000000000e+00 1.6133145988874297e+01 2.3461605116751829e+00 4.0543325184973327e+00 0 0 1
+18 0 1 0.0000000000000000e+00 1.8502977453171610e+01 3.5825362220473158e+00 2.0643998741004825e+00 0 0 0
+117 0 1 0.0000000000000000e+00 1.9522308682374671e+01 2.0944485946496076e+00 4.3510180336658273e+00 0 0 0
+1 0 1 0.0000000000000000e+00 2.2195483081078287e+01 3.1399853552193022e+00 3.3896735435649319e+00 -1 0 0
+22 0 1 0.0000000000000000e+00 2.7073393630466600e+00 8.5923801459113527e+00 1.6154184276564620e+00 0 0 0
+28 0 1 0.0000000000000000e+00 4.3198668591574165e+00 5.5821417178931121e+00 4.7736841106055117e+00 0 0 0
+27 0 1 0.0000000000000000e+00 7.0690034141193543e+00 6.5760982900986553e+00 3.7062378136710401e+00 0 0 0
+26 0 1 0.0000000000000000e+00 5.7414194750208036e+00 8.1452322748441475e+00 1.3574007707144053e+00 0 0 0
+25 0 1 0.0000000000000000e+00 5.1938616265341837e+00 4.9537734920985450e+00 1.4778678218983465e+00 0 0 0
+447 0 1 0.0000000000000000e+00 8.9257948012734669e+00 7.7759159461764931e+00 1.6257687951987028e+00 0 0 1
+11 0 1 0.0000000000000000e+00 1.0156977016349282e+01 6.1660299437112114e+00 3.8535777839602181e+00 0 0 0
+432 0 1 0.0000000000000000e+00 1.2159342164703197e+01 6.8553314897324578e+00 1.5523549893385256e+00 0 0 1
+116 0 1 0.0000000000000000e+00 1.3398284496002775e+01 5.8228279427533058e+00 4.0205762183013647e+00 0 0 0
+130 0 1 0.0000000000000000e+00 1.5256608689875710e+01 7.5401188614284393e+00 1.2911104291614990e+00 0 0 0
+114 0 1 0.0000000000000000e+00 1.6477595950349141e+01 5.6598011887856172e+00 3.3226218479197729e+00 0 0 0
+35 0 1 0.0000000000000000e+00 1.8907749880821655e+01 7.1802044231377362e+00 2.2399458508028722e+00 0 0 0
+34 0 1 0.0000000000000000e+00 1.9957769966273517e+01 5.3858151390081686e+00 4.4628301333205496e+00 0 0 0
+39 0 1 0.0000000000000000e+00 2.2940759804964529e+01 6.4121708088683862e+00 3.5989680083445728e+00 0 0 0
+44 0 1 0.0000000000000000e+00 2.1781970090489928e+01 8.5778550857256874e+00 1.6495377124369159e+00 -1 0 0
+57 0 1 0.0000000000000000e+00 2.0663715549292398e+01 8.4758110478874116e+00 4.6225794062956149e+00 0 0 0
+316 0 1 0.0000000000000000e+00 2.1312801192477153e+01 5.3556848600347049e+00 1.3975476108473202e+00 0 0 1
+41 0 1 0.0000000000000000e+00 4.2067915958608140e+00 1.0465861152950742e+01 3.5041474453799286e+00 0 0 0
+79 0 1 0.0000000000000000e+00 3.0095461820614196e+00 1.1985927949171982e+01 1.4284766289257931e+00 1 0 0
+45 0 1 0.0000000000000000e+00 7.2379929867655690e+00 9.7297812821570915e+00 3.6642218730850384e+00 0 0 0
+46 0 1 0.0000000000000000e+00 6.1019173466248580e+00 1.1325771282780750e+01 1.2407025840222992e+00 0 0 0
+146 0 1 0.0000000000000000e+00 1.0571132329018893e+01 9.3786967293094747e+00 3.4448729661039623e+00 0 0 0
+153 0 1 0.0000000000000000e+00 9.3086355649316292e+00 1.1011590577221536e+01 1.2920396375179124e+00 0 0 0
+149 0 1 0.0000000000000000e+00 1.2275798518744221e+01 1.1150420441353843e+01 2.3690015381901926e+01 0 0 -1
+150 0 1 0.0000000000000000e+00 1.3647945901568880e+01 9.0164514013433923e+00 3.6538288588737289e+00 0 0 0
+71 0 1 0.0000000000000000e+00 1.4022691306131367e+01 1.2271472637335892e+01 3.5404249436459434e+00 0 0 0
+156 0 1 0.0000000000000000e+00 1.5704741281971289e+01 1.0557858959097414e+01 1.4915127104638419e+00 0 0 0
+134 0 1 0.0000000000000000e+00 1.6788203073110992e+01 8.6179377819643523e+00 3.8605848392352038e+00 0 0 0
+354 0 1 0.0000000000000000e+00 1.7155591102396230e+01 1.1884334296189055e+01 3.6979169763404522e+00 0 0 1
+78 0 1 0.0000000000000000e+00 1.9447626023192072e+01 1.0200320157050690e+01 2.5997899714981676e+00 0 0 0
+24 0 1 0.0000000000000000e+00 2.3543725718913819e+01 9.7060515411947019e+00 3.8209769107212872e+00 -1 0 0
+62 0 1 0.0000000000000000e+00 2.2037427544712493e+01 1.1390980595723907e+01 1.8485060676711826e+00 -1 0 0
+43 0 1 0.0000000000000000e+00 1.4905598981616575e+00 1.2560005189499245e+01 4.1669606806262802e+00 0 0 0
+158 0 1 0.0000000000000000e+00 2.1240405628628043e+00 1.5723635704642700e+01 4.4243118688233913e+00 1 0 0
+42 0 1 0.0000000000000000e+00 4.6368851172401886e+00 1.3536747489999728e+01 3.5515631084556230e+00 0 0 0
+52 0 1 0.0000000000000000e+00 7.6172204362379876e+00 1.2852375405278300e+01 3.3490301469826127e+00 0 0 0
+65 0 1 0.0000000000000000e+00 6.3117723709170059e+00 1.4866474355561438e+01 1.3103758765783242e+00 0 0 0
+170 0 1 0.0000000000000000e+00 7.9703195739872292e+00 1.5943349127042573e+01 3.8176592027448999e+00 0 0 0
+73 0 1 0.0000000000000000e+00 1.0733644011421362e+01 1.2367048235645335e+01 3.6980542169495738e+00 0 0 0
+72 0 1 0.0000000000000000e+00 9.5049459018656215e+00 1.4437790668606876e+01 1.4408902405150243e+00 0 0 0
+91 0 1 0.0000000000000000e+00 1.1161893632067047e+01 1.5551349408896334e+01 3.6849999298961351e+00 0 0 0
+76 0 1 0.0000000000000000e+00 1.2584136621124655e+01 1.4604625583876187e+01 2.3506829592943035e+01 0 0 -1
+174 0 1 0.0000000000000000e+00 1.4437776174460291e+01 1.5093329312610461e+01 3.5138806639120221e+00 0 0 0
+77 0 1 0.0000000000000000e+00 1.6110459228771308e+01 1.3875174684268488e+01 1.3883713026600113e+00 0 0 0
+75 0 1 0.0000000000000000e+00 1.7631220327760666e+01 1.5066721679344980e+01 4.0823779931218223e+00 0 0 0
+59 0 1 0.0000000000000000e+00 1.9813133236669145e+01 1.3431180669759735e+01 2.8499261142075412e+00 0 0 0
+63 0 1 0.0000000000000000e+00 2.2866117225239492e+01 1.4421694425813289e+01 2.1401313888535984e+00 -1 0 0
+181 0 1 0.0000000000000000e+00 2.4256900952119080e+00 1.8738734034519815e+01 4.6604618616102300e+00 0 0 0
+484 0 1 0.0000000000000000e+00 3.5098100609197744e+00 1.8570025596277759e+01 1.4659531019827150e+00 0 0 1
+162 0 1 0.0000000000000000e+00 4.7369419113963431e+00 1.6561769843355265e+01 3.7621139600418121e+00 0 0 0
+64 0 1 0.0000000000000000e+00 5.1701243994629742e+00 1.9725770630123314e+01 3.7673964657892842e+00 0 0 0
+142 0 1 0.0000000000000000e+00 6.6140298785609737e+00 1.7986430238060990e+01 1.5217772340774411e+00 0 0 0
+83 0 1 0.0000000000000000e+00 8.4089941915310451e+00 1.9094412509169068e+01 4.0089719185229242e+00 0 0 0
+70 0 1 0.0000000000000000e+00 1.1644480199279741e+01 1.8862936234132810e+01 3.7907053102889665e+00 0 0 0
+69 0 1 0.0000000000000000e+00 9.6937688054146456e+00 1.7544299870508539e+01 1.5871238512287320e+00 0 0 0
+214 0 1 0.0000000000000000e+00 1.5021179322202071e+01 1.8348994386283529e+01 3.9023104474410326e+00 0 -1 0
+475 0 1 0.0000000000000000e+00 1.6546281524119657e+01 1.6821050501330202e+01 1.9446247514342243e+00 0 0 1
+197 0 1 0.0000000000000000e+00 1.8233834838282640e+01 1.8262067218244205e+01 3.8568629428285557e+00 0 0 0
+74 0 1 0.0000000000000000e+00 2.0452383794790890e+01 1.6075459838899068e+01 3.0243293158725857e+00 0 0 0
+161 0 1 0.0000000000000000e+00 2.3300059929774747e+01 1.7793791592955486e+01 2.0660099490439228e+00 -1 0 0
+496 0 1 0.0000000000000000e+00 2.0905002211911373e+01 1.9628010687222762e+01 3.2398690437707551e+00 0 0 1
+102 0 1 0.0000000000000000e+00 3.0296418972008095e+00 2.1630114255489573e+01 4.6656829208725519e+00 0 -1 0
+5 0 1 0.0000000000000000e+00 4.1050629767183562e+00 2.1620235639271769e+01 1.5815554171706458e+00 0 -1 0
+82 0 1 0.0000000000000000e+00 2.3703287559640522e+01 2.0868183405173262e+01 1.8311974953895049e+00 -1 0 0
+88 0 1 0.0000000000000000e+00 5.8205684928035106e+00 2.2741329530783894e+01 3.8553109685038534e+00 0 0 0
+66 0 1 0.0000000000000000e+00 7.1147895719606966e+00 2.0969038826966361e+01 1.4141916064525695e+00 0 0 0
+10 0 1 0.0000000000000000e+00 1.0950773363830070e+01 2.3467404402785398e+01 1.5406281899854875e+00 0 -1 0
+67 0 1 0.0000000000000000e+00 9.1805665504012577e+00 2.2414127328785057e+01 3.9608809745081666e+00 0 0 0
+472 0 1 0.0000000000000000e+00 1.0175393544686795e+01 2.0576805907504820e+01 1.7816752251812624e+00 0 0 1
+13 0 1 0.0000000000000000e+00 1.2131582001343034e+01 2.1936272809988793e+01 3.9431243369924762e+00 0 -1 0
+94 0 1 0.0000000000000000e+00 1.5492400310179690e+01 2.1512990777991298e+01 3.9975325608588603e+00 0 0 0
+490 0 1 0.0000000000000000e+00 1.6927300977326464e+01 2.0031729502384238e+01 1.8883724180632901e+00 0 0 1
+500 0 1 0.0000000000000000e+00 1.7521982692663151e+01 2.2978826286703672e+01 1.9299190953999761e+00 0 0 1
+100 0 1 0.0000000000000000e+00 1.8615252890601511e+01 2.1283026729513630e+01 4.0586832274525246e+00 0 0 0
+419 0 1 0.0000000000000000e+00 2.1360046907396232e+01 2.2773956501153712e+01 3.1067962754928713e+00 0 -1 1
+19 0 1 0.0000000000000000e+00 2.7183291353913197e+00 2.5149739986367416e+00 7.5487755697730705e+00 1 0 0
+101 0 1 0.0000000000000000e+00 1.4930581304661033e+00 4.6313433944047739e+00 5.6306691003382463e+00 0 0 0
+125 0 1 0.0000000000000000e+00 5.6996619256973569e+00 3.7621244246227721e+00 6.7721936299910173e+00 0 0 0
+87 0 1 0.0000000000000000e+00 7.7478547291014106e+00 1.7540439837594306e+00 6.1101925500926351e+00 0 1 0
+105 0 1 0.0000000000000000e+00 8.4256702953952889e+00 4.8403377456454999e+00 6.0500373224077295e+00 0 0 0
+110 0 1 0.0000000000000000e+00 1.1359984541984348e+01 4.2872067037929646e+00 6.1126569216869031e+00 0 0 0
+192 0 1 0.0000000000000000e+00 9.5331614637814219e+00 2.8127474959498660e+00 8.3922405757302379e+00 0 1 0
+191 0 1 0.0000000000000000e+00 1.0876208091639096e+01 2.3489281240158352e+01 6.1557818382493350e+00 0 0 0
+209 0 1 0.0000000000000000e+00 1.2703222426081689e+01 2.4638552041770829e+00 8.2610496872087218e+00 0 0 0
+115 0 1 0.0000000000000000e+00 1.5884796517797218e+01 2.2939507396826930e+00 8.2067237121908967e+00 0 0 0
+120 0 1 0.0000000000000000e+00 1.4638182500859903e+01 3.9794207466717961e+00 6.1619310276620549e+00 0 0 0
+113 0 1 0.0000000000000000e+00 1.7909766822388825e+01 3.6409843558899118e+00 6.1966685271216848e+00 0 0 0
+217 0 1 0.0000000000000000e+00 1.9342803354398470e+01 1.7229974251689459e+00 8.5599882640541338e+00 0 0 0
+194 0 1 0.0000000000000000e+00 1.9746482406244965e+01 5.0163913020036066e+00 8.1834489950545084e+00 0 1 0
+237 0 1 0.0000000000000000e+00 2.1232234181461003e+01 3.1958104027295349e+00 6.3159628740693670e+00 0 0 0
+4 0 1 0.0000000000000000e+00 2.2927700136931065e+01 4.4396839906808232e+00 8.6158049248741282e+00 -1 0 0
+301 0 1 0.0000000000000000e+00 2.2300428092545438e+01 2.3613549949462520e+01 8.5457032965555246e+00 -1 -1 0
+2 0 1 0.0000000000000000e+00 2.3351550086702623e+01 2.3662377829195599e+01 5.4900429728801887e+00 -1 -1 0
+38 0 1 0.0000000000000000e+00 2.3397482943693757e+00 7.6078326756036407e+00 5.8737970148571881e+00 1 0 0
+106 0 1 0.0000000000000000e+00 3.2649246049283325e+00 5.6973815151622844e+00 8.1125820424431048e+00 0 0 0
+122 0 1 0.0000000000000000e+00 4.1920991271913461e+00 8.8057716470737333e+00 8.2038658955882902e+00 0 0 0
+32 0 1 0.0000000000000000e+00 5.3822932104298440e+00 8.3277885351363707e+00 5.3672599913233396e+00 0 0 0
+108 0 1 0.0000000000000000e+00 6.4919881223553677e+00 6.8488440404593645e+00 7.4552980662562636e+00 0 0 0
+131 0 1 0.0000000000000000e+00 8.8079708494902231e+00 8.0104576735253037e+00 5.8673149148367676e+00 0 0 0
+151 0 1 0.0000000000000000e+00 1.1833701136014042e+01 7.5336563217614660e+00 5.9980653487159392e+00 0 0 0
+232 0 1 0.0000000000000000e+00 1.0159289653691792e+01 6.1047742799331166e+00 8.3117114336400117e+00 0 0 0
+135 0 1 0.0000000000000000e+00 1.4873324058511550e+01 7.2670442769031593e+00 6.1416863242816664e+00 0 0 0
+112 0 1 0.0000000000000000e+00 1.3159993317943018e+01 5.6400763348990886e+00 8.4636748268835831e+00 0 0 0
+139 0 1 0.0000000000000000e+00 1.7782771507485855e+01 6.7417456959062116e+00 6.0835327921663591e+00 0 0 0
+136 0 1 0.0000000000000000e+00 1.6837041570194756e+01 8.6224743923349045e+00 8.2697554737858674e+00 0 0 0
+233 0 1 0.0000000000000000e+00 1.6186474443369910e+01 5.2790095839991897e+00 8.3242092702420010e+00 0 0 0
+118 0 1 0.0000000000000000e+00 1.9859767787161481e+01 8.3063628670108880e+00 8.3400279734588665e+00 0 0 0
+37 0 1 0.0000000000000000e+00 2.1897824133670937e+01 6.4219860288758381e+00 6.6862358698411386e+00 0 0 0
+23 0 1 0.0000000000000000e+00 2.7603818167236827e+00 1.0815127136156901e+01 6.1629100030640505e+00 0 0 0
+141 0 1 0.0000000000000000e+00 4.6144569037367908e+00 1.1977197318006805e+01 8.5718695975012835e+00 0 0 0
+132 0 1 0.0000000000000000e+00 7.1399760799927900e+00 9.6951679383606226e+00 7.5766745988686353e+00 0 0 0
+148 0 1 0.0000000000000000e+00 5.6776175969344091e+00 1.1518495761338709e+01 5.8330560497569852e+00 0 0 0
+126 0 1 0.0000000000000000e+00 8.9644779001455781e+00 1.1185480734727138e+01 5.9034223500172915e+00 0 0 0
+147 0 1 0.0000000000000000e+00 1.0733647203669321e+01 9.3649143202502163e+00 8.3109390067801403e+00 0 0 0
+152 0 1 0.0000000000000000e+00 1.2362208002565069e+01 1.0612234121161945e+01 5.8017131097650001e+00 0 0 0
+230 0 1 0.0000000000000000e+00 1.3611226166435964e+01 9.0098167544563452e+00 8.2673507798272787e+00 0 0 0
+173 0 1 0.0000000000000000e+00 1.5463012826125500e+01 1.0532974307504498e+01 5.8437535319719958e+00 0 0 0
+196 0 1 0.0000000000000000e+00 1.3976283759595093e+01 1.2041868499573985e+01 8.4028213690747702e+00 0 0 0
+137 0 1 0.0000000000000000e+00 1.8427726770108144e+01 9.8757618133182614e+00 6.1255774208109308e+00 0 0 0
+179 0 1 0.0000000000000000e+00 1.7493172737442464e+01 1.1761848019255334e+01 8.2772974587814581e+00 0 0 0
+60 0 1 0.0000000000000000e+00 2.1116066909596981e+01 1.1375786373898160e+01 5.1541773039274688e+00 0 0 0
+157 0 1 0.0000000000000000e+00 2.2623870885280908e+01 9.5070754125350572e+00 7.0027516865798880e+00 0 0 0
+273 0 1 0.0000000000000000e+00 2.0567835326321855e+01 1.1278516337286726e+01 8.2153436280933505e+00 0 0 0
+163 0 1 0.0000000000000000e+00 2.3060017979860987e+01 1.2554946879385733e+01 7.2250133460460013e+00 -1 0 0
+143 0 1 0.0000000000000000e+00 3.2886908789793199e+00 1.3755807244672802e+01 6.3276495519989844e+00 0 0 0
+48 0 1 0.0000000000000000e+00 6.1974116048857120e+00 1.4869937034126693e+01 5.8327185489755546e+00 0 0 0
+263 0 1 0.0000000000000000e+00 7.3905346345820355e+00 1.3075740672555472e+01 8.0294162797173758e+00 0 0 0
+249 0 1 0.0000000000000000e+00 1.0816010406507326e+01 1.2459330722909714e+01 8.1875619376552535e+00 0 0 0
+172 0 1 0.0000000000000000e+00 9.4632401168736173e+00 1.4339013951728054e+01 5.7524360100715120e+00 0 0 0
+246 0 1 0.0000000000000000e+00 1.1445937728138391e+01 1.5597061867043584e+01 8.3521092508745767e+00 0 0 0
+250 0 1 0.0000000000000000e+00 1.2356744711383124e+01 1.3730502486498956e+01 6.0094850364126415e+00 0 0 0
+278 0 1 0.0000000000000000e+00 1.4335479823611502e+01 1.5275803206482106e+01 8.3427341204894852e+00 0 0 0
+40 0 1 0.0000000000000000e+00 1.5569932166060720e+01 1.3718689267578334e+01 6.0688082418431710e+00 0 0 0
+138 0 1 0.0000000000000000e+00 1.9011157610276264e+01 1.3124941168738411e+01 6.0708061827500597e+00 0 0 0
+277 0 1 0.0000000000000000e+00 1.7771902440300295e+01 1.4795521599646776e+01 8.5473614059089442e+00 0 0 0
+99 0 1 0.0000000000000000e+00 2.3600040285071621e+01 1.5906128496653148e+01 7.4975664660630290e+00 0 0 0
+154 0 1 0.0000000000000000e+00 2.1956797301224960e+01 1.4563771906574297e+01 5.1979375201773443e+00 0 0 0
+140 0 1 0.0000000000000000e+00 2.0990727263069964e+01 1.4626012162656640e+01 8.2675064009518469e+00 0 0 0
+68 0 1 0.0000000000000000e+00 3.9571539548331933e+00 1.7018572496119766e+01 6.7071084669003609e+00 0 0 0
+164 0 1 0.0000000000000000e+00 1.5553760037547903e+00 1.8860437670113186e+01 7.5721282113381019e+00 0 0 0
+168 0 1 0.0000000000000000e+00 8.0735351311497858e+00 1.6333829166864547e+01 8.0950076155473418e+00 0 0 0
+165 0 1 0.0000000000000000e+00 6.6340335170684117e+00 1.7961634798422374e+01 6.0396569212922060e+00 0 0 0
+266 0 1 0.0000000000000000e+00 8.4783915578095019e+00 1.9292582519931599e+01 8.1843708166603477e+00 0 0 0
+269 0 1 0.0000000000000000e+00 1.0005722473535037e+01 1.7434946337876831e+01 6.0369732784277597e+00 0 0 0
+270 0 1 0.0000000000000000e+00 1.1656863109039321e+01 1.8937956858641591e+01 8.3190532225887495e+00 0 0 0
+176 0 1 0.0000000000000000e+00 1.2993956906248259e+01 1.6833782158177044e+01 5.8167455229951415e+00 0 0 0
+291 0 1 0.0000000000000000e+00 1.4981956224849389e+01 1.8669046408908734e+01 8.2944042523373973e+00 0 0 0
+293 0 1 0.0000000000000000e+00 1.6300258615124996e+01 1.6626594813511872e+01 6.1725421171059649e+00 0 0 0
+80 0 1 0.0000000000000000e+00 1.9582677237868253e+01 1.6336468813672077e+01 6.1164939903443676e+00 0 0 0
+95 0 1 0.0000000000000000e+00 1.8206755195736633e+01 1.7883194171139451e+01 8.4531694235547690e+00 0 0 0
+190 0 1 0.0000000000000000e+00 1.6545844491892666e+01 1.9642342417438130e+01 6.1335747596720802e+00 0 0 0
+198 0 1 0.0000000000000000e+00 1.9988128595493308e+01 1.9475771135974391e+01 6.2511853410032518e+00 0 0 0
+98 0 1 0.0000000000000000e+00 2.2236876368766374e+01 1.7419106517816360e+01 5.1734091332843883e+00 0 0 0
+180 0 1 0.0000000000000000e+00 2.1322778508450895e+01 1.7707383587838699e+01 8.2604700250779217e+00 0 0 0
+166 0 1 0.0000000000000000e+00 4.3404636012374267e+00 2.0064435435136389e+01 6.9931871509871879e+00 0 0 0
+298 0 1 0.0000000000000000e+00 2.0424560054754339e+00 2.1885139153171153e+01 7.6795337302919693e+00 1 0 0
+103 0 1 0.0000000000000000e+00 4.9055736282730296e+00 2.3222161485144277e+01 6.6359013611197843e+00 0 -1 0
+169 0 1 0.0000000000000000e+00 7.3389040080857040e+00 2.1239615586893123e+01 6.1316527654991821e+00 0 0 0
+189 0 1 0.0000000000000000e+00 1.0418077274933015e+01 2.0547184958698253e+01 5.8661192156967363e+00 0 0 0
+286 0 1 0.0000000000000000e+00 9.1897256417785709e+00 2.2431701105779524e+01 8.2448530919376672e+00 0 0 0
+292 0 1 0.0000000000000000e+00 1.2396137131996433e+01 2.1967046810381106e+01 8.1284436474063462e+00 0 0 0
+193 0 1 0.0000000000000000e+00 1.3433411070557469e+01 2.0075648495296875e+01 5.8910337783469444e+00 0 0 0
+96 0 1 0.0000000000000000e+00 1.4290632729504575e+01 2.3502583423939306e+01 6.1091351270253336e+00 0 0 0
+17 0 1 0.0000000000000000e+00 1.5564641615050308e+01 2.1495817540242975e+01 8.3383234215733619e+00 0 -1 0
+200 0 1 0.0000000000000000e+00 1.7376681056359566e+01 2.3068258877071692e+01 6.2292780687341534e+00 0 0 0
+199 0 1 0.0000000000000000e+00 1.8700193165269610e+01 2.1021857418944826e+01 8.6010708295701335e+00 0 0 0
+84 0 1 0.0000000000000000e+00 2.2786029606067594e+01 2.0738703347408951e+01 5.3113391700228441e+00 -1 0 0
+182 0 1 0.0000000000000000e+00 2.0450238117908953e+01 2.2471373690444096e+01 6.2155927406688960e+00 -1 0 0
+381 0 1 0.0000000000000000e+00 2.1878670608697711e+01 2.0546380033356193e+01 8.4573016666275969e+00 -1 0 0
+124 0 1 0.0000000000000000e+00 4.5817983348446631e+00 3.7539289085527763e+00 9.8325268072853085e+00 0 0 0
+218 0 1 0.0000000000000000e+00 1.7449415436469269e+00 2.6588785045134706e+00 1.0625159969996719e+01 1 0 0
+187 0 1 0.0000000000000000e+00 6.8881326094987205e+00 1.7208041942655377e+00 9.0634080095311873e+00 0 1 0
+203 0 1 0.0000000000000000e+00 5.6741365050535109e+00 1.9391612229124058e+00 1.1877772818173790e+01 0 0 0
+206 0 1 0.0000000000000000e+00 7.3384282592340533e+00 4.6779200699874650e+00 9.5271513814357309e+00 0 0 0
+188 0 1 0.0000000000000000e+00 8.7122888408020156e+00 2.9997991542419387e+00 1.1337557226650581e+01 0 1 0
+227 0 1 0.0000000000000000e+00 1.1365464508686326e+01 4.5857298709082173e+00 1.0487613423133739e+01 0 0 0
+211 0 1 0.0000000000000000e+00 1.4642972512053262e+01 3.9018027187403663e+00 1.0557889250175222e+01 0 0 0
+334 0 1 0.0000000000000000e+00 1.7647204911753548e+01 3.5458738739392750e+00 1.0502971460019396e+01 0 0 0
+119 0 1 0.0000000000000000e+00 2.0994085465621517e+01 3.0406126560357758e+00 1.0579922987286961e+01 0 0 0
+224 0 1 0.0000000000000000e+00 2.2658062231323708e+00 5.5297381161373078e+00 1.0893006775456504e+01 0 0 0
+225 0 1 0.0000000000000000e+00 5.3029146849557405e+00 6.8809354468758404e+00 1.0486576958824839e+01 0 0 0
+204 0 1 0.0000000000000000e+00 6.3633850701473200e+00 4.7852753293934729e+00 1.2295707584185163e+01 0 0 0
+129 0 1 0.0000000000000000e+00 7.9918315498641821e+00 8.0283651727266907e+00 9.7867100443921480e+00 0 0 0
+228 0 1 0.0000000000000000e+00 9.0962414664539288e+00 6.1730255484291332e+00 1.1850262574458140e+01 0 0 0
+229 0 1 0.0000000000000000e+00 1.1780814580695358e+01 7.5656028827037956e+00 1.0619809875330487e+01 0 0 0
+235 0 1 0.0000000000000000e+00 1.4819015387871127e+01 7.2095274544688790e+00 1.0464414586058671e+01 0 0 0
+240 0 1 0.0000000000000000e+00 1.8124714571258565e+01 6.7517480082688959e+00 1.0316994867150543e+01 0 0 0
+221 0 1 0.0000000000000000e+00 1.2242648887458358e+00 7.5757109714029305e+00 8.9819675995906127e+00 0 0 0
+20 0 1 0.0000000000000000e+00 2.1499055010836770e+01 6.4682591466732031e+00 1.0450794248475654e+01 0 0 0
+241 0 1 0.0000000000000000e+00 2.7211668472554607e+00 8.7090399512347538e+00 1.1181642964224318e+01 0 0 0
+121 0 1 0.0000000000000000e+00 1.7907010997823409e+00 1.0664187268496665e+01 9.2817940281738309e+00 0 0 0
+145 0 1 0.0000000000000000e+00 3.6937216829741257e+00 1.2004558058321768e+01 1.1440349934082343e+01 0 0 0
+128 0 1 0.0000000000000000e+00 5.8422694927221874e+00 1.0063215738310490e+01 1.0563226243616272e+01 0 0 0
+47 0 1 0.0000000000000000e+00 8.6603062372441677e+00 1.1079613193627100e+01 9.9265873919385257e+00 0 0 0
+226 0 1 0.0000000000000000e+00 9.5479001520889177e+00 9.4343159134793346e+00 1.2185010275256216e+01 0 0 0
+231 0 1 0.0000000000000000e+00 1.2127113181186177e+01 1.0483576383993872e+01 1.0699826979832412e+01 0 0 0
+234 0 1 0.0000000000000000e+00 1.5270897775076518e+01 1.0215322462580259e+01 1.0797500114240792e+01 0 0 0
+238 0 1 0.0000000000000000e+00 1.8612251531182089e+01 9.9935520959521522e+00 1.0730476814732064e+01 0 0 0
+123 0 1 0.0000000000000000e+00 2.1652513387563005e+01 9.5775873765909676e+00 1.0502047914683372e+01 -1 0 0
+159 0 1 0.0000000000000000e+00 2.2228510955781005e+01 1.2629864135073081e+01 1.0567238802535547e+01 0 0 0
+261 0 1 0.0000000000000000e+00 2.2745403874271464e+00 1.3806765344773384e+01 9.3219211675770204e+00 0 0 0
+144 0 1 0.0000000000000000e+00 4.1492192198390523e+00 1.4983678068831281e+01 1.1704620349178107e+01 0 0 0
+258 0 1 0.0000000000000000e+00 5.3805335828089866e+00 1.5093035563829865e+01 8.7134966192076941e+00 1 0 0
+252 0 1 0.0000000000000000e+00 6.3552922499465812e+00 1.3287192873896931e+01 1.0924476564500019e+01 0 0 0
+285 0 1 0.0000000000000000e+00 7.0220907373380212e+00 1.6329710716490446e+01 1.1076814754075762e+01 0 0 0
+265 0 1 0.0000000000000000e+00 1.0534774955543348e+01 1.2552954165598841e+01 1.2265570870113777e+01 0 0 0
+167 0 1 0.0000000000000000e+00 9.1970654333819581e+00 1.4183184606363602e+01 1.0091929461571766e+01 0 0 0
+393 0 1 0.0000000000000000e+00 1.0899971182133037e+01 1.5725944581243636e+01 1.2330722966147599e+01 0 0 0
+171 0 1 0.0000000000000000e+00 1.2919425610219212e+01 1.3944707690921051e+01 1.0614340674372389e+01 0 0 0
+160 0 1 0.0000000000000000e+00 1.6129423426237430e+01 1.3276132159253219e+01 1.0538799139202288e+01 0 0 0
+155 0 1 0.0000000000000000e+00 1.9091840870901258e+01 1.3026033064968519e+01 1.0700898471805548e+01 0 0 0
+378 0 1 0.0000000000000000e+00 1.9475024643374155e+01 1.6057454267678452e+01 1.0739468980400082e+01 0 0 0
+283 0 1 0.0000000000000000e+00 2.2662910036835235e+01 1.5695237264887465e+01 1.0757723874296397e+01 -1 0 0
+264 0 1 0.0000000000000000e+00 3.0486805273601663e+00 1.6929901233640237e+01 9.7454848918696104e+00 0 0 0
+184 0 1 0.0000000000000000e+00 4.8458318004908820e+00 1.8444587655047677e+01 1.2110451707118976e+01 0 0 0
+262 0 1 0.0000000000000000e+00 5.7660734560744338e+00 1.8323530137213361e+01 9.0748924580149026e+00 0 0 0
+268 0 1 0.0000000000000000e+00 7.7360223524392611e+00 1.9479765046861957e+01 1.1262263161535577e+01 0 0 0
+365 0 1 0.0000000000000000e+00 9.8062767948068377e+00 1.7562075254541433e+01 1.0361217142870318e+01 0 0 0
+294 0 1 0.0000000000000000e+00 1.3216821944170929e+01 1.7317900637234153e+01 1.0483298585525946e+01 0 0 0
+274 0 1 0.0000000000000000e+00 1.6334896420142488e+01 1.6432499825995706e+01 1.0525706530470885e+01 0 0 0
+394 0 1 0.0000000000000000e+00 1.6823622167196930e+01 1.9593999504262904e+01 1.0461173973420211e+01 0 0 0
+281 0 1 0.0000000000000000e+00 2.0029042131614666e+01 1.9205771971426643e+01 1.0663559170573910e+01 -1 0 0
+299 0 1 0.0000000000000000e+00 2.3144514142138405e+01 1.8695282363090513e+01 1.0481446837510880e+01 0 0 0
+183 0 1 0.0000000000000000e+00 3.4052767964345882e+00 2.0323372941171158e+01 1.0013066099234882e+01 0 0 0
+104 0 1 0.0000000000000000e+00 3.8461984991654576e+00 2.3298898007490294e+01 9.8173406099095164e+00 0 -1 0
+382 0 1 0.0000000000000000e+00 2.3538634446853401e+01 2.2140284196679559e+01 1.0889161283708301e+01 -1 0 0
+363 0 1 0.0000000000000000e+00 5.2936584349396263e+00 2.1447405635567954e+01 1.2152789564057324e+01 0 0 0
+282 0 1 0.0000000000000000e+00 6.3834524677594704e+00 2.1309015758180628e+01 9.1468590587980394e+00 0 0 0
+288 0 1 0.0000000000000000e+00 8.0945792825272882e+00 2.2536402480037552e+01 1.1270013074397847e+01 0 0 0
+290 0 1 0.0000000000000000e+00 1.1087301747341961e+01 2.3644795087044514e+01 1.0455823853497769e+01 0 0 0
+289 0 1 0.0000000000000000e+00 1.0441881436161097e+01 2.0567848448489883e+01 1.0578117641356158e+01 0 0 0
+272 0 1 0.0000000000000000e+00 1.3527719212045218e+01 2.0285412187803999e+01 1.0721830511252493e+01 0 0 0
+390 0 1 0.0000000000000000e+00 1.4157646200638050e+01 2.3329322525896586e+01 1.0465871850010965e+01 0 0 0
+210 0 1 0.0000000000000000e+00 1.7303550254531721e+01 2.3027542789555774e+01 1.0910447882243952e+01 0 -1 0
+201 0 1 0.0000000000000000e+00 2.0499989062736816e+01 2.2553522565194896e+01 1.0838349053479867e+01 -1 -1 0
+321 0 1 0.0000000000000000e+00 3.4422722779226791e+00 3.7401842455659415e+00 1.3125149288314773e+01 0 0 0
+304 0 1 0.0000000000000000e+00 4.8198934034189813e+00 1.7643487607008259e+00 1.5257063013668722e+01 0 0 0
+324 0 1 0.0000000000000000e+00 1.5140006273377509e+00 2.5078576355710105e+00 1.4951289944924950e+01 0 0 0
+305 0 1 0.0000000000000000e+00 7.4721384922377645e+00 3.1060130249408431e+00 1.4468259772434530e+01 0 0 0
+202 0 1 0.0000000000000000e+00 1.0473494584721877e+01 4.4538024665346061e+00 1.3832406112479374e+01 0 0 0
+307 0 1 0.0000000000000000e+00 1.1787980478656099e+01 2.5433704385202200e+00 1.5665653875139787e+01 0 0 0
+207 0 1 0.0000000000000000e+00 1.2751259954853012e+01 2.4427002589267013e+00 1.2642539912288722e+01 0 0 0
+333 0 1 0.0000000000000000e+00 1.4702347666709521e+01 3.7322532704210207e+00 1.5173402281167652e+01 0 0 0
+213 0 1 0.0000000000000000e+00 1.5829670946470085e+01 2.1068359885535290e+00 1.2928325557741132e+01 0 0 0
+314 0 1 0.0000000000000000e+00 1.8985815692552833e+01 1.5367746945271654e+00 1.2945424009435659e+01 0 0 0
+336 0 1 0.0000000000000000e+00 1.9546776172986426e+01 4.8790035503176163e+00 1.2624839287283800e+01 0 0 0
+335 0 1 0.0000000000000000e+00 1.7750713832714652e+01 3.3267767217365614e+00 1.5022002084117817e+01 0 0 0
+337 0 1 0.0000000000000000e+00 2.2803668595658067e+01 4.3460308526050184e+00 1.2811653637509647e+01 0 0 0
+318 0 1 0.0000000000000000e+00 2.0880188838929357e+01 2.7519405848942267e+00 1.5068109581866368e+01 0 0 0
+243 0 1 0.0000000000000000e+00 4.0400197608485371e+00 7.0517028503287378e+00 1.3346798760541642e+01 0 0 0
+322 0 1 0.0000000000000000e+00 2.0402828800635131e+00 5.5258785055719075e+00 1.5334363678021955e+01 0 0 0
+339 0 1 0.0000000000000000e+00 2.5616317906212158e+00 8.6696619720905979e+00 1.5372030519238706e+01 1 0 0
+127 0 1 0.0000000000000000e+00 6.9058371416355913e+00 8.1065253095604319e+00 1.2790016481588069e+01 0 0 0
+222 0 1 0.0000000000000000e+00 5.2632654156551864e+00 5.0331050983912364e+00 1.5422406500228277e+01 0 0 0
+302 0 1 0.0000000000000000e+00 8.1025356782690121e+00 6.0378947921271529e+00 1.4832417572450506e+01 0 0 0
+328 0 1 0.0000000000000000e+00 5.7548443019164059e+00 8.2163332337196948e+00 1.5808603035824570e+01 0 0 0
+251 0 1 0.0000000000000000e+00 1.0725837647096853e+01 7.4689165437712566e+00 1.4004402606367393e+01 0 0 0
+326 0 1 0.0000000000000000e+00 1.3561624743525233e+01 5.3734605250857062e+00 1.3019043619467373e+01 0 0 0
+355 0 1 0.0000000000000000e+00 1.5185016965082470e+01 6.7026377703720694e+00 1.5289539280591701e+01 0 0 0
+330 0 1 0.0000000000000000e+00 1.3719761390800544e+01 8.5080847754374993e+00 1.3091883562679284e+01 0 0 0
+216 0 1 0.0000000000000000e+00 1.6563050793658228e+01 5.1658796905717468e+00 1.3010442718867697e+01 0 0 0
+212 0 1 0.0000000000000000e+00 1.6733716663329332e+01 8.3369079528081329e+00 1.2751366693912521e+01 0 0 0
+279 0 1 0.0000000000000000e+00 1.8202428350949965e+01 6.5660349514780663e+00 1.5236313134311423e+01 0 0 0
+353 0 1 0.0000000000000000e+00 2.0123245744280041e+01 7.9904078381154253e+00 1.2667533676757097e+01 0 0 0
+259 0 1 0.0000000000000000e+00 2.3157737334214232e+01 7.2069953281292225e+00 1.2920548942840851e+01 0 0 0
+458 0 1 0.0000000000000000e+00 2.1306216599056278e+01 5.8397669254447351e+00 1.5157193866982169e+01 0 0 0
+341 0 1 0.0000000000000000e+00 2.8558801098040005e+00 1.1888525318023033e+01 1.5335922623323258e+01 0 0 0
+323 0 1 0.0000000000000000e+00 4.7064560342304302e+00 1.0022607518214867e+01 1.3409971894115893e+01 0 0 0
+242 0 1 0.0000000000000000e+00 1.3141947684495534e+00 1.0307654045126515e+01 1.3125731479598281e+01 0 0 0
+345 0 1 0.0000000000000000e+00 7.4577475633856727e+00 1.1525154696480200e+01 1.3031202360291525e+01 0 0 0
+428 0 1 0.0000000000000000e+00 6.5214618442018848e+00 1.1498631657245525e+01 1.5938513795746925e+01 0 0 0
+208 0 1 0.0000000000000000e+00 8.6249890971191121e+00 9.2996365001230714e+00 1.5038878113219186e+01 0 0 0
+253 0 1 0.0000000000000000e+00 1.1548212076315542e+01 1.0325662180959439e+01 1.4283217163353132e+01 0 0 0
+349 0 1 0.0000000000000000e+00 1.4068854233643664e+01 1.2098647876975607e+01 1.3043794494271497e+01 0 0 0
+260 0 1 0.0000000000000000e+00 1.5705647262417290e+01 9.7148069163403488e+00 1.5360344147627695e+01 0 0 0
+255 0 1 0.0000000000000000e+00 1.7235126605204385e+01 1.1345109691794175e+01 1.3090392950837201e+01 0 0 0
+236 0 1 0.0000000000000000e+00 1.8842897229923352e+01 9.6826831813553209e+00 1.5118278031101898e+01 0 0 0
+254 0 1 0.0000000000000000e+00 1.9118818304269034e+01 1.2669846601492432e+01 1.5528803813540982e+01 0 0 0
+244 0 1 0.0000000000000000e+00 2.0672685036062468e+01 1.0935050755311828e+01 1.3171099818061572e+01 -1 0 0
+379 0 1 0.0000000000000000e+00 2.2115710678923257e+01 9.0631063438945354e+00 1.5277002085759330e+01 0 0 0
+344 0 1 0.0000000000000000e+00 2.2373576589219070e+01 1.2265704854540939e+01 1.5154839746291739e+01 -1 0 0
+377 0 1 0.0000000000000000e+00 1.5496791497493749e+00 1.3656354081550663e+01 1.3087762873586520e+01 1 0 0
+364 0 1 0.0000000000000000e+00 3.3040383636316757e+00 1.4986752193324042e+01 1.5263875428452614e+01 0 0 0
+267 0 1 0.0000000000000000e+00 5.2595895125542480e+00 1.3467507468000385e+01 1.4020142801683775e+01 0 0 0
+248 0 1 0.0000000000000000e+00 8.1833782552887193e+00 1.4460572305736775e+01 1.3289867436367517e+01 0 0 0
+369 0 1 0.0000000000000000e+00 7.2515677008093444e+00 1.4447755810866974e+01 1.6136576234581469e+01 0 0 0
+245 0 1 0.0000000000000000e+00 9.5183836882021478e+00 1.2371570167803613e+01 1.5244647003306673e+01 0 0 0
+177 0 1 0.0000000000000000e+00 1.2275434014382048e+01 1.3912820242434215e+01 1.4364108874012793e+01 0 0 0
+366 0 1 0.0000000000000000e+00 1.0111809553113327e+01 1.5773369678852371e+01 1.5493861993794836e+01 0 0 0
+295 0 1 0.0000000000000000e+00 1.4576834956905104e+01 1.5061498061017442e+01 1.2676901756395196e+01 0 0 0
+175 0 1 0.0000000000000000e+00 1.6069941492252870e+01 1.2926509131229841e+01 1.5401297557824973e+01 0 0 0
+257 0 1 0.0000000000000000e+00 1.7729886714637466e+01 1.4500872436693312e+01 1.3043797943591885e+01 0 0 0
+397 0 1 0.0000000000000000e+00 1.9344867806540329e+01 1.6066330998676673e+01 1.5105275100756904e+01 0 0 0
+297 0 1 0.0000000000000000e+00 2.1031595678032936e+01 1.4230990792620791e+01 1.2983446582385703e+01 0 0 0
+358 0 1 0.0000000000000000e+00 2.2648461910890909e+01 1.5413430372692208e+01 1.5215679305995264e+01 0 0 0
+399 0 1 0.0000000000000000e+00 2.0400900828877484e+00 1.6831583862623035e+01 1.3072878917347943e+01 1 0 0
+468 0 1 0.0000000000000000e+00 3.7857534757067728e+00 1.8324335442062917e+01 1.5139461944857032e+01 0 0 0
+401 0 1 0.0000000000000000e+00 2.4891890725985717e+00 1.9906899660624383e+01 1.2856413465667679e+01 0 -1 0
+361 0 1 0.0000000000000000e+00 5.9628280864112986e+00 1.6290239526463793e+01 1.4069665835865635e+01 0 0 0
+287 0 1 0.0000000000000000e+00 6.6178282016176802e+00 1.9495999859011647e+01 1.4500487825359109e+01 0 0 0
+371 0 1 0.0000000000000000e+00 7.9844211526019482e+00 1.7624514307068708e+01 1.6712057964814850e+01 0 0 0
+370 0 1 0.0000000000000000e+00 8.6206288536323115e+00 1.7559313669535690e+01 1.3649033455712610e+01 0 0 0
+276 0 1 0.0000000000000000e+00 1.1711676024315798e+01 1.8825443849633565e+01 1.2693569103050036e+01 0 0 0
+392 0 1 0.0000000000000000e+00 1.0594963944092802e+01 1.8954008260647392e+01 1.5638619271445830e+01 0 0 0
+280 0 1 0.0000000000000000e+00 1.6303081592929047e+01 1.6645626620539634e+01 1.5104175974735709e+01 0 0 0
+473 0 1 0.0000000000000000e+00 1.2955156671868126e+01 1.6879699020239510e+01 1.4699824413488354e+01 0 0 0
+215 0 1 0.0000000000000000e+00 1.4904122895482782e+01 1.8163497106281483e+01 1.2873695250947852e+01 0 -1 0
+315 0 1 0.0000000000000000e+00 1.3411401956391794e+01 2.0137416245279098e+01 1.4920264307939920e+01 0 -1 0
+317 0 1 0.0000000000000000e+00 1.8012836419797431e+01 1.7800716306446063e+01 1.2891200285842585e+01 0 -1 0
+220 0 1 0.0000000000000000e+00 1.6781654799013172e+01 1.9721259699743285e+01 1.4839015382484988e+01 0 -1 0
+284 0 1 0.0000000000000000e+00 1.9865478419017165e+01 1.9285012118494471e+01 1.4981972833073158e+01 -1 0 0
+362 0 1 0.0000000000000000e+00 2.1355519743075170e+01 1.7460312031659370e+01 1.2935969002867225e+01 -1 0 0
+385 0 1 0.0000000000000000e+00 2.3131271075965238e+01 1.8762776353212487e+01 1.5061903006059699e+01 -1 0 0
+223 0 1 0.0000000000000000e+00 2.8914027147417904e+00 2.3281122268675382e+01 1.2926686094610096e+01 0 -1 0
+384 0 1 0.0000000000000000e+00 4.1076824592729029e+00 2.1238775618157817e+01 1.5253127569479584e+01 0 0 0
+386 0 1 0.0000000000000000e+00 7.0712350873366612e+00 2.2524655702473254e+01 1.4352046626406697e+01 0 0 0
+205 0 1 0.0000000000000000e+00 9.7602144542102280e+00 1.3328487545660082e+00 1.3725600006085786e+01 0 0 0
+387 0 1 0.0000000000000000e+00 9.3467547040695322e+00 2.0648135372860544e+01 1.3433353402650027e+01 0 0 0
+395 0 1 0.0000000000000000e+00 1.1076424676981000e+01 2.2006374459220375e+01 1.5964023072616111e+01 0 0 0
+309 0 1 0.0000000000000000e+00 1.1985534993861302e+01 2.2180183848533112e+01 1.2892618122814023e+01 0 -1 0
+430 0 1 0.0000000000000000e+00 1.4128400969165918e+01 2.3225995094738067e+01 1.4908192561475223e+01 0 -1 0
+311 0 1 0.0000000000000000e+00 1.5354757490613077e+01 2.1299099174006706e+01 1.2601809591221505e+01 0 -1 0
+195 0 1 0.0000000000000000e+00 1.8605932121627866e+01 2.0945890739868766e+01 1.2675198985125041e+01 0 0 0
+296 0 1 0.0000000000000000e+00 1.7129845702686097e+01 2.2870977526497562e+01 1.5129552624753686e+01 0 0 0
+437 0 1 0.0000000000000000e+00 2.3578585461938765e+01 2.1937915629366806e+01 1.5202310727946820e+01 0 -1 0
+239 0 1 0.0000000000000000e+00 2.2308436770233207e+01 1.3128643546807837e+00 1.2785937969752096e+01 0 0 0
+303 0 1 0.0000000000000000e+00 2.1783159959802362e+01 2.0523641472560747e+01 1.2795146034489076e+01 -1 -1 0
+219 0 1 0.0000000000000000e+00 2.0153577436848011e+01 2.2304130548274337e+01 1.5116836675730292e+01 0 -1 0
+422 0 1 0.0000000000000000e+00 3.2176161441306146e+00 3.7965815520916384e+00 1.7474363775916238e+01 0 0 0
+6 0 1 0.0000000000000000e+00 4.6402423414092810e+00 1.9089979691766659e+00 1.9679263982081295e+01 0 0 -1
+483 0 1 0.0000000000000000e+00 1.5282791722276892e+00 2.1702311825314156e+00 1.9626557885236188e+01 0 1 0
+402 0 1 0.0000000000000000e+00 6.6909495145153173e+00 3.2336526690026655e+00 1.7615825385371032e+01 0 0 0
+466 0 1 0.0000000000000000e+00 7.8136488984347672e+00 1.4817680537164515e+00 1.9775467891139925e+01 0 1 0
+90 0 1 0.0000000000000000e+00 8.6708010578879247e+00 4.4958215798473518e+00 1.9842379940613974e+01 0 1 -1
+492 0 1 0.0000000000000000e+00 9.4922766475960287e+00 4.3215944097250922e+00 1.6834409259127959e+01 0 1 0
+310 0 1 0.0000000000000000e+00 1.0845516307628948e+01 2.3694351075222757e+00 1.8960482221104556e+01 0 0 0
+388 0 1 0.0000000000000000e+00 8.7740243310675936e+00 1.4817094532593913e+00 1.6609884075518536e+01 0 1 0
+410 0 1 0.0000000000000000e+00 1.3613766245656175e+01 3.6308367182403920e+00 1.8166520857583492e+01 0 0 0
+313 0 1 0.0000000000000000e+00 1.5879533855331793e+01 1.8290626319795773e+00 1.7344809447239207e+01 0 0 0
+340 0 1 0.0000000000000000e+00 1.6605948558788860e+01 4.8248880412912509e+00 1.7646678479825390e+01 0 0 0
+415 0 1 0.0000000000000000e+00 1.7917063836854183e+01 2.8037424197825729e+00 1.9627849837086572e+01 0 0 0
+357 0 1 0.0000000000000000e+00 1.9704425312217872e+01 4.5367840187329715e+00 1.7384513146594024e+01 0 0 0
+300 0 1 0.0000000000000000e+00 1.9123375260590066e+01 1.3820032378681844e+00 1.7304622577545658e+01 0 1 0
+438 0 1 0.0000000000000000e+00 2.2707016013246808e+01 3.9806986268051183e+00 1.7374245737455531e+01 0 0 0
+320 0 1 0.0000000000000000e+00 2.0926974901749965e+01 2.6725149130936074e+00 1.9455323147820515e+01 0 0 0
+457 0 1 0.0000000000000000e+00 3.9011321877600582e+00 6.7608779276007791e+00 1.7454515221098255e+01 1 0 0
+439 0 1 0.0000000000000000e+00 2.1442126937752937e+00 5.1784987783711482e+00 1.9810833157330570e+01 1 0 0
+424 0 1 0.0000000000000000e+00 2.5102168766407900e+00 8.3352095110067506e+00 1.9729995931444449e+01 0 0 0
+427 0 1 0.0000000000000000e+00 5.2191327580131066e+00 4.8167092389247763e+00 1.9718017258150333e+01 0 0 0
+312 0 1 0.0000000000000000e+00 7.0672729688486644e+00 6.2469683467363426e+00 1.7838099578230100e+01 0 0 0
+306 0 1 0.0000000000000000e+00 1.2386482696425947e+01 5.4872890735799906e+00 1.5866403245673844e+01 0 0 0
+429 0 1 0.0000000000000000e+00 1.1472689349467498e+01 5.4391870887988096e+00 1.9076795173489153e+01 0 0 0
+329 0 1 0.0000000000000000e+00 1.0078132747472893e+01 7.2819761651104740e+00 1.7016791724784781e+01 0 0 0
+30 0 1 0.0000000000000000e+00 1.1933961185256988e+01 8.6880954152919649e+00 1.9149354532449721e+01 0 0 -1
+332 0 1 0.0000000000000000e+00 1.2887922385162465e+01 8.4021264067408374e+00 1.6195813980854357e+01 0 0 0
+433 0 1 0.0000000000000000e+00 1.4359827115175513e+01 6.8481218051265520e+00 1.8325451602685419e+01 0 0 0
+373 0 1 0.0000000000000000e+00 1.7161460162544323e+01 7.9157795680611125e+00 1.7492188298948136e+01 0 0 0
+338 0 1 0.0000000000000000e+00 1.8297046223211957e+01 6.0536172837437121e+00 1.9742113904962189e+01 0 0 0
+455 0 1 0.0000000000000000e+00 2.0351493006331623e+01 7.5792560508672731e+00 1.7343390827090190e+01 0 0 0
+459 0 1 0.0000000000000000e+00 2.3185094385868808e+01 7.2602241951609852e+00 1.7340573849373101e+01 0 0 0
+359 0 1 0.0000000000000000e+00 2.1280307497942125e+01 5.5824533380654415e+00 1.9623124582283246e+01 0 0 0
+343 0 1 0.0000000000000000e+00 4.4408890064071977e+00 1.0262697212458283e+01 1.7651202267197398e+01 0 0 0
+347 0 1 0.0000000000000000e+00 2.8306756567138169e+00 1.1818240912546901e+01 1.9757309896363253e+01 0 0 0
+325 0 1 0.0000000000000000e+00 7.6800036660103954e+00 9.6329589164455047e+00 1.8104936518824836e+01 0 0 0
+247 0 1 0.0000000000000000e+00 6.0700010405066127e+00 1.1650865800621558e+01 1.9917153708185779e+01 0 0 0
+271 0 1 0.0000000000000000e+00 1.0600881065252395e+01 1.0444442837407800e+01 1.7214068582350897e+01 0 0 0
+389 0 1 0.0000000000000000e+00 1.2602377206923981e+01 1.1817822531293979e+01 1.9508075728290578e+01 0 0 0
+374 0 1 0.0000000000000000e+00 1.3518663203225051e+01 1.1690827489684940e+01 1.6473604740270385e+01 0 0 0
+453 0 1 0.0000000000000000e+00 1.4873245767472781e+01 9.8016555824614073e+00 1.8523959083802808e+01 0 0 0
+375 0 1 0.0000000000000000e+00 1.7589756078295004e+01 1.1092162955151073e+01 1.7616228726700840e+01 0 0 0
+460 0 1 0.0000000000000000e+00 1.8916949072490858e+01 9.2578872111758024e+00 1.9666027144640438e+01 0 0 0
+449 0 1 0.0000000000000000e+00 1.9128543489745439e+01 1.2444343436314600e+01 1.9713307232525018e+01 0 0 0
+441 0 1 0.0000000000000000e+00 1.3076818869093572e+00 1.0208607998396465e+01 1.7595655551210797e+01 0 0 0
+454 0 1 0.0000000000000000e+00 2.1879528766153634e+01 8.7679254373917761e+00 1.9627765724571013e+01 0 0 0
+444 0 1 0.0000000000000000e+00 2.0633480392130060e+01 1.0955312943834347e+01 1.7269590036529394e+01 -1 0 0
+360 0 1 0.0000000000000000e+00 2.2326387175964122e+01 1.2014359207230196e+01 1.9633976402925001e+01 0 0 0
+342 0 1 0.0000000000000000e+00 4.6731891184957970e+00 1.3495657117975089e+01 1.7595021229194259e+01 0 0 0
+442 0 1 0.0000000000000000e+00 1.5388362914978919e+00 1.3676556790483318e+01 1.7489493160250731e+01 0 0 0
+348 0 1 0.0000000000000000e+00 3.2446584458711452e+00 1.5179469928714337e+01 1.9668138950562408e+01 0 0 0
+346 0 1 0.0000000000000000e+00 8.2887762350260203e+00 1.2572500493369148e+01 1.8150409170965396e+01 0 0 0
+448 0 1 0.0000000000000000e+00 6.4325971788515997e+00 1.4792800457498286e+01 1.9490986048313417e+01 0 0 0
+462 0 1 0.0000000000000000e+00 9.1831398194427560e+00 1.5487713372725350e+01 1.8696416874038867e+01 0 0 0
+426 0 1 0.0000000000000000e+00 1.1163792083027328e+01 1.3648197888676682e+01 1.7347616153787612e+01 0 0 0
+275 0 1 0.0000000000000000e+00 1.4096169256273871e+01 1.4791763982550592e+01 1.6711172644553475e+01 0 0 0
+256 0 1 0.0000000000000000e+00 1.5355224083668787e+01 1.3000473221683217e+01 1.8650610260501018e+01 0 0 0
+352 0 1 0.0000000000000000e+00 1.3145096300815615e+01 1.4836309686774049e+01 1.9598433421951519e+01 0 0 0
+376 0 1 0.0000000000000000e+00 1.6092339906023806e+01 1.6286530497645671e+01 1.9050378060663320e+01 0 0 0
+380 0 1 0.0000000000000000e+00 1.7993887078898780e+01 1.4679653561590492e+01 1.7423832809318142e+01 0 0 0
+497 0 1 0.0000000000000000e+00 1.9597374033580572e+01 1.5603169560647245e+01 2.0116686769139342e+01 0 0 0
+477 0 1 0.0000000000000000e+00 2.0968030956002920e+01 1.3985327686699916e+01 1.7466741382083441e+01 0 0 0
+461 0 1 0.0000000000000000e+00 2.2496084747531860e+01 1.5304325730163287e+01 1.9823286619109894e+01 -1 0 0
+464 0 1 0.0000000000000000e+00 2.0221268692680496e+00 1.7021942500507329e+01 1.7096252311737530e+01 0 0 0
+485 0 1 0.0000000000000000e+00 3.6778785729298824e+00 1.8257633364227928e+01 1.9486752866117946e+01 0 0 0
+482 0 1 0.0000000000000000e+00 2.2057904972456122e+00 1.9968529159363641e+01 1.7503846181899064e+01 0 0 0
+368 0 1 0.0000000000000000e+00 5.1075555311431238e+00 1.6657272867281524e+01 1.7264368428321099e+01 0 0 0
+465 0 1 0.0000000000000000e+00 6.8844682109531110e+00 1.7903919453290875e+01 1.9584633221300500e+01 0 0 0
+405 0 1 0.0000000000000000e+00 5.4452395341780040e+00 1.9561163287801477e+01 1.7578440379738474e+01 0 -1 0
+486 0 1 0.0000000000000000e+00 1.1921952783923823e+01 1.6817477066494035e+01 1.7738067103850618e+01 0 0 0
+367 0 1 0.0000000000000000e+00 9.6455068276124543e+00 1.8506764654116061e+01 1.9086225099232962e+01 0 0 0
+93 0 1 0.0000000000000000e+00 1.4771273194614759e+01 1.8320155485243667e+01 1.7039874683122576e+01 0 0 -1
+372 0 1 0.0000000000000000e+00 1.2407814763015992e+01 2.0023888005612825e+01 1.7772909637367476e+01 0 0 0
+495 0 1 0.0000000000000000e+00 1.6472330743193563e+01 1.9521777465329521e+01 1.9469585696895926e+01 0 0 0
+413 0 1 0.0000000000000000e+00 1.8294787109518182e+01 1.7842914809609738e+01 1.7379308584958032e+01 0 -1 0
+479 0 1 0.0000000000000000e+00 1.9969000521146000e+01 1.8555029499048935e+01 1.9840083351169007e+01 0 0 0
+498 0 1 0.0000000000000000e+00 2.1260303819555830e+01 1.7177203103764811e+01 1.7393848119193386e+01 0 0 0
+85 0 1 0.0000000000000000e+00 2.3170469734457974e+01 1.8290891087552474e+01 1.9588982346608567e+01 -1 0 -1
+421 0 1 0.0000000000000000e+00 2.8440833643389851e+00 2.3101627724955392e+01 1.7389799073707188e+01 0 -1 0
+408 0 1 0.0000000000000000e+00 4.2437379918226474e+00 2.1373453877521612e+01 1.9607849900144224e+01 0 -1 0
+308 0 1 0.0000000000000000e+00 6.1078651731642593e+00 2.2782587079143859e+01 1.7491034386623369e+01 0 -1 0
+470 0 1 0.0000000000000000e+00 7.2867743130732165e+00 2.1055950906673097e+01 1.9693097733437241e+01 0 0 0
+331 0 1 0.0000000000000000e+00 8.4927979561641660e+00 2.0627577394569776e+01 1.6809797886012550e+01 0 -1 0
+400 0 1 0.0000000000000000e+00 1.0366657441846971e+01 2.1754779860606476e+01 1.8992504029086064e+01 0 0 0
+391 0 1 0.0000000000000000e+00 1.2906342990617192e+01 2.3198807612342954e+01 1.8022288804192591e+01 0 0 0
+319 0 1 0.0000000000000000e+00 1.5305025776535146e+01 2.1331115228820678e+01 1.7434858709659736e+01 0 -1 0
+396 0 1 0.0000000000000000e+00 1.8295066028570218e+01 2.0935638944491032e+01 1.7343291356978355e+01 0 0 0
+414 0 1 0.0000000000000000e+00 1.7257950826498046e+01 2.2515905853421962e+01 1.9607243282589650e+01 0 -1 0
+383 0 1 0.0000000000000000e+00 2.2341608335837414e+01 2.3360212354502188e+01 1.7452950360471974e+01 -1 0 0
+418 0 1 0.0000000000000000e+00 2.3561585192473665e+01 2.1691176866560774e+01 1.9623336529446370e+01 0 -1 0
+398 0 1 0.0000000000000000e+00 2.1472676244122155e+01 2.0447567969896625e+01 1.7304668080005982e+01 0 0 0
+417 0 1 0.0000000000000000e+00 2.0369675751372604e+01 2.1775067131056545e+01 1.9696983164667188e+01 0 -1 0
+403 0 1 0.0000000000000000e+00 3.5128354929151482e+00 3.7037369525630566e+00 2.2052133790838745e+01 0 0 0
+9 0 1 0.0000000000000000e+00 6.6997577196769811e+00 3.2288607495615755e+00 2.1826287152094686e+01 0 0 -1
+92 0 1 0.0000000000000000e+00 9.6484858995220488e+00 2.6371349221016174e+00 2.2028779031483502e+01 0 1 -1
+14 0 1 0.0000000000000000e+00 1.3901312268209292e+01 1.6348022068978125e+00 2.3769728873210823e+01 0 0 -1
+431 0 1 0.0000000000000000e+00 1.2569591371243041e+01 3.6917095716530741e+00 2.1254792888808716e+01 0 0 0
+16 0 1 0.0000000000000000e+00 1.4556001773737284e+01 4.6777228745562160e+00 2.3557590443673547e+01 0 0 -1
+489 0 1 0.0000000000000000e+00 1.4674329316298655e+01 1.7678346094832365e+00 2.0182721464002753e+01 0 1 0
+434 0 1 0.0000000000000000e+00 1.5457545835630395e+01 4.9652138195115558e+00 2.0513057804423291e+01 0 0 0
+15 0 1 0.0000000000000000e+00 1.6580073780913423e+01 2.4580845877958821e+00 2.2502662193131343e+01 0 0 -1
+435 0 1 0.0000000000000000e+00 1.9763821303495845e+01 3.8860747991921905e+00 2.1960438044372957e+01 0 0 0
+481 0 1 0.0000000000000000e+00 2.3013757570595054e+01 3.9983005673713539e+00 2.1937307904864724e+01 -1 1 0
+423 0 1 0.0000000000000000e+00 4.0285836538031665e+00 6.7561787948264316e+00 2.1797737453643343e+01 0 0 0
+327 0 1 0.0000000000000000e+00 5.7105038351017594e+00 8.1167710143127927e+00 1.9837661472862798e+01 0 0 0
+425 0 1 0.0000000000000000e+00 7.1584431152804209e+00 6.3901599191437191e+00 2.1963813399231945e+01 0 0 0
+350 0 1 0.0000000000000000e+00 9.2810724069100843e+00 7.6157306735225783e+00 1.9916125614797224e+01 0 0 0
+29 0 1 0.0000000000000000e+00 1.0185199789978450e+01 5.7065161976417444e+00 2.2232615792861658e+01 0 0 -1
+356 0 1 0.0000000000000000e+00 1.6194479626275903e+01 7.9468462294158284e+00 2.0595614410244885e+01 0 0 0
+33 0 1 0.0000000000000000e+00 1.2879951774429609e+01 6.7241727968302598e+00 2.1260821797472417e+01 0 0 -1
+133 0 1 0.0000000000000000e+00 1.7460600353885759e+01 5.8460801902714756e+00 2.2590836853455357e+01 0 0 -1
+440 0 1 0.0000000000000000e+00 2.0397003965274543e+01 7.2148193100748026e+00 2.1900114773850248e+01 0 0 0
+21 0 1 0.0000000000000000e+00 2.3321941681605878e+01 7.0778178034564370e+00 2.2093815262971319e+01 -1 0 -1
+445 0 1 0.0000000000000000e+00 4.2343822996873399e+00 1.0067046844309811e+01 2.1718848250103250e+01 0 0 0
+51 0 1 0.0000000000000000e+00 7.6534736080850427e+00 9.4535529643493330e+00 2.1753894575323400e+01 0 0 -1
+436 0 1 0.0000000000000000e+00 9.6700654079468755e+00 1.0926268563398709e+01 2.0215278472148604e+01 0 0 0
+12 0 1 0.0000000000000000e+00 1.0851709734751255e+01 8.7932037149437665e+00 2.2077835977535372e+01 0 0 -1
+36 0 1 0.0000000000000000e+00 1.3685982913151161e+01 9.6998771293210364e+00 2.1486405625782687e+01 0 0 -1
+351 0 1 0.0000000000000000e+00 1.6701864966717633e+01 1.0902748674799772e+01 2.0692748781687612e+01 0 0 0
+53 0 1 0.0000000000000000e+00 1.7865400065213365e+01 8.9242186599271882e+00 2.2810435941509411e+01 0 0 -1
+480 0 1 0.0000000000000000e+00 1.8124004999710692e+01 1.1883071273196769e+01 2.3080062293516676e+01 0 0 0
+61 0 1 0.0000000000000000e+00 1.2283712451400888e+00 1.0386916949552884e+01 2.2033822889209404e+01 0 0 -1
+443 0 1 0.0000000000000000e+00 2.0507669626283068e+01 1.0301100288870421e+01 2.2119960281553531e+01 -1 0 0
+467 0 1 0.0000000000000000e+00 3.1537938725200081e+00 1.5089684680862078e+01 1.3747518587981022e+00 0 0 1
+469 0 1 0.0000000000000000e+00 4.7478291740772924e+00 1.3529464430783150e+01 2.1723019837988829e+01 0 0 0
+49 0 1 0.0000000000000000e+00 7.9839168439178900e+00 1.2938801902171841e+01 2.1873737065925617e+01 0 0 -1
+55 0 1 0.0000000000000000e+00 1.0849001155620302e+01 1.3417145379784021e+01 2.1396625124917257e+01 0 0 -1
+56 0 1 0.0000000000000000e+00 1.4514585812633653e+01 1.2635943043246245e+01 2.1738529055110853e+01 0 0 -1
+450 0 1 0.0000000000000000e+00 1.4602465145004276e+01 1.5872186006621501e+01 2.1897637957255341e+01 0 0 0
+456 0 1 0.0000000000000000e+00 1.6930956137323307e+01 1.4067749316109875e+01 2.1187341523073528e+01 0 0 0
+474 0 1 0.0000000000000000e+00 1.8871559861400598e+01 1.5226376555449797e+01 2.3043467989232020e+01 0 0 0
+58 0 1 0.0000000000000000e+00 1.3860434998304809e+00 1.3666270457080117e+01 2.1929270884966215e+01 1 0 -1
+178 0 1 0.0000000000000000e+00 2.0873138758327713e+01 1.3343313189240895e+01 2.2110341735448010e+01 0 0 -1
+487 0 1 0.0000000000000000e+00 2.0189107997455378e+00 1.6897625975410122e+01 2.1897210025992230e+01 0 0 0
+446 0 1 0.0000000000000000e+00 5.0929596458223543e+00 1.6762678659321487e+01 2.1806631109410809e+01 0 0 0
+3 0 1 0.0000000000000000e+00 2.5284385570694141e+00 2.0093118647178244e+01 2.1594942572410538e+01 0 -1 -1
+452 0 1 0.0000000000000000e+00 8.1484483546323574e+00 1.6163407605001495e+01 2.1885278044512582e+01 0 0 0
+407 0 1 0.0000000000000000e+00 5.5661893275135750e+00 1.9661479107977087e+01 2.1711095934843740e+01 0 -1 0
+409 0 1 0.0000000000000000e+00 8.5508138092516202e+00 1.9212194911254485e+01 2.1982664954271414e+01 0 -1 0
+54 0 1 0.0000000000000000e+00 1.1210737471155440e+01 1.6658211410864908e+01 2.1478985480067330e+01 0 0 -1
+471 0 1 0.0000000000000000e+00 1.2925933957108953e+01 1.7547064296552563e+01 1.5428592689559482e+00 0 0 1
+451 0 1 0.0000000000000000e+00 1.3683013185643803e+01 1.7929040099126254e+01 1.9839967594902575e+01 0 0 0
+494 0 1 0.0000000000000000e+00 1.5184553515547499e+01 1.8911703405420397e+01 2.2276173282622970e+01 0 0 0
+478 0 1 0.0000000000000000e+00 1.7534594398759431e+01 1.7393668786322337e+01 2.1462828084068853e+01 0 0 0
+476 0 1 0.0000000000000000e+00 1.9550219992728252e+01 1.8363285237564689e+01 2.3485836817488781e+01 0 0 0
+463 0 1 0.0000000000000000e+00 2.1631801771004234e+01 1.6358152311515791e+01 2.2482902155411189e+01 -1 0 0
+81 0 1 0.0000000000000000e+00 2.1589894495735948e+01 2.0150949939189907e+01 2.1999149437190859e+01 -1 0 -1
+406 0 1 0.0000000000000000e+00 2.8765014631031516e+00 2.3110703878571336e+01 2.1850168558275975e+01 0 -1 0
+488 0 1 0.0000000000000000e+00 5.8613223454205610e+00 2.2696592298761871e+01 2.1846933618138998e+01 0 0 0
+50 0 1 0.0000000000000000e+00 1.1421755700549532e+01 1.9843229748274887e+01 2.1492907385913256e+01 0 0 -1
+89 0 1 0.0000000000000000e+00 8.9393786083632847e+00 2.2225448083636081e+01 2.1918571037828301e+01 0 0 -1
+416 0 1 0.0000000000000000e+00 1.2043611933247673e+01 2.3283953425001833e+01 2.1315122983136973e+01 0 -1 0
+491 0 1 0.0000000000000000e+00 1.3293237103982570e+01 2.0645786733604311e+01 1.4218384552002989e+00 0 0 1
+493 0 1 0.0000000000000000e+00 1.3895441283742722e+01 2.1124481026191141e+01 1.9986946898742829e+01 0 0 0
+411 0 1 0.0000000000000000e+00 1.5597848216235553e+01 2.2097609432886095e+01 2.2218604567129475e+01 0 -1 0
+404 0 1 0.0000000000000000e+00 1.9332192025357749e+01 2.3477124016446172e+01 2.1889745149466840e+01 -1 -1 0
+499 0 1 0.0000000000000000e+00 1.8300858000003032e+01 2.0482744521393101e+01 2.1705147471096573e+01 0 0 0
+97 0 1 0.0000000000000000e+00 2.2318305899687687e+01 2.3291368071561116e+01 2.2289566729156093e+01 0 0 -1
+
+Velocities
+
+8 2.2038012039827001e-03 -1.4359316080380352e-03 -1.3154694521159624e-04
+107 -3.0663804068765833e-03 6.9887965457111412e-04 -1.0449716797022619e-03
+86 6.5275070837601389e-04 -5.5568126882118876e-04 2.3880043311905832e-03
+7 -4.9366011260920412e-04 1.9970789045472293e-04 -1.4014651716061934e-03
+185 -2.7465761306439437e-04 8.6606641305576730e-04 -1.3863528680631713e-04
+186 -4.6076205501514465e-04 -6.3845776180325052e-04 -1.4299441419905433e-03
+412 -4.9443464290920046e-04 -1.1464179849006609e-03 -6.6515082433626200e-04
+109 1.2414622111028197e-03 4.6733558982551548e-03 1.7488168065693003e-03
+31 -1.0635190364771548e-05 4.5681799146511980e-03 -3.7814047381861792e-03
+111 -4.9898685701700379e-04 4.9468631311967574e-04 -3.4102059330155757e-03
+420 -6.8182538057557905e-05 -3.7967773602329491e-04 -8.2839949810956622e-05
+18 -1.7843844171382354e-03 -5.1823672089206440e-04 -2.2417957466391390e-03
+117 2.6161393889170711e-04 -1.7510529927109112e-04 -1.7827701397514404e-03
+1 5.0423875188669272e-04 1.7737961610609484e-03 5.5014744578021370e-04
+22 -1.3551684681608266e-04 2.7597367266829144e-03 5.3773056065475108e-04
+28 5.8655978668895308e-04 -2.0250875954355271e-04 -1.1167778689908036e-03
+27 6.3070558049388632e-04 -9.5196808382787344e-04 -2.4653457292210940e-03
+26 2.3945744585478577e-03 1.2286840728541245e-03 1.8161545868815999e-03
+25 5.1390549588640013e-04 3.1015082535245265e-04 3.9484649651715447e-03
+447 -2.1578743331350026e-04 -3.0262810583619711e-04 1.6079466090138859e-04
+11 -2.4458094758497261e-03 6.5881864808811140e-05 1.3393574792412522e-03
+432 -2.4998260902408336e-03 2.1568106540784306e-03 -1.6465072716581280e-04
+116 -1.1027128061929852e-04 3.2423652094875683e-04 1.6133746942459993e-03
+130 -8.9227692106928682e-04 -1.2353517749834604e-03 2.1027773798519929e-03
+114 -2.0031512880474681e-03 -3.3556097934279426e-03 -3.2369270324604369e-04
+35 -1.5795839695819487e-03 -1.6958423543787598e-04 1.7756481914578992e-04
+34 1.9125617866366886e-03 2.3829729096470310e-04 3.6968236291308461e-03
+39 -3.4227865282513076e-04 1.6226895597236827e-04 -1.8765570077406762e-03
+44 -6.0039397645291290e-03 -5.3412903301746175e-04 -1.3812213848471259e-03
+57 -1.8656338983855522e-03 1.4441317699997328e-03 -2.7347150295943157e-03
+316 2.7388679696916970e-03 7.6872201604231993e-04 -9.7597213798635560e-04
+41 -6.0782609829424048e-04 1.6949275721052448e-05 -4.2601625825616817e-03
+79 -2.0070343029654474e-03 1.6432535879877185e-03 4.7196620827949778e-03
+45 8.4171989207173039e-04 -2.2151452686430855e-04 1.8183451937425453e-03
+46 1.0525809108274701e-03 3.5920863197809352e-03 -2.0656545121295476e-03
+146 1.1688089092430614e-03 1.5676273076749793e-03 -4.9883758727284366e-04
+153 2.9904104215051717e-03 1.3798968801404081e-03 -8.7376074696452410e-04
+149 1.5475319715452308e-03 2.3435232073631472e-03 2.6472347356208518e-04
+150 2.1601276169297399e-03 -2.0689178239728647e-03 3.6262563021810081e-03
+71 1.8154709120536700e-03 1.9380747185376444e-03 -7.6149125878080225e-03
+156 -2.5375715092932636e-03 -1.2056765353534364e-03 -1.0358606670835087e-03
+134 1.7335022193594367e-03 -2.0080138701999437e-03 -7.1313560338497062e-04
+354 -3.3404117257251138e-03 -4.0219254905750528e-03 9.8810276816161703e-04
+78 2.5717263701821474e-03 1.2657784841728519e-03 3.4416852551037505e-03
+24 5.6973923311236122e-04 -1.3640256235511305e-03 -2.0250587162502368e-03
+62 -5.5160576393928319e-04 1.2331453936461204e-03 1.1474494496038364e-03
+43 -6.6756226768542408e-04 1.4436262822676972e-03 2.2351851830018470e-03
+158 2.8699200919480895e-03 3.0291164014782956e-03 1.9169984116183524e-04
+42 1.7233720017067367e-03 -2.7101471433042606e-04 3.8331630862796706e-03
+52 -1.9630763669542342e-03 -9.3313239747771202e-04 4.1137337983753543e-04
+65 -9.9734130788081384e-04 2.6943135529210074e-04 8.8324647596859187e-04
+170 -6.8849611839292557e-03 -3.8669961874072062e-03 5.1740133065184893e-03
+73 -2.4304396437934755e-03 -9.3822974958137045e-04 3.9347081616474978e-03
+72 -3.1185550026640511e-03 9.8322468861271805e-04 -2.4365745405457759e-04
+91 1.3778650549024077e-03 -1.1221602880842169e-03 2.7591495681181010e-03
+76 7.4486604728464398e-05 4.2598620238031557e-04 -6.0792359807066050e-04
+174 -4.6766103637879583e-04 1.1807273543805212e-04 7.3161799850540309e-04
+77 -6.7206175316428658e-05 8.8214507037105336e-04 2.0995486657487171e-03
+75 5.2050966785929364e-04 7.1296261043165892e-04 -8.9113111362568967e-04
+59 4.2594255542958972e-03 -1.3890983658717028e-03 1.5364046957364185e-03
+63 -2.1229034916011840e-03 4.7615176092399422e-03 1.3425729258361423e-03
+181 -1.5706764124887110e-03 4.9908683258306525e-04 2.5914768055336733e-03
+484 1.6078530160406237e-03 1.2232475368898236e-04 -2.2913204304645017e-04
+162 1.9255210160363443e-03 1.5123406474057783e-03 -1.0726918670261340e-04
+64 -3.0563315782049490e-03 -2.0309633317403802e-03 -1.1187982171997428e-03
+142 -2.9021247624837808e-03 1.8654634246434456e-03 -1.6886720972673957e-03
+83 7.7775250688435495e-04 -2.1895209357602743e-03 2.7597366184753075e-03
+70 2.5317969057681213e-03 -2.9421664805047302e-03 -3.4563314290990341e-03
+69 9.5006850194695469e-04 -3.8331049298509540e-03 -2.7315421271243844e-04
+214 -2.5295269885030791e-03 2.9693086530657715e-03 3.3480202652472991e-03
+475 1.0076243185613031e-03 -1.6181706165156967e-03 -2.5055483057204730e-03
+197 -1.1270156361481579e-03 -2.5682856885929127e-03 -5.2235089286629011e-04
+74 1.1752876968230199e-04 -3.1170704180509337e-03 4.5130678723751818e-04
+161 8.5847311659376124e-04 2.3854624274738316e-03 -1.8453412225315812e-03
+496 -1.1374452313043591e-03 -1.3984340244393450e-04 1.3227541512926503e-03
+102 2.2399147120884166e-04 4.2870861172251843e-04 -7.3855923661016339e-04
+5 -2.7478963747400088e-05 -3.1270537728364203e-04 -2.1827130983183402e-03
+82 -5.7291554865542915e-04 3.6041914959401638e-04 5.4578432179006552e-04
+88 -1.5282639940748296e-03 -1.5219965755030966e-03 -1.9319365070180798e-03
+66 8.5144747823868658e-04 6.6697740358528858e-04 1.7164815740857279e-03
+10 -4.2328837234356835e-03 -9.5138557757891364e-04 4.3264054169420612e-04
+67 5.8750827138207907e-04 2.5524572385284970e-03 1.1947698232374080e-03
+472 3.0770995712295086e-04 -4.9816249588562219e-04 4.5650893874974667e-04
+13 6.2815931956750374e-04 -2.0563513880823611e-03 3.6352951409985451e-04
+94 -1.1206155734685779e-03 1.7168222148706890e-03 -2.4193116456387980e-03
+490 -1.3558743859456630e-03 -2.4923850882722478e-03 3.6387781961499514e-03
+500 -8.9728944852715911e-04 -7.5545307127471346e-04 3.9953682012170916e-03
+100 1.8249033226025896e-04 4.7372917573326354e-04 -1.9390082025993551e-03
+419 3.6822499046454829e-03 -3.0991924330454217e-03 1.7275260479572205e-03
+19 -4.7490300928450272e-03 -2.1387353994703400e-04 2.5041063212321338e-04
+101 -2.5194873001015607e-03 2.4780408696812483e-04 -2.1772709649913193e-03
+125 -1.6567104554321547e-03 1.6947611794380347e-03 -3.7472868038418840e-03
+87 5.5552044002357703e-04 2.2805702191051082e-03 -6.1785909680394388e-04
+105 -3.3590070721502724e-04 2.4918735825642442e-03 -4.6589753988806742e-03
+110 -9.5158430032669635e-04 2.0842334010231963e-04 5.5886027424308067e-03
+192 -2.6536833369762529e-03 -2.2658006297508900e-03 6.3359305266228252e-04
+191 -1.6559651999078009e-03 6.4186332241110693e-04 -5.3152215255053599e-04
+209 -2.6816383601626147e-03 7.9809936602732643e-04 -1.8012935922592681e-03
+115 -1.7512591087937373e-03 -3.2186453149757560e-03 1.8729289516755876e-03
+120 3.0822481582189242e-03 -1.9462455400265837e-03 -1.3265353841211238e-04
+113 2.6857785767454753e-04 -2.0067433684463451e-03 2.6766334665156602e-03
+217 2.6739412180284846e-03 -2.8791643918086603e-04 2.2991545493674962e-03
+194 1.2138923720053860e-03 -1.6747738232612726e-03 -1.4007710078923288e-03
+237 -1.7906423803564043e-04 1.0880350946121716e-03 -5.3663342205721644e-04
+4 1.5605514843818702e-03 -2.6490973952781483e-03 9.5865503107325594e-04
+301 2.2703662598608245e-03 1.2447162819246460e-03 1.7248089978731183e-03
+2 1.5235831492571997e-03 2.9220150182587708e-03 9.7520380423190254e-04
+38 3.0067712897844344e-03 -5.2778719411788593e-05 -8.0893798860418281e-04
+106 2.9451297594475633e-03 1.1238634276826494e-03 -3.7336567080812960e-04
+122 -1.5740052008815593e-03 -7.2978299175003583e-04 1.5800404675123780e-03
+32 1.2079510741396663e-03 1.6730672982427724e-05 1.9396243226892068e-03
+108 5.5510195298140415e-03 1.1203194745364228e-03 5.5237796055550184e-04
+131 -1.1335555229112944e-04 5.6937944609729166e-04 2.6118143777569707e-03
+151 9.5389743881348673e-04 -5.3607270243656352e-04 -4.4937246877487834e-03
+232 -1.5011795827747738e-03 8.7704108761011302e-04 8.0063950409225862e-04
+135 -2.3977200507419127e-03 -1.0835826944679721e-03 3.8664210869216900e-03
+112 9.1037819046199881e-04 1.1237883661386696e-03 1.5419042305322384e-04
+139 1.4946007264311908e-04 -6.4173555146421007e-04 -3.7451351300207842e-03
+136 1.4844149754099948e-03 -2.4416194529495823e-03 -1.1810887960196715e-03
+233 4.2627837853685240e-04 -2.8311402865109406e-03 -3.6823869426167179e-03
+118 -3.7757104169826175e-04 1.8157337650675075e-04 -1.9418659876026447e-03
+37 8.7021741520256044e-04 -1.9353794284835533e-04 -3.2774944222478419e-03
+23 -2.6941161179180923e-03 -1.1818121476935649e-04 1.1613203009512982e-04
+141 1.7515266194669116e-03 -1.0400216701968957e-03 -1.1262184240754141e-03
+132 -3.6522807590637931e-03 2.0436362903770116e-03 -2.6578563429269821e-03
+148 -6.2214589747529336e-04 4.9762811823996953e-04 1.8079689700194410e-04
+126 -7.1865346157861559e-04 7.5070944677246170e-04 -6.6367737327375511e-04
+147 2.6681211007196174e-03 2.8565975780760148e-03 -2.9412890964719491e-03
+152 2.1751325569449461e-03 -1.2211346836341409e-03 1.2738485269346890e-03
+230 -1.3076916536710166e-03 2.1192237247012529e-03 1.3549661155878945e-03
+173 1.0926460165380022e-03 1.6859273112175904e-03 1.2773849520485072e-03
+196 -2.0455708072801113e-03 -4.3576048875638620e-03 2.7247624344538743e-03
+137 -2.1764074821481985e-03 2.4825915412761727e-04 3.6006513797426682e-03
+179 -1.9765821608650298e-03 -9.5635062229270588e-04 1.8709794956307247e-03
+60 -2.9575416639383580e-03 2.5814648766145929e-03 -1.4040096917965829e-04
+157 -2.7207757856241533e-03 -3.3197073366168657e-05 -3.8875523857459521e-04
+273 -2.2432321394708641e-03 1.0676820125518382e-03 -2.6396108093331857e-03
+163 1.1493216731781387e-03 -7.5736535084717593e-04 2.9584846159526100e-03
+143 2.2827095813075359e-03 -3.3122964932204296e-04 2.2737729630313601e-04
+48 1.3778314671727323e-03 -2.8685773885113882e-03 -1.2147684921822189e-04
+263 -2.7478856051688155e-03 3.4044773399218927e-03 -6.0370294416759070e-04
+249 2.3662238290113329e-03 3.1356895411604720e-03 -1.0825753211152235e-03
+172 -1.9940698934648696e-03 1.9213828344336935e-03 -2.9751471003790827e-03
+246 2.7887772729861220e-04 1.0867328695069896e-03 2.0704074315298021e-03
+250 9.6592799351854965e-04 1.5332742105569294e-03 1.8932306513464502e-03
+278 3.1474319280035823e-04 4.3320428048400590e-05 -4.5445312167461353e-04
+40 1.5606921395626295e-03 -6.5001715449994725e-04 -2.1679467973353436e-03
+138 8.4571509154820644e-04 8.6772201214887741e-04 1.7476247627211789e-03
+277 6.9927131597898864e-03 3.4242040224168493e-03 2.6747202572285221e-03
+99 -1.1205798431538488e-03 2.8121499398732285e-04 -1.2542116400785579e-03
+154 -9.6270418274353666e-04 1.7104325378833518e-03 -3.8710672344197052e-03
+140 1.2462213083333791e-03 -2.6814309488823536e-03 -8.6024589435424923e-04
+68 1.9280046674036010e-03 -4.2412394173898182e-04 -8.7057483190898749e-04
+164 -5.5474019048232268e-05 6.1085341861317132e-04 1.8928602176830065e-03
+168 1.0586316568790045e-03 -5.3195948487503759e-03 -1.9654975199422248e-03
+165 1.4439592088574626e-04 1.2218701478433388e-03 -1.4739881552730633e-04
+266 -1.4586900772635993e-03 1.1846433684991844e-04 -8.9233806551480051e-04
+269 1.2371333246805182e-03 -2.8912956408656348e-03 1.8719180109412730e-03
+270 8.5124835795182983e-04 1.6492367778599316e-04 1.2693308872518104e-03
+176 3.4251451819116189e-04 -2.2444683874059722e-03 7.2423206302432198e-04
+291 -1.2965426776906190e-03 -8.7426512216351795e-04 2.1211019707911860e-03
+293 -6.0923256431384654e-04 -2.7411982316202029e-03 6.5899180885740428e-04
+80 -3.2748885053235696e-03 -2.8886804021808099e-04 -1.5959860319933812e-03
+95 2.9457552199079725e-03 -5.2205247230070252e-04 -1.2151117078508277e-03
+190 1.4475322233334070e-03 3.1198832995628248e-04 8.6734625120200393e-04
+198 7.0070969865116493e-05 -9.9185221451911459e-04 8.2466735898696294e-04
+98 9.2753259544546454e-04 -1.3324695123435478e-03 -4.0211448653662361e-03
+180 -7.8394652744713598e-04 5.5183318105553438e-03 -6.2348706327675551e-04
+166 -2.4980031909923391e-03 1.4106828985761458e-04 -2.0437074762468476e-03
+298 -9.8730666628978579e-04 5.4255179353231695e-04 -1.1992425235204547e-03
+103 -7.2063401921373558e-04 1.1952226400149650e-03 -1.4816107915499787e-03
+169 1.1770339997207527e-03 2.0237310628820789e-03 1.6749892985357831e-03
+189 1.0950540057454473e-03 -1.5786940830691543e-03 6.1698293274482340e-04
+286 -3.3478451593258319e-03 3.6420193088508765e-03 -1.7219903056579023e-03
+292 -2.3409261921909759e-03 1.3410089370335682e-03 -2.3074005588579324e-03
+193 1.2135839861965794e-04 1.5005513151110058e-03 -1.0999867501102478e-05
+96 7.4672917928808688e-04 3.6388150829879350e-04 1.8909201450366536e-03
+17 3.8423690063176316e-04 1.7324237368260391e-03 5.5316751328543881e-04
+200 3.2565053571141931e-03 4.9110718767506813e-05 1.2401972830799815e-03
+199 -2.0784742998210394e-03 -1.0562301973111906e-03 -2.2465763342531917e-03
+84 -1.0205814993197995e-03 9.8333832340357415e-04 4.0680299205911454e-04
+182 3.6734552734493139e-03 2.0674341005458476e-03 -3.5116768507068800e-04
+381 1.0404651395899177e-03 -3.5798249440019462e-03 4.9309320807013860e-04
+124 -1.7174379163210093e-03 1.4285377573709150e-03 -2.3207778606103538e-03
+218 2.8658073532149045e-03 6.0437576075157630e-04 2.3033730855384739e-03
+187 2.3866465292363085e-03 -7.5615989747829259e-04 1.2946353016318110e-03
+203 2.3562196332293350e-03 6.6683588470215405e-04 1.5289484282326535e-04
+206 -4.4421127515689805e-03 -3.4071431337347590e-03 1.1431353523865943e-04
+188 5.9931227115073648e-04 -5.0162533817171698e-04 -4.8954747922348840e-03
+227 3.9189729521154259e-04 -4.0001696297323691e-03 1.8293991225293673e-03
+211 1.3181641851199735e-03 1.3259396518018787e-03 1.3296118615788524e-04
+334 3.9791923930881153e-03 -2.8930158794036518e-04 -1.3593726580227892e-03
+119 -2.3609198554292977e-03 -1.0800146729547917e-03 2.0708753497370234e-03
+224 -1.2516567994469007e-03 -3.2732179049686566e-04 -6.1118715936140159e-04
+225 -2.9090574997962045e-03 4.1942581447150198e-04 -7.5385648166542186e-04
+204 -7.7481778626088238e-04 -1.4617172479707175e-03 -1.2759081965598622e-03
+129 -5.8003840739858010e-04 -1.0983718343399933e-03 2.5347631851787181e-03
+228 -2.5452063271950202e-03 -2.1711122246269104e-04 1.0816276654224723e-03
+229 1.7878824775206731e-03 3.4704101129254722e-04 6.9222334306909728e-04
+235 6.7779875036191569e-04 1.2483175655610985e-03 -6.9542031899520740e-04
+240 -9.7688049328113302e-04 -2.3679363080509760e-03 2.5601131538383120e-03
+221 -1.4717059781698316e-03 3.1655739236219945e-03 -3.9544249704182374e-04
+20 -4.3285645913665444e-04 2.0840564892117084e-03 2.3427611446429726e-03
+241 2.4556019133998527e-03 -4.1357221184788193e-03 7.8416808811202692e-04
+121 4.8605236007928063e-04 -7.3880125895637693e-04 2.6057781237735869e-03
+145 -4.3942520829984278e-05 -3.6415817009307939e-03 2.3889907380210381e-03
+128 1.1912097634742677e-03 1.8185893216875301e-03 2.5424722501627369e-03
+47 -3.7662125419509703e-03 -2.1591987480071577e-03 1.1062455848291622e-03
+226 -2.1553726717428321e-04 1.3560543112936868e-03 6.6122945700848883e-04
+231 1.0665252510431683e-03 5.1604559452375501e-04 -3.3060005094977604e-04
+234 -2.0736817055388027e-03 -1.4832665698544625e-03 -2.3305161550923360e-03
+238 6.3129643019840592e-04 -4.1725900698480294e-04 1.5848222333096720e-03
+123 2.5137966900834652e-03 -2.2046219602248722e-03 8.4585159256064950e-05
+159 -4.8998931595789020e-04 -1.5748098803382547e-03 1.2245421861061068e-03
+261 -8.1815249641033010e-04 -7.6235903704647743e-04 1.4652336288480091e-03
+144 -9.8674407218206101e-04 -7.2957235260483417e-04 -1.9011623648575258e-03
+258 -5.1592502370953405e-03 1.4061405382588357e-03 -2.7825729840517184e-04
+252 -2.9509916412204625e-04 4.0403986734689090e-04 -2.7710943843071127e-04
+285 3.9148347616248013e-03 -7.4896052661967334e-04 3.0363470814856451e-03
+265 -4.2935215107889352e-03 1.1823023360989315e-03 2.8289025687777457e-03
+167 -8.4531960248257056e-05 8.4690965075211080e-04 1.9433708723792134e-03
+393 -1.4409376412251741e-04 -2.1884988412569353e-03 1.5196065936063055e-04
+171 2.7703286009882677e-03 -2.2788892723025036e-03 -8.4930479443813176e-04
+160 -3.7573474105921813e-05 1.2229752710859680e-03 -2.4843349351553095e-03
+155 -2.2789652267973986e-03 1.1230733069156869e-03 -8.3043228027039086e-04
+378 2.5106609378869289e-04 -1.4559956533979044e-03 1.6778185672647772e-03
+283 -2.1821818428560324e-03 3.6727847890780756e-03 1.1841678210281761e-03
+264 -2.7839593229204279e-04 1.0957322749395669e-03 -1.9723198347902861e-03
+184 -1.4596193828032853e-03 -1.5644162665511463e-03 8.2961613180048983e-03
+262 1.2274343305367457e-03 -2.6030826908172563e-03 -3.1196463688771430e-03
+268 -9.8539570964730665e-04 9.3411018517661974e-04 -1.5369594136754219e-03
+365 -2.8939745346128604e-04 -1.8131144558039959e-03 3.6372962685514718e-03
+294 2.1377306965903141e-03 1.8242295365615943e-03 -1.3635019157611560e-03
+274 1.8731003840886298e-03 -1.8739025267606175e-03 1.4351967252400821e-03
+394 -5.1460841881687761e-04 -2.9692502364647515e-04 2.1272377547373669e-03
+281 -8.5254208208160201e-04 1.3731569427472621e-03 -7.4602200042991017e-04
+299 -2.1129323179168032e-03 1.2902346364049037e-03 4.6023324041748567e-04
+183 3.3327591439764616e-03 1.7868912121234680e-03 3.2811702255131027e-04
+104 7.9740079770432642e-05 1.6156852885407939e-03 9.7188786030052087e-05
+382 -1.4801002705774858e-03 -2.1462766680027060e-04 3.2209786330664562e-03
+363 6.1222043797339715e-05 -7.3836438200062800e-04 -2.3171111330550489e-03
+282 -2.5153785698579191e-03 -1.9490611885660846e-03 -2.2114743488056521e-03
+288 -6.8217033952141379e-05 -7.0199902321931690e-04 2.0137159493202367e-03
+290 -1.7874873165021352e-03 9.1358816640819745e-04 1.0297781814877884e-03
+289 2.6746190694110828e-03 1.6860991725046728e-03 8.8759490850007716e-04
+272 -1.0567267541475417e-03 -5.5283608828488552e-03 -7.4415314589054672e-04
+390 1.7514616001396161e-03 -3.4382414490970969e-05 -5.3519647361297234e-04
+210 1.1488281514104163e-05 -1.8475538509822116e-03 -7.7767476839939317e-04
+201 5.8988483372390702e-04 -9.1072764766830295e-04 -1.5563339992094188e-03
+321 4.9439528193570819e-04 -1.4401087717394161e-03 1.0299789753331280e-03
+304 -4.8393504081541497e-04 1.8513239285788618e-04 -1.8542780988260924e-04
+324 9.5405928364255090e-04 2.1300107375228860e-03 8.1835023776355428e-05
+305 1.0183877394148884e-03 1.8958614955287940e-03 -2.1134280592500329e-03
+202 7.8400571961531097e-04 -2.2515476517479145e-04 3.2980941409042099e-03
+307 4.5462743685491802e-03 3.3246739442566809e-03 1.4427311670010311e-03
+207 -1.8778843312160332e-04 1.3683837692403480e-03 -3.4282986973349105e-03
+333 1.8488831200595536e-04 3.1297880031821131e-03 1.1820652552268717e-03
+213 1.2783051480099001e-03 -2.0270975318598949e-03 -2.8803984996544339e-03
+314 3.4445130468072605e-03 -1.1096613081363819e-03 2.2759761753445530e-03
+336 4.6426307833408490e-04 7.0440083153777309e-04 3.7148113474981602e-04
+335 1.1119986053196849e-03 -1.5414235497123339e-04 -3.9085802603664056e-03
+337 -1.1592407531828346e-03 2.3681729020622886e-03 -1.1709330211594848e-03
+318 6.9039009984988773e-04 -9.4676195533167375e-05 2.0203610180194531e-03
+243 -1.0362653794173001e-03 -6.5791858157918765e-04 2.1246937948068423e-03
+322 -7.5278881359676418e-04 -1.2782919983606478e-04 6.7386180292942932e-04
+339 2.6675531011718452e-03 3.3273381819346843e-03 -2.9461463970330165e-03
+127 8.2280652833982397e-04 1.0524096087535155e-03 9.3157954039275190e-04
+222 -1.4399848152288493e-03 2.6817463941554284e-03 1.2861679862088453e-04
+302 -4.9019901023035245e-04 1.6660942713005776e-03 -1.0634077441655992e-04
+328 -1.0105997278482320e-04 1.3419604474534700e-03 -4.4695594838659855e-04
+251 1.1684012099194853e-03 2.2135891766814210e-03 1.6034772567580134e-03
+326 -1.4775814237758898e-03 -4.1109094344610317e-03 7.6766039329465084e-04
+355 -9.9789581839894491e-04 7.0226011041732276e-04 2.1411022491992404e-03
+330 3.3730942692775773e-05 -9.3258421775304571e-04 3.1990776432377381e-03
+216 -1.0809644455734286e-03 1.0001789820256570e-03 2.0090132491576984e-03
+212 1.0076347927402639e-03 -2.7065982747995314e-03 1.6069596841592818e-03
+279 2.9256956667773616e-04 -3.0523271574379777e-03 -2.6712397084997998e-03
+353 -1.2533502464203850e-03 9.1497716079209760e-04 9.5912729181238908e-04
+259 4.3372839110829946e-03 -1.6204946325620499e-03 1.0524789809778733e-03
+458 -2.8103727944679565e-03 -3.3506551182041090e-03 6.9527298063701553e-04
+341 1.2278438482167411e-03 -2.6862883586257797e-04 -5.2369341210303788e-04
+323 2.3886558790598813e-03 5.6841683095296158e-04 2.2449880507625095e-03
+242 -1.6106137414419462e-04 -1.8141459221401141e-04 -4.9309127648609419e-04
+345 3.0473719710054693e-03 -3.4286565794126856e-04 4.5701815395048664e-04
+428 -9.8465035958767442e-04 2.3908749979364061e-03 -1.6090702224340909e-03
+208 -1.6712812442965812e-04 8.0125633616896617e-05 2.3738769496352451e-04
+253 8.6322359495653476e-04 3.1670918734214411e-04 1.2777525461068857e-04
+349 -1.6966692909429061e-03 3.7190049195408759e-04 -2.5543446153974843e-03
+260 -6.5236737195430866e-04 -4.3890837660296098e-03 -6.6724511160977384e-03
+255 1.8667703299224115e-03 -1.3343504179363491e-03 4.1203794351236191e-04
+236 2.6552060931538109e-03 -6.4388587640578417e-04 7.4239617628961885e-04
+254 4.6974991564326853e-03 -3.4148486750309329e-03 -2.5620555905367116e-04
+244 -4.3303665547493836e-04 1.0359047041851002e-03 1.9938977050150617e-04
+379 2.4686602207224946e-04 -1.1776652711714482e-03 4.0170173780616613e-03
+344 1.2235581973602178e-03 -3.7001344703559071e-04 2.1456362178279291e-03
+377 -3.1648182094617056e-03 -1.3723728397094664e-03 -3.0091255013954868e-04
+364 -4.8236042184922822e-04 -4.5120267175820293e-04 -1.8819395773967086e-03
+267 4.4480004152460919e-04 -1.0341959537541079e-03 1.9253183944798670e-03
+248 -1.7680394934114652e-03 -3.4492450271059194e-04 -8.4348522383741664e-05
+369 1.3935358641414164e-03 2.6861630469599568e-03 -1.5182188567911621e-04
+245 3.3959439798809271e-04 -1.6945546579078081e-03 -1.4716417002742759e-03
+177 -8.9632710368242748e-04 -1.7108280566713134e-03 3.3974970284341086e-03
+366 -5.8128313630939118e-03 -9.1400985120045476e-04 -2.6988843801967017e-03
+295 1.5540817486939357e-03 -5.5589032838962806e-04 3.4526702652146243e-03
+175 2.4864075336095462e-03 2.2956990269804769e-03 -4.4611976699610441e-04
+257 -1.8719998473376599e-03 -3.9036316991679456e-03 3.4069981008784805e-03
+397 -3.3584630683134225e-03 -1.6994398191115764e-03 -2.1859464166058278e-03
+297 1.2435696835012330e-03 8.0451873275448149e-04 9.9585710609021038e-05
+358 2.6679852907487167e-03 9.9021232179711334e-04 -1.2329167407640344e-03
+399 -4.0971651230118835e-03 -3.6453514531681664e-03 -1.7649938064294305e-03
+468 8.2107835906578865e-04 9.8379170771736271e-04 1.3878365352883264e-03
+401 1.0003156102300584e-03 2.3077002263267770e-03 3.1195937413356836e-04
+361 1.1078157020555162e-03 -6.4341325228487454e-04 -2.9280584215819866e-03
+287 3.3137673526111250e-04 1.9182203826068039e-03 1.5317760228843057e-03
+371 -3.2431583730411547e-03 1.8259922250721182e-04 5.2648075926149652e-04
+370 4.1273914420312353e-04 -3.2121456609854396e-03 6.6764477492013957e-04
+276 8.4013771093439775e-04 3.7907671172819618e-04 -2.6548845022387709e-04
+392 -1.5664452339058494e-03 2.3950394610759213e-04 -1.2771437783876221e-03
+280 7.6883402773483627e-04 -2.9994451154869970e-03 -2.6535111637841557e-04
+473 -1.5074990974951173e-03 1.6983664007504721e-03 -2.3114708477260865e-04
+215 1.1351094273055317e-03 2.6545459211494405e-03 -1.0567511157094660e-03
+315 -1.5244516654875208e-03 -4.3972666016857277e-03 -3.2615480825807903e-03
+317 1.7907579759272150e-04 5.2483506268540512e-04 -1.9479038592781447e-03
+220 -6.6657103044439825e-05 2.7339009787113002e-04 -2.1413813212999093e-03
+284 8.1333599619822709e-04 2.9895690181619191e-03 2.0508934632692841e-04
+362 -2.4985191986534971e-03 1.0947939895538373e-04 2.7888089725531949e-03
+385 5.6246064470770246e-04 -2.1876675879251082e-03 7.8934494525012512e-04
+223 -2.9115634309537803e-03 3.3968349972305430e-03 6.7622525344161397e-04
+384 1.9306349273034459e-03 -5.1139422101612389e-04 -3.8817138805137790e-04
+386 -1.2827168527657805e-03 3.8769411862356689e-03 -2.6769757972580216e-03
+205 -1.7210121552135095e-04 3.1988418778834357e-03 -2.6643083995334196e-03
+387 1.3066210464600459e-03 -6.2504933380363981e-04 1.0049526474115308e-03
+395 1.9808866896228779e-04 2.3139619049347544e-04 3.2221748564457454e-03
+309 -2.5425874329787581e-03 -1.4900191247175148e-04 1.5961547588288333e-04
+430 9.0449753383367972e-04 -1.0964959102155011e-03 -2.9474878290295135e-04
+311 -6.7395903960519070e-05 1.7148691955116164e-03 -1.2257036624794404e-04
+195 4.1617868938647338e-03 1.5882117249347212e-03 -8.6850797444270255e-04
+296 2.2865351028002120e-03 -1.8185526055459757e-03 -1.3886672554346093e-03
+437 5.3826093576099662e-04 -1.5417897487412971e-03 -9.0997201067309622e-05
+239 -1.3777873025016148e-03 -9.5708498590324422e-04 -3.2869519905640791e-04
+303 4.8010659616054546e-04 -8.4973145247711150e-04 -2.0236912052052428e-03
+219 8.3991786712273150e-04 -5.1016805345024507e-04 -9.9072897399648824e-04
+422 -5.3695637849570982e-04 2.7298143451312835e-03 -1.2369363618787742e-03
+6 1.0143409467998656e-03 7.0102759480325191e-04 -1.4041755263866321e-03
+483 -1.5755685677060459e-03 -1.0019375137722694e-03 -2.1233480475556189e-03
+402 -2.0062054198914060e-03 -3.2425106939105567e-03 -1.3743378758095904e-03
+466 5.9008820416244650e-04 -1.5119617765618439e-03 4.0637579397639738e-04
+90 -7.6852767413063702e-04 2.9871799353718051e-03 -3.9226279420114901e-04
+492 -4.0577701578940030e-03 2.1559728557356619e-03 2.0497867506817399e-03
+310 -4.8795916895633933e-03 2.9511765717774689e-03 -3.8389723782894861e-03
+388 3.3085732369938473e-03 -3.1812674768513376e-04 8.2167748995713217e-05
+410 5.7095078224572346e-04 -5.2829022912170799e-04 1.6901392101572226e-03
+313 -1.3755145817809572e-03 1.1684418942320409e-03 2.5170877718230377e-03
+340 5.0063004939302446e-04 -1.2498554015737020e-03 3.8610614947467902e-03
+415 1.1890967133240888e-03 2.2699770216946034e-03 -4.6040199145435794e-04
+357 9.4383666818448472e-04 -1.0308624416144122e-03 -1.9793023890151795e-03
+300 -3.1250862950583605e-04 1.3729277186262788e-03 -8.2298001787621641e-04
+438 -2.4590486282890020e-04 -1.6427262282284994e-03 9.6630130124539129e-05
+320 -3.2019592386545756e-03 -1.1342241337732250e-03 -2.3842558673802254e-03
+457 1.1773149427538102e-03 2.7416519266362717e-04 4.3945889984842488e-04
+439 3.5141085279090183e-04 -1.3300217473760970e-03 -9.8849984765018908e-04
+424 -3.3006960088780867e-03 -2.8101392083896648e-04 -5.0800385348003553e-03
+427 -2.5890810496686682e-04 -1.2876677887598059e-03 -8.8789900321242310e-04
+312 5.5552888243407786e-04 -5.3262082839434827e-04 -3.1640964835049088e-03
+306 -6.6730136200866407e-04 -9.4302242882215353e-04 2.5810620284575387e-03
+429 -1.4287747349573244e-03 -2.8285673531421034e-03 -3.0152234799650942e-03
+329 1.3569347641030285e-04 -2.2412894945817940e-03 -2.7962428646995932e-03
+30 2.3683158146611113e-03 -3.8878659310706001e-04 3.4279843245742616e-04
+332 1.9819888531830520e-04 -1.5948657958252230e-03 -4.2151081922356289e-03
+433 -2.5315168939591863e-03 -3.0624788979315442e-03 1.5473920747719801e-03
+373 2.2462501256752315e-03 1.5591310094430211e-03 1.7156608530756636e-03
+338 -2.2346546150824017e-03 -2.5647004780019318e-04 -9.3602164909687975e-04
+455 1.2933862178097701e-03 -1.7924542781457432e-03 3.9363837124510386e-04
+459 -2.5316989433110063e-04 -2.1643100433050446e-04 -9.7406255065551900e-05
+359 1.0164432865981345e-03 9.9400514816215608e-05 -1.2722672581036432e-03
+343 -1.5167774439058886e-03 1.2410840208130873e-04 1.0009307365539831e-03
+347 4.1848293468932105e-03 -4.5465485177142344e-03 -1.6693175767898195e-03
+325 -3.0062671287494030e-04 -7.3388391927578739e-04 -2.9732242551609072e-03
+247 -1.4691646860997296e-03 -7.8321228559906613e-04 3.2224151021024998e-03
+271 -4.0140053567595761e-03 1.4233860888421194e-03 -1.3858414169223116e-03
+389 2.6527687833038582e-03 7.1150077157258144e-04 -1.9069105971927570e-03
+374 1.0509676651052080e-03 1.6297216927840477e-04 1.9150119701501233e-03
+453 5.3627710953480466e-04 1.0623810157314019e-03 -3.4110047847246651e-03
+375 -3.7826822628799317e-03 6.2112416596204394e-04 -1.9002864797700494e-03
+460 -1.3204008509666403e-03 4.0515209797388797e-03 1.3982686477861429e-03
+449 -2.5803743182207172e-04 -6.6113268053219162e-04 1.2859228135477833e-03
+441 6.2250356573041992e-03 3.2422915277383543e-03 1.1950640970604397e-04
+454 1.3888478703459875e-03 1.2086826383721130e-03 -2.3315309890419829e-03
+444 6.7319018635269602e-04 6.3945824395506153e-04 5.5238342992856284e-04
+360 1.7393068276214492e-03 7.3859983364981821e-03 -1.5875933497999135e-04
+342 3.2357537890778567e-04 -9.4096124705394689e-04 2.7768083605621773e-03
+442 -3.4100169149259217e-05 4.6976919032466551e-04 5.5903713013778344e-04
+348 2.1417493471540946e-03 -1.9543583412438008e-03 -3.3955219065686299e-03
+346 1.9822365384511926e-03 -2.0522046278503256e-04 1.3000491639756425e-03
+448 -1.4359456804058624e-03 -1.2822036646869960e-03 -3.5391156127566768e-03
+462 1.2886872442661342e-03 1.0710393351756110e-03 -7.6979476968975938e-04
+426 1.7958770158233606e-03 -3.1874664409518200e-06 9.5038331688897167e-05
+275 -3.4883103434483949e-04 -1.8381152009904859e-03 3.2094845740884125e-03
+256 1.1135886499545585e-03 1.7359759335134923e-03 1.5155727786639605e-03
+352 -3.0528885215036594e-03 2.3670566842767232e-03 1.2325868777375442e-03
+376 -3.5037569363455517e-03 4.8678698163926690e-04 2.0362118264696323e-03
+380 2.6282323296947355e-04 3.6162602146161280e-04 -1.1106869516894428e-03
+497 -7.8331150526420967e-04 2.4605240136840066e-03 1.7384302633264733e-03
+477 4.1108977158095502e-03 -1.2076841205011129e-03 -1.6448437433185946e-03
+461 -1.5391179836440876e-03 7.3780399233091331e-05 -1.2756606589495575e-03
+464 -2.3885014778224668e-03 3.3760089810439919e-04 9.3252281035836632e-04
+485 -7.2660951411327422e-04 -1.1116571320959469e-03 -8.2010330884789006e-04
+482 -9.2664702132134959e-04 -2.2276118412914202e-03 2.7535476726335052e-04
+368 -9.5393120375058757e-04 -1.6120216942379210e-03 7.6095236827858977e-04
+465 1.7315186004059804e-03 5.7668905623644369e-04 -1.1291268633370304e-04
+405 -8.2199185860800923e-04 -3.4209891694057465e-03 -7.2390672944391214e-05
+486 1.8946284678875900e-03 1.2796620694668039e-04 -4.3432872086338909e-03
+367 9.7475879701057510e-04 2.2254980057271659e-03 -1.5010899647624578e-03
+93 -2.1624256247204051e-03 -1.7361245286550762e-03 -5.9169549048023015e-04
+372 3.9837350207303336e-04 3.7120952835700263e-04 -3.4668305719055663e-04
+495 3.4962891057094873e-03 -1.7953698156111010e-03 1.0181063587696754e-04
+413 1.8141690094951636e-03 -1.3724186794927661e-03 -1.6957458665521597e-03
+479 4.9098323892427138e-04 3.5216070524526096e-06 4.1881171751020061e-04
+498 2.2931604623305699e-03 2.8335822509988427e-03 1.0413235716327724e-03
+85 2.0688337522448944e-04 1.6383991324477136e-03 9.3537545083383555e-04
+421 7.9208284929888073e-04 2.2488828667023455e-03 -6.4597288914431219e-04
+408 -2.6586855479674453e-03 -1.6988885449828099e-03 6.8080900000917896e-04
+308 -1.0595640484019017e-03 1.6970219364241250e-03 -2.7842730542958247e-03
+470 -3.6890568727113588e-04 8.3531250747937601e-05 9.3844052188625700e-04
+331 -1.0496020197504415e-03 -4.1999252795687136e-04 1.8548810270983096e-03
+400 -3.3549235690469945e-03 3.0218067867917005e-03 -6.1151049427650721e-04
+391 -1.0006060113940218e-03 1.6002733287480534e-03 -4.2106644757900212e-04
+319 1.9036750615188344e-03 -6.9222202643326393e-04 -6.4814520782305481e-04
+396 2.0052743710944829e-03 -3.7157402102194121e-03 -2.7026887955353802e-04
+414 2.2293357461123193e-03 -1.7110096986235291e-03 2.4577844124736310e-03
+383 1.7572730551246420e-03 7.0821629344114639e-04 6.2481941308534011e-04
+418 -6.7692057217915791e-04 -1.0193144421159379e-03 6.5721300464715942e-04
+398 3.2306860664057320e-04 3.4535660504950070e-03 -1.2570059771701231e-03
+417 1.5392120968236800e-03 -3.5085886561323667e-03 8.1186671234065885e-04
+403 -2.1441981901339498e-03 -1.6548091018287719e-03 3.3757233094592466e-03
+9 1.1631026798752716e-03 3.6255675147176211e-03 8.3670731056519347e-04
+92 5.6173764999171267e-04 5.6715882740548708e-03 3.2444056349736133e-03
+14 2.6545102970342935e-03 1.0733062536224989e-03 1.6763252536708382e-03
+431 3.3981580920726552e-04 -1.9557294070209118e-04 1.2826949704043738e-03
+16 2.5274655407462130e-03 -1.0793080847927823e-03 -1.6270543617045513e-03
+489 -1.1367301120933703e-03 1.4799367703035313e-04 -2.8629420429828385e-03
+434 -1.6681537511363180e-03 -4.6564227580904205e-04 -3.2459898470367263e-03
+15 2.9917988090933877e-03 -1.8229537601137053e-03 3.6712012109999079e-04
+435 5.0842763872829366e-04 -1.9836515178513784e-03 -3.3695694112560143e-03
+481 -4.0147966712870235e-03 1.1813206088424903e-03 5.7659074169161566e-04
+423 -4.8386920652586478e-03 -1.7700335963911787e-03 -1.7699022948099636e-03
+327 1.3811536511294056e-03 2.5495488795989653e-03 -2.5180750339391005e-03
+425 -2.7824644312070615e-03 -2.9593338700632994e-03 -5.4759661922292892e-04
+350 1.4347259594423704e-03 3.1280247910320822e-04 3.4945121220589272e-03
+29 1.4396954356410234e-03 -1.1845397071293499e-03 -3.2943366003437102e-03
+356 -2.0045232746529790e-03 -1.3896286549546976e-03 -2.6932534756701687e-03
+33 -2.2093312299674575e-03 2.2187050328509292e-04 -8.2426056048074802e-04
+133 1.4519211326506154e-04 -9.4381832002558331e-04 -4.7741063935452662e-04
+440 1.1013820536532532e-03 -1.4442289529493484e-03 3.4322633964941440e-03
+21 -2.0622705937388660e-03 2.0724181004100760e-03 5.1114160387167656e-03
+445 5.8691003490959339e-04 2.2930856178607407e-03 1.7712463468742561e-03
+51 -4.0864004787010322e-04 -1.0243105100427301e-03 -2.6667842111347405e-03
+436 -5.4978051035714222e-04 1.2291978218043832e-04 2.7915466942175097e-03
+12 4.0518256952647149e-03 2.8731438686741603e-03 -4.1635665948280822e-03
+36 -3.6584974308049309e-03 2.2551820816913727e-04 -3.0588774213935262e-03
+351 -3.6419934524366162e-04 -1.1725766960339185e-03 -1.4474350913502502e-03
+53 -2.6942259666892900e-03 1.6654085285381830e-03 7.3650828666303018e-05
+480 1.6259962934367809e-03 2.4890491527485578e-03 -1.8373164921939781e-03
+61 -3.1006927035641580e-04 1.0326453535426546e-03 3.7835434226097587e-03
+443 -2.5730900264559087e-03 -2.8479818715802623e-04 1.0206508500845265e-03
+467 8.4202771905023032e-05 -3.9840405297192106e-04 -6.2662208577902621e-04
+469 -2.1663737374129524e-03 -9.0182225196971336e-04 1.9805443140992617e-03
+49 1.2219563633793103e-03 6.2804276213175678e-04 2.6589671096508716e-03
+55 -6.5102119677174657e-04 1.2871566163630635e-03 4.3740064195731572e-03
+56 9.3560008922587699e-04 -3.0819366130625712e-03 1.7643175079695681e-04
+450 -1.9888225409018549e-03 2.4232571043433450e-03 -8.6593667787787762e-04
+456 4.0697347860896536e-03 -9.9187657090511511e-04 4.8469662374762278e-05
+474 -1.0836844306871712e-03 -1.1310044658518858e-03 6.1372915604458419e-04
+58 5.7042894958949514e-04 2.1615611939551026e-03 -2.4782270209063707e-04
+178 1.1228972921667709e-03 -4.3003860342641191e-04 8.3537620018979842e-04
+487 1.0343931504680109e-03 -4.2038579091153421e-03 1.1219352633085300e-03
+446 3.9958636414470788e-04 -5.7961442205656412e-06 -4.6570506711204798e-03
+3 -5.8711871813776830e-04 1.0763776685485374e-03 -2.2757052973065811e-03
+452 1.8627716713916064e-03 -1.6700942963417649e-03 -1.5530873974304569e-03
+407 -3.6953703910451497e-03 1.9277845980838699e-03 1.1350300138979307e-03
+409 -1.4534816116235328e-03 2.9367496186429357e-04 2.9141973068332093e-03
+54 1.5792170070441105e-03 4.5771863688602360e-04 2.6324622963569909e-03
+471 5.0195238604911754e-04 1.0022661506174431e-03 2.0012639582204944e-04
+451 -2.7520205169419749e-03 2.7582514599879497e-04 3.0427134518763114e-03
+494 2.1430942732408244e-03 8.3229651336788548e-04 2.4696274518044353e-03
+478 -9.2799624258822766e-04 -8.4328484533939692e-04 -3.2545905257524354e-03
+476 1.7371835789222172e-03 -3.5380572012027865e-03 -4.8134441145981368e-04
+463 -8.8418647027587339e-04 1.9991713921157922e-03 -2.6330613634871834e-03
+81 2.0117433760917505e-03 2.1793748862527595e-04 -9.7662059797861485e-04
+406 2.5332031797584984e-03 1.2485636006106368e-03 1.6410119076418951e-04
+488 -1.3214356736969853e-03 -2.0984066311391446e-03 -2.9470196836137298e-03
+50 2.8991163074818596e-03 7.9271214583119564e-04 1.7563836479005193e-03
+89 1.0769210634048985e-03 2.0263741075012159e-03 -1.1297090168809071e-03
+416 1.7851512705086370e-03 2.1180265976131593e-03 2.4592532269903634e-03
+491 1.2196834124779867e-03 -1.9510539520404412e-03 -6.4081798090182007e-04
+493 2.0787073207956560e-03 3.4651161546861730e-03 -6.8773915905300268e-04
+411 1.8000802078136416e-03 4.5100890698991164e-04 1.6484562794635692e-03
+404 1.5436716622152513e-03 1.6474594255141211e-04 -1.3828898511292894e-03
+499 -3.5688113012509264e-04 -2.3043283728425281e-03 -9.0882956806584826e-04
+97 -1.6091065662438852e-04 -7.7810536893266281e-04 -1.9217232830524382e-03
diff --git a/examples/USER/misc/grem/lj-6rep/410/restart.init b/examples/USER/misc/grem/lj-6rep/410/restart.init
new file mode 100644
index 000000000..860f4f3b6
--- /dev/null
+++ b/examples/USER/misc/grem/lj-6rep/410/restart.init
@@ -0,0 +1,1022 @@
+LAMMPS data file via write_data, version 5 Nov 2016, timestep = 10000
+
+500 atoms
+1 atom types
+
+1.3217324256456706e+00 2.3678267574354290e+01 xlo xhi
+1.3217324256456706e+00 2.3678267574354290e+01 ylo yhi
+1.3217324256456706e+00 2.3678267574354290e+01 zlo zhi
+
+Masses
+
+1 62.5
+
+Pair Coeffs # lj/cut
+
+1 1.1 2.8
+
+Atoms # full
+
+22 0 1 0.0000000000000000e+00 1.9478117121042282e+00 3.0862539767938260e+00 1.9750891346190529e+00 0 0 0
+28 0 1 0.0000000000000000e+00 3.5367050849585873e+00 4.4840687275678688e+00 4.4304883147436627e+00 0 0 0
+86 0 1 0.0000000000000000e+00 4.9876267876441434e+00 2.4565045333282569e+00 1.7433640705592774e+00 0 1 0
+185 0 1 0.0000000000000000e+00 6.9310339998579371e+00 3.7752404809189271e+00 4.2506169117853734e+00 0 1 0
+186 0 1 0.0000000000000000e+00 8.2001553775729477e+00 1.9868011855661347e+00 2.1115278791047203e+00 0 1 0
+109 0 1 0.0000000000000000e+00 1.0076362196385853e+01 3.5500672334784715e+00 4.1685235315704574e+00 0 0 0
+31 0 1 0.0000000000000000e+00 1.1879874225004567e+01 4.7716240449264289e+00 1.8131058273174192e+00 0 0 0
+111 0 1 0.0000000000000000e+00 1.3131035471066260e+01 3.0718748697156144e+00 4.2055801620549911e+00 0 0 0
+16 0 1 0.0000000000000000e+00 1.4932401971681832e+01 4.2262906799546371e+00 1.8149579400785050e+00 0 0 0
+420 0 1 0.0000000000000000e+00 1.6402901691851767e+01 2.5510061676871638e+00 4.2882747272085933e+00 0 0 1
+18 0 1 0.0000000000000000e+00 1.7921778477367695e+01 3.9087416485217967e+00 1.8849446306780888e+00 0 0 0
+117 0 1 0.0000000000000000e+00 1.9577631563994949e+01 2.3038478822418740e+00 4.1171040091433220e+00 0 0 0
+1 0 1 0.0000000000000000e+00 2.1115732424016390e+01 3.4067358555480092e+00 1.8560533808591861e+00 -1 0 0
+101 0 1 0.0000000000000000e+00 2.2685096310306829e+01 4.7386640017696369e+00 4.1927001454140242e+00 -1 0 0
+2 0 1 0.0000000000000000e+00 2.2413834918205030e+01 1.5730060376165116e+00 4.1477729120727487e+00 -1 0 0
+32 0 1 0.0000000000000000e+00 4.0613810674372939e+00 7.5356241011159577e+00 4.1439337867784829e+00 0 0 0
+24 0 1 0.0000000000000000e+00 2.3527301683262247e+00 6.0001808893994024e+00 2.0794393348018350e+00 0 0 0
+25 0 1 0.0000000000000000e+00 5.6075929284274171e+00 5.5818453735898972e+00 1.9737088191796737e+00 0 0 0
+27 0 1 0.0000000000000000e+00 7.1182459925089754e+00 6.8821925913439985e+00 4.3158718575343311e+00 0 0 0
+412 0 1 0.0000000000000000e+00 8.6704854166481340e+00 5.1661971974976035e+00 1.9441634247268429e+00 0 0 1
+26 0 1 0.0000000000000000e+00 5.9073942666582600e+00 8.8658681890248978e+00 1.9785598399203703e+00 0 0 0
+447 0 1 0.0000000000000000e+00 9.1556922460932668e+00 8.2831116574969101e+00 2.1758379936810908e+00 0 0 1
+11 0 1 0.0000000000000000e+00 1.0423218432362555e+01 6.5388249075119633e+00 4.0912523233938440e+00 0 0 0
+432 0 1 0.0000000000000000e+00 1.2399895459960970e+01 7.8996992141029470e+00 2.1195035476630593e+00 0 0 1
+116 0 1 0.0000000000000000e+00 1.3405293850216202e+01 6.2926255252981980e+00 4.6465879454836383e+00 0 0 0
+133 0 1 0.0000000000000000e+00 1.5475683544017153e+01 7.4250369579793816e+00 1.9339563022416797e+00 0 0 0
+114 0 1 0.0000000000000000e+00 1.6563699321332479e+01 5.6407786376430344e+00 4.1417989199600616e+00 0 0 0
+440 0 1 0.0000000000000000e+00 1.8448444427593216e+01 7.0485817476461099e+00 1.9278054600681676e+00 0 0 1
+35 0 1 0.0000000000000000e+00 1.9504626011922177e+01 5.1972337485330158e+00 4.1946812096529484e+00 0 0 0
+134 0 1 0.0000000000000000e+00 1.7046240492067003e+01 8.6977002829883290e+00 4.0567321026135552e+00 0 0 0
+57 0 1 0.0000000000000000e+00 2.0191169357743167e+01 8.4150240464163737e+00 4.2159616372993955e+00 0 0 0
+39 0 1 0.0000000000000000e+00 2.1716621168855951e+01 6.5004701722966995e+00 2.0015620960190992e+00 0 0 0
+38 0 1 0.0000000000000000e+00 2.3424727414060094e+01 7.6588820756146445e+00 4.1094314125138816e+00 0 0 0
+41 0 1 0.0000000000000000e+00 2.7412059583679804e+00 9.2406318146027058e+00 2.0090111359018796e+00 0 0 0
+148 0 1 0.0000000000000000e+00 4.6147654078313334e+00 1.0673418289671710e+01 4.1003144769976210e+00 0 0 0
+43 0 1 0.0000000000000000e+00 1.4037241280871235e+00 1.0939115477060346e+01 4.3057653779733460e+00 0 0 0
+79 0 1 0.0000000000000000e+00 3.1800448146032836e+00 1.2333806667625392e+01 1.8190939587603934e+00 1 0 0
+45 0 1 0.0000000000000000e+00 7.7359086107654891e+00 1.0066869809472129e+01 4.1901958414064593e+00 0 0 0
+46 0 1 0.0000000000000000e+00 6.3916891976501393e+00 1.1805066729830335e+01 1.8898148720593253e+00 0 0 0
+146 0 1 0.0000000000000000e+00 1.0941279376902880e+01 9.7227486703237371e+00 4.1050883699922416e+00 0 0 0
+153 0 1 0.0000000000000000e+00 9.5982890766935185e+00 1.1300012051612406e+01 1.9747896486436143e+00 0 0 0
+149 0 1 0.0000000000000000e+00 1.2646016009545081e+01 1.1242373882603717e+01 2.1540372971840083e+00 0 0 0
+130 0 1 0.0000000000000000e+00 1.3961676752585554e+01 9.3263956890495887e+00 4.3987060691704283e+00 0 0 0
+156 0 1 0.0000000000000000e+00 1.5716847344491431e+01 1.0548383786296830e+01 2.0164629415808490e+00 0 0 0
+71 0 1 0.0000000000000000e+00 1.4264164026095900e+01 1.2531429850703752e+01 4.1788558581818211e+00 0 0 0
+354 0 1 0.0000000000000000e+00 1.7355230879763369e+01 1.1864917998581355e+01 4.0940502881672209e+00 0 0 1
+78 0 1 0.0000000000000000e+00 1.8807085863733295e+01 1.0194188888412123e+01 1.7014248882595626e+00 0 0 0
+60 0 1 0.0000000000000000e+00 2.0567657902621900e+01 1.1290735649494334e+01 4.1377841096814922e+00 0 0 0
+62 0 1 0.0000000000000000e+00 2.1960428652227879e+01 9.4938617406890788e+00 1.8539339799804475e+00 -1 0 0
+158 0 1 0.0000000000000000e+00 1.9861083096021002e+00 1.3983813909739155e+01 4.0733251960797476e+00 1 0 0
+467 0 1 0.0000000000000000e+00 3.6281043319688679e+00 1.5484019869786033e+01 1.7501382756336783e+00 0 0 1
+42 0 1 0.0000000000000000e+00 5.0737603933630506e+00 1.3645423370793379e+01 4.0660338558344815e+00 0 0 0
+52 0 1 0.0000000000000000e+00 8.1918017817383717e+00 1.3062210693788648e+01 4.3523435931413648e+00 0 0 0
+65 0 1 0.0000000000000000e+00 6.7339729425845576e+00 1.5030245311898726e+01 1.8189226284892714e+00 0 0 0
+170 0 1 0.0000000000000000e+00 8.6697921004810716e+00 1.6203096689740267e+01 4.1882984487314951e+00 0 0 0
+73 0 1 0.0000000000000000e+00 1.1189742139578600e+01 1.2679527981156259e+01 4.3406689873958184e+00 0 0 0
+72 0 1 0.0000000000000000e+00 9.7666536820201557e+00 1.4616276749442285e+01 2.0579967676853048e+00 0 0 0
+91 0 1 0.0000000000000000e+00 1.1712993064650947e+01 1.5865771999627761e+01 4.3516863321845589e+00 0 0 0
+76 0 1 0.0000000000000000e+00 1.2898964157209571e+01 1.4206670908108798e+01 1.9746534659621862e+00 0 0 0
+174 0 1 0.0000000000000000e+00 1.4699087476309991e+01 1.5541466443511281e+01 4.1890840623286119e+00 0 0 0
+77 0 1 0.0000000000000000e+00 1.6203462176427003e+01 1.3806242882037004e+01 1.9424869697238156e+00 0 0 0
+75 0 1 0.0000000000000000e+00 1.7926067177483247e+01 1.5094158883234730e+01 4.1764993794370353e+00 0 0 0
+59 0 1 0.0000000000000000e+00 1.9352124812862687e+01 1.3075268226937133e+01 1.7210713050426847e+00 0 0 0
+154 0 1 0.0000000000000000e+00 2.1249410392254937e+01 1.4563167894946726e+01 4.0560713395103551e+00 0 0 0
+63 0 1 0.0000000000000000e+00 2.2428599885417153e+01 1.2674958573992619e+01 1.7726128124061311e+00 -1 0 0
+161 0 1 0.0000000000000000e+00 2.2973390776263479e+01 1.5775573859860105e+01 2.1170466896427609e+00 -1 0 0
+181 0 1 0.0000000000000000e+00 2.4317774208425949e+00 1.7214519090449770e+01 4.2199037977758120e+00 0 0 0
+484 0 1 0.0000000000000000e+00 3.9448810986441067e+00 1.8709428377647686e+01 2.0141293932113968e+00 0 0 1
+162 0 1 0.0000000000000000e+00 5.4045586744852496e+00 1.6641319950071178e+01 4.3096872811536304e+00 0 0 0
+142 0 1 0.0000000000000000e+00 7.2849816643440226e+00 1.8166492896400086e+01 2.1914882820999657e+00 0 0 0
+64 0 1 0.0000000000000000e+00 5.8990367171918709e+00 1.9869074667286228e+01 4.0498695602658294e+00 0 0 0
+83 0 1 0.0000000000000000e+00 9.0413509029278529e+00 1.9525358142225851e+01 4.0646628906628788e+00 0 0 0
+70 0 1 0.0000000000000000e+00 1.2175370336085150e+01 1.8971204113404752e+01 4.2111952371082353e+00 0 0 0
+69 0 1 0.0000000000000000e+00 1.0094896167360774e+01 1.7679641102405711e+01 1.7916851657835828e+00 0 0 0
+471 0 1 0.0000000000000000e+00 1.3220173208011287e+01 1.7203640467476980e+01 1.9826188993193585e+00 0 0 1
+293 0 1 0.0000000000000000e+00 1.5506631807421591e+01 1.8509750477476473e+01 4.2206752670880388e+00 0 0 0
+74 0 1 0.0000000000000000e+00 1.9853422153287365e+01 1.6181417837815381e+01 2.0454656860608509e+00 0 0 0
+475 0 1 0.0000000000000000e+00 1.6660550960166091e+01 1.6730285197531174e+01 2.0613587575820560e+00 0 0 1
+197 0 1 0.0000000000000000e+00 1.8498864429696855e+01 1.8406443200904739e+01 4.1585178720070521e+00 0 0 0
+490 0 1 0.0000000000000000e+00 1.7106609860270432e+01 2.0014858550576196e+01 1.9608189034760846e+00 0 0 1
+98 0 1 0.0000000000000000e+00 2.1492328895151168e+01 1.7732712427319314e+01 4.0722444722547610e+00 0 0 0
+496 0 1 0.0000000000000000e+00 2.0093924974183846e+01 1.9492706584247209e+01 1.8777522764019818e+00 0 0 1
+82 0 1 0.0000000000000000e+00 2.3322864169565420e+01 1.8831383045471004e+01 2.0485789809670760e+00 -1 0 0
+107 0 1 0.0000000000000000e+00 3.3313303020145169e+00 1.3225027893387740e+00 3.9750258063473862e+00 0 0 0
+7 0 1 0.0000000000000000e+00 1.4197675896537070e+00 2.2237386877363473e+01 2.1345465177891265e+00 0 -1 0
+5 0 1 0.0000000000000000e+00 4.5501226391165996e+00 2.1740832616974007e+01 1.9515396633175592e+00 0 -1 0
+102 0 1 0.0000000000000000e+00 2.7349982423142576e+00 2.0491798048648999e+01 4.2777789385660494e+00 0 -1 0
+88 0 1 0.0000000000000000e+00 6.2677001343849685e+00 2.2935746304899308e+01 4.0730234107283092e+00 0 0 0
+66 0 1 0.0000000000000000e+00 7.6272179204424333e+00 2.1263335737774558e+01 1.9516675907194467e+00 0 0 0
+10 0 1 0.0000000000000000e+00 1.1133961830388710e+01 1.7309643116013922e+00 2.0299292296606688e+00 0 0 0
+67 0 1 0.0000000000000000e+00 9.4444363992403666e+00 2.2616820399353578e+01 4.0867978924212647e+00 0 0 0
+472 0 1 0.0000000000000000e+00 1.0978534984730171e+01 2.0966177699321200e+01 1.7360853258639608e+00 0 0 1
+13 0 1 0.0000000000000000e+00 1.2668337191490062e+01 2.2229049618437401e+01 4.3205671284471379e+00 0 -1 0
+214 0 1 0.0000000000000000e+00 1.4084024018060260e+01 2.0532701896178843e+01 2.0816388437193925e+00 0 -1 0
+94 0 1 0.0000000000000000e+00 1.4440244004744137e+01 2.3676585533741868e+01 2.1166309607636240e+00 0 0 0
+190 0 1 0.0000000000000000e+00 1.5797681688887177e+01 2.1903048287230124e+01 4.2718761054173999e+00 0 0 0
+500 0 1 0.0000000000000000e+00 1.7606834424146772e+01 2.3175869628920307e+01 1.9161155321944867e+00 0 0 1
+100 0 1 0.0000000000000000e+00 1.6977134790753617e+01 2.0085516420425378e+01 6.5519991890702372e+00 0 0 0
+419 0 1 0.0000000000000000e+00 1.8881478909567253e+01 2.1301891773173008e+01 4.2000706550847138e+00 0 -1 1
+8 0 1 0.0000000000000000e+00 2.0595683910184995e+01 2.2576255098048247e+01 2.1006184419288947e+00 -1 -1 0
+84 0 1 0.0000000000000000e+00 2.1977044800477294e+01 2.0893880056391193e+01 4.1872941614483015e+00 -1 0 0
+19 0 1 0.0000000000000000e+00 2.0112945993669511e+00 2.8716775903380389e+00 6.4161697714365520e+00 1 0 0
+125 0 1 0.0000000000000000e+00 5.1462113597005992e+00 2.3244487320329990e+00 6.3397746444472878e+00 0 0 0
+124 0 1 0.0000000000000000e+00 3.6242120438243139e+00 4.2673500340015416e+00 8.6973366595966084e+00 0 0 0
+87 0 1 0.0000000000000000e+00 8.2033220230551489e+00 2.0352537204040662e+00 6.3912968456988750e+00 0 1 0
+206 0 1 0.0000000000000000e+00 6.9522928629635246e+00 3.8790437156473998e+00 8.5871456665441865e+00 0 0 0
+110 0 1 0.0000000000000000e+00 1.1797702354483359e+01 4.7355761226815520e+00 6.4930081218895612e+00 0 0 0
+191 0 1 0.0000000000000000e+00 1.1325508614787514e+01 1.6403806955501912e+00 6.4470822984932763e+00 0 1 0
+192 0 1 0.0000000000000000e+00 9.9322838147203889e+00 3.4711172209600321e+00 8.7080778974765742e+00 0 1 0
+120 0 1 0.0000000000000000e+00 1.5016275667438611e+01 4.2823336094786093e+00 6.6794556905981937e+00 0 0 0
+209 0 1 0.0000000000000000e+00 1.3118766993333525e+01 2.9112098035568539e+00 8.6649745877060109e+00 0 0 0
+113 0 1 0.0000000000000000e+00 1.8012015404716468e+01 3.8558664542972902e+00 6.5218722727991176e+00 0 0 0
+217 0 1 0.0000000000000000e+00 1.9389013723952022e+01 2.1238374683957533e+00 8.7189626409898207e+00 0 0 0
+34 0 1 0.0000000000000000e+00 2.1125693722548622e+01 3.3857162249805026e+00 6.3871719603193640e+00 0 0 0
+106 0 1 0.0000000000000000e+00 2.1772912725004683e+00 6.0191495066462037e+00 6.3283474416575052e+00 0 0 0
+105 0 1 0.0000000000000000e+00 8.8009573654093671e+00 5.1853989099183257e+00 6.5057489547567560e+00 0 0 0
+108 0 1 0.0000000000000000e+00 5.5378253692432748e+00 5.4608052977691646e+00 6.5838380429578240e+00 0 0 0
+129 0 1 0.0000000000000000e+00 7.2359204452584232e+00 6.8680887741518397e+00 8.8115918472750554e+00 0 0 0
+131 0 1 0.0000000000000000e+00 9.0318320723898680e+00 8.4054638145962954e+00 6.1553237529535547e+00 0 0 0
+151 0 1 0.0000000000000000e+00 1.2005120384540003e+01 8.0902209757817864e+00 6.4704823336878645e+00 0 0 0
+232 0 1 0.0000000000000000e+00 1.0196562156327834e+01 6.4968380369423642e+00 8.9305783383369430e+00 0 0 0
+135 0 1 0.0000000000000000e+00 1.5424175423804112e+01 7.5438580372617619e+00 6.6671876238396015e+00 0 0 0
+112 0 1 0.0000000000000000e+00 1.3527989931107566e+01 6.0387044943156223e+00 8.7234881926544965e+00 0 0 0
+139 0 1 0.0000000000000000e+00 1.8310140801644916e+01 7.1461693126666139e+00 6.4153265923277552e+00 0 0 0
+194 0 1 0.0000000000000000e+00 1.9951444936649548e+01 5.2611650138086770e+00 8.7555518618139985e+00 0 1 0
+233 0 1 0.0000000000000000e+00 1.6654435801358545e+01 5.6258203194969116e+00 8.8734726979154424e+00 0 0 0
+136 0 1 0.0000000000000000e+00 1.7316432051472344e+01 8.7768492688892259e+00 8.7943001675229571e+00 0 0 0
+37 0 1 0.0000000000000000e+00 2.1641025019592522e+01 6.5831581661849725e+00 6.3116048273443619e+00 0 0 0
+118 0 1 0.0000000000000000e+00 2.0317198468658106e+01 8.4421874006025170e+00 8.4180117632358833e+00 0 0 0
+221 0 1 0.0000000000000000e+00 2.3581983228082933e+01 7.8591723899594026e+00 8.4822908317038834e+00 -1 0 0
+23 0 1 0.0000000000000000e+00 2.7368871358176756e+00 9.0364832135265303e+00 6.2656016561747929e+00 0 0 0
+141 0 1 0.0000000000000000e+00 4.5477554471966783e+00 1.0439840393777816e+01 8.4853370965106976e+00 0 0 0
+143 0 1 0.0000000000000000e+00 3.2530119107206961e+00 1.2075152991905039e+01 6.4007936362754867e+00 0 0 0
+132 0 1 0.0000000000000000e+00 5.8764747348066653e+00 8.5296955167729926e+00 6.4698711798249322e+00 0 0 0
+263 0 1 0.0000000000000000e+00 6.3437582242025625e+00 1.1842791861286218e+01 6.3652974519658274e+00 0 0 0
+47 0 1 0.0000000000000000e+00 7.5350150861334724e+00 1.0208349067494103e+01 8.5278374423502257e+00 0 0 0
+126 0 1 0.0000000000000000e+00 9.4972263312171776e+00 1.1399961214125186e+01 6.5125199714115132e+00 0 0 0
+147 0 1 0.0000000000000000e+00 1.0761990659563960e+01 9.7279527134907315e+00 8.8353418832584172e+00 0 0 0
+150 0 1 0.0000000000000000e+00 1.2811793871136363e+01 1.1061252104869681e+01 6.3459028335086280e+00 0 0 0
+173 0 1 0.0000000000000000e+00 1.5725620547317311e+01 1.0604491715145915e+01 6.3016301980423055e+00 0 0 0
+230 0 1 0.0000000000000000e+00 1.4041130133110977e+01 9.3197860091283466e+00 8.7393310178147754e+00 0 0 0
+196 0 1 0.0000000000000000e+00 1.4545997324296239e+01 1.2347002804502097e+01 8.7443084921081464e+00 0 0 0
+137 0 1 0.0000000000000000e+00 1.8851791454647085e+01 1.0199308125467731e+01 6.4338042655549241e+00 0 0 0
+157 0 1 0.0000000000000000e+00 2.1973527030670081e+01 9.5741160616010887e+00 6.2925168651778520e+00 0 0 0
+273 0 1 0.0000000000000000e+00 2.0562054654303449e+01 1.1594840772210480e+01 8.5369505991835641e+00 0 0 0
+68 0 1 0.0000000000000000e+00 3.8095333616549159e+00 1.5298968402889026e+01 6.5615209048571614e+00 0 0 0
+261 0 1 0.0000000000000000e+00 1.8869930040024943e+00 1.4037318717108951e+01 8.5265844314342623e+00 0 0 0
+258 0 1 0.0000000000000000e+00 4.9481225505095807e+00 1.3394835237311817e+01 8.7660637525531229e+00 1 0 0
+48 0 1 0.0000000000000000e+00 6.7558844958769111e+00 1.4821663896270749e+01 6.2156088258588840e+00 0 0 0
+249 0 1 0.0000000000000000e+00 8.0986092929030438e+00 1.3127167511618293e+01 8.5244802450263961e+00 0 0 0
+172 0 1 0.0000000000000000e+00 9.7917440309199009e+00 1.4632618841428068e+01 6.5198378658197100e+00 0 0 0
+152 0 1 0.0000000000000000e+00 1.1344225165633205e+01 1.3023253077342442e+01 8.6915344371292296e+00 0 0 0
+246 0 1 0.0000000000000000e+00 1.1591489266563904e+01 1.6065851108748475e+01 8.5958092234455474e+00 0 0 0
+250 0 1 0.0000000000000000e+00 1.3263708488652638e+01 1.4080057864329850e+01 6.4327307175166455e+00 0 0 0
+40 0 1 0.0000000000000000e+00 1.6244861942016179e+01 1.3645425253715446e+01 6.4256212815272784e+00 0 0 0
+138 0 1 0.0000000000000000e+00 1.9315515679976574e+01 1.3069235515504603e+01 6.1315613049196429e+00 0 0 0
+80 0 1 0.0000000000000000e+00 1.9706758493656469e+01 1.6382382921834726e+01 6.3287627718701716e+00 0 0 0
+163 0 1 0.0000000000000000e+00 2.2387668258508725e+01 1.2779724398305593e+01 6.4318733582168610e+00 -1 0 0
+99 0 1 0.0000000000000000e+00 2.2941119399977953e+01 1.6035495990830864e+01 6.4033973093448697e+00 0 0 0
+166 0 1 0.0000000000000000e+00 4.1925988944398647e+00 1.8661063167549635e+01 6.1349732391756788e+00 0 0 0
+264 0 1 0.0000000000000000e+00 2.4984375992739469e+00 1.7126258005738116e+01 8.8009153446680237e+00 0 0 0
+168 0 1 0.0000000000000000e+00 8.4932164143153130e+00 1.6087847144052041e+01 8.7688065283106482e+00 0 0 0
+165 0 1 0.0000000000000000e+00 7.1438282693236195e+00 1.8006395779975477e+01 6.5339394481325863e+00 0 0 0
+262 0 1 0.0000000000000000e+00 5.4443938277417363e+00 1.6763108907731109e+01 8.4691616266751080e+00 0 0 0
+282 0 1 0.0000000000000000e+00 5.9233978124927269e+00 1.9846663343634582e+01 8.5927733703497751e+00 0 0 0
+266 0 1 0.0000000000000000e+00 9.1228369993527636e+00 1.9442014397850762e+01 8.5657411284608891e+00 0 0 0
+269 0 1 0.0000000000000000e+00 1.0383855929803980e+01 1.7693108058191665e+01 6.3409193004906586e+00 0 0 0
+176 0 1 0.0000000000000000e+00 1.3561439262286150e+01 1.7252589643420890e+01 6.5061408604830193e+00 0 0 0
+291 0 1 0.0000000000000000e+00 1.6463354294713454e+01 1.6633294103945396e+01 6.3483341323180609e+00 0 0 0
+164 0 1 0.0000000000000000e+00 2.3279300840429165e+01 1.8943517862244555e+01 6.4461966605765708e+00 -1 0 0
+198 0 1 0.0000000000000000e+00 2.0157155108760151e+01 1.9549606979307374e+01 6.4999874432404923e+00 0 0 0
+103 0 1 0.0000000000000000e+00 4.6402618883452167e+00 2.1697374335755274e+01 6.3874150357213315e+00 0 -1 0
+298 0 1 0.0000000000000000e+00 1.8021547378523308e+00 2.2265125899773967e+01 6.4059307786722011e+00 1 0 0
+183 0 1 0.0000000000000000e+00 3.0098655050847403e+00 2.0142053146555913e+01 8.4745118979723131e+00 0 0 0
+169 0 1 0.0000000000000000e+00 7.8223276406155007e+00 2.1074791471538170e+01 6.2438378255207638e+00 0 0 0
+187 0 1 0.0000000000000000e+00 6.2874791251826236e+00 2.3087909998482086e+01 8.7317248538593191e+00 0 0 0
+189 0 1 0.0000000000000000e+00 1.0754791215133876e+01 2.0837025098929619e+01 6.5734157144231391e+00 0 0 0
+286 0 1 0.0000000000000000e+00 9.6737084070187613e+00 2.2903831525581140e+01 8.6810980169512746e+00 0 0 0
+96 0 1 0.0000000000000000e+00 1.4339826041786894e+01 2.3677428824240444e+01 6.5046977417575578e+00 0 0 0
+193 0 1 0.0000000000000000e+00 1.4085685376853149e+01 2.0456011171255010e+01 6.5358084994180681e+00 0 0 0
+200 0 1 0.0000000000000000e+00 1.7587041925058255e+01 2.3117890403836078e+01 6.4780387269416213e+00 0 0 0
+199 0 1 0.0000000000000000e+00 1.9013965295101720e+01 2.1575360346185771e+01 8.5731821515816300e+00 0 0 0
+182 0 1 0.0000000000000000e+00 2.0632305273647098e+01 2.2735273075333861e+01 6.3224475063116685e+00 -1 0 0
+381 0 1 0.0000000000000000e+00 2.2173445411183778e+01 2.0722077640589148e+01 8.7144350270937991e+00 -1 0 0
+218 0 1 0.0000000000000000e+00 2.0118460631904664e+00 3.0855591190719944e+00 1.1037570045270815e+01 1 0 0
+203 0 1 0.0000000000000000e+00 4.9564379203358220e+00 2.3797425027807861e+00 1.0861856779282594e+01 0 0 0
+188 0 1 0.0000000000000000e+00 8.1841500012057136e+00 2.1472681985959912e+00 1.0942014489504917e+01 0 1 0
+290 0 1 0.0000000000000000e+00 1.1296787262490080e+01 1.6449128583950201e+00 1.0844890594579040e+01 0 1 0
+227 0 1 0.0000000000000000e+00 1.1865238607049623e+01 4.7156466579392156e+00 1.1098180069145050e+01 0 0 0
+115 0 1 0.0000000000000000e+00 1.6327711341856517e+01 2.2396295176992052e+00 8.7895249526800381e+00 0 0 0
+211 0 1 0.0000000000000000e+00 1.4990058367309331e+01 4.1803165135817597e+00 1.0880214446869557e+01 0 0 0
+334 0 1 0.0000000000000000e+00 1.7918103410151495e+01 3.7657333067956587e+00 1.0932409373344528e+01 0 0 0
+237 0 1 0.0000000000000000e+00 2.2449418988996776e+01 1.4722549418960122e+00 8.6577179203910966e+00 0 0 0
+4 0 1 0.0000000000000000e+00 2.3002964407429033e+01 4.6472047533109055e+00 8.5742953610892769e+00 -1 0 0
+119 0 1 0.0000000000000000e+00 2.1203399612036396e+01 3.3251767163221162e+00 1.0857287110329256e+01 0 0 0
+122 0 1 0.0000000000000000e+00 4.0051027809782820e+00 7.3252254591621728e+00 8.5254738372758325e+00 0 0 0
+224 0 1 0.0000000000000000e+00 2.5179353344295610e+00 6.1081734505225294e+00 1.0904091579723412e+01 0 0 0
+228 0 1 0.0000000000000000e+00 8.5446187390601089e+00 5.2342874452893424e+00 1.1138201340994687e+01 0 0 0
+225 0 1 0.0000000000000000e+00 5.5358444497509032e+00 5.6743051684048638e+00 1.1031891971670346e+01 0 0 0
+128 0 1 0.0000000000000000e+00 5.7191140238421232e+00 8.8433630494744051e+00 1.0752039016287171e+01 0 0 0
+229 0 1 0.0000000000000000e+00 1.2069311905881435e+01 7.9260445158198065e+00 1.0762423111741276e+01 0 0 0
+127 0 1 0.0000000000000000e+00 8.8660934744472293e+00 8.5152793906907558e+00 1.0987067251679642e+01 0 0 0
+235 0 1 0.0000000000000000e+00 1.5253439979204224e+01 7.4509404215017376e+00 1.0855505065218829e+01 0 0 0
+240 0 1 0.0000000000000000e+00 1.8347380759396341e+01 6.8469159532744257e+00 1.1027809017931272e+01 0 0 0
+20 0 1 0.0000000000000000e+00 2.1841822029759996e+01 6.2697019179558735e+00 1.0862041081733750e+01 0 0 0
+121 0 1 0.0000000000000000e+00 1.3297198040399465e+00 1.0896878265512145e+01 8.7226253523395876e+00 0 0 0
+241 0 1 0.0000000000000000e+00 2.7198852289529092e+00 9.2205407335514025e+00 1.0787284711772278e+01 0 0 0
+145 0 1 0.0000000000000000e+00 3.2575066247342317e+00 1.2253512906056773e+01 1.0972025668514032e+01 0 0 0
+252 0 1 0.0000000000000000e+00 6.4849644397361246e+00 1.1728736473243245e+01 1.0822227302653141e+01 0 0 0
+265 0 1 0.0000000000000000e+00 9.4877750245413797e+00 1.1622096167777373e+01 1.0979372967103378e+01 0 0 0
+231 0 1 0.0000000000000000e+00 1.2754807823616703e+01 1.1107595543873764e+01 1.0887155958717649e+01 0 0 0
+234 0 1 0.0000000000000000e+00 1.5990258394528327e+01 1.0428316900608316e+01 1.0719704338122565e+01 0 0 0
+179 0 1 0.0000000000000000e+00 1.7469703074548161e+01 1.1938592159140399e+01 8.5161379732036302e+00 0 0 0
+238 0 1 0.0000000000000000e+00 1.9145207159617751e+01 1.0067912999792021e+01 1.0665323012136225e+01 0 0 0
+123 0 1 0.0000000000000000e+00 2.1976100847373655e+01 9.4261568246666609e+00 1.0874082298158722e+01 -1 0 0
+144 0 1 0.0000000000000000e+00 3.6258646375878572e+00 1.5344607201030882e+01 1.0834630737464371e+01 0 0 0
+285 0 1 0.0000000000000000e+00 6.7596740021610042e+00 1.4965266163367279e+01 1.0957893602275401e+01 0 0 0
+167 0 1 0.0000000000000000e+00 9.8261011076434652e+00 1.4584891435161550e+01 1.0950343674423580e+01 0 0 0
+278 0 1 0.0000000000000000e+00 1.4640292738341218e+01 1.5447351187470181e+01 8.7613877098009425e+00 0 0 0
+171 0 1 0.0000000000000000e+00 1.2867167028758907e+01 1.4308153119044283e+01 1.0766086410225956e+01 0 0 0
+160 0 1 0.0000000000000000e+00 1.6388500155332920e+01 1.3883555446065055e+01 1.1049973515159062e+01 0 0 0
+277 0 1 0.0000000000000000e+00 1.8006415994137694e+01 1.4816093934064192e+01 8.5471753938444532e+00 0 0 0
+155 0 1 0.0000000000000000e+00 1.9285203850304629e+01 1.3400234372663595e+01 1.0806406658225763e+01 0 0 0
+140 0 1 0.0000000000000000e+00 2.1189242526451380e+01 1.4507941683571856e+01 8.5336816124526607e+00 0 0 0
+159 0 1 0.0000000000000000e+00 2.2456201378103259e+01 1.2781278400952587e+01 1.0760077909439319e+01 0 0 0
+283 0 1 0.0000000000000000e+00 2.3054819153462581e+01 1.5845012828232388e+01 1.0830037719600494e+01 -1 0 0
+378 0 1 0.0000000000000000e+00 1.9861084296191567e+01 1.6289805525426654e+01 1.0975183260188233e+01 0 0 0
+184 0 1 0.0000000000000000e+00 4.1891449479964855e+00 1.8583360372645100e+01 1.1011591349625059e+01 0 0 0
+268 0 1 0.0000000000000000e+00 7.2463538224827939e+00 1.8206498206398798e+01 1.0834755580257683e+01 0 0 0
+270 0 1 0.0000000000000000e+00 1.2274244008783219e+01 1.8822077588492846e+01 8.8339484204964656e+00 0 0 0
+365 0 1 0.0000000000000000e+00 1.0276721332698459e+01 1.7745349475157546e+01 1.0934580002740763e+01 0 0 0
+274 0 1 0.0000000000000000e+00 1.5455629083635733e+01 1.8551831066950538e+01 8.7272531948698422e+00 0 0 0
+294 0 1 0.0000000000000000e+00 1.3736934676853844e+01 1.7330808488398823e+01 1.1155943972836713e+01 0 0 0
+95 0 1 0.0000000000000000e+00 1.8427493799328140e+01 1.8077114398904968e+01 8.6292185625626168e+00 0 0 0
+257 0 1 0.0000000000000000e+00 1.6769644035436787e+01 1.6897745465149846e+01 1.0968424076622897e+01 0 0 0
+394 0 1 0.0000000000000000e+00 1.7072832686487480e+01 2.0066219884221994e+01 1.0946255482758659e+01 0 0 0
+180 0 1 0.0000000000000000e+00 2.1501938264607308e+01 1.7496242904693222e+01 8.7921235044903359e+00 0 0 0
+299 0 1 0.0000000000000000e+00 2.3500132546896442e+01 1.8850199033111942e+01 1.0859829308241631e+01 0 0 0
+281 0 1 0.0000000000000000e+00 2.0365648553008420e+01 1.9401606304511102e+01 1.1006292272855148e+01 -1 0 0
+104 0 1 0.0000000000000000e+00 3.3082952423214484e+00 2.3561499348109329e+01 8.5479001672985202e+00 0 -1 0
+363 0 1 0.0000000000000000e+00 4.6629225703203252e+00 2.1685508833810726e+01 1.0967203715721762e+01 0 0 0
+301 0 1 0.0000000000000000e+00 1.7624226954426234e+00 2.2261099958426001e+01 1.0987076810847594e+01 0 -1 0
+288 0 1 0.0000000000000000e+00 7.7777801229407313e+00 2.1190797678595644e+01 1.0733691215388561e+01 0 0 0
+289 0 1 0.0000000000000000e+00 1.0794476845154618e+01 2.0747617717045962e+01 1.0687416595340611e+01 0 0 0
+17 0 1 0.0000000000000000e+00 1.5817927062794388e+01 2.1674040817249036e+01 8.8552687260299994e+00 0 -1 0
+292 0 1 0.0000000000000000e+00 1.2612709502032342e+01 2.2126787205687361e+01 8.5468926027895282e+00 0 0 0
+272 0 1 0.0000000000000000e+00 1.3832627118779849e+01 2.0414764518434751e+01 1.0822259527856067e+01 0 0 0
+390 0 1 0.0000000000000000e+00 1.4403725207987147e+01 2.3415793141321313e+01 1.0887054696761270e+01 0 0 0
+210 0 1 0.0000000000000000e+00 1.7413170220076861e+01 2.3060386187818068e+01 1.1051679261452801e+01 0 -1 0
+201 0 1 0.0000000000000000e+00 2.0758174560202090e+01 2.2535097480503126e+01 1.0816756743843717e+01 -1 -1 0
+321 0 1 0.0000000000000000e+00 3.6732334179915505e+00 4.3602700201337461e+00 1.3242256086136994e+01 0 0 0
+324 0 1 0.0000000000000000e+00 1.9479829867255611e+00 2.5786697064364845e+00 1.5460777316061298e+01 0 0 0
+223 0 1 0.0000000000000000e+00 3.2128733486322547e+00 2.3539643162308629e+01 1.3163317630559760e+01 0 -1 0
+304 0 1 0.0000000000000000e+00 5.0148880731363086e+00 2.3530384226306795e+00 1.5220751263857348e+01 0 0 0
+305 0 1 0.0000000000000000e+00 6.8174621880854618e+00 3.7623875989010713e+00 1.3111451762361989e+01 0 0 0
+388 0 1 0.0000000000000000e+00 8.1829775337926733e+00 2.0287923226473539e+00 1.5284957466591038e+01 0 1 0
+202 0 1 0.0000000000000000e+00 9.8854801072226639e+00 3.3442140490537198e+00 1.3136368838590181e+01 0 0 0
+307 0 1 0.0000000000000000e+00 1.1324626823846147e+01 1.4616051222068189e+00 1.5201846203728470e+01 0 0 0
+306 0 1 0.0000000000000000e+00 1.1579485223570714e+01 4.9298176445693587e+00 1.5193091310039231e+01 0 0 0
+207 0 1 0.0000000000000000e+00 1.3245336028294700e+01 3.0580733945714571e+00 1.3260045476258068e+01 0 0 0
+333 0 1 0.0000000000000000e+00 1.5219184527569855e+01 4.3787378239204671e+00 1.5471323221840862e+01 0 0 0
+213 0 1 0.0000000000000000e+00 1.6306477873149369e+01 2.6680451272842136e+00 1.3310690863097781e+01 0 0 0
+314 0 1 0.0000000000000000e+00 1.9417205553009641e+01 1.8525719882668410e+00 1.3045743486755933e+01 0 0 0
+335 0 1 0.0000000000000000e+00 1.8343305725917592e+01 3.7336256596151802e+00 1.5269819819161539e+01 0 0 0
+318 0 1 0.0000000000000000e+00 2.1248242959995572e+01 3.3098941687268004e+00 1.5382197368464599e+01 0 0 0
+337 0 1 0.0000000000000000e+00 2.3042290700252757e+01 4.7120065083043414e+00 1.3306541002621815e+01 0 0 0
+239 0 1 0.0000000000000000e+00 2.2409076068628753e+01 1.5199836530256841e+00 1.3049785276993328e+01 0 0 0
+243 0 1 0.0000000000000000e+00 4.0600622269657070e+00 7.4871459498374691e+00 1.3249830165475240e+01 0 0 0
+322 0 1 0.0000000000000000e+00 2.2645127915007031e+00 6.0123309661220352e+00 1.5465925201999031e+01 0 0 0
+302 0 1 0.0000000000000000e+00 8.6260269352945862e+00 5.2271972035232679e+00 1.5288832930934261e+01 0 0 0
+204 0 1 0.0000000000000000e+00 7.1871173293036374e+00 6.9092454011384277e+00 1.3203020554193589e+01 0 0 0
+222 0 1 0.0000000000000000e+00 5.4923098340870347e+00 5.4951506087840771e+00 1.5360102310884912e+01 0 0 0
+208 0 1 0.0000000000000000e+00 9.1536345503235506e+00 8.2825529206543855e+00 1.5316198684788219e+01 0 0 0
+251 0 1 0.0000000000000000e+00 1.0666272854294682e+01 6.7535989866712098e+00 1.3065190405894196e+01 0 0 0
+332 0 1 0.0000000000000000e+00 1.2067059341421706e+01 7.7630988827621135e+00 1.5439446850887752e+01 0 0 0
+326 0 1 0.0000000000000000e+00 1.3774169133155951e+01 6.0076081857419057e+00 1.3156347854264347e+01 0 0 0
+355 0 1 0.0000000000000000e+00 1.5221520026929939e+01 7.3858870063229212e+00 1.5457474779641103e+01 0 0 0
+336 0 1 0.0000000000000000e+00 2.0074303485331146e+01 4.9049872083647887e+00 1.3087577627009320e+01 0 0 0
+216 0 1 0.0000000000000000e+00 1.6726575078053241e+01 5.7014364738638648e+00 1.3107091903423798e+01 0 0 0
+279 0 1 0.0000000000000000e+00 1.8520456739213511e+01 7.0000516901878029e+00 1.5194715613725757e+01 0 0 0
+212 0 1 0.0000000000000000e+00 1.6992487447844564e+01 8.9043909027966155e+00 1.3323872275113565e+01 0 0 0
+259 0 1 0.0000000000000000e+00 2.3466024187812621e+01 7.6037721875670741e+00 1.2989175341134359e+01 0 0 0
+353 0 1 0.0000000000000000e+00 2.0235494396725073e+01 8.2615396536790300e+00 1.2918448237793944e+01 0 0 0
+458 0 1 0.0000000000000000e+00 2.1513092511967510e+01 6.5925456409011067e+00 1.5297202543454414e+01 0 0 0
+323 0 1 0.0000000000000000e+00 4.6353527851287630e+00 1.0341536343083030e+01 1.2969830891556001e+01 0 0 0
+339 0 1 0.0000000000000000e+00 2.7349860253669092e+00 9.1534910847505842e+00 1.5292095918439568e+01 1 0 0
+242 0 1 0.0000000000000000e+00 1.5761275873641418e+00 1.1127606574549510e+01 1.3184513399010264e+01 0 0 0
+328 0 1 0.0000000000000000e+00 5.9016952755681267e+00 8.6970665742962119e+00 1.5269579652368309e+01 0 0 0
+345 0 1 0.0000000000000000e+00 7.7609562392832547e+00 9.9552831774349855e+00 1.3215498193913136e+01 0 0 0
+428 0 1 0.0000000000000000e+00 6.3148677994386579e+00 1.1826736140126130e+01 1.5320883642702213e+01 0 0 0
+226 0 1 0.0000000000000000e+00 1.0853937265914489e+01 9.7848034370911030e+00 1.3034124365718091e+01 0 0 0
+245 0 1 0.0000000000000000e+00 9.4493604795132224e+00 1.1403716344779440e+01 1.5546790708623998e+01 0 0 0
+253 0 1 0.0000000000000000e+00 1.2517300971323744e+01 1.1147664173393297e+01 1.5454265828177931e+01 0 0 0
+330 0 1 0.0000000000000000e+00 1.3819330859214698e+01 9.0861840764411923e+00 1.3129597105958856e+01 0 0 0
+349 0 1 0.0000000000000000e+00 1.4347449976943524e+01 1.2117567501744446e+01 1.2873021243707001e+01 0 0 0
+260 0 1 0.0000000000000000e+00 1.5542895049481093e+01 1.0713218353232206e+01 1.5464927751296953e+01 0 0 0
+236 0 1 0.0000000000000000e+00 1.8890360436591394e+01 1.0115744426433746e+01 1.5320436854408769e+01 0 0 0
+255 0 1 0.0000000000000000e+00 1.7531203917296050e+01 1.1761786274721832e+01 1.3134413428190033e+01 0 0 0
+244 0 1 0.0000000000000000e+00 2.0582694855338278e+01 1.1310687372853934e+01 1.3032369236054956e+01 -1 0 0
+379 0 1 0.0000000000000000e+00 2.1758584452457001e+01 9.5893895624646976e+00 1.5331278782681661e+01 0 0 0
+341 0 1 0.0000000000000000e+00 3.3594744079813101e+00 1.2574978812122264e+01 1.5647292538906830e+01 0 0 0
+377 0 1 0.0000000000000000e+00 2.1336158189055103e+00 1.4061568710555555e+01 1.3166053082985528e+01 1 0 0
+364 0 1 0.0000000000000000e+00 3.8728560292273144e+00 1.5558310505573555e+01 1.5512475684948669e+01 0 0 0
+267 0 1 0.0000000000000000e+00 5.0106794837936803e+00 1.3395728121998667e+01 1.2925688657556863e+01 0 0 0
+248 0 1 0.0000000000000000e+00 8.1195719528236516e+00 1.3156530730540746e+01 1.3241672708621175e+01 0 0 0
+369 0 1 0.0000000000000000e+00 6.7990086327623471e+00 1.5114125525424864e+01 1.5543630116975276e+01 0 0 0
+177 0 1 0.0000000000000000e+00 1.1221826605654799e+01 1.2901145788554350e+01 1.2948363483850239e+01 0 0 0
+366 0 1 0.0000000000000000e+00 9.7279814429032943e+00 1.4621315802610248e+01 1.5299982984775466e+01 0 0 0
+393 0 1 0.0000000000000000e+00 1.1686316078695338e+01 1.6092710723287972e+01 1.2963229148720886e+01 0 0 0
+295 0 1 0.0000000000000000e+00 1.4890090816121781e+01 1.5047968584830594e+01 1.3326048149330719e+01 0 0 0
+275 0 1 0.0000000000000000e+00 1.2906133403376790e+01 1.3956484055863502e+01 1.5282878813050377e+01 0 0 0
+175 0 1 0.0000000000000000e+00 1.6307193988902775e+01 1.3525661809497118e+01 1.5490968479234359e+01 0 0 0
+444 0 1 0.0000000000000000e+00 1.9557192758828535e+01 1.3104751947653096e+01 1.5380827146691981e+01 -1 0 0
+254 0 1 0.0000000000000000e+00 1.8190105373918023e+01 1.4979141208541005e+01 1.3333105101752007e+01 0 0 0
+344 0 1 0.0000000000000000e+00 2.2365404866962727e+01 1.2596057683707810e+01 1.5341790873686818e+01 -1 0 0
+297 0 1 0.0000000000000000e+00 2.1142817042153546e+01 1.4445945880893145e+01 1.3109158477256962e+01 0 0 0
+358 0 1 0.0000000000000000e+00 2.2956265483833960e+01 1.5548445914114900e+01 1.5307669739962632e+01 0 0 0
+401 0 1 0.0000000000000000e+00 4.1538800449381839e+00 1.8634839497464455e+01 1.5451356450714510e+01 0 -1 0
+399 0 1 0.0000000000000000e+00 2.4306370917770783e+00 1.7344910796862646e+01 1.3275010195715771e+01 1 0 0
+361 0 1 0.0000000000000000e+00 5.4049518663191796e+00 1.6810387678387553e+01 1.2969648805148063e+01 0 0 0
+371 0 1 0.0000000000000000e+00 7.3695851897562745e+00 1.8239603512516524e+01 1.5492219555572950e+01 0 0 0
+370 0 1 0.0000000000000000e+00 8.5254830824331265e+00 1.6103692688558482e+01 1.3193942351395229e+01 0 0 0
+392 0 1 0.0000000000000000e+00 1.0335957231190477e+01 1.7501058409917416e+01 1.5531241305376144e+01 0 0 0
+387 0 1 0.0000000000000000e+00 9.0914455142254837e+00 1.9193296404742636e+01 1.3282126707369367e+01 0 0 0
+276 0 1 0.0000000000000000e+00 1.2141539228059521e+01 1.9085178381144939e+01 1.3089528106517308e+01 0 0 0
+215 0 1 0.0000000000000000e+00 1.5354520865938253e+01 1.8651234352323758e+01 1.3187991831065771e+01 0 -1 0
+473 0 1 0.0000000000000000e+00 1.3599461270539232e+01 1.7340355042759128e+01 1.5320356671241214e+01 0 0 0
+280 0 1 0.0000000000000000e+00 1.6703904857152459e+01 1.6706366304394219e+01 1.5298223330161747e+01 0 0 0
+317 0 1 0.0000000000000000e+00 1.8418154658929783e+01 1.8101218430158447e+01 1.3145611748514014e+01 0 -1 0
+397 0 1 0.0000000000000000e+00 1.9862510358551564e+01 1.6435863417108123e+01 1.5458774287264028e+01 0 0 0
+220 0 1 0.0000000000000000e+00 1.7138613388159552e+01 2.0043251939700749e+01 1.5302800089290809e+01 0 -1 0
+385 0 1 0.0000000000000000e+00 2.2982868549345813e+01 1.8855407854735670e+01 1.5314461449136923e+01 -1 0 0
+284 0 1 0.0000000000000000e+00 2.0132165915616522e+01 1.9464531686231243e+01 1.5104892600523842e+01 -1 0 0
+362 0 1 0.0000000000000000e+00 2.1690774916666069e+01 1.7342239744273979e+01 1.2909822921670456e+01 -1 0 0
+382 0 1 0.0000000000000000e+00 2.8949582046162448e+00 2.0418386357301479e+01 1.3083600610610672e+01 0 0 0
+384 0 1 0.0000000000000000e+00 4.4869850853649442e+00 2.1626568844126083e+01 1.5374538306816646e+01 0 0 0
+437 0 1 0.0000000000000000e+00 2.3618851619768069e+01 2.1961156907587224e+01 1.5271571224617832e+01 0 -1 0
+287 0 1 0.0000000000000000e+00 6.1692849431957182e+00 1.9845060033153374e+01 1.3088722543192281e+01 0 0 0
+386 0 1 0.0000000000000000e+00 6.3534853044024251e+00 2.2963535035258559e+01 1.3183711673547640e+01 0 0 0
+331 0 1 0.0000000000000000e+00 7.8953348723870063e+00 2.1164246303444870e+01 1.5407529484180422e+01 0 -1 0
+205 0 1 0.0000000000000000e+00 9.4919890425324311e+00 2.2624855365561061e+01 1.3023769996620208e+01 0 -1 0
+395 0 1 0.0000000000000000e+00 1.0853505714678500e+01 2.0885041114158849e+01 1.5242340562265040e+01 0 0 0
+309 0 1 0.0000000000000000e+00 1.2661122359574209e+01 2.2246875596876070e+01 1.3055600836796199e+01 0 -1 0
+430 0 1 0.0000000000000000e+00 1.4634922414367059e+01 2.3643545896907312e+01 1.5330844353716099e+01 0 -1 0
+311 0 1 0.0000000000000000e+00 1.5640455220566800e+01 2.1804614111217351e+01 1.3232232639395272e+01 0 -1 0
+315 0 1 0.0000000000000000e+00 1.3905901176582530e+01 2.0497652644812526e+01 1.5318486912385247e+01 0 -1 0
+195 0 1 0.0000000000000000e+00 1.8884557031465121e+01 2.1279446179915780e+01 1.3129095787481813e+01 0 0 0
+296 0 1 0.0000000000000000e+00 1.7665632076821197e+01 2.3060297115338493e+01 1.5483906535336647e+01 0 0 0
+219 0 1 0.0000000000000000e+00 2.0718628767225283e+01 2.2727689863273092e+01 1.5304105521088404e+01 0 -1 0
+303 0 1 0.0000000000000000e+00 2.2177878609471072e+01 2.0618819973306707e+01 1.3033724482456636e+01 -1 -1 0
+422 0 1 0.0000000000000000e+00 3.7055965133892692e+00 4.0501665280502657e+00 1.7519495919819619e+01 0 0 0
+483 0 1 0.0000000000000000e+00 1.8971529758694761e+00 2.8644185808140774e+00 2.0037412865816112e+01 0 1 0
+6 0 1 0.0000000000000000e+00 4.8971696759711287e+00 2.4426249819579717e+00 1.9841854450318667e+01 0 0 -1
+402 0 1 0.0000000000000000e+00 6.9244802200197393e+00 3.8261632833023524e+00 1.7322596321375329e+01 0 0 0
+466 0 1 0.0000000000000000e+00 8.1280202210518055e+00 2.0743078646439672e+00 1.9582626064916905e+01 0 1 0
+492 0 1 0.0000000000000000e+00 1.0165787597951947e+01 3.4974131620351665e+00 1.7410917526768088e+01 0 1 0
+431 0 1 0.0000000000000000e+00 1.1235560900343687e+01 1.5607450969039185e+00 1.9846314149779850e+01 0 0 0
+429 0 1 0.0000000000000000e+00 1.1714964151688612e+01 4.7426317856054947e+00 1.9864310073878602e+01 0 0 0
+410 0 1 0.0000000000000000e+00 1.3159380004468209e+01 2.7968758985656250e+00 1.7565763444369235e+01 0 0 0
+434 0 1 0.0000000000000000e+00 1.4739287638555920e+01 4.3424042727240177e+00 1.9733282033300725e+01 0 0 0
+313 0 1 0.0000000000000000e+00 1.6233839057256404e+01 2.5327869642736456e+00 1.7635464420524094e+01 0 0 0
+300 0 1 0.0000000000000000e+00 1.9442324790091263e+01 1.8996578401654074e+00 1.7762689931063893e+01 0 1 0
+415 0 1 0.0000000000000000e+00 1.7820264387741286e+01 4.1201242759979344e+00 1.9862186008126649e+01 0 0 0
+438 0 1 0.0000000000000000e+00 2.2952995413584318e+01 4.6676801351698156e+00 1.7592552303028366e+01 0 0 0
+383 0 1 0.0000000000000000e+00 2.2412216009391546e+01 2.3649064572189360e+01 1.7836690716701209e+01 -1 0 0
+320 0 1 0.0000000000000000e+00 2.1204964617840155e+01 3.2546635169076437e+00 1.9896494668295350e+01 0 0 0
+457 0 1 0.0000000000000000e+00 4.2166023843124787e+00 7.3451963014528365e+00 1.7384524373071955e+01 1 0 0
+439 0 1 0.0000000000000000e+00 2.7104290628354373e+00 6.0606675227919338e+00 1.9682586780779669e+01 1 0 0
+312 0 1 0.0000000000000000e+00 7.2611467253035391e+00 6.9897188924373914e+00 1.7303713501114451e+01 0 0 0
+427 0 1 0.0000000000000000e+00 5.6056091903345067e+00 5.3513570449452885e+00 1.9713104814845742e+01 0 0 0
+90 0 1 0.0000000000000000e+00 8.5679069036401501e+00 5.1989913880175695e+00 1.9668116638815938e+01 0 1 -1
+350 0 1 0.0000000000000000e+00 9.0424272438566877e+00 8.1399575117274079e+00 1.9793777083573893e+01 0 0 0
+329 0 1 0.0000000000000000e+00 1.0154638668790094e+01 6.5157113228589703e+00 1.7426276188062232e+01 0 0 0
+30 0 1 0.0000000000000000e+00 1.2150359727355225e+01 7.8747416122737928e+00 1.9955204808801142e+01 0 0 -1
+433 0 1 0.0000000000000000e+00 1.3302449415241000e+01 5.9819817570600557e+00 1.7628592428423701e+01 0 0 0
+340 0 1 0.0000000000000000e+00 1.6852403904881349e+01 5.6691160501884745e+00 1.7513897914198534e+01 0 0 0
+338 0 1 0.0000000000000000e+00 1.8350893647670659e+01 7.1640412929740345e+00 1.9857600169591272e+01 0 0 0
+357 0 1 0.0000000000000000e+00 1.9870579789361575e+01 5.2583811502823004e+00 1.7520699913012770e+01 0 0 0
+455 0 1 0.0000000000000000e+00 2.0051225877054765e+01 8.4215995758829703e+00 1.7480677565626277e+01 0 0 0
+459 0 1 0.0000000000000000e+00 2.3208214301115536e+01 7.7981577701683626e+00 1.7657772954141290e+01 0 0 0
+359 0 1 0.0000000000000000e+00 2.1446415343112381e+01 6.3431519812580817e+00 2.0032576946691680e+01 0 0 0
+343 0 1 0.0000000000000000e+00 4.5825494641723035e+00 1.0381145241219514e+01 1.7634618988177216e+01 0 0 0
+347 0 1 0.0000000000000000e+00 3.3457126981314937e+00 1.2056298740963893e+01 1.9775766323759765e+01 0 0 0
+424 0 1 0.0000000000000000e+00 2.6136924244730988e+00 9.1874447288807097e+00 1.9659813684896527e+01 0 0 0
+327 0 1 0.0000000000000000e+00 5.8546219940393396e+00 8.3963718120531432e+00 1.9934491196356234e+01 0 0 0
+325 0 1 0.0000000000000000e+00 7.5642347491561326e+00 9.8768008718227289e+00 1.7540583518755756e+01 0 0 0
+247 0 1 0.0000000000000000e+00 6.4349862811635825e+00 1.1900278760826238e+01 1.9846138551135635e+01 0 0 0
+271 0 1 0.0000000000000000e+00 1.0849663137628994e+01 9.4421252335649193e+00 1.7694055578286466e+01 0 0 0
+436 0 1 0.0000000000000000e+00 9.4840973807723028e+00 1.1173831329726100e+01 1.9991189628673833e+01 0 0 0
+389 0 1 0.0000000000000000e+00 1.2568934790380361e+01 1.0947662699280809e+01 1.9833245468253718e+01 0 0 0
+453 0 1 0.0000000000000000e+00 1.3879012120319377e+01 9.2229145403373032e+00 1.7720013000940479e+01 0 0 0
+256 0 1 0.0000000000000000e+00 1.4309325640465834e+01 1.2343594841171008e+01 1.7662684440297618e+01 0 0 0
+351 0 1 0.0000000000000000e+00 1.5810955071195570e+01 1.0434346975108376e+01 1.9637657333686047e+01 0 0 0
+373 0 1 0.0000000000000000e+00 1.7105652689370288e+01 8.8190969639546584e+00 1.7556191083128290e+01 0 0 0
+375 0 1 0.0000000000000000e+00 1.7429673947589809e+01 1.1809493457945795e+01 1.7423497678482729e+01 0 0 0
+460 0 1 0.0000000000000000e+00 1.8899749770933909e+01 1.0118347692774639e+01 1.9736285638552737e+01 0 0 0
+441 0 1 0.0000000000000000e+00 1.5131938517921513e+00 1.0933515027387269e+01 1.7462542193521209e+01 0 0 0
+360 0 1 0.0000000000000000e+00 2.0864879911261607e+01 1.1284761624906341e+01 1.7500802333254395e+01 0 0 0
+454 0 1 0.0000000000000000e+00 2.1923122786910941e+01 9.3906080819362678e+00 1.9748893236501608e+01 0 0 0
+442 0 1 0.0000000000000000e+00 2.0484577572664442e+00 1.4261772950710947e+01 1.7746378400177065e+01 0 0 0
+464 0 1 0.0000000000000000e+00 3.5882220939674809e+00 1.5743334561768402e+01 1.9922010771918334e+01 0 0 0
+342 0 1 0.0000000000000000e+00 5.1296307585806291e+00 1.3701742568833216e+01 1.7746663694896213e+01 0 0 0
+346 0 1 0.0000000000000000e+00 7.9986222359562786e+00 1.3451452077066264e+01 1.7813335680181495e+01 0 0 0
+448 0 1 0.0000000000000000e+00 6.8677445143119247e+00 1.5222987396117844e+01 1.9887186941548396e+01 0 0 0
+374 0 1 0.0000000000000000e+00 1.1118418156031703e+01 1.2579207794706583e+01 1.7701838547451331e+01 0 0 0
+486 0 1 0.0000000000000000e+00 1.1608977329820799e+01 1.5913153305036410e+01 1.7560888031567735e+01 0 0 0
+426 0 1 0.0000000000000000e+00 9.8302329445210894e+00 1.4487171149346281e+01 1.9821833337189535e+01 0 0 0
+376 0 1 0.0000000000000000e+00 1.4696647720583387e+01 1.5344489255512389e+01 1.7592305282475202e+01 0 0 0
+352 0 1 0.0000000000000000e+00 1.2934842217045993e+01 1.4249727079450974e+01 1.9753228655717052e+01 0 0 0
+456 0 1 0.0000000000000000e+00 1.6585063037193162e+01 1.3616161653046603e+01 1.9841144008321585e+01 0 0 0
+380 0 1 0.0000000000000000e+00 1.8183811442700247e+01 1.4879793304125897e+01 1.7451795687232522e+01 0 0 0
+449 0 1 0.0000000000000000e+00 1.9523580206938675e+01 1.3170892812461812e+01 1.9629853997222209e+01 0 0 0
+477 0 1 0.0000000000000000e+00 2.1399505356580711e+01 1.4544288942665071e+01 1.7390185439512642e+01 0 0 0
+461 0 1 0.0000000000000000e+00 2.2876936197562671e+01 1.5718109054475288e+01 1.9901927944623438e+01 -1 0 0
+58 0 1 0.0000000000000000e+00 2.2573367039146142e+01 1.2604370413105388e+01 1.9815065844560088e+01 0 0 -1
+468 0 1 0.0000000000000000e+00 2.0529800628776202e+00 1.7287946840623754e+01 1.7473428563566593e+01 0 0 0
+485 0 1 0.0000000000000000e+00 4.0779476486463651e+00 1.8821550313700108e+01 1.9832597516439549e+01 0 0 0
+462 0 1 0.0000000000000000e+00 8.4848611080703620e+00 1.6422387095247657e+01 1.7487820248640027e+01 0 0 0
+368 0 1 0.0000000000000000e+00 5.5613738299909663e+00 1.6930097523209000e+01 1.7683127246264085e+01 0 0 0
+465 0 1 0.0000000000000000e+00 7.0866876524953106e+00 1.8214472990554384e+01 1.9828525857030236e+01 0 0 0
+400 0 1 0.0000000000000000e+00 9.0390357377528900e+00 1.9510025941093524e+01 1.7418998832746365e+01 0 0 0
+372 0 1 0.0000000000000000e+00 1.2240792483541002e+01 1.8890805870989887e+01 1.7735392361089918e+01 0 0 0
+367 0 1 0.0000000000000000e+00 1.0285755363175667e+01 1.7618698456658112e+01 1.9691894143634876e+01 0 0 0
+93 0 1 0.0000000000000000e+00 1.5426433747467474e+01 1.8618763589860180e+01 1.7370379203487115e+01 0 0 -1
+451 0 1 0.0000000000000000e+00 1.3353737215332774e+01 1.7378259800697894e+01 1.9910856006357719e+01 0 0 0
+413 0 1 0.0000000000000000e+00 1.8376967267127881e+01 1.8067063006702927e+01 1.7488258103713417e+01 0 -1 0
+478 0 1 0.0000000000000000e+00 1.6536757660362781e+01 1.6665033950628150e+01 1.9803337909706542e+01 0 0 0
+495 0 1 0.0000000000000000e+00 1.7070857745527142e+01 1.9778096892512018e+01 1.9772040612983062e+01 0 0 0
+497 0 1 0.0000000000000000e+00 1.9708319360168424e+01 1.6337545824059468e+01 1.9726623244506559e+01 0 0 0
+498 0 1 0.0000000000000000e+00 2.1527509955594436e+01 1.7669805868070377e+01 1.7779546825341196e+01 0 0 0
+479 0 1 0.0000000000000000e+00 2.0257452566055591e+01 1.9386300391342012e+01 1.9875553870545115e+01 0 0 0
+421 0 1 0.0000000000000000e+00 3.2251197343349753e+00 2.3252053685069008e+01 1.7743100717446179e+01 0 -1 0
+482 0 1 0.0000000000000000e+00 2.7400537093072477e+00 2.0378064752079787e+01 1.7433134304626062e+01 0 0 0
+408 0 1 0.0000000000000000e+00 4.4235169389604057e+00 2.1801793273705684e+01 1.9994939998931979e+01 0 -1 0
+418 0 1 0.0000000000000000e+00 1.3668572032395794e+00 2.2093321386300918e+01 2.0003087316773826e+01 1 -1 0
+405 0 1 0.0000000000000000e+00 5.8766677559183575e+00 2.0064776368390028e+01 1.7505527989165763e+01 0 -1 0
+308 0 1 0.0000000000000000e+00 6.2892649560651765e+00 2.3038075497284879e+01 1.7260029446981392e+01 0 -1 0
+470 0 1 0.0000000000000000e+00 7.5955926612724998e+00 2.1391418527154929e+01 1.9822454109435139e+01 0 0 0
+310 0 1 0.0000000000000000e+00 9.5108868048460362e+00 2.2559256628394895e+01 1.7585347221529325e+01 0 -1 0
+416 0 1 0.0000000000000000e+00 1.0836742441762205e+01 2.0607873392426256e+01 1.9729818315031395e+01 0 -1 0
+391 0 1 0.0000000000000000e+00 1.2576728940877731e+01 2.2044348744790721e+01 1.7598883705934131e+01 0 0 0
+319 0 1 0.0000000000000000e+00 1.5908085166050292e+01 2.1596448605759544e+01 1.7626145155973678e+01 0 -1 0
+489 0 1 0.0000000000000000e+00 1.4502455630880551e+01 2.3445996350959771e+01 1.9841082993437688e+01 0 0 0
+493 0 1 0.0000000000000000e+00 1.4077821278403514e+01 2.0452504569726518e+01 1.9821066413817647e+01 0 0 0
+396 0 1 0.0000000000000000e+00 1.9153252729772237e+01 2.1198281200917300e+01 1.7466330020831023e+01 0 0 0
+414 0 1 0.0000000000000000e+00 1.7649630583901796e+01 2.3146952223356028e+01 1.9779396318845269e+01 0 -1 0
+398 0 1 0.0000000000000000e+00 2.2169256974780868e+01 2.0630424090200716e+01 1.7591469558362796e+01 0 0 0
+417 0 1 0.0000000000000000e+00 2.0853900530577008e+01 2.2669221402640698e+01 2.0247324392928160e+01 0 -1 0
+403 0 1 0.0000000000000000e+00 3.7680023950072443e+00 4.4805590132413560e+00 2.2003813578430712e+01 0 0 0
+9 0 1 0.0000000000000000e+00 6.9806791911080488e+00 3.9579804135463661e+00 2.1923549051571523e+01 0 0 -1
+92 0 1 0.0000000000000000e+00 9.8302542981856327e+00 3.4026343417004989e+00 2.1856215232367255e+01 0 1 -1
+14 0 1 0.0000000000000000e+00 1.3070249192358878e+01 3.0007632739398096e+00 2.2188460406731377e+01 0 0 -1
+15 0 1 0.0000000000000000e+00 1.6260368512905863e+01 2.5234468579926119e+00 2.2136586280862673e+01 0 0 -1
+404 0 1 0.0000000000000000e+00 1.9180700200572215e+01 2.0919796411039648e+00 2.2124252806003025e+01 -1 0 0
+481 0 1 0.0000000000000000e+00 2.2490542909213403e+01 1.6114477928159721e+00 2.2353647322662418e+01 -1 1 0
+21 0 1 0.0000000000000000e+00 2.3021507440543900e+01 4.7694556320689365e+00 2.2056401470850087e+01 -1 0 -1
+423 0 1 0.0000000000000000e+00 4.1901343296489326e+00 7.5320567122845006e+00 2.2213886042098775e+01 0 0 0
+425 0 1 0.0000000000000000e+00 7.3206144572109135e+00 7.1275238059367494e+00 2.2326786786276791e+01 0 0 0
+29 0 1 0.0000000000000000e+00 1.0471323181800930e+01 6.4643743147552106e+00 2.2220544760418790e+01 0 0 -1
+356 0 1 0.0000000000000000e+00 1.5199592519194745e+01 7.3951878619962157e+00 1.9818229694572693e+01 0 0 0
+33 0 1 0.0000000000000000e+00 1.3572531951117494e+01 5.9814231466310792e+00 2.2004728513041243e+01 0 0 -1
+316 0 1 0.0000000000000000e+00 1.9691699398745904e+01 5.1058826656811194e+00 2.2028389215456333e+01 0 0 0
+435 0 1 0.0000000000000000e+00 1.6603806596471799e+01 5.7848703504376742e+00 2.2009326682013949e+01 0 0 0
+53 0 1 0.0000000000000000e+00 1.7081930312042452e+01 8.9265461657545231e+00 2.2062288896493740e+01 0 0 -1
+61 0 1 0.0000000000000000e+00 2.3463449045624088e+01 7.9514055434338564e+00 2.2155715635399385e+01 -1 0 -1
+44 0 1 0.0000000000000000e+00 2.0185049294319310e+01 8.3263141562514029e+00 2.2110518343597519e+01 -1 0 -1
+445 0 1 0.0000000000000000e+00 4.4655641186215176e+00 1.0634784246439864e+01 2.2082741985483068e+01 0 0 0
+51 0 1 0.0000000000000000e+00 7.6705790001560468e+00 1.0247310575354275e+01 2.2065830544000306e+01 0 0 -1
+12 0 1 0.0000000000000000e+00 1.0902612429243558e+01 9.7556522370867587e+00 2.2186547345867677e+01 0 0 -1
+36 0 1 0.0000000000000000e+00 1.4032290287282386e+01 9.3186627614666531e+00 2.2159948635591594e+01 0 0 -1
+56 0 1 0.0000000000000000e+00 1.4382165360852150e+01 1.2304978269821893e+01 2.1811913337311211e+01 0 0 -1
+480 0 1 0.0000000000000000e+00 1.7567105078674803e+01 1.1923365264138285e+01 2.2131572115132922e+01 0 0 0
+443 0 1 0.0000000000000000e+00 1.4533052332674343e+00 1.0969112665051242e+01 2.1954216064782372e+01 0 0 0
+178 0 1 0.0000000000000000e+00 2.0706886906481248e+01 1.1352549112308196e+01 2.1845993475117979e+01 0 0 -1
+348 0 1 0.0000000000000000e+00 1.9465028700928995e+00 1.4132655545945713e+01 2.1993943597041579e+01 0 0 0
+469 0 1 0.0000000000000000e+00 5.2056280773855033e+00 1.3587656487528912e+01 2.1857567379034645e+01 0 0 0
+49 0 1 0.0000000000000000e+00 8.2936283271929963e+00 1.3230485677154475e+01 2.2168734228798240e+01 0 0 -1
+55 0 1 0.0000000000000000e+00 1.1371147925993828e+01 1.2805580233375116e+01 2.2112242888678502e+01 0 0 -1
+54 0 1 0.0000000000000000e+00 1.1535528537220305e+01 1.6094277914935283e+01 2.1976389528900146e+01 0 0 -1
+450 0 1 0.0000000000000000e+00 1.4880058671057856e+01 1.5583717404663824e+01 2.2048136061722975e+01 0 0 0
+474 0 1 0.0000000000000000e+00 1.8242093431760232e+01 1.4810049795427503e+01 2.2040598774578154e+01 0 0 0
+463 0 1 0.0000000000000000e+00 2.1233461803530055e+01 1.4568061619207658e+01 2.2105369471887670e+01 -1 0 0
+487 0 1 0.0000000000000000e+00 2.1740934012062056e+00 1.7365991719178325e+01 2.1845784004843452e+01 0 0 0
+452 0 1 0.0000000000000000e+00 8.3662677425921892e+00 1.6256007612259729e+01 2.1982623964670609e+01 0 0 0
+446 0 1 0.0000000000000000e+00 5.3347012643471547e+00 1.6834605927921814e+01 2.2157133330148742e+01 0 0 0
+407 0 1 0.0000000000000000e+00 5.8835298499586921e+00 2.0106033332134754e+01 2.2067697639338355e+01 0 -1 0
+409 0 1 0.0000000000000000e+00 8.8956637670764245e+00 1.9587168486127503e+01 2.1821452549644004e+01 0 -1 0
+50 0 1 0.0000000000000000e+00 1.2156778960040580e+01 1.9131207097527192e+01 2.2188564499665489e+01 0 0 -1
+494 0 1 0.0000000000000000e+00 1.5265192285055905e+01 1.8522751342538776e+01 2.2121843450624411e+01 0 0 0
+476 0 1 0.0000000000000000e+00 1.8389955651100433e+01 1.7895086660910483e+01 2.1941581256643840e+01 0 0 0
+85 0 1 0.0000000000000000e+00 2.3345016544580375e+01 1.9238239427077673e+01 1.9858636688005287e+01 -1 0 -1
+81 0 1 0.0000000000000000e+00 2.1426947748352937e+01 1.7741042983783696e+01 2.2133436920096212e+01 -1 0 -1
+3 0 1 0.0000000000000000e+00 2.7793683506140967e+00 2.0474662635476211e+01 2.2180835154042075e+01 0 -1 -1
+406 0 1 0.0000000000000000e+00 3.0344298131619660e+00 2.3450860056335884e+01 2.2140288169909926e+01 0 -1 0
+488 0 1 0.0000000000000000e+00 6.3729312698769531e+00 2.2980786586524729e+01 2.2046100655196433e+01 0 0 0
+89 0 1 0.0000000000000000e+00 9.5014419093624358e+00 2.2647572529150086e+01 2.2252993275204759e+01 0 0 -1
+491 0 1 0.0000000000000000e+00 1.2778976745669937e+01 2.2358026257680187e+01 2.2146547718987385e+01 0 0 0
+411 0 1 0.0000000000000000e+00 1.6011928615925761e+01 2.1765571644001206e+01 2.1935695833425708e+01 0 -1 0
+499 0 1 0.0000000000000000e+00 1.8809002825714497e+01 2.1344702916652285e+01 2.2202825699251552e+01 0 0 0
+97 0 1 0.0000000000000000e+00 2.2036661411787581e+01 2.0808293491026781e+01 2.2265817882443887e+01 0 0 -1
+
+Velocities
+
+22 -1.8539323947600621e-03 2.9839223362396140e-04 2.1909483697770808e-03
+28 -7.5613732732019009e-04 4.8847388595887461e-03 -7.1923962001239558e-04
+86 -1.6084905815790011e-03 -1.4819561304770090e-03 7.0061074692623457e-04
+185 2.9447046305837599e-03 -1.3923277229652290e-03 3.1985190947974381e-04
+186 9.8386484533399430e-04 1.7437279776024415e-03 -1.2552337344948563e-04
+109 -6.9768073137110539e-04 7.3602587062110566e-04 -9.1634666590898069e-04
+31 2.8731209784704625e-03 1.2760599417912548e-03 4.7660401571201989e-04
+111 1.3666283447919261e-03 -7.2042804737591391e-04 2.2756550798053990e-03
+16 2.0041811105085428e-04 1.6600658778490849e-03 1.0645944616063574e-03
+420 -2.6653651947193789e-03 -2.0013817424734425e-03 2.1366139632639329e-03
+18 5.4017895147305886e-04 3.9236772556110671e-04 -4.3321686509641116e-03
+117 -1.0855966679452832e-03 9.8237007993380696e-04 9.5869469689320954e-04
+1 1.8504473550261886e-03 -5.6934383808601415e-04 -2.5513887168828334e-03
+101 -3.4200986604490685e-04 -3.0859080467920312e-03 1.3226607268451501e-03
+2 4.3419118661476921e-03 1.2487541626008832e-03 -2.5114384933293786e-04
+32 -1.4750715943906477e-03 -2.1125409361888407e-04 -1.1260791464798453e-03
+24 1.5772875842083524e-03 4.9530422776782913e-03 -4.4703011047769249e-04
+25 4.4691416336994378e-03 1.7224143061984309e-04 3.5374124145795059e-03
+27 -1.7586601243754850e-03 5.5389780503359324e-03 1.2939359391889297e-03
+412 1.6660647219559715e-04 5.8621930364240724e-04 2.1666264987288603e-03
+26 -2.0929188041031079e-03 4.8074732446721485e-03 -2.2481610467469959e-03
+447 -1.3538345422282598e-04 -6.8293994263264515e-04 -1.7165118632828306e-03
+11 2.3634758714157441e-03 -1.2744320626800467e-03 6.7897346808598716e-05
+432 1.7008208117027758e-03 3.0505374110216675e-03 -2.9068802582088798e-03
+116 5.1084829416996687e-04 -6.0570964122062885e-04 -1.5285258019434045e-03
+133 5.8264277521543587e-04 -3.8213920972884755e-04 2.6662055830250237e-03
+114 6.7779264721086463e-04 -1.3915276010890927e-04 -2.9488067591944452e-03
+440 1.6780977646627334e-03 -1.3280210988901031e-03 9.2394272266229217e-04
+35 -1.1314624209241377e-03 2.1542280497655881e-03 1.2685427684901880e-03
+134 8.1540791392484345e-04 1.3571754701245107e-03 -2.3260370398679427e-03
+57 -1.4783564721581081e-03 -2.1184701128939185e-03 -2.0203858551020608e-03
+39 1.3835782685902819e-03 2.4005979830261509e-03 1.0235182893487984e-04
+38 2.0316741095784171e-04 4.9563448788145518e-04 -5.8465195397846561e-04
+41 3.7939786026856733e-04 2.0328843781787010e-03 -2.0305753506543729e-03
+148 3.9694779308873931e-03 3.0907752494059300e-03 1.6254842932358314e-03
+43 2.1014790971947170e-03 1.6789951117673636e-04 3.4172258483561330e-03
+79 3.3690961816543614e-04 2.6627453116164950e-03 6.4438681888097870e-04
+45 -1.9530683697570677e-03 5.6050075212755830e-05 1.4785320548466872e-03
+46 -2.0977301932165902e-03 3.0418178232468462e-03 -5.9532857731815444e-04
+146 -7.7275061494145876e-04 -2.6205270859449301e-03 -5.5226370022899804e-04
+153 -5.0520814401771018e-06 -9.1402528030448584e-04 8.2271371075614912e-04
+149 -6.4174157388320477e-04 -2.9985953747797432e-04 -1.4034302177261754e-03
+130 -2.3391710752062272e-03 -1.8284933080272587e-03 3.2276826776211215e-03
+156 -8.7725062101790712e-04 3.1341305592262549e-03 -7.4727434227378692e-04
+71 -2.4944025895284505e-03 2.0089701172748054e-03 -8.1031855721224724e-04
+354 4.1520151486511983e-03 1.1449755287173909e-03 7.7838159742676027e-04
+78 -5.8236346375031790e-04 4.6125062267628573e-03 -1.7259392319602916e-03
+60 -1.2579033708507246e-03 1.0427852068430510e-03 -1.1184221540081898e-04
+62 1.7928874834926031e-03 1.6802252826889567e-03 -1.4694216574605919e-03
+158 -2.2400313927849408e-03 -1.6553575906890986e-03 -1.7034058961624282e-03
+467 4.0623181071232587e-03 4.1633364789576754e-04 8.6596813491823961e-04
+42 -3.2916171680541654e-03 3.4791871506689134e-03 9.4135294262398604e-04
+52 8.7674740354889459e-04 4.4662843676286472e-04 -6.2344937182139159e-04
+65 3.8249848036842914e-03 1.6335670933123359e-04 -1.1393137763152359e-03
+170 -3.0745366401834940e-03 -1.4476746519490357e-03 5.3782803965187105e-04
+73 -2.2810400412954956e-05 -2.0704571905087519e-03 2.0368038964950663e-03
+72 3.4848023109006079e-04 -1.0846046486672443e-03 1.1581364883005915e-03
+91 -1.8341142885678421e-03 4.2472182799701058e-03 -9.0194706382399031e-04
+76 8.8256894578411739e-04 -8.6276736349917918e-04 -1.7757023211236453e-03
+174 -2.3765154712607579e-03 3.1719500784586869e-04 2.1684619244770730e-03
+77 -1.0843210361373362e-03 3.2003734070824575e-04 1.7597863496928423e-03
+75 6.7588171793278584e-04 -1.1264318196233607e-03 -1.7198351179136151e-03
+59 -2.5584403765916120e-03 1.4499393036564901e-03 -9.1479035322491965e-04
+154 -3.1628323541044347e-04 -1.4295182270131215e-04 -3.7047768147368391e-03
+63 1.3743993949509661e-03 -5.3840707718283691e-04 1.0027108088567277e-03
+161 -4.1576543035073705e-04 -1.6268538719254406e-03 3.9332462853245492e-03
+181 2.5311318389659955e-03 4.8403364458431640e-04 -1.1913129012956685e-03
+484 3.7270708496397819e-04 -2.4801058870354735e-03 -9.0298314004822757e-04
+162 1.4062954188081237e-03 4.1820671985816071e-03 -5.8470554014331498e-04
+142 -2.5879225384293982e-03 -1.4667098905025936e-03 -2.2254421420983173e-04
+64 1.5005348485095972e-03 7.5195276875205373e-04 -1.9346787054568102e-03
+83 3.1486458509787210e-04 2.6334739032620440e-03 5.1193590341183876e-04
+70 1.2753748784996911e-03 -1.9269523051306501e-03 2.0207461815678887e-03
+69 2.2257267804697313e-03 1.6493355466998415e-03 3.0317614213823570e-03
+471 -5.6219847179823327e-04 1.8834999130473392e-04 1.7444267691904686e-03
+293 -1.6635646615845434e-03 -1.8749845258641176e-03 3.0545283225500634e-03
+74 2.9287684694372625e-03 -1.7960063840757627e-03 -2.0038994648229505e-03
+475 -4.5342109905748218e-04 4.7698189334734122e-04 1.9176480563579995e-03
+197 -8.9658632025256719e-04 6.6451920672970055e-04 4.2196245822681528e-04
+490 -1.4694912134503332e-03 -3.9759553534328496e-03 1.6159537317491784e-03
+98 2.5505656942055311e-04 1.0922579728728250e-04 8.4225113859601631e-04
+496 6.2346399864454563e-04 -1.4953055318057450e-03 1.9336605052804704e-04
+82 4.7487866528278343e-04 1.2511098444257835e-03 -1.7706108604113469e-03
+107 -3.9099011193228419e-03 2.5475105975369542e-03 -4.5846933801765395e-03
+7 4.6853204601090534e-04 2.1594842153336009e-03 -7.9169900608951440e-04
+5 -1.9076841406411155e-03 -1.2482049690745222e-03 -5.5408808035511598e-05
+102 3.0758106710629239e-04 3.8226552563559975e-03 6.1453924474769574e-04
+88 2.0454483479413811e-03 -2.7381614315117142e-03 8.3934333467273472e-04
+66 -3.5166198032790377e-05 6.4797147492284845e-04 -9.7958431854245753e-04
+10 -2.9795252428241781e-03 -4.3552558877046178e-04 1.8454180142826338e-03
+67 -1.0644572123445872e-03 -3.2419940198126283e-03 2.2945414050414923e-03
+472 1.8633590564699047e-03 2.2168819002220343e-04 1.8997255105194487e-03
+13 -2.9887087595931701e-03 -3.4032808181149701e-03 3.5294643588114019e-04
+214 -2.3255765904809265e-03 -1.0236624269084971e-03 -1.8395363666656014e-03
+94 1.4772876351882772e-04 -1.0418643227429374e-03 -9.3202258968814295e-04
+190 -1.6267402725647366e-03 1.6960690903128192e-03 -2.6123770210634788e-04
+500 1.1181513824812380e-03 -1.1524958237044932e-03 1.3284291711855975e-03
+100 1.8926623061561784e-03 1.7137004868601183e-04 -4.1627156159069291e-04
+419 8.3488171928326857e-04 1.6725124318162519e-06 -1.1564892594942871e-03
+8 9.8182544383207306e-04 -1.5222259215737460e-03 -1.1880365182399622e-03
+84 -1.1642266650328265e-03 2.7570117332087040e-03 2.6912107388083989e-03
+19 -1.0696297789640498e-03 -2.0759847592190265e-03 1.3088356527598192e-03
+125 3.1769056968285908e-03 4.3852532584926466e-04 7.0094183795205858e-05
+124 -2.4399956355066941e-03 1.2525552343895547e-03 1.3325349430147141e-03
+87 2.7125870115716905e-03 6.1308552085144604e-04 -1.8600459731911826e-03
+206 1.5826734415467325e-03 1.5710125317774488e-03 -2.6978827807122570e-03
+110 7.5095489852348225e-04 7.2432699234246673e-04 7.8752039518563790e-04
+191 3.0584462560432125e-03 1.5975693719299611e-03 -1.5183419271746492e-03
+192 -7.9789365596047207e-04 -7.6214285689392468e-04 6.7611766424480088e-05
+120 -6.8149580382704004e-04 -4.3563799733769941e-03 -1.3927397477836445e-03
+209 1.2315887167218278e-03 -7.3467085838641803e-04 9.8795588551129821e-05
+113 -4.3468402474185000e-03 -5.6356747991265213e-03 -1.6367644426691593e-03
+217 -1.3638829389327248e-03 -2.1935486890951694e-03 -1.5056280494124251e-03
+34 -9.9121972230537331e-05 -5.9476354147950132e-04 1.5744473984240115e-04
+106 -2.1571413018745727e-03 -7.9156285089010338e-04 -1.3712615108248617e-03
+105 3.4569513705593993e-03 -2.4626091538048388e-03 2.0503594054924940e-03
+108 1.6083595742273403e-03 2.4094823351700143e-03 -3.4318028343051370e-03
+129 4.0856402111492550e-04 -2.0779730050070255e-03 -7.6552296804420961e-04
+131 2.6132837767862662e-04 -2.7072860331881676e-03 -1.7855705478877868e-03
+151 7.2944807068910111e-04 -2.4325520598715935e-03 -7.0662267886399601e-04
+232 2.5316593312309748e-03 -8.9241181951171073e-04 -3.6433198175893932e-03
+135 1.1758135779146811e-03 -1.2871459485729693e-03 -7.5402537312723112e-04
+112 -1.3502282594797752e-04 7.2028280186853906e-04 -1.5750313228559869e-03
+139 -2.7665206768039759e-03 3.0620646561017818e-04 1.5231123551443745e-03
+194 -6.4823944618905586e-04 1.9852724464520266e-03 -3.3997733488637812e-03
+233 -1.5115153348444297e-03 -5.7372732709914432e-04 1.9981723462483996e-03
+136 -5.1407983817185372e-04 2.8263136189120433e-04 -1.8121603058640883e-03
+37 -2.0915326507623716e-03 -3.3907921655188780e-04 -2.9980223683239138e-03
+118 1.2514027248581858e-03 -2.3380943126289563e-03 6.3139544982469657e-04
+221 1.7588306900921328e-03 5.9559568442314249e-04 -1.6824292967897647e-03
+23 -7.0483430441959890e-04 -2.2114430703714803e-03 1.6246254010239842e-03
+141 1.7291143633196453e-03 3.2135801173548916e-03 -2.9534235161447955e-03
+143 -4.8401012680433883e-04 -1.4418534461690573e-03 -8.2508495206475799e-04
+132 2.9316988834840805e-03 -2.4584594133912497e-03 -9.1398100875241342e-04
+263 2.8330018429478677e-03 -3.6448365103525903e-03 4.3599755339021537e-03
+47 1.6175216453530124e-04 -2.0828616856595410e-03 -2.9939603997961085e-03
+126 4.3928946120672953e-04 -1.0290390054124908e-03 2.1167096105613888e-03
+147 1.6636639467919546e-03 -6.3015838369890210e-04 2.5036826147359962e-03
+150 -1.5470336400575503e-03 -1.6859811594473607e-03 1.3993590818327521e-03
+173 6.9442183627008288e-04 -4.8257607298408702e-03 -1.8261996111400458e-03
+230 -1.4518279576098486e-03 1.6607977426539139e-03 1.0677445806321609e-03
+196 -9.7224516430245581e-04 -1.9207323232321696e-03 -2.1770906176137102e-03
+137 -1.8168728313338225e-03 -1.7783605301752365e-03 -3.1524734359716536e-03
+157 1.8246359970001887e-04 7.5833092133587455e-04 -5.1629919339169915e-04
+273 1.3634520028100919e-07 -3.2091652378430502e-04 -6.4166383028365541e-04
+68 2.4994463788010658e-03 1.6835873106285713e-03 2.8428261392819520e-03
+261 -6.8919471615784967e-04 5.4736937728925141e-04 -1.1419465719991544e-03
+258 -1.2271241490238386e-03 -4.2705218767044549e-03 2.0522394286210448e-04
+48 -2.7804613236563033e-03 3.7090212882974439e-04 -1.9732119771581715e-03
+249 -2.2371748199397821e-03 7.0815820704594903e-04 -1.1481517650266610e-03
+172 4.4812068456184058e-04 -1.8655214962995659e-03 -1.3054450576359779e-03
+152 -1.3071726031084231e-03 -6.5076277552820409e-04 -5.7045057752789903e-05
+246 4.3966060034842831e-03 3.7719943347294814e-03 -4.0484652328710074e-03
+250 -1.3702505398760541e-04 6.3791793113091011e-04 -6.9691858509575771e-03
+40 -1.1601825754349209e-03 2.5551904524002862e-03 -1.1726391910064327e-03
+138 -5.7734477505374995e-04 -1.5256133825442000e-03 5.3462215661474223e-04
+80 1.0638926260803070e-03 4.7837364885033049e-04 -8.6335359198224065e-04
+163 1.2805364483004205e-03 -1.0922220220467992e-03 -7.0310561253068295e-04
+99 1.6714014795265553e-03 -2.7341747647636285e-03 -3.8897150899427587e-03
+166 -1.2448706862316190e-03 1.3392091286983699e-03 -2.6835538486809493e-03
+264 -3.8255095924797467e-04 1.2847684598982247e-03 3.5974930412284094e-03
+168 -4.9942219389369647e-03 3.6019069402760287e-03 -8.5582945329856948e-04
+165 -4.4487328248345760e-03 -1.4279135572110066e-03 6.1304063879700690e-03
+262 -1.8904067789196782e-03 3.4445875860419513e-03 3.1347263693639850e-04
+282 2.7929103635971871e-03 -3.3356396534956062e-03 1.8779891283517431e-03
+266 4.4957164186602976e-05 -1.9375059079678367e-03 3.3725591737302357e-03
+269 2.6223185372565537e-03 -2.5437381990766551e-03 -3.5748233476421763e-03
+176 -3.2882021204287044e-03 2.9475385711148438e-03 -1.4629244176486407e-03
+291 5.1253321279911646e-04 -1.3986830744957498e-03 -3.7580846399636915e-04
+164 -3.1395029256944574e-04 6.8962380453891454e-04 1.3031953484399761e-03
+198 -1.9811622968165360e-03 1.4969881234075640e-03 5.6477278728315138e-04
+103 3.2101720549669658e-04 -2.4142118641104497e-03 3.7326951075412440e-03
+298 -8.7904408224460462e-04 -1.7172818443012682e-03 -4.5228836024531708e-03
+183 6.6289262610923364e-03 -2.5470282994311624e-03 -3.3912636244632305e-03
+169 -2.9529647691374557e-03 -8.8342535027382169e-05 7.3397009728076062e-04
+187 -4.6912653885923332e-04 8.7504156554818577e-04 -1.5380839510312325e-04
+189 -4.0708774887988500e-03 -1.3334494074176389e-03 -3.1979436587566815e-03
+286 3.1177762977022999e-03 8.2962997765826025e-04 -1.4657918061564883e-03
+96 -4.0593917508618222e-04 -3.2417726767242690e-04 8.1744250647737624e-04
+193 2.6242486733145925e-03 -1.0356385919033147e-04 1.3576824606013947e-03
+200 -1.1906767062867724e-03 -3.6289812748671537e-03 -2.4521200898983101e-03
+199 5.4241705593542427e-05 3.4203760970239395e-05 -7.7779875696805856e-04
+182 2.2752739123938709e-03 -6.1614998162261769e-04 1.2322775072754635e-03
+381 -1.4672557744667585e-03 -5.0912204014647348e-04 -1.5967982338636658e-03
+218 -1.8929357609813113e-03 -6.9012957619152585e-04 2.7197678012072062e-03
+203 2.9379567132397207e-04 2.8735864835509680e-03 -2.1977596833835418e-04
+188 -3.0035974299641457e-03 3.9090369139548669e-03 -3.8230824467259960e-04
+290 -2.2909499841224927e-03 3.5343115511870485e-04 2.4601486438642749e-03
+227 -1.8623638022467286e-03 1.6073667753537743e-03 1.6818647863957724e-03
+115 -9.1260869255896975e-05 -1.3594503828889670e-03 -8.7341453263828004e-04
+211 2.0725552510265709e-03 1.5763398347168308e-03 -2.2032573572147640e-03
+334 1.2909807190223798e-03 7.8459462561157069e-04 1.2458490005249219e-03
+237 -1.2234774220998479e-03 -1.9663633278016912e-03 1.3804493248037271e-03
+4 1.2681686126670849e-03 -1.2012717878103765e-03 1.2803652532236394e-03
+119 -1.8778053604894454e-04 -1.2450732725345674e-03 1.6956510617390994e-04
+122 -1.0742073117762714e-03 3.8337471347519975e-03 -2.1923992083800700e-03
+224 -1.5757271347752182e-03 -1.3907587914641838e-04 -1.3945654372343468e-03
+228 1.2397669876031401e-03 1.0119835680200912e-03 3.0331927293256265e-03
+225 2.4140841213242600e-03 1.8018357855945275e-03 1.6663156507253170e-03
+128 -5.4846938235602021e-04 -5.1697043096390579e-04 -2.7920509599641931e-05
+229 -4.7467703453046867e-03 -4.7536798630199519e-04 1.4757821682128034e-03
+127 -3.1322355985700691e-03 5.0401718993008972e-04 2.7348211331768273e-04
+235 -1.7267803007075958e-03 -1.1579716211798613e-03 4.1128032446076444e-04
+240 4.2798579367845074e-04 3.8771335009672129e-04 -2.4935734837146497e-03
+20 -3.5443613091865529e-03 -5.1480845833017791e-04 1.9522164001759103e-03
+121 1.5929489379242060e-03 -6.1900926264091272e-04 -1.2583808408699834e-03
+241 -2.3266174681493721e-03 2.9217668158472844e-03 -2.4559246275983516e-04
+145 -2.4466634587999641e-03 1.5283351146797067e-03 2.7207676267883155e-03
+252 -2.4631859384035945e-03 2.3863905824892430e-03 2.1977824672879528e-03
+265 9.3346433711932481e-04 -1.7536488169288468e-03 -7.8190394983135097e-04
+231 1.8685014986249469e-03 2.5571139474390861e-03 -1.7209632734950626e-03
+234 6.5350079730724171e-04 2.8750173822665484e-03 -3.8762458552540837e-04
+179 1.8165947130797573e-03 1.0596468850780458e-04 -7.7688639667480072e-04
+238 -3.0134903870998582e-05 5.1340834831288089e-03 2.4995734129898361e-03
+123 1.3593171071876169e-03 -3.7400553043540944e-03 8.7780704858486517e-04
+144 -8.4504946429798077e-04 1.7791112516624841e-03 1.1872019281179835e-04
+285 -2.5814835352256150e-03 6.3814950995221094e-03 -7.2638834753985942e-04
+167 4.8436408542836323e-03 1.1561725736596031e-03 1.3381127608436639e-03
+278 -2.6305370263123907e-03 -1.6923718681485396e-03 -8.0140951207286089e-04
+171 -9.0142200405212715e-04 -2.1283085735223726e-03 -7.8943144028667002e-04
+160 -2.0221086545962517e-03 2.3136308078668113e-03 -3.9672539117408207e-04
+277 2.7800883158153329e-04 7.0232519983135801e-04 4.6730968564492974e-05
+155 -1.6752571455198872e-03 6.4767094461549947e-04 1.5790682052323000e-03
+140 -3.4060583746482157e-03 7.9545668766666823e-04 3.0506663153336781e-04
+159 3.4759421090442100e-03 -5.2169409586730060e-04 3.4311047053034791e-04
+283 -1.8614197391422982e-03 1.1942195407832869e-03 -7.8058065132905136e-04
+378 8.2297664137535387e-04 2.7438429807002860e-03 -5.7006752609331339e-04
+184 -3.7543582071720267e-04 -2.4322125729883742e-03 3.3086211505291415e-04
+268 -2.1024888302511057e-03 -5.0254462856420242e-03 2.0843600769446190e-03
+270 -4.0397351852506768e-03 1.1445540640883745e-03 1.1400301413386120e-03
+365 -1.1778511325003146e-04 4.5052038250665557e-04 2.0066787811380267e-03
+274 2.7631059389968296e-03 -2.9711593682391411e-03 9.7029825012099496e-04
+294 3.0343705473713256e-03 -2.6159245422324907e-04 1.1264232696794006e-03
+95 7.8244215738911774e-04 -3.9919835194068658e-03 -3.1117803982859469e-03
+257 1.8251207287875220e-03 -2.4199359803106601e-03 4.0450168156582634e-03
+394 4.3733086107144003e-03 -9.2870598368564156e-04 3.7772247243509087e-03
+180 1.6591823242522409e-03 -4.2505375244356602e-03 -1.7804253337218689e-03
+299 -3.3606272192837253e-04 1.3622140228401231e-03 3.2944715889985889e-04
+281 1.1492981749817101e-03 2.9329319339915665e-03 2.4631064574102447e-03
+104 -5.9084948632051756e-04 -1.3665584153294350e-03 5.0833069320661483e-03
+363 -1.8628724151030086e-03 -1.5476623155968069e-03 3.8496950923336028e-03
+301 4.1948643301611766e-03 1.0207346859906750e-03 1.1084260817624480e-03
+288 -7.2808042702155200e-04 -5.7824632952950463e-04 1.9080224823632345e-03
+289 2.5248556231474567e-03 -6.0299617028507051e-04 -2.3953316499769023e-03
+17 4.5885394577267047e-04 1.9771668781676648e-04 1.5956895953105836e-03
+292 2.3520727498279417e-03 -1.6684930497202715e-04 -2.4073688540550502e-03
+272 2.0022514930560602e-04 1.0046192068332942e-03 -6.9070607685107262e-04
+390 3.3536418624077577e-03 -1.4656467930528889e-03 -6.1651757639698539e-04
+210 1.7900921192373727e-03 3.2391767507594931e-03 -8.2147722502725479e-04
+201 1.9341487340428910e-03 -4.9130341164176452e-04 -2.3243781885003544e-03
+321 2.8843367283771328e-03 -2.4751328630113270e-03 -1.2267716836679838e-03
+324 4.5852154819392058e-04 -1.9219556584740687e-04 3.7029858457642150e-03
+223 2.7661858885091942e-03 1.8119554170944140e-04 2.0585594460714391e-03
+304 -1.1492634897597635e-03 -2.3155765108091378e-03 -1.3884072739331382e-03
+305 -7.4928669296475377e-05 -1.2006365701427752e-04 1.1595063685680415e-04
+388 1.5690950346444132e-03 4.3865395903950634e-04 -3.3009961224028613e-03
+202 -3.9311099844492438e-03 2.0015272351074282e-03 -8.0280655755978023e-04
+307 -1.8085217669172146e-03 -5.9587961591793146e-04 2.9683577667021584e-03
+306 -1.1712627606226844e-03 2.0025891023236486e-04 -2.1303143030214273e-03
+207 5.4410636047858051e-03 -3.4272175673109059e-03 -3.2667107063407764e-04
+333 -1.8481122723928481e-03 1.7983529373445811e-03 -3.6346959462238856e-03
+213 -2.6806866597638397e-03 -2.9706912966617292e-03 -4.9832501491953026e-03
+314 1.1057405689721665e-03 2.4963863421869909e-04 9.0140836580917313e-04
+335 -9.7977132124367483e-04 -2.8493482002780898e-04 8.7850724453103404e-04
+318 -4.0205205723454113e-05 9.0793835240924941e-04 -2.0010534795774669e-04
+337 -7.1564059625130747e-04 1.1229112555788377e-03 -1.8583677753347309e-04
+239 -2.8191535429921318e-03 1.9426635019303522e-03 -1.8550313689751896e-03
+243 1.0157551064661899e-03 9.4696951297185247e-04 -2.0237341638612089e-04
+322 -1.7389387246155595e-05 4.7114488643472598e-05 -1.9872794084441268e-03
+302 2.5065246884254403e-03 -5.6081807695866897e-04 3.8007461102842364e-03
+204 3.9811727294152971e-03 -2.5021937938534953e-03 -1.1875167373156823e-03
+222 -1.2542920014862585e-03 -2.4138418680032855e-04 -1.7473223017037116e-03
+208 3.3732261536778751e-03 -1.9286908060178022e-03 -3.0386488302078382e-04
+251 -2.3081790503284671e-03 -4.9547842532626533e-03 6.8431415809668006e-04
+332 3.1177470177665640e-03 9.1946740546568326e-04 5.8914704511156101e-04
+326 1.4012668203530825e-03 -2.8590801758928922e-03 -1.7553962591421990e-03
+355 2.3404718294470208e-03 4.3321790902579576e-03 7.4991902075833899e-04
+336 1.6285386406629052e-03 2.1447287463144831e-03 -2.4130968877516105e-07
+216 -3.1197357441008133e-03 -1.8259313284466422e-04 7.6551849175010762e-04
+279 -2.5763700839018618e-04 5.7805475728650124e-04 -2.4580430395192664e-04
+212 -1.0219868048030637e-03 -2.9128262333458716e-03 5.5854933592584539e-04
+259 -1.4410927544851937e-03 4.8188100211254026e-04 3.1344526183842689e-03
+353 2.8488670631528026e-03 -1.4592673529731331e-03 -2.9564382773290231e-03
+458 -2.3496573329909319e-03 -3.0918766865581085e-03 4.7574782923784999e-04
+323 -4.2643552548049475e-04 -6.0716308952063036e-04 3.4672689145185645e-03
+339 -7.1454749008776481e-04 -1.3325192233300622e-03 9.2976208413387380e-04
+242 -3.9541160818176344e-04 -2.6461332559300061e-03 -2.6160665293793219e-03
+328 -3.0552006991630544e-03 -1.8073263295162055e-03 2.3867052967926111e-03
+345 2.0282853696244555e-05 -1.7118331791436431e-03 -1.0936712535055452e-03
+428 1.8152616515249408e-04 -2.0507204438612692e-03 -3.4182977345668004e-03
+226 7.3021308490534844e-04 -2.9534310549380644e-03 -1.0252073748651946e-03
+245 -2.7210096055506209e-03 1.2211448742642543e-03 -1.3546665325918118e-03
+253 2.4438496736129819e-03 2.2211292009530700e-04 1.9724374856968082e-04
+330 1.8445733275369634e-03 -6.1758901015405542e-04 1.5327175553399948e-03
+349 -7.6532006613602840e-04 1.8895759979944166e-03 7.6015127891165856e-04
+260 7.2062772322958234e-05 3.1572655697701958e-04 -1.6391715513650647e-03
+236 6.1673205711825266e-04 -1.0015097901038862e-03 3.5606721403383564e-03
+255 2.0673101529507568e-03 2.7780764806518464e-03 -3.9528715752709258e-04
+244 -1.5675275525345181e-03 -2.3437273658027617e-03 3.8811287102131242e-03
+379 -1.0834394134150282e-03 -6.8692054801790980e-05 -1.9766595271382753e-03
+341 -4.7344611969830165e-04 -1.7738441387422786e-03 -6.1253700115048619e-04
+377 9.7063700584548978e-04 -7.0750615385849831e-04 1.1424612996503243e-03
+364 1.6580472723204233e-04 -1.6417478539353870e-04 2.6254725647855627e-03
+267 9.4831179398603498e-04 -1.9623123317254313e-03 2.0136836451451366e-03
+248 7.4646352153188891e-04 1.4714284475721826e-04 8.6534429659595492e-04
+369 1.6261844341347509e-03 1.2861329302331624e-03 1.8684619658129523e-03
+177 -7.2497012163469268e-04 -1.8613618469114580e-03 -2.0164047629226307e-03
+366 2.5744134747193487e-03 -2.7202942034787532e-03 8.0767243759892974e-03
+393 -2.0939258969636210e-03 -4.2126671660456579e-03 3.8309120600240978e-03
+295 -2.0884842340253989e-04 4.9675172250340457e-04 4.7478441562448699e-04
+275 -2.5995476358640999e-04 1.8598609996951830e-04 3.6365079952509296e-03
+175 8.2947000626419892e-04 -2.0718757353141190e-03 2.2194923453411114e-04
+444 2.0482582304334322e-03 -3.0492674803403981e-03 -1.0000997159897401e-03
+254 -6.7937677007565568e-04 1.2535993355300703e-03 -1.5634038991166994e-03
+344 -4.8313134794719838e-04 1.6504757283253683e-03 -2.2943588245008177e-03
+297 -1.0924678531298217e-03 2.9646482944617023e-03 1.4165637651363170e-03
+358 1.3754734749511057e-03 1.8468677553244437e-03 -1.2827463687945671e-03
+401 3.3599903248237716e-04 3.2176459974606062e-03 -6.3234149132486374e-04
+399 3.6649285452200247e-04 -6.5454587982412575e-04 -7.2727994186287703e-04
+361 3.3860404053475393e-03 1.0913138490076277e-03 1.3611881735333350e-03
+371 -1.5189404253187083e-03 1.2591382604078968e-03 -1.9507516399921174e-04
+370 7.4470599721229822e-04 -7.6937863357274964e-04 2.2584833451588372e-03
+392 1.8449918654304073e-03 -3.5664655230630148e-03 -3.1953484271714464e-03
+387 -2.2469591197519642e-03 -3.1198127662406777e-03 3.3229595349740754e-03
+276 1.3117402027189656e-04 -4.0259231827194878e-03 -1.0156837838460055e-03
+215 -3.0196492427015777e-03 -3.6232915370995955e-03 4.5016895605167560e-03
+473 -3.7615487062197714e-04 -2.2599345313102518e-04 -3.5226589648354770e-04
+280 -1.3059281494131425e-03 -6.5731158536308509e-04 -2.3023730437499879e-03
+317 -4.4402834820617349e-04 2.9007196074874149e-03 -2.3581473626028298e-04
+397 -3.1211471814564895e-03 3.3295301978642604e-03 -8.2027089171500674e-04
+220 -4.1461453747250416e-04 4.6728556212763785e-05 -2.5314656152393032e-03
+385 3.1698659285672761e-05 6.4167144688323866e-04 -1.0576567894326492e-04
+284 -2.2566857887741558e-03 2.1174947612306338e-03 1.8512594760605782e-03
+362 2.3522070448639363e-04 1.1010242259510243e-03 5.1005548508450523e-05
+382 3.5564156647271999e-04 5.0300998641347730e-03 -1.5680347346662079e-03
+384 2.2560810126397487e-03 4.0209157998352977e-04 -1.4824359528465593e-03
+437 1.6355696672575356e-03 -2.6979703529350016e-03 -5.0546793525999530e-03
+287 1.9840839773834855e-03 6.5146509852349063e-04 1.8366677240296569e-03
+386 3.6964639571961011e-03 7.9249623974048111e-04 -1.4518746177744162e-03
+331 -8.3377755766995650e-04 4.3942866111455550e-03 -3.3948859133632169e-04
+205 -1.8144131361479657e-03 2.0760363072365559e-03 -3.3786257001163153e-03
+395 -1.7796761389160959e-03 1.9191350287857106e-03 6.2438802337048830e-04
+309 1.4627747252031317e-03 3.2414649821299667e-04 3.9100530874828779e-03
+430 -1.7220618941882456e-03 -2.2173192932158873e-04 -3.0374113216257849e-03
+311 -2.1675621623790450e-04 -1.2157203553695116e-03 3.1063487967357565e-03
+315 2.6066878661225719e-04 2.8349502117418885e-03 -1.8974692344976250e-03
+195 8.5677577083246735e-04 2.1914425940391638e-03 3.2228908823296442e-03
+296 -1.4652716577304567e-03 7.3519490359671036e-04 -1.6581368766563410e-03
+219 1.0623853203712429e-03 -1.7679650722485949e-03 -1.4825900011662127e-03
+303 3.0474478393185075e-03 -3.2086347220481879e-03 2.0226351617295263e-04
+422 2.3563671838225777e-03 2.3265204385703336e-03 -2.0089024415778207e-03
+483 -1.3242418440833487e-03 -3.2472429609049514e-04 2.0461910792210426e-03
+6 5.3194569476693640e-04 5.6776794033519891e-05 1.8807441817662073e-04
+402 2.3157110828876636e-03 -1.7095436800269182e-03 8.0186507164298735e-04
+466 -1.4763354426250588e-03 -1.1086488018530907e-03 1.0957815324372608e-03
+492 6.9892763615856713e-04 5.4898714441766361e-04 9.0747807749635899e-05
+431 -1.4964508785642313e-04 3.6949528470212782e-04 1.1713510489377600e-03
+429 7.2564246263034861e-04 2.7085858156511316e-03 7.0494341634871297e-04
+410 2.7799663688696744e-03 -1.9231443012122044e-03 -1.6987886733395453e-03
+434 -1.2002144602126961e-03 -1.7747752128190466e-03 -1.3362916585603261e-03
+313 1.3465741916450470e-03 -1.5447085604840054e-03 -2.2722742568774819e-03
+300 6.2485716748459427e-04 2.5450501687906313e-03 1.1317392581023011e-03
+415 3.0573620335262045e-03 3.1408792244436456e-03 1.6226114727098159e-03
+438 6.0149795899535707e-04 -8.5687771779437041e-04 -9.6169618007837707e-04
+383 9.5881693801358649e-05 1.7625506576791872e-03 3.3478872659318355e-03
+320 2.0654926758922180e-03 -1.3313009794085238e-03 3.9794104399073441e-03
+457 -1.4896116911253515e-03 -2.0931838404411940e-04 2.8039224880212644e-03
+439 1.4526590348583760e-03 1.6967321453706672e-03 -1.2340263796581125e-03
+312 1.5094474678529486e-03 -2.8820056706848983e-04 9.4815441439558023e-05
+427 -6.6352742380493252e-05 1.0850483861255119e-03 -2.4387562696593025e-03
+90 -8.3477392912492221e-04 -3.0032790643581479e-05 1.2201803604756638e-04
+350 1.8724097878672150e-05 -6.0993519519992635e-04 7.6397318150332489e-04
+329 -1.6577653740715292e-04 -6.2228895769642978e-04 1.4957600179629452e-03
+30 -3.6086275819636748e-03 1.9518749467508970e-05 7.7341665718120547e-04
+433 -1.6721180616429342e-03 8.2542682157065209e-04 -5.4498196172034978e-04
+340 -5.3351696099386307e-03 2.0032933193466970e-04 -3.0608293787178754e-03
+338 -4.9210146449322825e-03 -1.6774570590608559e-03 1.3156113870238892e-03
+357 2.9501431915440438e-03 3.0100201122747666e-04 8.2084575269641708e-04
+455 -1.8071766028718583e-03 -6.4977393068847862e-04 3.4982965562791644e-03
+459 -3.9345741900517076e-03 2.3402390592432453e-03 -1.8147209193578597e-03
+359 1.2814238653336778e-03 1.1650299813238164e-03 2.2015787332200654e-03
+343 -1.7744915936291687e-04 -1.9160657240095483e-03 3.0099938070069446e-03
+347 -4.8045243084540558e-03 1.1149895584315296e-03 -3.2316909846891793e-03
+424 2.0617222888742294e-03 -1.1456123737284235e-03 4.3516476388749826e-03
+327 -1.2637542165499886e-03 -9.2686424991273049e-04 -3.4392877103865259e-04
+325 -7.5954822631725397e-04 -2.9978293005918723e-04 6.7462261163207284e-04
+247 -2.4252949805927100e-03 -2.5727457406018346e-03 1.1026825454495308e-03
+271 -1.4164862064290989e-03 7.3575319203224570e-04 -1.4600153468391996e-04
+436 -3.5688927726456178e-04 -2.4851997141590973e-04 -2.0003401717431234e-03
+389 -3.3342433371684059e-04 9.6640686400202352e-05 -1.2336357857658498e-03
+453 -3.9816105236432755e-03 -2.5982571351575085e-03 -5.9375127991869155e-06
+256 -1.4169548884844013e-03 -2.0022050102970045e-03 -1.7450532630143383e-03
+351 3.0695172840497133e-03 7.7897391723118626e-04 2.6502943969900004e-03
+373 -1.4036855785521964e-03 -2.0488340390444371e-04 -3.1672997711149585e-04
+375 7.7057405985523188e-04 1.8536071337231477e-03 -2.8096618047300757e-03
+460 -1.2560735416770586e-03 1.9998910101008526e-03 1.9357443433424847e-03
+441 -2.7638416287803021e-03 3.7038544917865710e-03 1.1814269602709157e-03
+360 -2.1510872620819150e-04 2.5862122499326220e-03 -5.1020725212521398e-04
+454 -3.2668677390914908e-04 -1.6184645189692951e-03 1.4277625948205931e-03
+442 9.6992662165830282e-04 -8.2506904556264025e-04 -5.1159447391599683e-03
+464 -3.7883895310759702e-04 2.0103809948350255e-03 -5.7864473510073258e-04
+342 2.4262774616675880e-03 -9.0032536879993449e-04 -1.2891610627436799e-03
+346 -9.4203675796626282e-04 2.7656720641636226e-03 5.4758702347854353e-04
+448 -1.0672326228303264e-03 3.2955230001353959e-03 2.0290688650983252e-03
+374 3.5630724205925696e-04 1.6468183807450021e-03 5.6916737261660595e-04
+486 -8.6467977146729015e-04 2.3545885898498494e-04 -6.1488137812845218e-03
+426 -1.0947262571276779e-03 -9.7223570069642900e-05 3.6107779255362270e-03
+376 -2.6252144516416558e-03 3.6907825006613675e-04 1.3765524942050765e-03
+352 2.6616838041100561e-03 2.1739485754067264e-03 1.8330086580156391e-03
+456 -1.1130577626835199e-04 1.2595890633103203e-03 -2.4848153606352402e-04
+380 8.8412208819608942e-04 1.0039508732788367e-04 1.5001867822970894e-03
+449 9.1024611431046363e-04 -7.8505787618802733e-05 1.1095810499887134e-03
+477 -3.0323323237054840e-04 2.9095435604340634e-03 3.1338536760588796e-04
+461 -2.0753484380235153e-03 3.1908052700900347e-03 -7.4035407274721822e-04
+58 1.6384502239297392e-03 1.6074423114806286e-03 2.2821077820001355e-03
+468 1.8700450086225613e-03 2.2838697216227763e-03 2.6353603678693290e-03
+485 7.9768023529902001e-04 2.8966008586051224e-03 -1.4132651700104098e-03
+462 1.6556834434415966e-03 2.0307659783014224e-03 -1.8373219699174422e-03
+368 -3.1426762917873196e-03 6.3101944105068406e-04 -1.8024948848056040e-03
+465 -1.1161346703556424e-04 -1.8399249472902744e-03 5.2064811154522853e-04
+400 4.5325789709503675e-04 -2.2646189527424158e-04 -3.5102582802922079e-03
+372 -3.9554981366935203e-04 -6.1152446472258442e-04 9.5298675202215273e-04
+367 -1.3485444061689794e-03 1.1368936351100630e-03 3.9328403814364813e-03
+93 -1.9842115313348728e-03 -1.0167877267643845e-03 -2.4369959480553269e-03
+451 -4.1055067583926639e-03 -2.2200880629835674e-04 -1.0665922131730702e-03
+413 -1.5488296296065230e-03 -4.7079275695647047e-04 -1.6543193854726586e-03
+478 -4.0252354356048466e-04 1.0311456102268998e-03 -1.3498432253310161e-03
+495 2.2235390680924250e-03 -2.3953644998986703e-03 2.8006238212736250e-03
+497 -3.5382161424232540e-03 1.5950803009485883e-03 -3.6448669288026908e-04
+498 5.4522938499064018e-03 1.4569798093580107e-03 -8.2964985924454456e-04
+479 1.9514296267426668e-03 2.0672955897262312e-03 4.6354153141973980e-04
+421 -1.4088968698443289e-05 -2.7148651760505755e-03 -2.9636585670004341e-04
+482 -7.7818046236340717e-04 7.3012077197771115e-04 2.9692124588516222e-03
+408 2.0861696517257247e-03 5.5496107791646789e-03 -1.4835263167455245e-03
+418 -2.1089987424370788e-03 -2.1335406186348978e-03 1.2827462574844278e-03
+405 -1.1325051115422415e-04 -1.5235561833479609e-03 -2.6632035663014652e-03
+308 2.1113395988425054e-03 3.6282139823735388e-03 1.5056346433207223e-03
+470 -3.6947695044961164e-03 -2.6668003451282320e-04 -5.6794461988822400e-03
+310 1.2593598457465853e-05 -1.6025679572411272e-04 -8.4124003679198161e-04
+416 -1.0668959333340101e-03 1.7667772264378929e-03 -4.6492042190279440e-04
+391 1.6527821426881085e-03 4.1315941407510087e-03 2.4857203050389141e-03
+319 2.0534988688357550e-03 -1.5864499689719599e-03 -4.6852153543803857e-03
+489 -2.3495691504679867e-03 -6.3062418943046186e-04 8.0821498019697006e-04
+493 -4.6913793560671927e-04 7.0640822087225847e-04 3.5647590756101070e-03
+396 -1.8096757498798895e-03 -2.0913963258009215e-04 1.2836678313350796e-03
+414 1.6118254674535787e-04 -3.8151817583260981e-03 2.4923099310376960e-03
+398 2.5578684245005053e-06 -1.6729857896641330e-03 4.1922454919235477e-05
+417 2.0420158132882548e-03 -3.9977932883928109e-03 9.2366662768662497e-04
+403 -2.8306075532084668e-04 -2.4837162040876560e-03 -1.8881382510907456e-03
+9 3.3272200831486812e-03 2.9994435747536874e-03 -4.1561433109159741e-04
+92 -2.8421357377479987e-04 -6.2032244693142414e-04 4.0230943284679026e-04
+14 -2.1443918779336271e-03 -2.2512341257409007e-03 -4.1026360346772418e-03
+15 1.1460604594864016e-03 2.7080102187682794e-03 -1.2030358548924109e-03
+404 1.5947232134636547e-03 -2.2820052243821814e-03 -3.9643963180667130e-03
+481 -7.6344759913167797e-04 1.9727754523250385e-03 3.6809494663036829e-04
+21 -1.2196055090959345e-04 -1.7706917407874240e-03 -2.1311269977340302e-04
+423 -2.8903796350714887e-03 -4.8915979418136992e-03 3.9080136638618545e-03
+425 3.7382486265368367e-03 -2.3856130669601566e-03 -1.1845349349279715e-03
+29 -3.0624753703587974e-04 3.8445213540307853e-04 -6.0169613696118911e-04
+356 4.1489807245239929e-03 -1.2120001767549858e-03 1.7392444419561204e-04
+33 3.5325637777121389e-03 -3.3864501680730191e-04 -2.1234096198075833e-04
+316 -3.5333069488391904e-05 -2.7286951129217511e-03 2.6388984214074335e-03
+435 8.8367303642889955e-05 -3.0210789432228193e-03 8.6178442636475371e-04
+53 1.0641638112910447e-03 -2.0881324068348704e-03 1.8549631954452215e-03
+61 -4.4747510818906791e-04 2.0280076445335533e-03 -1.8157790822866168e-03
+44 1.3138766782384429e-03 -1.4856928184114339e-03 -3.0779016860691855e-03
+445 -2.5444936917461201e-04 -1.4039870899063743e-04 -1.7543025846128719e-03
+51 -2.5173086844483788e-03 4.3123038341941408e-03 -3.4860218844113898e-03
+12 -2.0146328928659979e-03 1.9055600754139964e-03 9.8672659150858251e-05
+36 -1.9089070286547626e-03 -6.4031315566281792e-04 -1.1463031383547411e-03
+56 -1.7499733351055609e-03 1.6625277298648092e-03 -9.2405467158413780e-04
+480 1.2448274263619412e-03 -7.4414958617760930e-06 1.3609711342597358e-03
+443 1.1542767178387161e-03 3.0112911740307825e-03 -4.6274074283179678e-04
+178 -3.3972698778934004e-03 -2.8000269193236612e-04 1.2490620822955343e-03
+348 4.0264762649262955e-03 -4.3774655687350084e-03 1.8624749082034305e-03
+469 1.2979964852382292e-03 -7.1677626645778999e-04 5.0807234216496448e-04
+49 2.5222018242191231e-04 -4.7576007149835262e-05 1.5480022656279497e-03
+55 -1.1913682014233460e-03 -1.0601041186354219e-03 4.6012131310204296e-03
+54 1.8510341879903640e-04 -1.7687757807643533e-03 2.0217472524513701e-04
+450 -2.6044497809745650e-03 8.6395609351006973e-04 -1.2524286941603042e-03
+474 8.0799286290405236e-04 -1.3327455182395504e-03 -4.0703743221390555e-06
+463 -9.4804293569536371e-04 1.9090540140784117e-03 -6.2680621892810930e-04
+487 1.4806552450284665e-03 1.4013379561767781e-03 9.4901877981972045e-04
+452 1.2300065809216138e-03 -2.4952718565801313e-03 1.0663382604425052e-03
+446 7.2835045851561686e-04 -3.2621103155893707e-04 -4.7556735108542547e-04
+407 4.8488873387849438e-04 -4.4665263440394069e-04 -2.9042306429903262e-03
+409 -1.0785292086506553e-04 7.0509046920753655e-04 -1.7320486686704059e-03
+50 -1.4544870218531096e-04 -5.9416835703461168e-04 3.5594926597226650e-04
+494 3.5893400775205589e-03 4.1811365038960397e-03 1.1234364046655825e-03
+476 1.1473154411130817e-03 2.6497674563534961e-03 -2.0388511780585470e-03
+85 -2.5125243577158135e-03 -3.2268225530822040e-03 9.9773318846491294e-04
+81 -1.1651821693253891e-03 1.1905066482556486e-03 3.2361876402539440e-04
+3 3.6900379588152139e-05 -6.3246335570884906e-05 -1.3958461353834478e-05
+406 -1.5861748670320569e-03 -4.2710210554090383e-03 8.1565511638735590e-04
+488 8.8375186212612494e-04 4.0957563094006497e-04 1.2569502096401559e-03
+89 5.4930894245726531e-05 -4.1996214257373392e-03 1.1462432229434496e-03
+491 1.1340764025044886e-03 1.3979086370611515e-03 -2.7735435391788854e-03
+411 -3.4498278967553904e-03 1.3823565950258835e-03 -2.2350755761656213e-03
+499 3.5725848418622719e-04 -1.0773123297448783e-03 1.1594810970358630e-03
+97 -1.1901661961495059e-04 1.1544645769067392e-03 1.8864000846414194e-03
diff --git a/examples/USER/misc/grem/lj-6rep/415/restart.init b/examples/USER/misc/grem/lj-6rep/415/restart.init
new file mode 100644
index 000000000..84634f6c1
--- /dev/null
+++ b/examples/USER/misc/grem/lj-6rep/415/restart.init
@@ -0,0 +1,1022 @@
+LAMMPS data file via write_data, version 5 Nov 2016, timestep = 10000
+
+500 atoms
+1 atom types
+
+1.1888697636423178e+00 2.3811130236358178e+01 xlo xhi
+1.1888697636423178e+00 2.3811130236358178e+01 ylo yhi
+1.1888697636423178e+00 2.3811130236358178e+01 zlo zhi
+
+Masses
+
+1 62.5
+
+Pair Coeffs # lj/cut
+
+1 1.1 2.8
+
+Atoms # full
+
+8 0 1 0.0000000000000000e+00 2.5841779010802721e+00 4.1038013170990482e+00 2.2582488362971027e+00 0 0 0
+107 0 1 0.0000000000000000e+00 3.4189509835733269e+00 2.2603095134163382e+00 4.3359317235008970e+00 0 0 0
+86 0 1 0.0000000000000000e+00 4.6138414416400435e+00 1.8029879178250829e+00 1.4925847229469271e+00 0 1 0
+185 0 1 0.0000000000000000e+00 6.3720093808707032e+00 3.3189842513423242e+00 4.0067295052069234e+00 0 1 0
+186 0 1 0.0000000000000000e+00 7.6753657795848698e+00 1.4188747870174443e+00 1.5684698298125184e+00 0 1 0
+412 0 1 0.0000000000000000e+00 8.2605565312318632e+00 4.5391912977994249e+00 1.5608202928648149e+00 0 0 1
+109 0 1 0.0000000000000000e+00 9.4874057578686575e+00 2.6434708909688212e+00 3.8204896480915740e+00 0 0 0
+31 0 1 0.0000000000000000e+00 1.2142243722304650e+01 4.2194685423022964e+00 1.2899555513463350e+00 0 0 0
+111 0 1 0.0000000000000000e+00 1.2619347646586210e+01 2.6175947808541244e+00 3.9264708588952830e+00 0 0 0
+420 0 1 0.0000000000000000e+00 1.5993581011177541e+01 2.2888415336273269e+00 4.2042044531820544e+00 0 0 1
+16 0 1 0.0000000000000000e+00 1.5107593339025088e+01 4.7005255852404684e+00 1.1965813881225948e+00 0 0 0
+14 0 1 0.0000000000000000e+00 1.4132354703334610e+01 1.4295359588632832e+00 1.2771110116870119e+00 0 0 0
+18 0 1 0.0000000000000000e+00 1.8120509551437593e+01 3.7819926248034186e+00 2.3902423119401055e+00 0 0 0
+117 0 1 0.0000000000000000e+00 1.9226991285663843e+01 1.6536028982308824e+00 4.3591184725112662e+00 0 0 0
+1 0 1 0.0000000000000000e+00 2.2001820350584943e+01 2.8289120892845996e+00 3.0719197796344533e+00 -1 0 0
+34 0 1 0.0000000000000000e+00 1.9914187247365106e+01 4.9363726760636748e+00 4.4452615139173952e+00 0 0 0
+22 0 1 0.0000000000000000e+00 2.8968754774558683e+00 7.4527509490068962e+00 2.3214577497510249e+00 0 0 0
+28 0 1 0.0000000000000000e+00 4.3129944921725736e+00 5.4921250932812455e+00 4.9276803844467558e+00 0 0 0
+25 0 1 0.0000000000000000e+00 5.2466788279203698e+00 5.3289108176008897e+00 1.6545186971578028e+00 0 0 0
+27 0 1 0.0000000000000000e+00 7.0871236124708155e+00 6.3425131674468229e+00 3.9929501202658804e+00 0 0 0
+26 0 1 0.0000000000000000e+00 5.7206354922050453e+00 8.2722960577333637e+00 1.7855580817376873e+00 0 0 0
+447 0 1 0.0000000000000000e+00 8.8463779947738779e+00 7.6220250070913353e+00 1.5285894558173989e+00 0 0 1
+11 0 1 0.0000000000000000e+00 1.0207352740639488e+01 5.9607669283313252e+00 3.6179864458305313e+00 0 0 0
+432 0 1 0.0000000000000000e+00 1.2160069078872850e+01 7.3692038483384588e+00 1.7194626512464046e+00 0 0 1
+116 0 1 0.0000000000000000e+00 1.3367935876608691e+01 5.4496570491138359e+00 4.0156358601371078e+00 0 0 0
+130 0 1 0.0000000000000000e+00 1.5134749655179965e+01 7.5838822354168478e+00 1.3053942939517340e+00 0 0 0
+114 0 1 0.0000000000000000e+00 1.6290753428009111e+01 5.4965162248643900e+00 4.3025454500573854e+00 0 0 0
+35 0 1 0.0000000000000000e+00 1.8440911229466344e+01 6.8844274800942022e+00 2.5111218778387396e+00 0 0 0
+39 0 1 0.0000000000000000e+00 2.2459257557430526e+01 5.9898180831886467e+00 3.1138448753683026e+00 0 0 0
+41 0 1 0.0000000000000000e+00 3.3538130540384983e+00 1.0196365909208918e+01 3.0416281798419504e+00 0 0 0
+43 0 1 0.0000000000000000e+00 2.3621670610264708e+01 1.1999241391056090e+01 3.4605083059254076e+00 -1 0 0
+45 0 1 0.0000000000000000e+00 7.3770843446733441e+00 9.5239690384976381e+00 3.7768666647643148e+00 0 0 0
+46 0 1 0.0000000000000000e+00 5.6752947723040732e+00 1.1446482318388567e+01 1.6697645710882281e+00 0 0 0
+146 0 1 0.0000000000000000e+00 1.0532463062567119e+01 9.3774765221743479e+00 3.9705049735246476e+00 0 0 0
+153 0 1 0.0000000000000000e+00 9.0228809523765019e+00 1.0804509601698037e+01 1.5350349420171217e+00 0 0 0
+149 0 1 0.0000000000000000e+00 1.2729925577342213e+01 1.0505425261963804e+01 2.0356783808500793e+00 0 0 0
+150 0 1 0.0000000000000000e+00 1.3493043580090799e+01 8.7336739248105761e+00 4.1983605850858066e+00 0 0 0
+156 0 1 0.0000000000000000e+00 1.5878006665756155e+01 1.0406010152135833e+01 1.6229494654766190e+00 0 0 0
+71 0 1 0.0000000000000000e+00 1.4634856722432094e+01 1.1696008593723585e+01 4.1452250098297441e+00 0 0 0
+134 0 1 0.0000000000000000e+00 1.6684460071935639e+01 8.5398013806283686e+00 4.2629704184319896e+00 0 0 0
+354 0 1 0.0000000000000000e+00 1.7486132597624412e+01 1.1693289475777794e+01 3.9836349580635737e+00 0 0 1
+57 0 1 0.0000000000000000e+00 1.9821066936810794e+01 9.4924032140764112e+00 3.1704918009420791e+00 0 0 0
+480 0 1 0.0000000000000000e+00 1.8694869832430250e+01 1.1673822137003544e+01 2.3269166575935060e+01 0 0 0
+24 0 1 0.0000000000000000e+00 2.3025648267665666e+01 8.9319925103005708e+00 3.7095157674217552e+00 -1 0 0
+78 0 1 0.0000000000000000e+00 2.1810422425970629e+01 1.1116669232839229e+01 1.3401289033835297e+00 0 0 0
+158 0 1 0.0000000000000000e+00 1.7937714252750636e+00 1.5211152414629499e+01 4.3735012232525410e+00 1 0 0
+42 0 1 0.0000000000000000e+00 4.0648128052187058e+00 1.3266263048465060e+01 3.3986311534442928e+00 0 0 0
+52 0 1 0.0000000000000000e+00 7.5576623369495088e+00 1.2720762871991472e+01 3.5725473809888162e+00 0 0 0
+65 0 1 0.0000000000000000e+00 6.0131861251117762e+00 1.4562033897112835e+01 1.6661552023448891e+00 0 0 0
+73 0 1 0.0000000000000000e+00 1.0846603937837283e+01 1.2256389855356115e+01 3.8163155200134153e+00 0 0 0
+91 0 1 0.0000000000000000e+00 1.1419986100439235e+01 1.5567404076699813e+01 3.5467143517840714e+00 0 0 0
+72 0 1 0.0000000000000000e+00 9.4238939629549492e+00 1.3876987377537002e+01 1.4940038101453952e+00 0 0 0
+76 0 1 0.0000000000000000e+00 1.3038724964614040e+01 1.3270523252634220e+01 2.3052183046623207e+00 0 0 0
+174 0 1 0.0000000000000000e+00 1.4782316243738723e+01 1.5385687837208861e+01 3.7623171410107958e+00 0 0 0
+77 0 1 0.0000000000000000e+00 1.6146868042849675e+01 1.3567224212585909e+01 1.8320758246414663e+00 0 0 0
+75 0 1 0.0000000000000000e+00 1.8266130487640993e+01 1.4785597431836115e+01 4.3100320921208937e+00 0 0 0
+60 0 1 0.0000000000000000e+00 2.0506268378273340e+01 1.2519744417968207e+01 3.6252534436412223e+00 0 0 0
+63 0 1 0.0000000000000000e+00 2.2644241742206319e+01 1.4158650396079445e+01 1.5777083293989960e+00 -1 0 0
+74 0 1 0.0000000000000000e+00 2.0775817097425524e+01 1.6148105293441660e+01 3.2347402191631849e+00 0 0 0
+181 0 1 0.0000000000000000e+00 2.4978150715739091e+00 1.8461780124292083e+01 4.3494758318734803e+00 0 0 0
+162 0 1 0.0000000000000000e+00 4.8209469963947225e+00 1.6558790563886920e+01 3.6425181662787960e+00 0 0 0
+484 0 1 0.0000000000000000e+00 3.4777556730512793e+00 1.8550746071581045e+01 1.2193134998426400e+00 0 0 1
+170 0 1 0.0000000000000000e+00 7.9704323195477214e+00 1.5907515347456524e+01 3.5284514263985303e+00 0 0 0
+142 0 1 0.0000000000000000e+00 6.6022989413890611e+00 1.7666313310404917e+01 1.4605317335465551e+00 0 0 0
+64 0 1 0.0000000000000000e+00 5.4863890849427168e+00 1.9736542526955283e+01 3.6187592062106311e+00 0 0 0
+83 0 1 0.0000000000000000e+00 8.5321502262119644e+00 1.9039297004615179e+01 3.6237588989371599e+00 0 0 0
+70 0 1 0.0000000000000000e+00 1.1590558783945358e+01 1.8852900813343432e+01 3.7276475728081548e+00 0 0 0
+69 0 1 0.0000000000000000e+00 9.8060703709099215e+00 1.6823283606079187e+01 1.4650717826037751e+00 0 0 0
+214 0 1 0.0000000000000000e+00 1.5075835580005062e+01 1.8334341911479697e+01 4.0061685844892638e+00 0 -1 0
+471 0 1 0.0000000000000000e+00 1.2989329063329659e+01 1.7248531990020588e+01 1.6717688510922011e+00 0 0 1
+475 0 1 0.0000000000000000e+00 1.6643020459296871e+01 1.6880813943966643e+01 1.7896168674903730e+00 0 0 1
+197 0 1 0.0000000000000000e+00 1.8439576853322016e+01 1.8043162802282623e+01 4.1734567113713048e+00 0 0 0
+490 0 1 0.0000000000000000e+00 1.6893108954904417e+01 1.9926578804861208e+01 2.0369563348438504e+00 0 0 1
+161 0 1 0.0000000000000000e+00 2.3252778629077334e+01 1.7135313891802987e+01 2.1320393594416127e+00 -1 0 0
+496 0 1 0.0000000000000000e+00 2.1062370637170126e+01 1.9403064819835762e+01 3.1069959409086465e+00 0 0 1
+7 0 1 0.0000000000000000e+00 1.6587871653517876e+00 2.3264050341295828e+01 2.0738445036930839e+00 0 -1 0
+102 0 1 0.0000000000000000e+00 3.0274139571918055e+00 2.1799714269494324e+01 4.5181844531001474e+00 0 -1 0
+5 0 1 0.0000000000000000e+00 4.0626345645623729e+00 2.1470635866279771e+01 1.5435740094843018e+00 0 -1 0
+82 0 1 0.0000000000000000e+00 2.3795061887530142e+01 2.0340636367473820e+01 2.1872023553729001e+00 -1 0 0
+88 0 1 0.0000000000000000e+00 6.0169021181865094e+00 2.2896219569795690e+01 3.9920942205347005e+00 0 0 0
+66 0 1 0.0000000000000000e+00 6.9575839711999725e+00 2.1010906239718530e+01 1.6085670649564889e+00 0 0 0
+10 0 1 0.0000000000000000e+00 1.0909714899369153e+01 2.3764936089047431e+01 1.6630070729393929e+00 0 -1 0
+67 0 1 0.0000000000000000e+00 9.0283487756275420e+00 2.2270917631995168e+01 3.7006412443625751e+00 0 0 0
+472 0 1 0.0000000000000000e+00 1.0092800046751833e+01 2.0352038861969589e+01 1.5027122587108077e+00 0 0 1
+13 0 1 0.0000000000000000e+00 1.1990831188621600e+01 2.1848625964847194e+01 3.9822843640698768e+00 0 -1 0
+94 0 1 0.0000000000000000e+00 1.5042857028024883e+01 2.1696616260098210e+01 3.7291396896088527e+00 0 0 0
+491 0 1 0.0000000000000000e+00 1.3144876434700990e+01 2.1149410765978395e+01 2.3729792160291275e+01 0 0 0
+500 0 1 0.0000000000000000e+00 1.7202068524693196e+01 2.3202742844791089e+01 2.1432390916094692e+00 0 0 1
+100 0 1 0.0000000000000000e+00 1.8700927745435813e+01 2.1209366206171062e+01 4.0240418236394815e+00 0 0 0
+419 0 1 0.0000000000000000e+00 2.1586178814919300e+01 2.2575179043105408e+01 3.1532299703969007e+00 0 -1 1
+19 0 1 0.0000000000000000e+00 2.5059300267086888e+00 2.7636971986906378e+00 7.5688861228050204e+00 1 0 0
+125 0 1 0.0000000000000000e+00 5.7122138933330602e+00 3.4811137324632249e+00 6.8576090670635024e+00 0 0 0
+87 0 1 0.0000000000000000e+00 7.8220851148781234e+00 1.5592440762899504e+00 6.0335982802807724e+00 0 1 0
+105 0 1 0.0000000000000000e+00 8.2959490449991105e+00 4.8179066754800717e+00 6.2376550906196471e+00 0 0 0
+110 0 1 0.0000000000000000e+00 1.1416865442767907e+01 4.1573546681758078e+00 6.2854835243996616e+00 0 0 0
+192 0 1 0.0000000000000000e+00 9.6078206166836218e+00 2.8786564014788190e+00 8.4524392330172358e+00 0 1 0
+120 0 1 0.0000000000000000e+00 1.4440753136474994e+01 3.6177863715045633e+00 6.2565290459241707e+00 0 0 0
+115 0 1 0.0000000000000000e+00 1.5707050609176619e+01 1.9401080665524209e+00 8.3880253229594359e+00 0 0 0
+209 0 1 0.0000000000000000e+00 1.2673800534066176e+01 2.3594019733400025e+00 8.4983160548240821e+00 0 0 0
+113 0 1 0.0000000000000000e+00 1.7888403432486719e+01 3.5536459280610888e+00 6.2913831142103511e+00 0 0 0
+217 0 1 0.0000000000000000e+00 1.9381360676359250e+01 1.6035254640965393e+00 8.2062836303273663e+00 0 0 0
+101 0 1 0.0000000000000000e+00 1.3367325258168112e+00 4.1594889824792762e+00 5.1432233672946861e+00 0 0 0
+237 0 1 0.0000000000000000e+00 2.1270360833976362e+01 2.9354889142088112e+00 6.2568429281267592e+00 0 0 0
+4 0 1 0.0000000000000000e+00 2.3008098662586981e+01 4.5029412428718043e+00 8.3593897171918758e+00 -1 0 0
+2 0 1 0.0000000000000000e+00 2.3596357961508645e+01 2.3694799723173702e+01 5.4789775629073700e+00 -1 -1 0
+38 0 1 0.0000000000000000e+00 1.9992716569942584e+00 7.3901758741065020e+00 5.5226207326003536e+00 1 0 0
+106 0 1 0.0000000000000000e+00 3.1850585733289094e+00 5.6223699135319212e+00 7.8531969873145187e+00 0 0 0
+122 0 1 0.0000000000000000e+00 3.9818601912555076e+00 9.1807994519877703e+00 8.1822655924920191e+00 0 0 0
+32 0 1 0.0000000000000000e+00 4.9585516755987982e+00 8.4458066693510006e+00 5.1985004292368817e+00 0 0 0
+108 0 1 0.0000000000000000e+00 6.2541376365353463e+00 6.8324124766828378e+00 7.4408059559704274e+00 0 0 0
+131 0 1 0.0000000000000000e+00 8.9289457744110443e+00 7.9481451836239314e+00 6.0405918834420325e+00 0 0 0
+151 0 1 0.0000000000000000e+00 1.1742822196763514e+01 7.2246489701841679e+00 6.3614637613256404e+00 0 0 0
+232 0 1 0.0000000000000000e+00 1.0097737666659658e+01 5.9193368906594159e+00 8.5480904810117018e+00 0 0 0
+135 0 1 0.0000000000000000e+00 1.4879756229845293e+01 7.0192216588451037e+00 6.2851711196278330e+00 0 0 0
+112 0 1 0.0000000000000000e+00 1.3088158151417879e+01 5.6277111638471542e+00 8.5115277472283246e+00 0 0 0
+194 0 1 0.0000000000000000e+00 1.9747630049863396e+01 4.9614896338626373e+00 8.4029830309248439e+00 0 1 0
+233 0 1 0.0000000000000000e+00 1.6486380596242832e+01 5.3359196167153087e+00 8.3353305372937996e+00 0 0 0
+139 0 1 0.0000000000000000e+00 1.8160930971032002e+01 6.7885060112543814e+00 6.5496105265865472e+00 0 0 0
+136 0 1 0.0000000000000000e+00 1.6783252450255574e+01 8.4666962011645417e+00 8.5240959540227728e+00 0 0 0
+118 0 1 0.0000000000000000e+00 1.9834866334934318e+01 8.1176676339655280e+00 8.7017383943602731e+00 0 0 0
+37 0 1 0.0000000000000000e+00 2.1080794208340897e+01 7.2380793179886309e+00 5.9857695497285945e+00 0 0 0
+221 0 1 0.0000000000000000e+00 2.3016310219408815e+01 7.6631537583741860e+00 8.6953615912297426e+00 -1 0 0
+23 0 1 0.0000000000000000e+00 2.2103430975019815e+00 1.0389311157345670e+01 5.7495867475854237e+00 0 0 0
+141 0 1 0.0000000000000000e+00 4.8701530028161368e+00 1.1996518714271604e+01 8.4927252555860449e+00 0 0 0
+148 0 1 0.0000000000000000e+00 5.4127552001967212e+00 1.1289961432677218e+01 5.4101236724338966e+00 0 0 0
+132 0 1 0.0000000000000000e+00 7.0508006377101298e+00 9.9898046288159268e+00 7.7425585399685186e+00 0 0 0
+126 0 1 0.0000000000000000e+00 9.1627418608493869e+00 1.1005549806198520e+01 5.9016121027850899e+00 0 0 0
+147 0 1 0.0000000000000000e+00 1.0140606531184250e+01 9.1654286599651051e+00 8.7099679085564716e+00 0 0 0
+152 0 1 0.0000000000000000e+00 1.2134639964838309e+01 1.0551530965850128e+01 6.3929264849927732e+00 0 0 0
+230 0 1 0.0000000000000000e+00 1.3534523909529511e+01 8.5834683804577345e+00 8.4650275724376183e+00 0 0 0
+173 0 1 0.0000000000000000e+00 1.5416094913986415e+01 1.0144848623477147e+01 6.5656080795168474e+00 0 0 0
+196 0 1 0.0000000000000000e+00 1.3953247566663917e+01 1.2226460701262074e+01 8.1782061593455335e+00 0 0 0
+137 0 1 0.0000000000000000e+00 1.8689095083313390e+01 9.7438026213607714e+00 6.1418998589778520e+00 0 0 0
+179 0 1 0.0000000000000000e+00 1.7297973730485516e+01 1.1574171326197856e+01 8.6121221645988726e+00 0 0 0
+157 0 1 0.0000000000000000e+00 2.1673793120617191e+01 1.0762219141602166e+01 5.9028967509079528e+00 0 0 0
+273 0 1 0.0000000000000000e+00 2.0672427779903678e+01 1.1140960556276116e+01 8.6998847415890133e+00 0 0 0
+143 0 1 0.0000000000000000e+00 3.0045087718209409e+00 1.3434096413820876e+01 6.3720302827713731e+00 0 0 0
+258 0 1 0.0000000000000000e+00 5.0269376614300461e+00 1.4928558209965823e+01 8.7991451912179084e+00 1 0 0
+263 0 1 0.0000000000000000e+00 7.7792591728573850e+00 1.3115355085966831e+01 7.7061139614305336e+00 0 0 0
+48 0 1 0.0000000000000000e+00 5.7733718898524984e+00 1.4455974226420404e+01 5.8565488899752856e+00 0 0 0
+168 0 1 0.0000000000000000e+00 8.0159210798844711e+00 1.6042471406322207e+01 7.9785867552032714e+00 0 0 0
+249 0 1 0.0000000000000000e+00 1.0711854707650453e+01 1.2670447532742132e+01 7.9352967979437423e+00 0 0 0
+172 0 1 0.0000000000000000e+00 9.4812107344755123e+00 1.4411943991388160e+01 5.6463565731697951e+00 0 0 0
+246 0 1 0.0000000000000000e+00 1.1096452580870544e+01 1.5845653035068608e+01 8.1441798027179750e+00 0 0 0
+250 0 1 0.0000000000000000e+00 1.2777019782813705e+01 1.3865229890448994e+01 5.7758971249218733e+00 0 0 0
+278 0 1 0.0000000000000000e+00 1.4297924905019029e+01 1.5317658259050342e+01 8.2830082152748972e+00 0 0 0
+40 0 1 0.0000000000000000e+00 1.5962727753445991e+01 1.3275287435536837e+01 6.3626407083598497e+00 0 0 0
+138 0 1 0.0000000000000000e+00 1.9420365998801074e+01 1.2692881682175516e+01 6.5108877108673555e+00 0 0 0
+277 0 1 0.0000000000000000e+00 1.7749963911157437e+01 1.4770729741912373e+01 8.2853335773134660e+00 0 0 0
+80 0 1 0.0000000000000000e+00 1.9635223493865965e+01 1.6237478209232059e+01 6.3951572179192091e+00 0 0 0
+99 0 1 0.0000000000000000e+00 2.3700168021228592e+01 1.6061446821780372e+01 7.3185490614305042e+00 0 0 0
+154 0 1 0.0000000000000000e+00 2.1968829039080894e+01 1.3965689649043872e+01 5.6934644997214585e+00 0 0 0
+140 0 1 0.0000000000000000e+00 2.1158769499611410e+01 1.4373335597157578e+01 8.4468857178226031e+00 0 0 0
+68 0 1 0.0000000000000000e+00 3.9278514070012318e+00 1.6856936512571426e+01 6.4882433457670183e+00 0 0 0
+164 0 1 0.0000000000000000e+00 1.6473299740625285e+00 1.8851761735675169e+01 7.5077778794268841e+00 0 0 0
+165 0 1 0.0000000000000000e+00 6.8519769540506950e+00 1.8111476012973043e+01 5.8306617804626999e+00 0 0 0
+266 0 1 0.0000000000000000e+00 8.7376332361995388e+00 1.9004748902358237e+01 8.2815188866918010e+00 0 0 0
+269 0 1 0.0000000000000000e+00 1.0035517563896128e+01 1.7270740368081668e+01 5.7001190783975222e+00 0 0 0
+270 0 1 0.0000000000000000e+00 1.1813695942911234e+01 1.8870448529384063e+01 8.3675873355555161e+00 0 0 0
+176 0 1 0.0000000000000000e+00 1.2897390228346920e+01 1.7004939816187850e+01 5.9626599406375078e+00 0 0 0
+291 0 1 0.0000000000000000e+00 1.4835951418003589e+01 1.8526491660371931e+01 8.5985364880901578e+00 0 0 0
+293 0 1 0.0000000000000000e+00 1.6305720104573233e+01 1.6765069459682529e+01 6.2060095934954571e+00 0 0 0
+95 0 1 0.0000000000000000e+00 1.8261893517479997e+01 1.8069126065012767e+01 8.3983064845391961e+00 0 0 0
+190 0 1 0.0000000000000000e+00 1.6729703275259631e+01 1.9970781885656685e+01 6.1252855969031303e+00 0 0 0
+198 0 1 0.0000000000000000e+00 2.0071018596937222e+01 1.9286039688073117e+01 6.2793148660024087e+00 0 0 0
+98 0 1 0.0000000000000000e+00 2.2525525965111335e+01 1.7822042342711811e+01 5.2085099133616088e+00 0 0 0
+180 0 1 0.0000000000000000e+00 2.1553720748942723e+01 1.7848705940858615e+01 8.3040488520736471e+00 0 0 0
+166 0 1 0.0000000000000000e+00 4.5563316292627380e+00 1.9832833193099141e+01 6.9054279244791434e+00 0 0 0
+298 0 1 0.0000000000000000e+00 2.2027620866830264e+00 2.1693635139834043e+01 7.6887386419853696e+00 1 0 0
+103 0 1 0.0000000000000000e+00 4.8537559933134879e+00 2.3311281710213429e+01 6.8824689090941904e+00 0 -1 0
+169 0 1 0.0000000000000000e+00 7.2289506843393889e+00 2.1256351770911962e+01 6.1119545337892420e+00 0 0 0
+191 0 1 0.0000000000000000e+00 1.0925386420216048e+01 2.3732530603844829e+01 6.1013626105728500e+00 0 0 0
+189 0 1 0.0000000000000000e+00 1.0510353104544738e+01 2.0191676133538245e+01 6.1846235479894478e+00 0 0 0
+292 0 1 0.0000000000000000e+00 1.2284061675139426e+01 2.1820115505526616e+01 8.2940189218719702e+00 0 0 0
+286 0 1 0.0000000000000000e+00 9.3172433526254146e+00 2.2258907062370170e+01 8.1632204506666781e+00 0 0 0
+193 0 1 0.0000000000000000e+00 1.3636468386457848e+01 2.0115399047415401e+01 6.1173747322290755e+00 0 0 0
+96 0 1 0.0000000000000000e+00 1.3984103625077571e+01 2.3227443674257138e+01 6.0376622475265798e+00 0 0 0
+17 0 1 0.0000000000000000e+00 1.5269873380719806e+01 2.1609578754499374e+01 8.3052572390879043e+00 0 -1 0
+200 0 1 0.0000000000000000e+00 1.7282747793540615e+01 2.3078376742308080e+01 6.2051597750685854e+00 0 0 0
+199 0 1 0.0000000000000000e+00 1.8543631028931792e+01 2.1173380373658631e+01 8.3299339173058300e+00 0 0 0
+301 0 1 0.0000000000000000e+00 2.2516982316021974e+01 1.4037243741550716e+00 8.3199848474920692e+00 -1 0 0
+84 0 1 0.0000000000000000e+00 2.3009822687535525e+01 2.0602058839930919e+01 5.2303216303341653e+00 -1 0 0
+182 0 1 0.0000000000000000e+00 2.0718646875655537e+01 2.2348639372593695e+01 6.1013968397973066e+00 -1 0 0
+381 0 1 0.0000000000000000e+00 2.1867171342852210e+01 2.0800173314680343e+01 8.4163106765560691e+00 -1 0 0
+124 0 1 0.0000000000000000e+00 4.2396210209330363e+00 3.7995963325847075e+00 1.0047297435365280e+01 0 0 0
+218 0 1 0.0000000000000000e+00 1.4065389208962924e+00 2.9087822510571790e+00 1.0685881816940780e+01 1 0 0
+187 0 1 0.0000000000000000e+00 6.9912663857122670e+00 1.7234123184795744e+00 9.1522291114521845e+00 0 1 0
+203 0 1 0.0000000000000000e+00 5.7856794957848008e+00 1.8835708976751866e+00 1.2087323113429088e+01 0 0 0
+206 0 1 0.0000000000000000e+00 7.3592811652151298e+00 4.7201077700249705e+00 9.4676550845882890e+00 0 0 0
+188 0 1 0.0000000000000000e+00 8.7632541186834523e+00 2.9557995191871242e+00 1.1516357655372467e+01 0 1 0
+227 0 1 0.0000000000000000e+00 1.1476107377853552e+01 4.0569899253176356e+00 1.0523408541857460e+01 0 0 0
+211 0 1 0.0000000000000000e+00 1.4691959245953253e+01 3.5854896279970427e+00 1.0521733487199395e+01 0 0 0
+334 0 1 0.0000000000000000e+00 1.7701816121397123e+01 3.4871253413848140e+00 1.0425435972964314e+01 0 0 0
+119 0 1 0.0000000000000000e+00 2.1030306700115950e+01 3.2697027272229975e+00 1.0489199007986288e+01 0 0 0
+224 0 1 0.0000000000000000e+00 2.0575355498716470e+00 6.0579242512710714e+00 1.0601144645146380e+01 0 0 0
+204 0 1 0.0000000000000000e+00 6.2463592476262875e+00 5.0975518301930656e+00 1.2407487776239712e+01 0 0 0
+225 0 1 0.0000000000000000e+00 4.9856955122335531e+00 6.7863518118701958e+00 1.0156760722299735e+01 0 0 0
+129 0 1 0.0000000000000000e+00 7.8754886828415493e+00 7.9431417443828405e+00 9.6330493921623361e+00 0 0 0
+228 0 1 0.0000000000000000e+00 9.0168532855452206e+00 6.1882290549213845e+00 1.1693246499396468e+01 0 0 0
+229 0 1 0.0000000000000000e+00 1.1752435022721547e+01 7.3757354881548745e+00 1.0657177909975973e+01 0 0 0
+235 0 1 0.0000000000000000e+00 1.4864410600855011e+01 6.8339536605629112e+00 1.0683544396424038e+01 0 0 0
+240 0 1 0.0000000000000000e+00 1.8237513439769700e+01 6.4029611330793017e+00 1.0734833992789333e+01 0 0 0
+20 0 1 0.0000000000000000e+00 2.1504284978637685e+01 6.2122162910859497e+00 1.0802254181438689e+01 0 0 0
+121 0 1 0.0000000000000000e+00 2.6000902891346254e+00 8.8790263427352727e+00 1.1115894431829780e+01 0 0 0
+145 0 1 0.0000000000000000e+00 3.2796254671573313e+00 1.1904472223052000e+01 1.1516561652264301e+01 0 0 0
+128 0 1 0.0000000000000000e+00 5.4928722838580786e+00 1.0011571824176672e+01 1.0612169032847500e+01 0 0 0
+47 0 1 0.0000000000000000e+00 8.4904518682064953e+00 1.1354513980662379e+01 1.0166935030094470e+01 0 0 0
+226 0 1 0.0000000000000000e+00 9.6569370448012180e+00 9.2465717115632771e+00 1.1818675218374810e+01 0 0 0
+231 0 1 0.0000000000000000e+00 1.2221566892821055e+01 1.0775778840523902e+01 1.0289292934491591e+01 0 0 0
+265 0 1 0.0000000000000000e+00 1.0517790688050212e+01 1.2361309852125858e+01 1.2291583818580673e+01 0 0 0
+234 0 1 0.0000000000000000e+00 1.5202043000425210e+01 1.0000204746645084e+01 1.0685406772353511e+01 0 0 0
+238 0 1 0.0000000000000000e+00 1.8685992928560680e+01 9.9714185260277510e+00 1.0691666302576747e+01 0 0 0
+163 0 1 0.0000000000000000e+00 2.3594838442234302e+01 1.0893142500767615e+01 8.8205385610540574e+00 -1 0 0
+123 0 1 0.0000000000000000e+00 2.1866025037547068e+01 9.5190709872219763e+00 1.1162406167053076e+01 -1 0 0
+159 0 1 0.0000000000000000e+00 2.2266757442702868e+01 1.2731376345342547e+01 1.0748533082307818e+01 0 0 0
+261 0 1 0.0000000000000000e+00 2.3419625765261922e+00 1.3906710447488241e+01 9.5046787046040624e+00 0 0 0
+144 0 1 0.0000000000000000e+00 4.1118002761362362e+00 1.5125863204244666e+01 1.1818270805437102e+01 0 0 0
+252 0 1 0.0000000000000000e+00 6.1701940656653660e+00 1.2948296612826290e+01 1.1034459488673816e+01 0 0 0
+285 0 1 0.0000000000000000e+00 6.9804015048426855e+00 1.6056854850684012e+01 1.1052605770137379e+01 0 0 0
+167 0 1 0.0000000000000000e+00 9.3488307246785354e+00 1.4338612451222717e+01 1.0053002421197970e+01 0 0 0
+294 0 1 0.0000000000000000e+00 1.1027027295533001e+01 1.5381415142663025e+01 1.2368565739470599e+01 0 0 0
+349 0 1 0.0000000000000000e+00 1.2370956396874830e+01 1.3615018193001767e+01 1.0338822975874146e+01 0 0 0
+160 0 1 0.0000000000000000e+00 1.5744155372687997e+01 1.3390205687041654e+01 1.0647966705232211e+01 0 0 0
+155 0 1 0.0000000000000000e+00 1.9088332202033449e+01 1.3063457806394299e+01 1.0701584715791750e+01 0 0 0
+378 0 1 0.0000000000000000e+00 1.9390286935156851e+01 1.6118092395546846e+01 1.0409288958091834e+01 0 0 0
+283 0 1 0.0000000000000000e+00 2.2467213861228409e+01 1.6162912259967435e+01 1.0548818411165497e+01 -1 0 0
+264 0 1 0.0000000000000000e+00 2.7822846460910866e+00 1.6941155460466465e+01 9.9369345072734721e+00 0 0 0
+184 0 1 0.0000000000000000e+00 4.6951524704568479e+00 1.8339176985336088e+01 1.2145141248185011e+01 0 0 0
+183 0 1 0.0000000000000000e+00 3.7022627230336678e+00 2.0131405010327093e+01 9.8526314067110956e+00 0 0 0
+262 0 1 0.0000000000000000e+00 5.6314148587721817e+00 1.7910962683642069e+01 8.9553325726618880e+00 0 0 0
+268 0 1 0.0000000000000000e+00 7.5401700812329784e+00 1.9260843090777030e+01 1.1316675804093297e+01 0 0 0
+365 0 1 0.0000000000000000e+00 9.8927556540151027e+00 1.7528213103367541e+01 1.0499611651599439e+01 0 0 0
+171 0 1 0.0000000000000000e+00 1.2872893630412326e+01 1.6930409285851020e+01 1.0477716976901318e+01 0 0 0
+274 0 1 0.0000000000000000e+00 1.6111712738736628e+01 1.6730803174793493e+01 1.0626415699473696e+01 0 0 0
+272 0 1 0.0000000000000000e+00 1.3666237906921635e+01 1.9992334325672523e+01 1.0706327796610044e+01 0 0 0
+394 0 1 0.0000000000000000e+00 1.6618298779045510e+01 1.9712073763641214e+01 1.0709515234553022e+01 0 0 0
+281 0 1 0.0000000000000000e+00 2.0105763605583483e+01 1.9542558207746509e+01 1.0562701424950097e+01 -1 0 0
+299 0 1 0.0000000000000000e+00 2.3365798095831352e+01 1.8985867313658197e+01 1.0500349481138498e+01 0 0 0
+104 0 1 0.0000000000000000e+00 3.9003008101882988e+00 2.3364264920867427e+01 9.7536116560933301e+00 0 -1 0
+363 0 1 0.0000000000000000e+00 5.1825283286877841e+00 2.1322252637139975e+01 1.2170528850212447e+01 0 0 0
+282 0 1 0.0000000000000000e+00 6.3460293486178658e+00 2.1386062069396772e+01 9.0754379756714769e+00 0 0 0
+288 0 1 0.0000000000000000e+00 8.0824198782424901e+00 2.2346668557924183e+01 1.1451620934468773e+01 0 0 0
+290 0 1 0.0000000000000000e+00 1.0755392679422544e+01 2.3484329803984799e+01 1.0519718149856837e+01 0 0 0
+289 0 1 0.0000000000000000e+00 1.0484708064836882e+01 2.0622253188533072e+01 1.0447859030863688e+01 0 0 0
+390 0 1 0.0000000000000000e+00 1.4111957606865783e+01 2.3230504513409670e+01 1.0785395968415505e+01 0 0 0
+210 0 1 0.0000000000000000e+00 1.7049357245574122e+01 2.3005898938685036e+01 1.0360514665569898e+01 0 -1 0
+382 0 1 0.0000000000000000e+00 2.3316185133449849e+01 2.2091234128558135e+01 1.0656873056411058e+01 -1 0 0
+201 0 1 0.0000000000000000e+00 2.0392032354046655e+01 2.2540771107658500e+01 1.0462898044797274e+01 -1 -1 0
+321 0 1 0.0000000000000000e+00 3.3884803620305148e+00 4.0365331768777732e+00 1.2871097253764459e+01 0 0 0
+304 0 1 0.0000000000000000e+00 4.6422765977437122e+00 2.2829336800789468e+00 1.4871794288179055e+01 0 0 0
+324 0 1 0.0000000000000000e+00 1.5254427206481853e+00 2.5277936260554181e+00 1.5146284192315782e+01 0 0 0
+305 0 1 0.0000000000000000e+00 7.5977013986339736e+00 3.1940829797904922e+00 1.4411866108507033e+01 0 0 0
+202 0 1 0.0000000000000000e+00 1.0469595473179991e+01 4.3701344702766107e+00 1.3692501694177777e+01 0 0 0
+207 0 1 0.0000000000000000e+00 1.2601495190289484e+01 2.3907371246664972e+00 1.2787405914788579e+01 0 0 0
+333 0 1 0.0000000000000000e+00 1.4680993257461015e+01 3.8035556516786042e+00 1.5038499014616429e+01 0 0 0
+213 0 1 0.0000000000000000e+00 1.5873097484668817e+01 1.9725073831550568e+00 1.2773823611143211e+01 0 0 0
+314 0 1 0.0000000000000000e+00 1.9085286686291603e+01 1.5210570733409268e+00 1.2658281657686016e+01 0 0 0
+335 0 1 0.0000000000000000e+00 1.7774431982212853e+01 3.2388561366145407e+00 1.4931924747861698e+01 0 0 0
+336 0 1 0.0000000000000000e+00 1.9452300059843857e+01 4.7277963415304125e+00 1.2937870073036299e+01 0 0 0
+337 0 1 0.0000000000000000e+00 2.2823514527226344e+01 4.2326094986121694e+00 1.3038231146956374e+01 0 0 0
+318 0 1 0.0000000000000000e+00 2.0768874359301869e+01 2.8152333824763578e+00 1.4953348740671657e+01 0 0 0
+239 0 1 0.0000000000000000e+00 2.2420995978105630e+01 1.2647545302823957e+00 1.2663781395147859e+01 0 0 0
+241 0 1 0.0000000000000000e+00 4.1748336775080741e+00 7.0767016189339591e+00 1.3092097241300968e+01 0 0 0
+322 0 1 0.0000000000000000e+00 2.1390036176160665e+00 5.7075100986720901e+00 1.5083168082921587e+01 0 0 0
+339 0 1 0.0000000000000000e+00 2.1957647695958982e+00 9.0605282012021906e+00 1.5077856485836920e+01 1 0 0
+127 0 1 0.0000000000000000e+00 6.9825681890885871e+00 8.1048780241069664e+00 1.2375273601865464e+01 0 0 0
+243 0 1 0.0000000000000000e+00 5.2832852940062223e+00 5.2293785790448331e+00 1.5210657296920598e+01 0 0 0
+222 0 1 0.0000000000000000e+00 8.2718672600152345e+00 6.2545295095602436e+00 1.4506003710534666e+01 0 0 0
+328 0 1 0.0000000000000000e+00 5.8364096902851301e+00 8.4817542300986073e+00 1.5488581715736988e+01 0 0 0
+251 0 1 0.0000000000000000e+00 1.1066011512595155e+01 7.4736934886635717e+00 1.3859555838419409e+01 0 0 0
+306 0 1 0.0000000000000000e+00 1.2443825978181570e+01 5.4697373719957731e+00 1.6158610142632789e+01 0 0 0
+326 0 1 0.0000000000000000e+00 1.3091536571352375e+01 5.3776277783429158e+00 1.2672244408981388e+01 0 0 0
+355 0 1 0.0000000000000000e+00 1.4701443263403808e+01 6.9972352432274283e+00 1.4425589043127989e+01 0 0 0
+330 0 1 0.0000000000000000e+00 1.3315702205865996e+01 8.9855838708139046e+00 1.2614812946684792e+01 0 0 0
+216 0 1 0.0000000000000000e+00 1.6393145770530030e+01 5.0716285817468840e+00 1.2731822869543318e+01 0 0 0
+279 0 1 0.0000000000000000e+00 1.7906699824130449e+01 6.4287752861546510e+00 1.4966798439878779e+01 0 0 0
+212 0 1 0.0000000000000000e+00 1.6923548161955857e+01 8.3256834364172061e+00 1.2719875664691424e+01 0 0 0
+353 0 1 0.0000000000000000e+00 1.9896775747829551e+01 7.7734605485196360e+00 1.3037183609653514e+01 0 0 0
+259 0 1 0.0000000000000000e+00 2.3148403110323912e+01 7.3546793666474022e+00 1.3152313570618141e+01 0 0 0
+458 0 1 0.0000000000000000e+00 2.1402769720124091e+01 5.7787010726503736e+00 1.5162261421560149e+01 0 0 0
+323 0 1 0.0000000000000000e+00 4.5183989059392307e+00 1.0352378937511892e+01 1.3656155602530117e+01 0 0 0
+341 0 1 0.0000000000000000e+00 2.8264561955272667e+00 1.2299645054061331e+01 1.4981202336720568e+01 0 0 0
+345 0 1 0.0000000000000000e+00 7.3106603036759248e+00 1.1245042931313783e+01 1.3061725939963864e+01 0 0 0
+428 0 1 0.0000000000000000e+00 6.5001504997536710e+00 1.1461530808601852e+01 1.5924027146527756e+01 0 0 0
+208 0 1 0.0000000000000000e+00 8.5985838759268098e+00 9.3622775186864668e+00 1.5024337568665455e+01 0 0 0
+253 0 1 0.0000000000000000e+00 1.1559056003783770e+01 1.0709753510580349e+01 1.4586709482064302e+01 0 0 0
+245 0 1 0.0000000000000000e+00 9.2163289822496690e+00 1.2571906754150390e+01 1.5206795155914815e+01 0 0 0
+260 0 1 0.0000000000000000e+00 1.3824549839621461e+01 1.1934601610778326e+01 1.2586574194895340e+01 0 0 0
+254 0 1 0.0000000000000000e+00 1.5203103286832421e+01 1.0042314457085652e+01 1.4622835338980533e+01 0 0 0
+255 0 1 0.0000000000000000e+00 1.7123224993221605e+01 1.1653383279847455e+01 1.2699765534396255e+01 0 0 0
+444 0 1 0.0000000000000000e+00 1.8429740739212022e+01 9.9229867634579136e+00 1.4841377252606881e+01 -1 0 0
+242 0 1 0.0000000000000000e+00 2.3549322830889139e+01 1.1084404488218260e+01 1.3173784921938966e+01 -1 0 0
+244 0 1 0.0000000000000000e+00 2.0349503191310653e+01 1.1741637955848686e+01 1.3116852424113498e+01 -1 0 0
+379 0 1 0.0000000000000000e+00 2.1520503073108863e+01 9.3577369501690697e+00 1.4907080801459617e+01 0 0 0
+364 0 1 0.0000000000000000e+00 3.2009901879829994e+00 1.5281830210908634e+01 1.4822107496048583e+01 0 0 0
+377 0 1 0.0000000000000000e+00 1.2952773485118172e+00 1.4008802754342799e+01 1.2950714034950517e+01 1 0 0
+267 0 1 0.0000000000000000e+00 5.4277939741521459e+00 1.3478194751040325e+01 1.3964354669780777e+01 0 0 0
+248 0 1 0.0000000000000000e+00 8.3496710987877840e+00 1.4492444663685077e+01 1.3176462074424499e+01 0 0 0
+369 0 1 0.0000000000000000e+00 7.2810924945312347e+00 1.4613621107487154e+01 1.6235978765402599e+01 0 0 0
+366 0 1 0.0000000000000000e+00 9.9324292921653861e+00 1.5711784295870627e+01 1.5571894074388114e+01 0 0 0
+177 0 1 0.0000000000000000e+00 1.2100558191228879e+01 1.3834709535753397e+01 1.4682503667890305e+01 0 0 0
+175 0 1 0.0000000000000000e+00 1.4382177751595524e+01 1.5218056598343626e+01 1.2654483649366826e+01 0 0 0
+280 0 1 0.0000000000000000e+00 1.5406808222400269e+01 1.3171451627524680e+01 1.4776875189561348e+01 0 0 0
+257 0 1 0.0000000000000000e+00 1.7375092402348770e+01 1.4744219256725327e+01 1.2629721385633186e+01 0 0 0
+477 0 1 0.0000000000000000e+00 1.8397930213800237e+01 1.3421681798460371e+01 1.5044921716622218e+01 0 0 0
+397 0 1 0.0000000000000000e+00 1.9104854440593783e+01 1.6453116039137747e+01 1.5137993257947791e+01 0 0 0
+344 0 1 0.0000000000000000e+00 2.2261851374313395e+01 1.2769520390391977e+01 1.5055424426102986e+01 -1 0 0
+297 0 1 0.0000000000000000e+00 2.0562636902241550e+01 1.4587259664723589e+01 1.2991827520162168e+01 0 0 0
+358 0 1 0.0000000000000000e+00 2.2748379630106164e+01 1.5832961854497983e+01 1.4845288387222825e+01 0 0 0
+399 0 1 0.0000000000000000e+00 1.8311301341636841e+00 1.7179146602962607e+01 1.2816475659399901e+01 1 0 0
+368 0 1 0.0000000000000000e+00 3.7426223495211750e+00 1.8557844087580420e+01 1.4802660173808583e+01 0 0 0
+361 0 1 0.0000000000000000e+00 6.0499489999496259e+00 1.6581592567549155e+01 1.4052520489058400e+01 0 0 0
+287 0 1 0.0000000000000000e+00 6.6418708585264010e+00 1.9623286003970534e+01 1.4330314738952591e+01 0 0 0
+371 0 1 0.0000000000000000e+00 7.5805104992718535e+00 1.7721333395038990e+01 1.6330281055323617e+01 0 0 0
+370 0 1 0.0000000000000000e+00 9.0233252968973083e+00 1.7495027650861246e+01 1.3428597535250963e+01 0 0 0
+393 0 1 0.0000000000000000e+00 1.1815030012720378e+01 1.8963521335459980e+01 1.2793167965468474e+01 0 0 0
+392 0 1 0.0000000000000000e+00 1.0583607776841578e+01 1.8779367459780893e+01 1.5620533893264156e+01 0 0 0
+276 0 1 0.0000000000000000e+00 1.4819273790259887e+01 1.8255007788007120e+01 1.3019112153683860e+01 0 0 0
+295 0 1 0.0000000000000000e+00 1.2763704074046309e+01 1.6914591367570473e+01 1.4961100266131707e+01 0 0 0
+315 0 1 0.0000000000000000e+00 1.3473818421461765e+01 2.0411957582169663e+01 1.4989261119507274e+01 0 -1 0
+215 0 1 0.0000000000000000e+00 1.5976992762196511e+01 1.6197910198116475e+01 1.4991977283876984e+01 0 -1 0
+317 0 1 0.0000000000000000e+00 1.8197974137409311e+01 1.7830394796151033e+01 1.2684497259757176e+01 0 -1 0
+220 0 1 0.0000000000000000e+00 1.6907662464400005e+01 1.9455944321150128e+01 1.4992868817917191e+01 0 -1 0
+284 0 1 0.0000000000000000e+00 1.9794377077297675e+01 1.9418256428865760e+01 1.5011859889073428e+01 -1 0 0
+362 0 1 0.0000000000000000e+00 2.1136156978580907e+01 1.7802904292146501e+01 1.2758330335637730e+01 -1 0 0
+385 0 1 0.0000000000000000e+00 2.3020043917749859e+01 1.8771860569491878e+01 1.4914879859120326e+01 -1 0 0
+223 0 1 0.0000000000000000e+00 2.8345059332891207e+00 2.3542688481117096e+01 1.2882281774118855e+01 0 -1 0
+401 0 1 0.0000000000000000e+00 2.4015837797472424e+00 2.0485371300020162e+01 1.2566815261919199e+01 0 -1 0
+384 0 1 0.0000000000000000e+00 4.0085674035724903e+00 2.1807580409218119e+01 1.5322240834562917e+01 0 0 0
+386 0 1 0.0000000000000000e+00 6.6660832219162893e+00 2.2754930626976467e+01 1.4401399295145024e+01 0 0 0
+205 0 1 0.0000000000000000e+00 9.7969016598336136e+00 2.3771595385913788e+01 1.3616970070334114e+01 0 -1 0
+387 0 1 0.0000000000000000e+00 9.6075045803142292e+00 2.0773288546874838e+01 1.3513611710542342e+01 0 0 0
+395 0 1 0.0000000000000000e+00 1.1201503604038590e+01 2.2271523838020379e+01 1.5877282531294522e+01 0 0 0
+309 0 1 0.0000000000000000e+00 1.2301697528161132e+01 2.1996024908498320e+01 1.2707915042821790e+01 0 -1 0
+311 0 1 0.0000000000000000e+00 1.5273477472885061e+01 2.1347699247267293e+01 1.2915503528375137e+01 0 -1 0
+430 0 1 0.0000000000000000e+00 1.3924455837522705e+01 2.3409006286313890e+01 1.5142576809914248e+01 0 -1 0
+195 0 1 0.0000000000000000e+00 1.8612807728182851e+01 2.1202202780437297e+01 1.2787338695127898e+01 0 0 0
+296 0 1 0.0000000000000000e+00 1.7131809570611935e+01 2.2841335970697358e+01 1.5055006871254765e+01 0 0 0
+219 0 1 0.0000000000000000e+00 2.0769421155719883e+01 2.2388100536224762e+01 1.5195562869464792e+01 0 -1 0
+303 0 1 0.0000000000000000e+00 2.1836744076440297e+01 2.0809733730398044e+01 1.2791051302634571e+01 -1 -1 0
+437 0 1 0.0000000000000000e+00 2.3676961355790539e+01 2.1957073853851433e+01 1.5217454173405962e+01 0 -1 0
+422 0 1 0.0000000000000000e+00 3.2665448480541932e+00 3.9498629026943970e+00 1.7136124129938985e+01 0 0 0
+6 0 1 0.0000000000000000e+00 4.5651458405546315e+00 2.0466278903379935e+00 1.9459501396549442e+01 0 0 -1
+483 0 1 0.0000000000000000e+00 1.4219019801576960e+00 2.4358320826965953e+00 1.9772571725054362e+01 0 1 0
+402 0 1 0.0000000000000000e+00 6.4272378495470717e+00 3.2465231153820935e+00 1.7326197419719563e+01 0 0 0
+466 0 1 0.0000000000000000e+00 7.7313273502076747e+00 1.4412114134351759e+00 1.9417358743882566e+01 0 1 0
+90 0 1 0.0000000000000000e+00 8.4315162644668309e+00 4.5418339095786457e+00 1.9894938998493785e+01 0 1 -1
+307 0 1 0.0000000000000000e+00 1.1408442250500640e+01 2.5790711054321824e+00 1.5871713704876610e+01 0 0 0
+388 0 1 0.0000000000000000e+00 8.8941271688915648e+00 1.4841149004919370e+00 1.6554331482116659e+01 0 1 0
+302 0 1 0.0000000000000000e+00 9.2422197893002771e+00 4.4934472720593028e+00 1.6764667747178493e+01 0 0 0
+492 0 1 0.0000000000000000e+00 1.0630518356267579e+01 2.5897157409983458e+00 1.8963100422397829e+01 0 1 0
+410 0 1 0.0000000000000000e+00 1.3781151196072999e+01 3.5530740647121206e+00 1.8130701112082406e+01 0 0 0
+313 0 1 0.0000000000000000e+00 1.6194879746754438e+01 2.0032760531153269e+00 1.7441427127927966e+01 0 0 0
+300 0 1 0.0000000000000000e+00 1.9133510125716910e+01 2.3667973310109986e+01 1.7372449734160760e+01 0 0 0
+438 0 1 0.0000000000000000e+00 2.2865178421031452e+01 4.5364779207237271e+00 1.7375048539777922e+01 0 0 0
+359 0 1 0.0000000000000000e+00 2.1786414936446882e+01 4.7766132815642974e+00 2.0269229470502530e+01 0 0 0
+457 0 1 0.0000000000000000e+00 3.7740143181473962e+00 7.2033510104538676e+00 1.7469749838808156e+01 1 0 0
+439 0 1 0.0000000000000000e+00 1.8486735066900497e+00 5.7049207938436082e+00 1.9740225224961840e+01 1 0 0
+427 0 1 0.0000000000000000e+00 5.2180197879732324e+00 5.0775449739035494e+00 1.9531850071421921e+01 0 0 0
+312 0 1 0.0000000000000000e+00 7.2276169395354275e+00 6.4525884512076725e+00 1.7734233978000795e+01 0 0 0
+423 0 1 0.0000000000000000e+00 5.7175420616428898e+00 8.3379001066954785e+00 1.9619736938486419e+01 0 0 0
+429 0 1 0.0000000000000000e+00 1.1214379337689003e+01 5.7102656269964980e+00 1.8945716370549761e+01 0 0 0
+329 0 1 0.0000000000000000e+00 1.0127490871872814e+01 7.6148132496405818e+00 1.6783770709174547e+01 0 0 0
+30 0 1 0.0000000000000000e+00 1.1880485356609531e+01 8.5575095149429767e+00 1.9297338809964558e+01 0 0 -1
+350 0 1 0.0000000000000000e+00 8.8834622729814896e+00 7.8163912760902603e+00 1.9769534078678454e+01 0 0 0
+332 0 1 0.0000000000000000e+00 1.2899311715931534e+01 8.7447372930554153e+00 1.6261741963383173e+01 0 0 0
+433 0 1 0.0000000000000000e+00 1.4013832621016114e+01 6.7154446933709364e+00 1.8345832585937295e+01 0 0 0
+357 0 1 0.0000000000000000e+00 1.9586830378029113e+01 4.3453025914610013e+00 1.7567298943961447e+01 0 0 0
+340 0 1 0.0000000000000000e+00 1.6681608742555181e+01 5.2634912474385533e+00 1.7641156819264907e+01 0 0 0
+236 0 1 0.0000000000000000e+00 1.6288795397348572e+01 8.1674687964484676e+00 1.6954026316368665e+01 0 0 0
+455 0 1 0.0000000000000000e+00 1.9822934240057897e+01 7.8786853224840385e+00 1.7031644055928936e+01 0 0 0
+459 0 1 0.0000000000000000e+00 2.3239973467559601e+01 7.7048644129846364e+00 1.7289054716520837e+01 0 0 0
+424 0 1 0.0000000000000000e+00 2.6894265141578293e+00 8.8349253947595479e+00 1.9857102929392831e+01 0 0 0
+343 0 1 0.0000000000000000e+00 4.1818370461316103e+00 1.0076524439520247e+01 1.7483710783989430e+01 0 0 0
+347 0 1 0.0000000000000000e+00 3.0062476115854659e+00 1.2095185638780636e+01 1.9583941317088701e+01 0 0 0
+441 0 1 0.0000000000000000e+00 1.2289051780192182e+00 1.1078649773794581e+01 1.7423373322169027e+01 0 0 0
+327 0 1 0.0000000000000000e+00 7.7993137363987008e+00 9.7739056304226679e+00 1.8019368384057138e+01 0 0 0
+445 0 1 0.0000000000000000e+00 5.9839842803332068e+00 1.1541964491761947e+01 1.9669986178543851e+01 0 0 0
+271 0 1 0.0000000000000000e+00 1.0755321171367596e+01 1.0751737401934149e+01 1.7635624705305254e+01 0 0 0
+436 0 1 0.0000000000000000e+00 9.2926489972582420e+00 1.0790818963941359e+01 2.0349605528852265e+01 0 0 0
+389 0 1 0.0000000000000000e+00 1.2582163680100409e+01 1.1959808982120833e+01 1.9692259555022034e+01 0 0 0
+374 0 1 0.0000000000000000e+00 1.3503156324847575e+01 1.1945213338535581e+01 1.6579544571478209e+01 0 0 0
+453 0 1 0.0000000000000000e+00 1.4795889847195122e+01 1.0096381654790118e+01 1.8630900680958597e+01 0 0 0
+373 0 1 0.0000000000000000e+00 1.8225791808200903e+01 9.6150757995889506e+00 1.8956834395448290e+01 0 0 0
+375 0 1 0.0000000000000000e+00 1.6801290866909817e+01 1.1626681103701348e+01 1.6949945199540132e+01 0 0 0
+449 0 1 0.0000000000000000e+00 1.9017214400561009e+01 1.2303204252539157e+01 1.9890868268207605e+01 0 0 0
+58 0 1 0.0000000000000000e+00 2.0010399725664087e+01 1.1571980842050639e+01 1.6895516575020935e+01 0 0 -1
+360 0 1 0.0000000000000000e+00 2.1509105186153761e+01 1.0033159877569224e+01 1.8764119686959447e+01 0 0 0
+446 0 1 0.0000000000000000e+00 2.9146248190344850e+00 1.5592124172012578e+01 1.9486461663960966e+01 0 0 0
+442 0 1 0.0000000000000000e+00 1.6761248612114028e+00 1.4159129416993439e+01 1.7065432433622675e+01 0 0 0
+342 0 1 0.0000000000000000e+00 4.6946022963878473e+00 1.3571198846824862e+01 1.7198345062775807e+01 0 0 0
+325 0 1 0.0000000000000000e+00 8.5128418556098673e+00 1.2812171951041812e+01 1.8247100202934668e+01 0 0 0
+469 0 1 0.0000000000000000e+00 6.1146379770553674e+00 1.4874715258963969e+01 1.9485660086657646e+01 0 0 0
+346 0 1 0.0000000000000000e+00 8.8292748609032934e+00 1.6042945550415098e+01 1.8629309950485769e+01 0 0 0
+486 0 1 0.0000000000000000e+00 1.1170406508909441e+01 1.3730407551006209e+01 1.7784886583830364e+01 0 0 0
+426 0 1 0.0000000000000000e+00 1.2948497707987448e+01 1.4999807194318668e+01 1.9779565704434724e+01 0 0 0
+256 0 1 0.0000000000000000e+00 1.5131580396833753e+01 1.3079496674597134e+01 1.9126675697283616e+01 0 0 0
+275 0 1 0.0000000000000000e+00 1.4003761343444827e+01 1.4828998464885638e+01 1.7055687760278218e+01 0 0 0
+376 0 1 0.0000000000000000e+00 1.5844162597477583e+01 1.6028098728981398e+01 1.9343581895620957e+01 0 0 0
+380 0 1 0.0000000000000000e+00 1.7728709515683640e+01 1.4318049896844926e+01 1.7780119093888551e+01 0 0 0
+497 0 1 0.0000000000000000e+00 1.9663346554771252e+01 1.5308597489078910e+01 2.0082841472644361e+01 0 0 0
+178 0 1 0.0000000000000000e+00 2.2044320813097059e+01 1.2989858054941003e+01 1.8884493717103993e+01 0 0 -1
+461 0 1 0.0000000000000000e+00 2.0756054438832209e+01 1.4615953059386522e+01 1.6807836268605097e+01 -1 0 0
+464 0 1 0.0000000000000000e+00 2.2562509721715394e+01 1.5959118445395472e+01 1.9236639227973185e+01 -1 0 0
+468 0 1 0.0000000000000000e+00 1.8789735578419873e+00 1.7383648989541129e+01 1.7313620421301032e+01 0 0 0
+485 0 1 0.0000000000000000e+00 3.6669766655937512e+00 1.8503297138505523e+01 1.9628891760370948e+01 0 0 0
+448 0 1 0.0000000000000000e+00 4.8602993121670934e+00 1.6555699263415832e+01 1.7183086754850251e+01 0 0 0
+482 0 1 0.0000000000000000e+00 2.3782653651012509e+00 2.0352050178961598e+01 1.7412070592205225e+01 0 0 0
+465 0 1 0.0000000000000000e+00 6.5552986856782232e+00 1.7996854928195987e+01 1.9502576399058960e+01 0 0 0
+405 0 1 0.0000000000000000e+00 5.5052854903182773e+00 1.9660065619309606e+01 1.7245294642438047e+01 0 -1 0
+462 0 1 0.0000000000000000e+00 1.1623720718767368e+01 1.6972277135512073e+01 1.7914078778551826e+01 0 0 0
+367 0 1 0.0000000000000000e+00 9.5242576635266296e+00 1.8976892918375945e+01 1.8676884572541994e+01 0 0 0
+473 0 1 0.0000000000000000e+00 1.4786866393565614e+01 1.8009613952880571e+01 1.7171196160029556e+01 0 0 0
+93 0 1 0.0000000000000000e+00 1.6299155772987397e+01 1.9399692848171874e+01 1.9250470160237320e+01 0 0 -1
+451 0 1 0.0000000000000000e+00 1.3589654029930108e+01 1.8001544638889690e+01 1.9934392705592330e+01 0 0 0
+413 0 1 0.0000000000000000e+00 1.7918053513089468e+01 1.7433588584044351e+01 1.7616067815045902e+01 0 -1 0
+479 0 1 0.0000000000000000e+00 2.0159581822280785e+01 1.8288977858264097e+01 2.0067525075475380e+01 0 0 0
+498 0 1 0.0000000000000000e+00 2.1120684584984339e+01 1.7816491140023885e+01 1.7114320736546027e+01 0 0 0
+85 0 1 0.0000000000000000e+00 2.3111761112455326e+01 1.8949656310029340e+01 1.9489326806322737e+01 -1 0 -1
+421 0 1 0.0000000000000000e+00 2.6119070750599698e+00 2.3435286674065445e+01 1.7403678710787645e+01 0 -1 0
+408 0 1 0.0000000000000000e+00 3.9834611000000488e+00 2.1609755827050662e+01 1.9617707702034458e+01 0 -1 0
+331 0 1 0.0000000000000000e+00 8.3094902178756023e+00 2.1096029901303062e+01 1.6622944779082147e+01 0 -1 0
+308 0 1 0.0000000000000000e+00 5.8038688676887009e+00 2.2722132671477198e+01 1.7439389560078546e+01 0 -1 0
+400 0 1 0.0000000000000000e+00 7.1770977971767289e+00 2.0921591860733017e+01 1.9534466417653512e+01 0 0 0
+310 0 1 0.0000000000000000e+00 1.0275219518547607e+01 2.2121334465117172e+01 1.8995099144025389e+01 0 -1 0
+372 0 1 0.0000000000000000e+00 1.2566019715957593e+01 1.9970460771497940e+01 1.7869156658786707e+01 0 0 0
+391 0 1 0.0000000000000000e+00 1.3193614512602254e+01 2.3069212247404657e+01 1.8157744468629318e+01 0 0 0
+319 0 1 0.0000000000000000e+00 1.5427694329194962e+01 2.1359269641284598e+01 1.7152999141612909e+01 0 -1 0
+396 0 1 0.0000000000000000e+00 1.8806468176566618e+01 2.0502057090998129e+01 1.7525653350774142e+01 0 0 0
+383 0 1 0.0000000000000000e+00 2.2209529369916133e+01 1.2637657402469775e+00 1.7345084541454106e+01 -1 1 0
+418 0 1 0.0000000000000000e+00 2.3514671323806482e+01 2.1851318372520630e+01 1.9816083216495826e+01 0 -1 0
+398 0 1 0.0000000000000000e+00 2.1931832294177610e+01 2.0744216632455213e+01 1.7468118498585284e+01 0 0 0
+403 0 1 0.0000000000000000e+00 3.5938770718774000e+00 4.1938664680703903e+00 2.1865050081636554e+01 0 0 0
+9 0 1 0.0000000000000000e+00 6.6279666443764977e+00 3.0888650695683069e+00 2.1902893388083783e+01 0 0 -1
+92 0 1 0.0000000000000000e+00 9.8598584137389604e+00 2.6169569237091812e+00 2.1896836492715011e+01 0 1 -1
+431 0 1 0.0000000000000000e+00 1.2659845609045377e+01 3.5226680197742359e+00 2.0875996745659137e+01 0 0 0
+434 0 1 0.0000000000000000e+00 1.5479669471335097e+01 4.5836773858322815e+00 2.0384157191059700e+01 0 0 0
+489 0 1 0.0000000000000000e+00 1.4996156994801554e+01 1.5782351923348337e+00 2.0390985153998734e+01 0 1 0
+15 0 1 0.0000000000000000e+00 1.6711315064709630e+01 2.6817310945558583e+00 2.2544128506080540e+01 0 0 -1
+415 0 1 0.0000000000000000e+00 1.8077607054744647e+01 2.6838376130188060e+00 1.9652831225216886e+01 0 0 0
+320 0 1 0.0000000000000000e+00 2.1035812222137530e+01 1.7398585403347298e+00 2.0207596999672965e+01 0 0 0
+404 0 1 0.0000000000000000e+00 1.9480680947255600e+01 1.6236400005891714e+00 2.3152005196418763e+01 -1 0 0
+481 0 1 0.0000000000000000e+00 2.2745050072741449e+01 2.8923023619572383e+00 2.2678629574072026e+01 -1 1 0
+21 0 1 0.0000000000000000e+00 4.0226657859427739e+00 7.0738280563818634e+00 2.2092149556938736e+01 0 0 -1
+425 0 1 0.0000000000000000e+00 6.9365839894398889e+00 6.3819482512785077e+00 2.1861685986261428e+01 0 0 0
+29 0 1 0.0000000000000000e+00 1.0314446288037482e+01 5.7322127509515042e+00 2.2168636566693721e+01 0 0 -1
+33 0 1 0.0000000000000000e+00 1.3147448896495895e+01 6.5450402813583777e+00 2.1376183463164999e+01 0 0 -1
+356 0 1 0.0000000000000000e+00 1.6349095284973746e+01 7.5997031035199898e+00 2.0127825850739335e+01 0 0 0
+133 0 1 0.0000000000000000e+00 1.7874679823632484e+01 5.3077265287556905e+00 2.2003797136787028e+01 0 0 -1
+338 0 1 0.0000000000000000e+00 1.9626075278058714e+01 6.9709779099799842e+00 2.0005747954506681e+01 0 0 0
+53 0 1 0.0000000000000000e+00 1.7642633297941437e+01 8.3928586429949839e+00 2.2828246173377430e+01 0 0 -1
+435 0 1 0.0000000000000000e+00 2.0514772461771010e+01 4.8742369973968849e+00 2.3489279447373278e+01 0 0 0
+316 0 1 0.0000000000000000e+00 2.3640689747662677e+01 6.0960657254243182e+00 2.2748859666528872e+01 0 0 0
+440 0 1 0.0000000000000000e+00 2.1317702814532296e+01 8.0400788803260816e+00 2.3439576809139560e+01 0 0 0
+454 0 1 0.0000000000000000e+00 2.2422451916795708e+01 7.9800597184389375e+00 2.0427654423427391e+01 0 0 0
+44 0 1 0.0000000000000000e+00 1.6952452953473010e+00 9.2033096751306385e+00 2.2967995348726397e+01 0 0 -1
+61 0 1 0.0000000000000000e+00 4.2947656191960952e+00 1.0257919163374948e+01 2.1931298673060063e+01 0 0 -1
+62 0 1 0.0000000000000000e+00 2.2069968584968795e+00 1.2191119759038802e+01 2.3297921218682738e+01 0 0 -1
+51 0 1 0.0000000000000000e+00 7.2777211723734894e+00 9.7147093444586350e+00 2.2018634508696145e+01 0 0 -1
+12 0 1 0.0000000000000000e+00 1.0801565476076640e+01 8.6564167797497866e+00 2.2188473513877334e+01 0 0 -1
+55 0 1 0.0000000000000000e+00 1.1235856911236775e+01 1.1881793200467916e+01 2.2452644092138790e+01 0 0 -1
+36 0 1 0.0000000000000000e+00 1.3523152763587646e+01 9.7079834887375558e+00 2.1783906201496855e+01 0 0 -1
+351 0 1 0.0000000000000000e+00 1.6354119167416595e+01 1.1117749499522986e+01 2.1131738080725697e+01 0 0 0
+460 0 1 0.0000000000000000e+00 2.0013474646387344e+01 9.7549516054003576e+00 2.1334740710188228e+01 0 0 0
+443 0 1 0.0000000000000000e+00 2.3015386350440053e+01 1.1034318649173786e+01 2.0976231370391666e+01 -1 0 0
+467 0 1 0.0000000000000000e+00 2.8702143573975070e+00 1.5107059699755569e+01 2.3798970681808882e+01 0 0 0
+79 0 1 0.0000000000000000e+00 4.5380513891165650e+00 1.3268892679234288e+01 2.1786577262909780e+01 1 0 -1
+49 0 1 0.0000000000000000e+00 7.5261545316201532e+00 1.2819593552722537e+01 2.2063479448738875e+01 0 0 -1
+452 0 1 0.0000000000000000e+00 7.9443573561678749e+00 1.5686343924981150e+01 2.2006384201699809e+01 0 0 0
+247 0 1 0.0000000000000000e+00 1.0093919947623879e+01 1.4071645493619272e+01 2.0663226645748964e+01 0 0 0
+352 0 1 0.0000000000000000e+00 1.1911835457693268e+01 1.4943752409302858e+01 2.2819610601039379e+01 0 0 0
+56 0 1 0.0000000000000000e+00 1.4128229232267511e+01 1.2941659434878659e+01 2.2193084750432668e+01 0 0 -1
+450 0 1 0.0000000000000000e+00 1.4669323641060735e+01 1.6093289679118744e+01 2.2114796960747185e+01 0 0 0
+474 0 1 0.0000000000000000e+00 1.9015816502545015e+01 1.4716675123491584e+01 2.3785155047783242e+01 0 0 0
+456 0 1 0.0000000000000000e+00 1.7082898139643923e+01 1.4157056159722140e+01 2.1309134436919592e+01 0 0 0
+348 0 1 0.0000000000000000e+00 2.3685802696694196e+01 1.4080591844796851e+01 2.1227029896154313e+01 -1 0 0
+59 0 1 0.0000000000000000e+00 2.0931778162505594e+01 1.3203204955507093e+01 2.1952362306347752e+01 0 0 -1
+463 0 1 0.0000000000000000e+00 2.1691188671258985e+01 1.6333610110630971e+01 2.2302844778725706e+01 -1 0 0
+487 0 1 0.0000000000000000e+00 1.8055921691082955e+00 1.7111098271685499e+01 2.1781190555446287e+01 0 0 0
+407 0 1 0.0000000000000000e+00 4.9708731079128707e+00 1.6655924819216253e+01 2.1755746103883283e+01 0 -1 0
+470 0 1 0.0000000000000000e+00 5.3508768531713455e+00 1.9722978342510338e+01 2.1844876724095094e+01 0 0 0
+409 0 1 0.0000000000000000e+00 8.5766706066143144e+00 1.8765959869463437e+01 2.1849882312164354e+01 0 -1 0
+54 0 1 0.0000000000000000e+00 1.0897222849829539e+01 1.7143000491428705e+01 2.0884120512675686e+01 0 0 -1
+50 0 1 0.0000000000000000e+00 1.1430294030040486e+01 2.0234020719014616e+01 2.1118958636618977e+01 0 0 -1
+494 0 1 0.0000000000000000e+00 1.5312145651662009e+01 1.9088587034916770e+01 2.2337635231240782e+01 0 0 0
+476 0 1 0.0000000000000000e+00 1.9531419877609927e+01 1.8009057695987785e+01 2.3565664964211848e+01 0 0 0
+478 0 1 0.0000000000000000e+00 1.7539075684188553e+01 1.7146650254201944e+01 2.1454055796302612e+01 0 0 0
+81 0 1 0.0000000000000000e+00 2.2047321955707361e+01 1.9457567303356520e+01 2.2746758064944885e+01 -1 0 -1
+3 0 1 0.0000000000000000e+00 2.0958305725748949e+00 2.0253618063174457e+01 2.1737660931449554e+01 0 -1 -1
+406 0 1 0.0000000000000000e+00 2.8578189931455160e+00 2.3147234281002220e+01 2.1952530496648521e+01 0 -1 0
+488 0 1 0.0000000000000000e+00 5.7850901386882594e+00 2.2785123175097993e+01 2.1721094842062506e+01 0 0 0
+89 0 1 0.0000000000000000e+00 9.0305278645000779e+00 2.2152179183255967e+01 2.1973087456346569e+01 0 0 -1
+416 0 1 0.0000000000000000e+00 1.2034665715964652e+01 2.3023894882529525e+01 2.1498141653719365e+01 0 -1 0
+493 0 1 0.0000000000000000e+00 1.4112409363103660e+01 2.1134404172287219e+01 2.0245374916560493e+01 0 0 0
+411 0 1 0.0000000000000000e+00 1.5907445191596425e+01 2.1884438682760297e+01 2.2361050782938335e+01 0 -1 0
+495 0 1 0.0000000000000000e+00 1.8063575130873616e+01 2.0142444775428665e+01 2.1798199059679689e+01 0 0 0
+414 0 1 0.0000000000000000e+00 1.7384356736619452e+01 2.2218157277462701e+01 1.9594340677013065e+01 0 -1 0
+499 0 1 0.0000000000000000e+00 1.9734714297648601e+01 2.1326146097067948e+01 1.2598316425058089e+00 0 0 1
+417 0 1 0.0000000000000000e+00 2.0362389646669840e+01 2.1381131497245086e+01 2.0063874490530438e+01 0 -1 0
+97 0 1 0.0000000000000000e+00 2.2171124234873922e+01 2.2433416517752143e+01 2.2709958726570363e+01 0 0 -1
+
+Velocities
+
+8 -4.3120305404251123e-03 2.0373255309430317e-03 3.3868614343525730e-06
+107 -5.3463433877220135e-04 -9.6272482969003633e-05 -2.8993693419417993e-03
+86 2.0896098647878425e-03 2.1484446216490597e-03 3.1686848792012545e-03
+185 -2.1172668473487775e-03 -2.7358147159472416e-04 -2.8977363404548108e-03
+186 -2.6248042579787075e-04 -2.9867886941513980e-03 1.0809056639517114e-03
+412 1.3186545889917359e-03 3.4408040417334912e-03 3.4374350191547129e-03
+109 2.3702051176007861e-03 1.3404383817107110e-03 3.8459323813951384e-03
+31 -7.2337513972155817e-04 2.8249247824234536e-03 8.4968709362137390e-04
+111 -2.5955434268654987e-03 1.2986160117820053e-03 -7.1574827100902088e-04
+420 -3.7668330551882279e-03 9.3576342341119005e-04 -1.9215851538822624e-03
+16 1.7188430778785201e-03 -7.7699753706106053e-04 -2.4651265340137956e-03
+14 1.7074036717097973e-03 -7.0541227264275775e-04 3.1941299101464729e-03
+18 -1.6482082884770682e-04 6.1531763488799200e-04 -2.2051791164366335e-04
+117 2.8232223646081295e-03 1.3016031936313266e-04 -2.1680834108916973e-03
+1 3.0571452558459419e-04 7.8610593392717577e-04 2.7829711802435826e-03
+34 -2.9922244946338299e-03 3.6748519907706226e-04 5.6459930031494061e-04
+22 1.7608672909645263e-03 -1.3495533924302086e-03 4.3307354055581882e-04
+28 6.5539477716121213e-04 6.9090099782304331e-04 -1.6497572081948092e-03
+25 -2.7092835597130522e-03 -2.3791153512990860e-03 1.3923330098744046e-05
+27 4.4357851881206148e-03 2.6218793387964138e-03 1.6838511755057949e-04
+26 -7.8991655175938036e-04 9.0891195480861703e-04 2.3181787328494410e-03
+447 5.8002195329881568e-03 -3.0991779996747724e-04 7.2950319819355288e-04
+11 1.0376333902798484e-03 -1.1603530214685542e-03 2.3385787882385890e-03
+432 -2.7242091039337939e-03 9.4528114813973796e-04 2.2378093640280706e-03
+116 -9.5658405904591162e-04 -9.2499021672047337e-04 1.1098983546105178e-03
+130 -1.3154191543355350e-04 1.6354827269184846e-03 1.9607813081932873e-03
+114 4.8085475417530035e-04 -1.4522735609705261e-04 1.8064674730465383e-03
+35 -2.7448623423062747e-03 -2.5432786879759283e-03 -2.8103812942499411e-03
+39 5.3163751528900877e-05 9.1880964514150817e-04 -3.9947522555363931e-03
+41 3.0961780329454769e-03 1.0601687017536951e-03 9.9640606056684649e-04
+43 2.8620635801044643e-04 -1.6199911697518908e-03 -3.7401912275431882e-03
+45 1.6867527160731425e-03 -2.9172559532932713e-04 -2.2854612269242632e-03
+46 6.1336640316366126e-04 -5.2859095499588175e-04 -2.6094700348400358e-03
+146 -2.4461398878874974e-03 3.6037581777257420e-03 -2.5865874191097647e-03
+153 1.4109817612658864e-04 -1.8992593558777389e-03 -9.7411829324390187e-04
+149 4.3820118342710592e-03 -1.0918829378125901e-03 -4.8558283290558880e-03
+150 -9.1737388073014363e-04 1.8968251144478787e-03 4.0235201357189422e-03
+156 -2.7214750984568261e-03 -1.4567690350371074e-03 -2.6562563837275763e-03
+71 -3.3323460558609610e-04 -1.7133665374812969e-03 2.9389967408633414e-04
+134 4.3293983389786064e-03 3.0079942427008954e-03 -3.1592660466897484e-03
+354 3.4756541906001558e-03 -1.4475752611390284e-03 5.4773815351641972e-04
+57 -6.1459702899374538e-04 -2.3135637298778051e-03 4.2653178066976178e-03
+480 -4.7653552490316308e-04 1.4322605529362551e-04 3.5052324967449499e-04
+24 1.6012854796538867e-03 2.3886756675107943e-03 4.8311928011710834e-04
+78 1.6068247124407758e-04 5.7827268967557198e-04 -1.8871733562035949e-03
+158 -2.2279703723719507e-03 7.8023191987754452e-04 3.1341457087700471e-03
+42 -1.5816165023813920e-03 6.1974193425404925e-05 3.5896729396541547e-03
+52 1.0182564220977716e-03 9.8552071808227781e-04 -2.1233950454414784e-03
+65 -1.3839466468100301e-03 -1.8156059950244540e-03 -1.6147323910923840e-03
+73 -3.0864002200354846e-03 6.8485405533002782e-04 -3.6024559692390916e-05
+91 1.7597793556973977e-03 -2.2682652544487743e-04 2.9663659518516993e-03
+72 -1.4767950971858045e-03 6.8003322012703522e-04 4.5428603028399805e-04
+76 -2.5651148117739656e-03 2.7705713422985110e-03 3.9424985250869515e-04
+174 -1.6491866609008538e-03 5.7484656313460899e-04 3.2877570232617967e-03
+77 1.4103223138292073e-03 -1.6800143274877638e-03 -4.8676512836414717e-04
+75 -5.2927150415925210e-04 -3.8663057277288225e-03 -1.8206023596818016e-03
+60 5.2052513147969031e-03 2.4049171252151290e-03 -3.6078301573835162e-03
+63 6.5478618882727226e-04 -7.3060749541398453e-05 2.4471631256742397e-03
+74 5.1782864504370770e-04 2.5295197386522002e-03 -1.2869627060451948e-03
+181 -2.3591218420214114e-03 2.0674271884694993e-03 1.4810957249963288e-03
+162 -1.4087351819658826e-03 -2.7942992731932662e-04 -1.4923826602248529e-04
+484 2.1742850044591359e-03 -1.1797861926657769e-03 1.5276599583430857e-03
+170 5.2262329673825547e-06 -2.4719185370911128e-04 1.6599511308094009e-03
+142 -1.2233185300785810e-03 -1.4346778895373154e-03 -8.3158502301261219e-05
+64 2.2484106073871551e-03 -3.5878004336336509e-04 -3.1104115151122172e-03
+83 -1.0540504475275551e-03 -2.3671489682893616e-04 3.0651037947506217e-03
+70 -7.0329336764010739e-04 2.5305995152123664e-03 2.4630065381304514e-03
+69 -2.0096065644726563e-03 7.5921979189429514e-04 -3.6186299976357882e-03
+214 2.1420788607930561e-03 8.3537390084995001e-04 -1.4239160391780513e-03
+471 8.8007025789021458e-05 1.5781617963778812e-03 3.8346663241732352e-03
+475 2.9935508619365818e-04 -1.8486000287217728e-04 1.7716689978676792e-03
+197 -4.7623508654776785e-04 -1.7634790130128960e-03 -1.4626889278349438e-03
+490 -2.3448068800491426e-03 -2.4606029518375928e-03 7.1339634861629635e-04
+161 -1.9286405712276523e-03 -1.0124967489084028e-03 4.1920213078077903e-03
+496 -1.9841607211822667e-03 4.7966909365161706e-04 -1.1858777007686041e-03
+7 -1.7121243301532923e-03 2.2754644438927624e-03 -1.5197699071340235e-03
+102 -3.3823730294297565e-03 7.8164484616182188e-04 -2.0925589593458155e-03
+5 1.6065699274303384e-03 2.3183884651075846e-03 -3.9905735400911491e-04
+82 2.7383671572817926e-04 -1.6889529328510415e-03 -1.5715691659398574e-03
+88 -5.6556381985521254e-03 1.0436396820999027e-03 3.2435160637789788e-04
+66 -6.4398072023160921e-04 2.8664521031654196e-03 -2.3686638561278619e-04
+10 -1.6197897738530428e-03 2.0052537915672811e-03 -1.4473515653189305e-03
+67 -6.9902766493337124e-04 -1.3504715053489543e-04 -3.1025619358682384e-04
+472 -4.7417503580121289e-03 -3.5592516590466179e-03 2.9487626396706166e-03
+13 1.3580156432478735e-03 -2.3134719792036315e-03 -1.1661332834288387e-03
+94 2.5547956559974841e-03 6.8951303469294903e-04 -8.3195969319857055e-04
+491 2.5087690411940361e-03 2.0312143552097882e-03 2.6430627132000735e-03
+500 1.9326198147953586e-03 -1.3206872332630648e-04 7.2170028671721934e-04
+100 -2.2190088270396060e-04 -3.2210316696445768e-04 -1.4375916257589824e-03
+419 -1.5470687389451982e-03 1.9915996368612722e-03 1.0960715334805372e-04
+19 -1.7524318126686373e-03 -6.9680712213220260e-04 3.7379497245548887e-03
+125 -1.6006444432159457e-03 -7.0779724654792349e-04 2.1920666951410848e-03
+87 -1.9208606419306822e-03 4.0986050630318580e-04 8.7231477164064386e-04
+105 -3.1998743426037986e-04 2.3713349581670493e-03 -3.7662877929894786e-04
+110 -5.5723266097988027e-04 2.7423363389219723e-03 -2.4570601448823889e-04
+192 -1.3305251324273557e-03 -1.6961407520030872e-03 2.1165654810182035e-03
+120 -1.4833149251656749e-03 3.0367258155134910e-03 2.6161372279204674e-03
+115 1.1489588483177434e-03 -1.1470488815255648e-04 2.6369961230843391e-03
+209 -5.5424328812850288e-04 1.6972588100074373e-03 6.9321889276895751e-04
+113 -2.8272010772300031e-04 2.1559780177916985e-03 1.8158964728766025e-03
+217 -2.4441988241181161e-03 9.5076745908223808e-04 3.2005476639080451e-04
+101 6.7437328098993578e-04 4.7151095632040922e-04 -1.4035259309417146e-03
+237 -1.5971860193100924e-03 3.5143447403792818e-04 -3.0672692994466181e-04
+4 1.2538524862451867e-03 1.1968778837654521e-03 -4.1958336418998297e-03
+2 -1.8017884813996471e-03 9.4862228828167922e-04 -3.2142473042893862e-03
+38 2.2144020131164045e-03 1.8115357351682706e-03 -1.7266474371765103e-03
+106 -2.4418591800769314e-04 1.5476018732090784e-03 2.4394369780179562e-03
+122 -3.5987048251836739e-03 7.4610139956320478e-04 1.3020367999529613e-05
+32 6.6611055016313112e-04 1.2936386196307590e-03 1.0584715556142320e-03
+108 -1.0415628792614510e-03 6.1499284808982934e-04 -8.5372204696912510e-04
+131 1.8115161428533733e-04 -1.3083902491442827e-03 -4.2682819804519146e-03
+151 9.4003548641477343e-05 1.6797809946150443e-03 -1.1986437794158369e-03
+232 -2.6555647648131490e-03 -1.2433402421938044e-03 -2.7231639768277647e-03
+135 9.7956024907547095e-04 -2.8313545522179939e-03 8.0592331799258238e-05
+112 1.3322765354067834e-03 -3.8705361530034250e-03 -4.1239994360688370e-03
+194 -2.1725740796708832e-03 3.1985889270640089e-03 -1.2750362242231774e-03
+233 -5.1124184328382337e-04 -2.1414384058286696e-03 -4.1234993591290453e-04
+139 -2.9514435899914587e-03 -4.6535519182103087e-03 5.1681420859960641e-03
+136 -1.2834076728334895e-03 -3.0233908745570387e-03 1.7795166733172816e-03
+118 2.6143375453576719e-04 -1.7123989900226075e-03 2.2076508294360583e-03
+37 -4.0639303628036130e-03 1.2188997611186846e-03 3.6864607769668020e-03
+221 1.4171120221693099e-03 -5.9258432380824709e-04 -7.6758845623845818e-04
+23 2.8412629747895232e-03 3.6879898131677918e-04 -2.0739607226283178e-04
+141 4.2719913228951199e-04 -2.3976495454302482e-03 2.9705078897517335e-03
+148 -2.5270330384428333e-03 1.0858837338623504e-03 -8.4592542570333660e-04
+132 -1.3412384923580662e-03 4.8778408803986138e-04 -6.5849432039543319e-04
+126 1.1221271823380753e-03 -2.9501615292635403e-03 2.0228399780030495e-05
+147 -2.7213168796431609e-03 3.1231727440101780e-04 2.3738698524219158e-03
+152 3.1971856630584592e-03 -3.5436856045612938e-03 1.7704991482267746e-03
+230 -1.0231470116449242e-03 -1.8692951417356059e-03 -1.4395179437579025e-03
+173 1.0270402794594251e-03 -2.1288817867414129e-03 -3.1679978295187082e-03
+196 -1.0318119792693732e-03 -1.0237360745817463e-03 4.8622107541248048e-03
+137 5.0771071125085529e-05 2.3157255075417975e-03 -2.5996945166837609e-03
+179 -1.4043390550611294e-03 -1.5679652219415211e-03 3.5425067895980635e-03
+157 -2.1748872406423133e-03 -3.3172722360693053e-04 -9.2090457011512444e-04
+273 1.5221455845553079e-03 1.9675403367083724e-03 -1.9976743552455778e-03
+143 1.5145782950741330e-04 1.6673118306421162e-03 3.2378850583792947e-03
+258 -1.3583849595910249e-03 1.8359801390936139e-03 1.9356375698159384e-03
+263 -1.8583681745349102e-03 1.6623299186968594e-03 6.4755623031892764e-04
+48 2.6747975280323960e-03 1.7467535214356253e-03 -8.0108861603901127e-03
+168 -2.2819858241299382e-03 1.4785520912875469e-03 1.3629171731280487e-03
+249 -1.1668256226448311e-03 -2.0818239468267229e-04 4.2205983228732515e-03
+172 -1.3032546552566707e-05 -1.1825748646337028e-03 2.8321976371692225e-04
+246 -9.7516404369321153e-04 1.7788586972177995e-03 -1.6162164261996920e-03
+250 2.7551333084116754e-03 1.8585781072849572e-03 -1.6780629721509369e-03
+278 9.5973766483202353e-04 -3.8383562386999910e-03 -2.4839330144819237e-03
+40 2.2838753013451909e-03 4.4159336822618680e-05 3.0020846082129374e-03
+138 -2.5594689159388426e-03 -2.6365845763662852e-04 -1.4861262918984340e-03
+277 2.4951125254343430e-03 -1.5185980658798672e-03 -1.7195935684951866e-03
+80 8.3281923191123885e-04 -2.1444912825170528e-03 -3.3305155493171543e-03
+99 -7.0047855322553427e-05 -1.4350017733819772e-03 4.1424871740049273e-04
+154 -7.8884119929704846e-04 1.1320896382652217e-03 9.7492765801502615e-04
+140 2.5275163534732711e-03 -2.1000415932477100e-03 4.8681232807429157e-04
+68 -2.3302002312198555e-03 6.8978719155894088e-04 1.5959849855510429e-04
+164 1.8293469222021830e-03 -4.9624038338646678e-04 8.1091002942435854e-04
+165 -1.4065347736904774e-04 -4.2659842527041528e-04 -2.4714536485730600e-03
+266 2.5181247470008354e-03 -2.5001251613639207e-03 -7.4057060795297883e-04
+269 -1.5426746566957476e-03 3.6829948150850694e-04 2.0456634446195431e-04
+270 1.2133231413879155e-04 -1.4031150563047711e-03 -1.2132119412886398e-03
+176 3.5196539596364743e-04 -2.1848066097252192e-03 -1.0659531564601627e-03
+291 1.8015007371777608e-03 -2.0175159221963953e-03 -8.1572763980656833e-04
+293 -2.2441250972641230e-03 1.9213896626160248e-04 1.8881577987087589e-04
+95 -1.5168892310932742e-04 -6.0117045864604448e-04 4.7900353540998597e-04
+190 -1.5806261994269247e-03 -2.0022975256757266e-03 1.4610874062991354e-03
+198 2.4059952856586449e-03 -1.3231585583876179e-03 8.5255536147985111e-04
+98 -1.4546932810484464e-03 -9.2793133698987795e-04 -4.0004267199613567e-03
+180 -9.1284151035935413e-04 -2.8200982571998179e-03 3.5200529985742945e-03
+166 4.0537322874983090e-03 5.2269327162522119e-04 8.2782306802317649e-04
+298 -1.7084958276964420e-03 -9.8431534293864052e-04 -3.0041181743582653e-03
+103 -5.8225407024407926e-04 -9.1391385177242779e-04 1.9305646234904478e-04
+169 1.9641263755971693e-03 4.4218209646006092e-04 1.2536900311638647e-03
+191 -3.4050756708667485e-03 -9.1560128819582131e-04 3.3221536280387561e-04
+189 1.9210757260212671e-03 -1.7757479953153599e-03 -2.3299650961835557e-03
+292 2.4089267458903989e-04 1.8354228958755883e-03 -1.7692646799262596e-03
+286 -2.7284773270141744e-03 -2.5084776685201995e-03 -3.0631368956232467e-03
+193 3.8796055797170126e-03 -1.1524985372618505e-03 2.0247566219202861e-03
+96 -2.7703895473491213e-04 4.3176817426274569e-04 -5.7221058263101053e-03
+17 2.2666544841377467e-03 -4.2563103458555128e-03 -2.4156137464479557e-04
+200 -5.1090099483010111e-04 -7.7043712813569250e-04 -1.9736604582938689e-03
+199 -1.7264865377331661e-03 -5.5290309935496034e-04 -3.1261567656628276e-03
+301 3.3101842431731057e-03 2.1243942308251792e-03 2.0282113802333864e-04
+84 -1.2319512185855839e-03 6.7184884134867341e-05 -3.8525344976090801e-03
+182 -4.8773493277070256e-04 -2.3119588203644999e-04 -2.3063429173708627e-03
+381 1.1654323526439979e-03 -1.4300143016231584e-03 -2.2683764074284923e-03
+124 2.0008862934252376e-03 2.0478832693798107e-04 5.7568727651950995e-04
+218 8.4053224422171377e-04 1.0791919588448351e-03 -3.8036829120648994e-03
+187 1.9695345384628592e-03 1.1435705590661133e-04 -8.7846115025511638e-04
+203 8.2622629419993709e-04 -8.8707971395168448e-04 1.9314274753842340e-04
+206 -2.5341462715389607e-03 -1.3885350534688717e-03 4.6920070856098966e-03
+188 -5.5832902964921482e-04 1.9196528135277350e-03 -1.6157067013342831e-03
+227 3.2361844561740361e-03 -3.5730474239773510e-04 3.9305538910629012e-03
+211 -1.6918226234833851e-03 1.5944434207788608e-03 -2.2251044953447733e-04
+334 -4.7851669669860615e-04 -2.6142200427716005e-03 1.4195717839396353e-03
+119 2.6320964717004595e-03 3.1452790663336065e-03 -3.9248936681068654e-03
+224 -9.5997096963291323e-04 3.6637846110142315e-04 4.8660655369552416e-04
+204 -3.6067629217075112e-04 -2.5994562264128819e-03 2.0512327556091500e-03
+225 2.3941273194391442e-03 3.2158951029042432e-03 2.8407626917406528e-03
+129 9.2625789348164435e-04 -8.3460623896340950e-04 -9.5344569037758499e-04
+228 8.1914389584113558e-04 -2.9513414879583436e-03 5.1716369928750622e-04
+229 -2.5807916680549389e-03 -2.4212147382299625e-03 6.7805750617245305e-04
+235 -2.6952991273628516e-03 4.9937509274307658e-03 6.6681142097262716e-05
+240 -3.2661414249783973e-03 -1.6170275514921194e-04 2.1508758102101225e-03
+20 3.1117158113404633e-04 1.6868863601580146e-03 -2.0793970184948903e-03
+121 -1.1000623758053394e-04 -1.2848635655719088e-03 6.4028137237864157e-06
+145 1.0726152367317289e-03 -7.4195643069711772e-04 -3.0225685938867213e-03
+128 -2.2523994215813137e-03 -4.4703221565829936e-03 2.9196096583900739e-03
+47 4.0352719485987872e-03 4.0300548883893570e-04 -1.1766158522632627e-04
+226 -1.8727439915894595e-03 -7.9918046781253570e-04 -1.3896309410980575e-03
+231 1.4580039782482528e-03 1.0413145736132016e-03 2.2985995035562350e-03
+265 2.0818724888466535e-03 -8.3408219845115708e-04 2.6680329373349868e-03
+234 -4.9689549201829906e-04 -6.3264203773299120e-04 3.5013491123405383e-03
+238 7.8358040145134230e-04 6.7728701716215421e-05 -1.4907131464318196e-03
+163 -1.8013723486467847e-03 -8.2655807293856634e-04 -9.9178461089100630e-04
+123 -2.9831250472888625e-04 1.2367908331133235e-03 7.6690618768677707e-04
+159 1.6927973846936407e-03 1.9416995209937506e-03 -1.0882421662581638e-03
+261 -2.2317132697434282e-04 -8.6512232773919978e-04 3.2843870832768894e-03
+144 -1.8654268676196527e-03 4.7231493575781340e-03 5.3043300906040073e-04
+252 6.3443411917418905e-03 -2.9251885900415364e-04 -2.7381359935868318e-03
+285 -4.0953726443208813e-03 -2.6719924197089046e-03 -1.2626086051844944e-03
+167 4.0240126028433737e-03 9.9159939972611973e-04 1.2475953163625791e-03
+294 3.1511242324311540e-04 1.8895067869889805e-03 2.0790233745883701e-04
+349 -1.7336070438800442e-03 -2.0689366933237209e-03 -5.1682334447592047e-03
+160 2.4919484147360683e-03 9.1805172380651399e-04 -1.4975663489750319e-03
+155 -1.5800469156168834e-03 2.9494179542065915e-03 1.0047184347159786e-03
+378 4.5048777322408235e-03 1.5311618607794621e-03 2.9860211816445073e-03
+283 -1.8874494237645432e-03 -1.8122153318757397e-04 -1.4782372567559005e-03
+264 4.0600519287646696e-03 -7.9964444047691673e-04 1.2271006110967798e-03
+184 7.5213376778064797e-04 4.4011531803475100e-03 2.4984325798631203e-03
+183 1.4518491855893211e-03 -2.1655945338541027e-03 3.1886045738911128e-03
+262 1.7026103286567826e-03 -1.0099569883972605e-03 -1.7968358436629131e-03
+268 9.0797561150499420e-04 -6.6461885456651538e-04 4.7495630213282387e-03
+365 1.5007631809703238e-03 -2.8708376227628229e-03 -3.2355954730503512e-04
+171 2.8118743055516914e-03 1.8592645713487710e-03 -1.4191482538120088e-03
+274 -9.6011155389434948e-04 -1.5123723704099981e-03 -3.0270267567791538e-04
+272 2.9075112135481642e-03 -2.6491047690108517e-03 -7.3263328697735364e-05
+394 -7.4672992901885795e-04 -3.0017945291417565e-04 -2.3256384652967656e-03
+281 3.7283587685640893e-03 8.2898626510429234e-04 -1.1172728939422467e-04
+299 7.9788940888774395e-04 4.1367095518294640e-04 4.5770887826596264e-04
+104 -1.4146507144991690e-03 -5.3105138851044739e-04 1.4998047548950236e-03
+363 3.3158409444353880e-03 6.6868729028912350e-05 -1.5223169590404466e-03
+282 1.8685554433112803e-03 1.1476232490557558e-03 -1.0785750475355792e-03
+288 4.5602851084203884e-04 6.6128204710750932e-04 1.7205728355112189e-03
+290 4.1745361172481022e-03 8.8519986396559138e-04 -3.9397715368628619e-04
+289 7.3443767402855964e-04 -8.2084002107879342e-04 -5.9402491808578292e-04
+390 3.5745767744167468e-03 -2.1183208532202522e-03 2.4062376133153563e-03
+210 1.9399211640513626e-03 -2.1344063025264672e-04 1.5791397916088490e-03
+382 -3.3962660757212585e-04 -1.8821351296060829e-03 -5.9452452711327682e-03
+201 4.3009007933982567e-03 1.2083857233811796e-03 9.4357237050002787e-05
+321 2.1018042765809804e-03 3.5940451999962042e-03 -6.2617654692975506e-04
+304 1.4431398439198853e-03 4.2006972421555090e-03 2.2374074430218332e-05
+324 3.9690943607045014e-05 -4.8931214009429607e-04 3.0024219174756128e-03
+305 -1.0964887360634997e-03 -3.0527442035774960e-03 -3.0946652206366148e-03
+202 -3.8559387625039625e-03 -1.4527164979571885e-03 4.6522337302761351e-03
+207 -4.5158946644795970e-04 9.4550962881097310e-04 3.9089274339923043e-03
+333 -3.4410025860517711e-04 4.8907789687864826e-03 -1.4493418423734707e-03
+213 -3.9313665957738837e-03 4.1338738996949892e-03 -2.1921708884908133e-03
+314 7.0202635092278119e-04 1.0028229766557955e-03 -1.2394517763190368e-03
+335 -1.3404481030566489e-03 -4.5956966694774672e-03 -1.6806378317982134e-03
+336 1.6572388779717730e-04 7.2383309598489404e-06 2.5251964578031885e-04
+337 1.8796747255162751e-04 -1.0430923526081667e-04 -1.5015955934292462e-03
+318 3.8440087563797690e-03 1.3961203857410834e-03 -2.4564475264984009e-03
+239 2.5284497690070086e-04 4.0833566394851418e-04 -2.2778229166762376e-03
+241 -3.2881796116223294e-04 1.7623310617661742e-03 -2.8756907714334763e-03
+322 7.7364905636453365e-04 6.7499823391672909e-04 1.9987370050017421e-03
+339 -4.0743865849984817e-04 1.4638217770500854e-03 -6.8411164657865688e-04
+127 2.9163678244889502e-04 1.9473070607706258e-03 -9.6589226158179939e-04
+243 3.8850731822985293e-03 1.6948207881738722e-03 1.5636681034707706e-03
+222 -1.8022267417586871e-03 -1.6036506751054792e-03 1.8476711348418425e-03
+328 -6.7564734590576565e-04 9.6536764914561331e-04 -2.5167848928067051e-03
+251 -2.5808296178163472e-04 1.1489299381138782e-03 4.4089489741063305e-04
+306 -2.2373850741420048e-03 -2.8908571952490276e-03 2.4693583792511418e-03
+326 -1.5012051735340475e-05 1.5080371024391834e-04 -2.0902865884490501e-03
+355 4.0685606345043949e-03 -6.8056664805852811e-05 -1.5183956160429272e-03
+330 -2.1684789914297700e-03 -2.5034435833270496e-03 -6.5614380153332982e-04
+216 -1.0506762666864910e-03 -2.7080484969749050e-03 -1.0101655330361705e-03
+279 3.0972058450642278e-03 1.9437929231226488e-03 -6.6351499072059977e-04
+212 2.9527449340655611e-04 2.6679174772431541e-04 -1.1704595380193298e-03
+353 3.5420269808216298e-03 1.9280615214852964e-03 -1.7172185713956608e-05
+259 7.0900256572555486e-04 -9.1282877873386639e-05 -9.2202368072394973e-05
+458 4.0886563461709754e-04 -2.6871808761396330e-03 4.6167884724029240e-05
+323 1.8863025056080683e-03 4.5989356019485381e-03 -8.2948782438993258e-04
+341 1.0299283864929035e-04 1.1658294382951313e-03 -1.1030070983802080e-04
+345 -5.1013118692257522e-04 2.0584222384001107e-03 -1.0973175224324107e-03
+428 -2.1347989249428058e-03 -2.7557387029355390e-03 -6.6420789503478445e-04
+208 1.1799866297084009e-03 -9.7823333655550960e-04 2.6711445980221464e-03
+253 8.4101767459268564e-04 3.1577448402497456e-04 -3.5901432013308249e-03
+245 3.2911859496148983e-03 4.4166535017818538e-04 1.0487555081347521e-03
+260 1.9646312246083234e-03 2.2814517282240747e-03 -2.5175220910014645e-03
+254 -1.3198156557906336e-04 3.3369041648491646e-03 -1.3282588490515863e-03
+255 -6.7739970671417153e-04 7.5617081238848972e-04 -2.9746276476362828e-03
+444 6.8328052165403490e-03 2.0564943137648200e-03 -1.1602449038698238e-03
+242 1.5388400034917959e-03 -2.0821169131279762e-03 -1.7139574361314388e-03
+244 -1.5232722739648606e-03 -4.9988676376383646e-03 2.0970978969512672e-03
+379 1.5914184246295792e-04 2.3412694625691709e-03 1.3741017935510903e-03
+364 -1.6728268851412919e-03 -4.9420705909437713e-05 2.2134397053704198e-03
+377 3.7019235724711230e-04 3.5267304922566656e-03 -1.0482047613250241e-03
+267 -1.5915786364255956e-03 -4.7961792750096004e-03 4.0955604234649392e-03
+248 5.7570674221624155e-03 -1.2579805543700047e-03 -7.3523061643479711e-04
+369 -5.4697861001007826e-03 -5.9357874341789590e-05 -4.1333005167657772e-03
+366 -6.7701627586319265e-04 2.1381307287591635e-03 -3.1277201008972793e-03
+177 -4.3828219267180793e-03 -2.7273871159381744e-03 -2.5468624664356327e-03
+175 3.7400263015696216e-04 -1.5353167208670285e-03 8.7006680870674248e-04
+280 -6.7815470975285115e-04 1.3095437242700049e-03 -2.2456983509682674e-03
+257 1.4554858387232218e-03 1.3594937652117234e-03 -2.0372421459786505e-03
+477 -8.7538051692537331e-04 -1.3790378919121464e-03 -2.1563600123207967e-03
+397 8.1918827408825501e-04 1.0206277542858216e-03 -5.6099113117828964e-04
+344 -2.9936015081576850e-03 -3.6457068761578731e-03 -2.3236966308052718e-04
+297 2.0590803569550324e-03 8.0077196345833984e-04 3.5139280165103723e-04
+358 1.0494598677246259e-03 1.7922175825808666e-03 1.0882681711496243e-03
+399 -1.3185411149069844e-03 2.7247499787786417e-03 -2.3088171311692949e-03
+368 9.8399355085613594e-04 2.6793993389238897e-03 -8.8531617001748911e-05
+361 8.5622066293288858e-04 7.6550828010911681e-04 -3.4108693739113263e-03
+287 9.2585438468083389e-04 -4.2033634592966969e-03 -1.5713161203983512e-04
+371 8.4164214475610682e-04 -3.1222277975302627e-04 5.2812552964139666e-04
+370 -1.4740212283789135e-03 -1.4558252899952670e-03 1.4642751954835960e-03
+393 4.9316623633469878e-03 1.1903235162890179e-03 5.5776302495590688e-03
+392 2.0954598607178091e-03 -8.5386659786942010e-04 2.4730567207603802e-03
+276 2.2712495236589837e-03 -3.3636513873184809e-04 -2.5992713075540293e-03
+295 -3.3389018114647387e-03 -3.9683681488304648e-04 1.7352500013168891e-03
+315 -2.6251192594910389e-03 1.9484889577359326e-04 1.1692132383276136e-03
+215 -2.0493273617041498e-03 -4.9533277906275474e-03 -9.5376869695236162e-04
+317 1.4921494150031646e-03 1.9278165515900835e-03 -5.2503430520559622e-03
+220 2.2899806490077852e-04 1.5257574745627209e-03 5.2600517834233305e-04
+284 2.1940577407041966e-05 -5.3954155728099867e-03 -6.6205162527576799e-04
+362 1.4494252153773061e-03 3.6870939287594285e-03 -6.2996873240811534e-04
+385 -2.5806983046248125e-03 1.3955349729705073e-03 3.9594090179647136e-03
+223 -1.8713922901738885e-03 -8.7634597836370163e-04 -4.4437939423807409e-03
+401 -2.7284671351346327e-03 -2.6088234213407298e-03 1.7597893112194435e-03
+384 2.5443558135894982e-03 -1.5597516331725572e-03 2.8232442763837596e-03
+386 -3.6187634039665391e-03 -2.0308711676952844e-04 3.1269180903844966e-03
+205 -2.9295554612148198e-04 9.3687870343760107e-04 9.1735430257274084e-04
+387 -5.7129362821315758e-05 -1.7016784054758259e-04 -9.0011763233710594e-04
+395 -1.9296998683680346e-03 6.1397564300549925e-06 1.7792254646917948e-03
+309 -1.2780118356186718e-03 -6.2700466926935946e-04 9.6648581178426101e-04
+311 6.8459260298081809e-04 -3.5062215404803128e-03 1.9350811178770703e-03
+430 -2.4539776465198593e-03 4.3379076811851545e-03 -4.2398929150337756e-03
+195 -1.7471582035141531e-04 -3.6675258785399836e-04 2.2906572841599896e-03
+296 -9.5948624493875595e-05 8.0438038129172675e-05 6.0406883984758094e-04
+219 6.6460041811700358e-04 1.9191884114922331e-03 -3.2490252345647869e-03
+303 1.2692048823241577e-03 1.5561191675730964e-03 -2.1765180591287428e-03
+437 2.4179825588130539e-03 -1.4554252923963539e-03 -3.8513405031344460e-03
+422 -2.4379343622161933e-03 1.0170542201744027e-03 3.9267405099558299e-03
+6 2.1201541873808623e-05 3.6784409308680786e-03 -4.5505710622142378e-04
+483 1.1853113291420355e-03 -1.7587550589142843e-03 3.4110622668368613e-04
+402 1.3724331195895637e-03 -4.7351933591631548e-04 4.8074536273539697e-03
+466 -5.0361593564368549e-05 4.8437228642309255e-03 -1.9073125493976864e-03
+90 2.4196857034413425e-03 4.0735948263934899e-03 -1.8650043096918242e-03
+307 1.1791635946960647e-03 -1.9685545152797446e-03 2.3778621033698879e-03
+388 -9.7549072956773400e-04 6.4150511722839984e-04 -3.9212508631387950e-04
+302 1.0082061999236508e-03 -3.8328324197090605e-03 -1.8567122504242824e-03
+492 -4.3965384260079791e-03 -2.4021791152419908e-03 -1.5071736389517707e-03
+410 1.5396609295366297e-03 -6.6077233263222331e-04 -1.5563072611639098e-03
+313 1.5652903331655013e-03 -4.0199843708633798e-03 2.4757230532090812e-03
+300 -1.7674109660405185e-03 6.5460532242649300e-04 -4.1863391103100006e-04
+438 1.6007033378077093e-03 3.8161007064147368e-03 1.8715929753025458e-03
+359 1.5205985524473692e-04 -1.0038599728664759e-03 -2.4592662101197344e-04
+457 -1.1050584593492703e-03 1.5937401484851907e-03 3.3828414299570033e-03
+439 -1.3597042056949372e-03 8.3113659169053577e-04 -1.0100131525346846e-04
+427 7.5973980545232371e-04 -1.4121693694936718e-03 -1.2211374826070355e-03
+312 -1.5281018606634719e-03 1.4614521083312741e-03 5.8059770456004949e-04
+423 -1.0499553684517353e-03 1.5044791916742069e-03 1.4497501186381333e-03
+429 1.6049362309576371e-03 -7.7085605971843429e-04 8.6114026480623199e-04
+329 -1.2476201613051238e-03 6.7032618911445083e-04 -3.1741378259174898e-03
+30 -5.4782028867080489e-04 -4.3260428200245341e-04 1.7263513024347177e-05
+350 -2.2068152395030005e-04 -6.1942473706659684e-05 -1.6727366744390144e-03
+332 1.9517498553570090e-03 -1.4583929441783522e-03 1.6979079626662163e-04
+433 3.8664662062026643e-04 -4.0051332138823165e-03 -1.6620075568601835e-04
+357 -1.6656513570274816e-03 -1.3348192488472489e-03 -2.1558124219182963e-03
+340 -3.2286256480498314e-03 -1.1725495944966018e-03 -2.0270920298431076e-04
+236 5.8753727864806470e-05 -6.4341983777317993e-03 8.7171291228128835e-04
+455 -2.9490719977157292e-03 -2.2554157082265397e-03 8.0169846811650164e-05
+459 9.7157423118229250e-04 -2.2788480257812265e-03 -2.3795375676842931e-05
+424 -1.4786879247917859e-03 2.8007175411083143e-03 1.7256765020771110e-03
+343 8.2588680719978646e-04 1.9510362801132325e-03 -1.2307085997942109e-03
+347 -1.1436769086063821e-03 1.5550517891991225e-03 -1.2806351210943980e-04
+441 -1.9070330084811739e-03 -3.3947715610718357e-03 5.5775807516567641e-04
+327 1.3241826550442924e-03 -1.5262968135943843e-03 1.8208825841751683e-03
+445 -1.1070950373167484e-03 -9.4469001561426149e-04 3.2213751856676273e-04
+271 -1.4873126779679699e-03 -1.1029231461834965e-03 -2.1956004039807601e-03
+436 -2.4627278008905348e-04 1.8952338932891133e-03 2.0229783957659390e-03
+389 -3.4537631756718502e-03 2.0473074221214935e-03 -1.9019840311023664e-03
+374 -1.2280770334448230e-03 8.2015469750141103e-04 1.8179143423403489e-03
+453 -1.8402689708658972e-03 -2.0641785928902012e-03 2.9269159417426500e-03
+373 1.2781940741536690e-03 -2.7083548180996435e-04 2.0912527072452407e-03
+375 2.4246230549750890e-03 1.4668805637540960e-03 -1.6561379934085091e-03
+449 1.0530899207467604e-03 2.7123067637205203e-03 -9.1565871787849999e-04
+58 -2.4191424869980365e-03 2.5397953903147467e-03 -1.7640627688912506e-03
+360 2.7662341120460992e-03 3.5844240739526943e-03 2.8633652961286430e-03
+446 9.4126930212774752e-04 -2.7008377236238672e-03 3.4727342478424717e-03
+442 -2.0033155679320138e-04 -4.1268801976708302e-04 -2.5402455355484849e-03
+342 -3.1639296165284192e-03 -5.9761448206356149e-04 -2.3058685199167542e-03
+325 8.2791284662113245e-05 2.8396991062804330e-03 -2.9903595412074304e-04
+469 1.1303478670542232e-03 -6.1959742183081794e-04 2.5003789190892823e-03
+346 -8.5622270860903453e-04 8.4812081535366062e-04 -9.3721216790677755e-05
+486 4.3258279275678970e-05 2.0764361253993589e-03 3.5251843463100260e-03
+426 -1.0644694120379202e-03 3.2497508925844860e-03 1.1501414646924290e-03
+256 -1.2857968838716314e-04 -6.5720012209619550e-04 2.2035581226726446e-03
+275 -3.8340367622803030e-03 -8.8013930890472444e-04 4.9982107890425662e-05
+376 1.9858413125945812e-03 -8.2800556756092440e-04 -5.2416275537762048e-04
+380 -9.2405529202410633e-05 7.8311880363741537e-04 -1.3538398652714612e-03
+497 1.7419558133719142e-03 -1.2836935020718561e-03 -1.0784649552206377e-03
+178 -6.9452210894752010e-04 1.4793562424323214e-04 2.3108783828317226e-03
+461 -2.9812190994116619e-03 2.0948828467906745e-04 -1.0859184431540915e-03
+464 1.6732888061644308e-04 3.4501024072664042e-03 -2.3602587872940153e-04
+468 -1.8281708970759795e-03 2.3257891430881117e-03 -3.0630152200371795e-03
+485 -4.5085438691591591e-04 -1.8720244452329054e-03 1.4010884688386714e-03
+448 -1.2619689125500792e-03 -1.1899049777016877e-03 8.1842560985492818e-04
+482 1.3927806627510393e-04 2.5645019527516426e-03 1.6174576268060775e-04
+465 -1.2465068309191745e-03 8.0081518899017027e-04 -1.7382462447305472e-03
+405 -1.3913515198224547e-03 3.0004109576958508e-03 7.7729932615432676e-05
+462 2.7211973882192587e-03 -1.5714037509513739e-03 -8.6325055831378702e-05
+367 4.4909681778079486e-03 5.9391612815398449e-04 -7.0840327433502001e-04
+473 1.7963774809069224e-03 1.0145287320336329e-03 6.4084740135339567e-04
+93 9.0919241307158222e-04 1.9356269230707910e-03 6.2835058197133306e-04
+451 4.6321106886787548e-04 1.2823452845489821e-03 4.4695019439681304e-04
+413 7.2386129109187772e-05 -6.7397993010042778e-04 -2.1739667873755383e-03
+479 -4.7765732161573097e-05 9.2074604140361367e-04 -1.3556600903424985e-03
+498 -3.3610402642793029e-03 -1.9691541966922444e-03 -4.7039823904584260e-04
+85 -1.4287910056034279e-04 1.0503552955920413e-03 -1.7960021158819135e-03
+421 -2.4043497751948945e-03 -2.5391387340201023e-03 1.7776459056770134e-03
+408 -7.0542131085294453e-04 -1.9895956673250934e-03 8.0338195712362347e-03
+331 1.1048919962694114e-03 -4.4786025758755052e-03 -1.0680472901493682e-03
+308 1.4017753321839343e-03 6.1615984959040315e-04 -8.1072738116232937e-04
+400 6.1071577357530024e-04 -2.4133909800802679e-03 -6.4879123684054871e-04
+310 4.4649770542961898e-04 1.7169740441721007e-03 2.0193249365279622e-03
+372 2.8296634326195015e-03 1.2930325467483720e-04 -3.4250066837053111e-03
+391 5.1020780385228730e-04 4.2945418390557692e-04 1.0643437199859521e-04
+319 -2.2993111502265231e-03 -2.2829185260838515e-03 7.9702046688647648e-04
+396 -1.5831473410258855e-03 -1.1759759603707422e-03 1.0297689937718935e-03
+383 -2.7249653287249277e-03 -1.0226622173430016e-04 3.3727762423331302e-04
+418 2.4361160240480374e-04 -7.3681154472159528e-04 -5.8112961209193389e-04
+398 2.3245301256008834e-03 2.4979562202422007e-03 2.7664161958601490e-05
+403 -6.4160877712081833e-04 -2.2345953627167917e-03 3.2564990771490922e-03
+9 6.0583296203643132e-03 -1.5751557349284232e-03 7.0254689083588940e-04
+92 -3.0747531388559102e-03 3.8507876274690720e-03 7.1242505282733602e-05
+431 4.1584812283359945e-03 3.1497111974393773e-03 -4.3575745577271131e-03
+434 1.7978302944714468e-03 -1.8536773675720886e-03 5.0087062418079282e-04
+489 2.7729110497573947e-03 1.2872985266920494e-03 2.5027102678639238e-03
+15 -8.5947461250675445e-04 4.9164908205131711e-05 -1.0659289481267426e-04
+415 -5.5880425931607522e-04 4.7713949384098586e-04 1.4926262113600973e-03
+320 -1.3398567322829011e-03 1.1310701576780759e-04 -2.0616224714524942e-03
+404 -8.6550774288807620e-04 -1.8099586765200446e-03 3.1443014800774534e-03
+481 -1.0893856838535083e-03 -2.4777273921265147e-03 -3.8545854804344104e-03
+21 -3.5219795804762584e-03 1.5630118032324277e-04 5.9054467401671769e-04
+425 1.2282129301184237e-03 3.6647851640377658e-03 -2.6089538617324473e-03
+29 -3.7860269510073107e-03 4.4851515311772816e-03 -1.8347005273479876e-03
+33 -8.5463385897075611e-04 -8.2171385252533089e-04 -2.6025670933340912e-04
+356 1.3804136434369082e-03 2.9489402560211727e-03 -1.2319912039431200e-04
+133 -9.9693903837051842e-04 -3.2247354726830363e-04 1.0236749825896110e-03
+338 -2.6998797242228302e-03 1.6474947645022376e-04 1.1014737802548615e-03
+53 1.1877405566140390e-03 -3.0856240100425738e-04 7.5963465712278452e-05
+435 -1.2886917650710250e-03 -1.8307766876166536e-03 -1.8149334519338811e-04
+316 2.1620216474824761e-03 -3.5315481250379230e-03 -3.0414249186189774e-03
+440 -1.3343489480619731e-03 7.7549141444283184e-04 8.5694894129887138e-04
+454 -1.0750249102345314e-03 3.1760484211914497e-03 1.4464357957917979e-03
+44 -3.3211575690620797e-04 5.1500617447725223e-04 1.7396528096077672e-05
+61 -2.4165404966903807e-03 -1.1963516374975988e-03 -2.2060749433131625e-03
+62 1.8876036633455612e-04 4.5738021871569948e-03 1.6619451809135866e-03
+51 -4.8007454727980623e-03 9.3440349433894683e-04 2.7504515163309022e-04
+12 4.6244572249452110e-04 -3.2151309826334846e-03 -8.5164443218977424e-04
+55 -1.0484984962124326e-03 -2.1388333631410833e-03 -2.1301059568501403e-04
+36 2.8896809811091085e-04 1.6333826782563357e-03 2.5192968781486374e-03
+351 -2.4692656595219809e-03 -6.8737723574157966e-04 -1.1229760942475025e-03
+460 1.6510250382851591e-03 2.0419264070638721e-04 1.6227028690841232e-03
+443 -1.1480178278416790e-03 -5.5912756292162118e-03 1.8604740538095724e-03
+467 7.2802818273061604e-04 -1.8897674276844268e-03 -2.9644183274431220e-03
+79 -5.1446893439809451e-04 -1.6324650481458146e-03 9.1849527607754512e-04
+49 -1.0861695176058665e-03 1.7913227108882603e-03 -1.1940346342205349e-03
+452 1.3055516627529685e-03 5.3228629756042127e-04 3.6211991360006365e-04
+247 -3.5246211487938812e-03 1.2375107778362835e-03 2.2452667686461690e-03
+352 1.5907072652823968e-03 -2.4587398863428508e-03 4.6715319759077110e-04
+56 6.8781795728293713e-04 -3.2843684545530330e-03 -7.7841161439189469e-04
+450 2.7849737287237637e-03 -1.9368880125100166e-03 -1.3080514371690880e-03
+474 3.3656221718711110e-05 -3.4228156403357758e-03 2.5310411314553088e-03
+456 1.8188277940476869e-04 -2.0410032919600417e-04 3.1907415520882137e-03
+348 1.0003827621412223e-03 -1.4734696297054287e-03 -1.0141323954163211e-04
+59 1.6225236319347728e-03 3.8414468365683147e-03 2.6271058310416893e-03
+463 2.9143025230562516e-03 -3.8962640652183411e-03 -4.7876838675610969e-04
+487 3.0282336303583215e-03 -5.3179208311838393e-04 -1.1312791064411610e-03
+407 1.1540370820734948e-03 -5.4351726843163150e-04 4.8496920663849128e-04
+470 1.5849933025161814e-04 -1.4447363334131966e-03 9.9121165010630265e-04
+409 -2.0424567100391713e-03 2.4570757565095061e-03 2.8587934214656429e-03
+54 -1.7800593792197525e-03 -1.2884905687210360e-03 -7.7115406564260401e-04
+50 3.2870642496639932e-03 -4.2261430738295262e-04 7.1544267163706275e-04
+494 3.1502261819082462e-03 2.1492071126992820e-03 4.8936915819397363e-03
+476 -2.9222575267974895e-03 1.9023543694605871e-03 4.0443881799722449e-03
+478 -5.6446970933409152e-04 1.6343825974309163e-03 3.3954638375394072e-03
+81 5.6123320313167420e-04 9.2944902520002943e-05 -1.5798406157916077e-03
+3 -8.5175637260457595e-04 -1.8069802348692663e-03 3.2189372873227882e-03
+406 -1.2637085275388462e-04 -1.9417200930375020e-03 2.4903882783735903e-03
+488 -1.6093641342024110e-03 -3.6966516006208786e-04 1.8227276359247290e-03
+89 -3.7644185014699700e-03 -2.9950910857409790e-04 -1.2456061015624442e-03
+416 1.6962510236079617e-03 1.7682597699713467e-04 1.7365886898904333e-03
+493 1.1543490057455640e-04 1.2664830527504096e-03 -3.0539335311988978e-03
+411 1.6535674441861483e-03 2.2063620803320928e-04 -2.1807340215401557e-03
+495 -2.5085091390183640e-03 3.4427626971981150e-04 1.4807008234205823e-04
+414 2.6975659669988830e-04 2.4932840661201152e-03 -3.7209251803594734e-03
+499 -1.4640575342213639e-03 -2.5407283639165886e-03 -5.2070446230957927e-04
+417 -2.0101459694590639e-03 1.0335255436695523e-03 8.3259450427704368e-05
+97 1.1869110896578596e-03 1.3633297609735638e-03 -2.8383859831664663e-03
diff --git a/examples/USER/misc/grem/lj-6rep/420/restart.init b/examples/USER/misc/grem/lj-6rep/420/restart.init
new file mode 100644
index 000000000..bb56dccb0
--- /dev/null
+++ b/examples/USER/misc/grem/lj-6rep/420/restart.init
@@ -0,0 +1,1022 @@
+LAMMPS data file via write_data, version 5 Nov 2016, timestep = 10000
+
+500 atoms
+1 atom types
+
+1.1855410023789030e+00 2.3814458997621848e+01 xlo xhi
+1.1855410023789030e+00 2.3814458997621848e+01 ylo yhi
+1.1855410023789030e+00 2.3814458997621848e+01 zlo zhi
+
+Masses
+
+1 62.5
+
+Pair Coeffs # lj/cut
+
+1 1.1 2.8
+
+Atoms # full
+
+8 0 1 0.0000000000000000e+00 2.8557650647268771e+00 4.0842298609450634e+00 2.7790400822252117e+00 0 0 0
+86 0 1 0.0000000000000000e+00 4.8018279244764184e+00 2.0325039285854922e+00 1.2305707451247458e+00 0 1 0
+107 0 1 0.0000000000000000e+00 4.0717959989468335e+00 2.3277942608945583e+00 4.8514736160186738e+00 0 0 0
+185 0 1 0.0000000000000000e+00 6.3797900796216309e+00 3.4809095561495322e+00 3.6690919938753948e+00 0 1 0
+412 0 1 0.0000000000000000e+00 7.9659570183174555e+00 4.7282473898351229e+00 1.3259564838809477e+00 0 0 1
+186 0 1 0.0000000000000000e+00 8.0649941118308561e+00 1.6675974936972455e+00 1.4084425396224962e+00 0 1 0
+109 0 1 0.0000000000000000e+00 9.7141833683956591e+00 3.1054405822538147e+00 3.6534799748027225e+00 0 0 0
+31 0 1 0.0000000000000000e+00 1.1717802609702007e+01 4.2681812957470768e+00 1.4123002747122686e+00 0 0 0
+111 0 1 0.0000000000000000e+00 1.2774887777968425e+01 2.7630908767110554e+00 3.6167269884788111e+00 0 0 0
+420 0 1 0.0000000000000000e+00 1.6031150877392445e+01 2.3060666902003053e+00 3.7559394934733801e+00 0 0 1
+18 0 1 0.0000000000000000e+00 1.8392035635475743e+01 3.9022802581409031e+00 2.4174567447521360e+00 0 0 0
+117 0 1 0.0000000000000000e+00 1.9792887878014227e+01 1.9999370051340093e+00 4.3509820810729138e+00 0 0 0
+1 0 1 0.0000000000000000e+00 2.2379689849887079e+01 3.1822599892452246e+00 3.6078122204782686e+00 -1 0 0
+35 0 1 0.0000000000000000e+00 2.0352684464167240e+01 5.1945821694080747e+00 4.5521617957891918e+00 0 0 0
+22 0 1 0.0000000000000000e+00 3.2566838696229889e+00 7.3416874814184956e+00 3.1304097369202584e+00 0 0 0
+27 0 1 0.0000000000000000e+00 6.8522043097386378e+00 6.9631261167210852e+00 3.3332543598970470e+00 0 0 0
+25 0 1 0.0000000000000000e+00 4.8951432131747783e+00 5.4040761189149391e+00 1.2071385130555257e+00 0 0 0
+11 0 1 0.0000000000000000e+00 9.8721224923210720e+00 6.1783844757133801e+00 3.1953770492828335e+00 0 0 0
+432 0 1 0.0000000000000000e+00 1.1962738005541327e+01 8.0077084009578190e+00 1.2441471762644127e+00 0 0 1
+116 0 1 0.0000000000000000e+00 1.3129084261285607e+01 5.8721609441953495e+00 3.7556384929769493e+00 0 0 0
+133 0 1 0.0000000000000000e+00 1.5026218435845944e+01 7.5286821132583297e+00 1.5146794760756279e+00 0 0 0
+114 0 1 0.0000000000000000e+00 1.6245559807250388e+01 5.7880632202382740e+00 3.5474076753813248e+00 0 0 0
+440 0 1 0.0000000000000000e+00 1.8889551539254022e+01 6.9686370277950571e+00 2.6790477236135506e+00 0 0 1
+134 0 1 0.0000000000000000e+00 1.6757179647446598e+01 8.6790805817409211e+00 3.5149484379935623e+00 0 0 0
+316 0 1 0.0000000000000000e+00 2.1257541790146107e+01 5.1226351579983049e+00 1.5958920026860830e+00 0 0 1
+39 0 1 0.0000000000000000e+00 2.3234812307794151e+01 6.2999396872361721e+00 3.8496821186246892e+00 0 0 0
+44 0 1 0.0000000000000000e+00 2.1528051089967654e+01 8.0966960326737265e+00 1.4518549032990293e+00 -1 0 0
+57 0 1 0.0000000000000000e+00 2.0878826665806386e+01 8.1194640998442189e+00 4.7374004590787671e+00 0 0 0
+41 0 1 0.0000000000000000e+00 4.0145385506012508e+00 1.0503938801636771e+01 3.5215106714847022e+00 0 0 0
+45 0 1 0.0000000000000000e+00 7.2338590396925762e+00 9.9070055018529217e+00 3.3321551263714810e+00 0 0 0
+146 0 1 0.0000000000000000e+00 1.0387948141733261e+01 9.5874668014953937e+00 3.2080676129083900e+00 0 0 0
+149 0 1 0.0000000000000000e+00 1.2134468582077801e+01 1.1127338339545162e+01 2.3573453205551495e+01 0 0 -1
+130 0 1 0.0000000000000000e+00 1.3339306419381819e+01 9.0729311801202606e+00 3.5613996951374327e+00 0 0 0
+71 0 1 0.0000000000000000e+00 1.3954726967961166e+01 1.2537798455890414e+01 3.3277825189441517e+00 0 0 0
+156 0 1 0.0000000000000000e+00 1.5427922897707543e+01 1.0484097471579641e+01 1.6021230326573874e+00 0 0 0
+354 0 1 0.0000000000000000e+00 1.7325498938794034e+01 1.1817444939478884e+01 3.4975750514034689e+00 0 0 1
+78 0 1 0.0000000000000000e+00 1.9368485742490158e+01 1.0044561978301232e+01 2.7218412056891426e+00 0 0 0
+24 0 1 0.0000000000000000e+00 2.3593886118140205e+01 9.4902628822438473e+00 4.3348828778723165e+00 -1 0 0
+62 0 1 0.0000000000000000e+00 2.2338990299240756e+01 1.1279064861127447e+01 2.0790100343563043e+00 -1 0 0
+60 0 1 0.0000000000000000e+00 2.1337628304727879e+01 1.1384186047092630e+01 5.1925326988883240e+00 0 0 0
+43 0 1 0.0000000000000000e+00 1.7881427199390567e+00 1.2556288061143418e+01 4.2748066512498983e+00 0 0 0
+158 0 1 0.0000000000000000e+00 2.2334196631692267e+00 1.5623725654081385e+01 4.1692543493492629e+00 1 0 0
+42 0 1 0.0000000000000000e+00 4.4273346088576098e+00 1.3619298141098049e+01 3.4584930131343476e+00 0 0 0
+467 0 1 0.0000000000000000e+00 3.2363744410479915e+00 1.5440692167186175e+01 1.3312278012064027e+00 0 0 1
+52 0 1 0.0000000000000000e+00 7.7950656193981871e+00 1.2842103084033949e+01 3.3690534299363768e+00 0 0 0
+65 0 1 0.0000000000000000e+00 6.4972832924117316e+00 1.4674368169433579e+01 2.3635783054425225e+01 0 0 -1
+170 0 1 0.0000000000000000e+00 8.3124677541788472e+00 1.5968320655042554e+01 3.3946833608080542e+00 0 0 0
+73 0 1 0.0000000000000000e+00 1.0775264120304374e+01 1.2559174674297251e+01 3.0630848815781411e+00 0 0 0
+91 0 1 0.0000000000000000e+00 1.1410218485254241e+01 1.5859312369092056e+01 3.4758967931338458e+00 0 0 0
+72 0 1 0.0000000000000000e+00 9.5985889782336677e+00 1.4525071734788101e+01 2.3762889291751094e+01 0 0 -1
+76 0 1 0.0000000000000000e+00 1.2665178478823123e+01 1.4411706615850941e+01 1.1870431552243246e+00 0 0 0
+174 0 1 0.0000000000000000e+00 1.4535134334327946e+01 1.5672921147805525e+01 3.5763714123089327e+00 0 0 0
+77 0 1 0.0000000000000000e+00 1.6266571878843216e+01 1.3758452668514201e+01 1.2512254391420405e+00 0 0 0
+75 0 1 0.0000000000000000e+00 1.7974241219405556e+01 1.5186464355052248e+01 3.5930506725207838e+00 0 0 0
+59 0 1 0.0000000000000000e+00 2.0169873455453541e+01 1.3153425610894292e+01 2.9586901506794447e+00 0 0 0
+63 0 1 0.0000000000000000e+00 2.3027067741685677e+01 1.4299445377151088e+01 1.8505231550440071e+00 -1 0 0
+181 0 1 0.0000000000000000e+00 2.8578621235357229e+00 1.8697029029481456e+01 4.4822878795864307e+00 0 0 0
+484 0 1 0.0000000000000000e+00 3.5601020322674315e+00 1.8545264196223677e+01 1.4986049785779159e+00 0 0 1
+162 0 1 0.0000000000000000e+00 5.1612453006808261e+00 1.6762625815587512e+01 3.5110626550117665e+00 0 0 0
+64 0 1 0.0000000000000000e+00 5.5701117478574647e+00 1.9720016822592157e+01 3.4092691249960998e+00 0 0 0
+142 0 1 0.0000000000000000e+00 7.2421778781144237e+00 1.8032918768320869e+01 1.4199759899291706e+00 0 0 0
+83 0 1 0.0000000000000000e+00 8.9033917969927234e+00 1.9473154187533041e+01 3.5398308294355680e+00 0 0 0
+70 0 1 0.0000000000000000e+00 1.1852193748471548e+01 1.8940921392562160e+01 3.4064525493491589e+00 0 0 0
+69 0 1 0.0000000000000000e+00 1.0223691573867939e+01 1.7549418685688273e+01 1.2330546440856907e+00 0 0 0
+214 0 1 0.0000000000000000e+00 1.5154979839521946e+01 1.8740744583603494e+01 3.6529448828008251e+00 0 -1 0
+197 0 1 0.0000000000000000e+00 1.8489894963122516e+01 1.8202452916879309e+01 3.8895074678919159e+00 0 0 0
+475 0 1 0.0000000000000000e+00 1.6677888441613035e+01 1.6816879688188362e+01 1.5141253050293089e+00 0 0 1
+74 0 1 0.0000000000000000e+00 2.0777779648530711e+01 1.6531037580484433e+01 2.8418799041018215e+00 0 0 0
+161 0 1 0.0000000000000000e+00 2.3446388292134493e+01 1.7337260139999088e+01 1.8982304301177191e+00 -1 0 0
+496 0 1 0.0000000000000000e+00 2.1051682239610869e+01 1.9523989428349793e+01 2.9185478077720339e+00 0 0 1
+7 0 1 0.0000000000000000e+00 2.2735090790262991e+00 2.3744726740777757e+01 2.5227188677708252e+00 0 -1 0
+102 0 1 0.0000000000000000e+00 3.4681449576877141e+00 2.1993985933257726e+01 4.6039467024706306e+00 0 -1 0
+5 0 1 0.0000000000000000e+00 4.1514343986180116e+00 2.1558543380598451e+01 1.3690750063674757e+00 0 -1 0
+82 0 1 0.0000000000000000e+00 1.5276329919132328e+00 2.0575156635673657e+01 2.5072676843757815e+00 0 0 0
+88 0 1 0.0000000000000000e+00 6.1319080111293465e+00 2.3077563699161033e+01 3.4089567643948087e+00 0 0 0
+66 0 1 0.0000000000000000e+00 7.3350716463733718e+00 2.1033714388617753e+01 1.4614203820991978e+00 0 0 0
+10 0 1 0.0000000000000000e+00 1.1180131833791163e+01 2.3808923388918920e+01 1.2267824650738568e+00 0 -1 0
+67 0 1 0.0000000000000000e+00 9.1440195703322544e+00 2.2546037320750543e+01 3.4552452206535378e+00 0 0 0
+472 0 1 0.0000000000000000e+00 1.0485188973703053e+01 2.0816570153031883e+01 1.4071125484811733e+00 0 0 1
+13 0 1 0.0000000000000000e+00 1.2345907052988391e+01 2.2479060803506101e+01 3.5607403806222702e+00 0 -1 0
+94 0 1 0.0000000000000000e+00 1.5507011990630710e+01 2.1940939987298783e+01 3.5267030279196514e+00 0 0 0
+490 0 1 0.0000000000000000e+00 1.7565030325981752e+01 2.0288476775852487e+01 1.9101855025181869e+00 0 0 1
+500 0 1 0.0000000000000000e+00 1.7996169690776398e+01 2.3243197115954388e+01 2.0806593583231323e+00 0 0 1
+100 0 1 0.0000000000000000e+00 1.9197047160712472e+01 2.1391624155973155e+01 4.1920178911026831e+00 0 0 0
+419 0 1 0.0000000000000000e+00 2.1602394589326146e+01 2.2750354007905280e+01 3.2185768081708410e+00 0 -1 1
+19 0 1 0.0000000000000000e+00 3.1464582042348135e+00 2.4489581713281243e+00 7.9231265255910159e+00 1 0 0
+101 0 1 0.0000000000000000e+00 1.8395234395535849e+00 4.3712202937710725e+00 5.7691989413304627e+00 0 0 0
+2 0 1 0.0000000000000000e+00 1.3031417668752709e+00 1.1984709320198370e+00 5.6075070225953860e+00 0 0 0
+125 0 1 0.0000000000000000e+00 5.8240253810017748e+00 3.7947847927554132e+00 7.1291937301392423e+00 0 0 0
+87 0 1 0.0000000000000000e+00 7.7663823140224313e+00 1.6360266005582824e+00 5.9761878465074680e+00 0 1 0
+110 0 1 0.0000000000000000e+00 1.1231244933101504e+01 4.6942448712838019e+00 5.6441042981941427e+00 0 0 0
+192 0 1 0.0000000000000000e+00 9.5717252332955933e+00 3.1912024177523604e+00 7.9362967148502159e+00 0 1 0
+191 0 1 0.0000000000000000e+00 1.0924440623806079e+01 1.4642003510904829e+00 5.7751072305888105e+00 0 1 0
+120 0 1 0.0000000000000000e+00 1.4449475210496596e+01 4.1640618776772964e+00 5.9553493830514590e+00 0 0 0
+209 0 1 0.0000000000000000e+00 1.2775093987429964e+01 2.7876502037209132e+00 7.8660425687928708e+00 0 0 0
+115 0 1 0.0000000000000000e+00 1.5953878584397543e+01 2.1331437318900197e+00 7.7920539738747729e+00 0 0 0
+113 0 1 0.0000000000000000e+00 1.7594346938253473e+01 3.6101250543781265e+00 5.8930014544584397e+00 0 0 0
+217 0 1 0.0000000000000000e+00 1.9006038336231299e+01 2.0428447377502406e+00 8.0842686406132955e+00 0 0 0
+34 0 1 0.0000000000000000e+00 2.1407712216998760e+01 3.1343213145857560e+00 6.6456637027161198e+00 0 0 0
+237 0 1 0.0000000000000000e+00 2.2671064997800414e+01 1.3265197864644096e+00 8.6798805577306410e+00 0 0 0
+4 0 1 0.0000000000000000e+00 2.3247965633149207e+01 4.4140495649347056e+00 8.6267333125394448e+00 -1 0 0
+28 0 1 0.0000000000000000e+00 4.8632165087479402e+00 5.7361455367411871e+00 5.1344037308608925e+00 0 0 0
+38 0 1 0.0000000000000000e+00 2.5216678754910991e+00 7.7129161094277610e+00 6.2644931071174970e+00 1 0 0
+106 0 1 0.0000000000000000e+00 3.4892783125321483e+00 5.5688118723007403e+00 8.3094876104654638e+00 0 0 0
+105 0 1 0.0000000000000000e+00 8.0415788268235548e+00 4.8547968059717572e+00 5.6051170729245401e+00 0 0 0
+108 0 1 0.0000000000000000e+00 6.5888218648817398e+00 6.8889327548352677e+00 7.5061980160478825e+00 0 0 0
+32 0 1 0.0000000000000000e+00 5.3425106858660172e+00 8.8037253049861661e+00 5.6141276677693570e+00 0 0 0
+131 0 1 0.0000000000000000e+00 8.8600339220754023e+00 7.7543034161630162e+00 5.8690132998739708e+00 0 0 0
+232 0 1 0.0000000000000000e+00 1.0156996634128344e+01 6.2839185097188217e+00 8.1472929287189189e+00 0 0 0
+151 0 1 0.0000000000000000e+00 1.1798005478001496e+01 7.7381999792435279e+00 5.6439346409759468e+00 0 0 0
+112 0 1 0.0000000000000000e+00 1.3122931283357754e+01 5.8480905399082266e+00 8.1362270833059007e+00 0 0 0
+135 0 1 0.0000000000000000e+00 1.4961254380833777e+01 7.3414848010848965e+00 5.8842029833956602e+00 0 0 0
+194 0 1 0.0000000000000000e+00 1.9694144593394633e+01 5.0882370814131423e+00 7.8995573376174413e+00 0 1 0
+233 0 1 0.0000000000000000e+00 1.6481138484101692e+01 5.5360238635529493e+00 7.8794964064100785e+00 0 0 0
+139 0 1 0.0000000000000000e+00 1.7995252375042313e+01 6.8759224775005192e+00 5.6230770153408054e+00 0 0 0
+136 0 1 0.0000000000000000e+00 1.6858035334988802e+01 8.7257227588972590e+00 7.9625449072320817e+00 0 0 0
+118 0 1 0.0000000000000000e+00 2.0016407552300542e+01 8.2263797865259676e+00 7.6953795326969869e+00 0 0 0
+37 0 1 0.0000000000000000e+00 2.2494412898320441e+01 6.5980919827206366e+00 6.7389239702512391e+00 0 0 0
+122 0 1 0.0000000000000000e+00 4.1435987889381849e+00 8.7727783482148709e+00 8.4868600396004332e+00 0 0 0
+23 0 1 0.0000000000000000e+00 3.0858691274839267e+00 1.0802771977632743e+01 6.4874479853156686e+00 0 0 0
+141 0 1 0.0000000000000000e+00 4.8664982532470589e+00 1.1879944681609270e+01 8.5973294096962896e+00 0 0 0
+132 0 1 0.0000000000000000e+00 7.2855713113993668e+00 9.9817758499740403e+00 7.5152269118030492e+00 0 0 0
+148 0 1 0.0000000000000000e+00 5.9924656539863861e+00 1.1770706142993514e+01 5.6072716548603037e+00 0 0 0
+126 0 1 0.0000000000000000e+00 9.1360484285991710e+00 1.1261809682553537e+01 5.6417373950746326e+00 0 0 0
+147 0 1 0.0000000000000000e+00 1.0511450491098968e+01 9.3900067661677049e+00 7.9938352742959831e+00 0 0 0
+150 0 1 0.0000000000000000e+00 1.2171820860409877e+01 1.0816729307547522e+01 5.5894671641854927e+00 0 0 0
+230 0 1 0.0000000000000000e+00 1.3452480725497622e+01 9.0574168542176299e+00 7.9409009580720911e+00 0 0 0
+173 0 1 0.0000000000000000e+00 1.5278809652038502e+01 1.0327495302810183e+01 5.6213465060383756e+00 0 0 0
+196 0 1 0.0000000000000000e+00 1.4077951297246084e+01 1.2284625992336055e+01 7.9147103603133768e+00 0 0 0
+137 0 1 0.0000000000000000e+00 1.8510728517294716e+01 1.0174869440231335e+01 5.7413146981744827e+00 0 0 0
+179 0 1 0.0000000000000000e+00 1.7395460691071065e+01 1.1849999972820157e+01 7.9114986745576585e+00 0 0 0
+157 0 1 0.0000000000000000e+00 2.2783647711835393e+01 9.8261326059402592e+00 7.2870650064948510e+00 0 0 0
+273 0 1 0.0000000000000000e+00 2.0374853851954782e+01 1.1443162785402906e+01 8.0298766450988488e+00 0 0 0
+143 0 1 0.0000000000000000e+00 3.6388942743246382e+00 1.3782593122638236e+01 6.6249936684779307e+00 0 0 0
+99 0 1 0.0000000000000000e+00 2.3792242468433628e+01 1.5647464813783339e+01 7.0183271306345807e+00 0 0 0
+48 0 1 0.0000000000000000e+00 6.4637289852294630e+00 1.4932633631031074e+01 5.6195626048127671e+00 0 0 0
+263 0 1 0.0000000000000000e+00 7.7432017194007656e+00 1.3298858418450155e+01 7.7620490431788056e+00 0 0 0
+152 0 1 0.0000000000000000e+00 1.0828805198341584e+01 1.2634832066572933e+01 8.1002712397139653e+00 0 0 0
+172 0 1 0.0000000000000000e+00 9.7188643074506995e+00 1.4345963414471681e+01 5.6163661003748304e+00 0 0 0
+246 0 1 0.0000000000000000e+00 1.1221008813975892e+01 1.5561180428406479e+01 8.1759311142006013e+00 0 0 0
+250 0 1 0.0000000000000000e+00 1.2622905218570349e+01 1.4113942459967131e+01 5.6857947507204480e+00 0 0 0
+278 0 1 0.0000000000000000e+00 1.4771666072078849e+01 1.5182256991769439e+01 7.9225739138160405e+00 0 0 0
+40 0 1 0.0000000000000000e+00 1.6249213299653306e+01 1.3554333379835640e+01 5.8464062712757423e+00 0 0 0
+277 0 1 0.0000000000000000e+00 1.7909953799021537e+01 1.4958081484984932e+01 8.1517385022560624e+00 0 0 0
+138 0 1 0.0000000000000000e+00 1.9099356918377929e+01 1.3284879458512091e+01 5.7372132970751180e+00 0 0 0
+154 0 1 0.0000000000000000e+00 2.2109677713816474e+01 1.4507328266371252e+01 5.0841266192055121e+00 0 0 0
+163 0 1 0.0000000000000000e+00 2.3511918914630158e+01 1.2740739158200027e+01 7.1336322327409984e+00 -1 0 0
+140 0 1 0.0000000000000000e+00 2.1027616492913367e+01 1.4696508532968947e+01 8.1463171235816176e+00 0 0 0
+68 0 1 0.0000000000000000e+00 4.0731925932318376e+00 1.6901024247342100e+01 6.6146108061192646e+00 0 0 0
+164 0 1 0.0000000000000000e+00 1.9553727953090183e+00 1.8885475944379678e+01 7.6016837811012703e+00 0 0 0
+166 0 1 0.0000000000000000e+00 4.6223755795604653e+00 2.0144296584094647e+01 6.6573155491180946e+00 0 0 0
+168 0 1 0.0000000000000000e+00 8.2629040215191090e+00 1.6273765815895256e+01 7.9210385433208987e+00 0 0 0
+165 0 1 0.0000000000000000e+00 6.9577521925606716e+00 1.8035519797116507e+01 5.4232401208809309e+00 0 0 0
+266 0 1 0.0000000000000000e+00 8.8063134243009635e+00 1.9229730282682553e+01 8.0682126231462270e+00 0 0 0
+269 0 1 0.0000000000000000e+00 1.0150379865133408e+01 1.7695066228472946e+01 5.8463151005943867e+00 0 0 0
+270 0 1 0.0000000000000000e+00 1.1936810834345863e+01 1.9094624411880858e+01 7.9645082210988782e+00 0 0 0
+176 0 1 0.0000000000000000e+00 1.3148232952265914e+01 1.7402136223047499e+01 5.8370129646532227e+00 0 0 0
+291 0 1 0.0000000000000000e+00 1.5078413103881521e+01 1.8373377553948238e+01 7.9602164709807468e+00 0 0 0
+80 0 1 0.0000000000000000e+00 1.9925812377823505e+01 1.6350486893089453e+01 5.8247743929032199e+00 0 0 0
+293 0 1 0.0000000000000000e+00 1.6387630834983778e+01 1.6816774733087328e+01 5.8248798361723111e+00 0 0 0
+95 0 1 0.0000000000000000e+00 1.8221606591798448e+01 1.8038348999728775e+01 7.7529579910351343e+00 0 0 0
+98 0 1 0.0000000000000000e+00 2.2663370162775607e+01 1.7598060841258182e+01 5.1348033592543461e+00 0 0 0
+198 0 1 0.0000000000000000e+00 2.0415526566484779e+01 1.9518908344374402e+01 6.1814552473128668e+00 0 0 0
+180 0 1 0.0000000000000000e+00 2.1750536281896018e+01 1.7613957760815097e+01 8.0615010870394066e+00 0 0 0
+298 0 1 0.0000000000000000e+00 2.2987843661009575e+00 2.2127128271865253e+01 7.8825116040053063e+00 1 0 0
+103 0 1 0.0000000000000000e+00 5.1495972813780755e+00 2.3029880301671838e+01 7.0336733045732336e+00 0 -1 0
+169 0 1 0.0000000000000000e+00 7.2572752200350088e+00 2.1269075065656253e+01 5.8495099540086493e+00 0 0 0
+189 0 1 0.0000000000000000e+00 1.0463509088453899e+01 2.0820428518164626e+01 5.6051546836574424e+00 0 0 0
+286 0 1 0.0000000000000000e+00 9.3868633530368868e+00 2.2538603627457128e+01 8.0443835828994708e+00 0 0 0
+292 0 1 0.0000000000000000e+00 1.2288546711857006e+01 2.2330380552258362e+01 8.0000139945321038e+00 0 0 0
+96 0 1 0.0000000000000000e+00 1.4001668533215641e+01 2.3619854635165872e+01 5.6995670711642878e+00 0 0 0
+193 0 1 0.0000000000000000e+00 1.3746148289881964e+01 2.0474835452497054e+01 5.6919034202468826e+00 0 0 0
+17 0 1 0.0000000000000000e+00 1.5447814525879471e+01 2.1584871025389532e+01 8.1777214468104198e+00 0 -1 0
+190 0 1 0.0000000000000000e+00 1.6922745530681254e+01 1.9898934332931759e+01 5.6576780654786401e+00 0 0 0
+200 0 1 0.0000000000000000e+00 1.7052566280903083e+01 2.2877741607059413e+01 5.9501159187034478e+00 0 0 0
+199 0 1 0.0000000000000000e+00 1.8860114911501284e+01 2.1312286005804559e+01 7.9806765380410303e+00 0 0 0
+84 0 1 0.0000000000000000e+00 2.3088485890286059e+01 2.0709402849998781e+01 5.3037728195660758e+00 -1 0 0
+182 0 1 0.0000000000000000e+00 2.0954370247143842e+01 2.2692210844824103e+01 6.4891479116171924e+00 -1 0 0
+218 0 1 0.0000000000000000e+00 1.8872742878386650e+00 2.5397706516748744e+00 1.0713762762809692e+01 1 0 0
+124 0 1 0.0000000000000000e+00 5.0136966686654620e+00 3.7006666906609551e+00 1.0181580218539960e+01 0 0 0
+187 0 1 0.0000000000000000e+00 7.0959154136072549e+00 1.7909405578556232e+00 9.3282679218014959e+00 0 1 0
+203 0 1 0.0000000000000000e+00 6.1081140099853357e+00 1.5697169648323144e+00 1.2334041297157421e+01 0 0 0
+206 0 1 0.0000000000000000e+00 7.7421809447740779e+00 5.0940554541343719e+00 9.4967654045109899e+00 0 0 0
+204 0 1 0.0000000000000000e+00 6.4980945058789628e+00 5.1633736402333259e+00 1.2520671920380829e+01 0 0 0
+188 0 1 0.0000000000000000e+00 8.6974817677137786e+00 3.1248778270711646e+00 1.1540047282211210e+01 0 1 0
+227 0 1 0.0000000000000000e+00 1.1520473669209400e+01 4.2760193440274499e+00 1.0325706633237900e+01 0 0 0
+290 0 1 0.0000000000000000e+00 1.0913711248995355e+01 2.3774472097378101e+01 1.0484541153922892e+01 0 0 0
+211 0 1 0.0000000000000000e+00 1.4631814701480703e+01 3.8459426053144297e+00 1.0368164694540779e+01 0 0 0
+334 0 1 0.0000000000000000e+00 1.7667099569386252e+01 3.7931366837976910e+00 1.0122408314796791e+01 0 0 0
+314 0 1 0.0000000000000000e+00 1.9134364680029854e+01 1.7687806145479128e+00 1.2428073924111473e+01 0 0 0
+119 0 1 0.0000000000000000e+00 2.0833820013772240e+01 3.1368034086196719e+00 1.0151818848147789e+01 0 0 0
+224 0 1 0.0000000000000000e+00 2.7148984989448346e+00 5.9210065548769970e+00 1.1266078443400543e+01 0 0 0
+221 0 1 0.0000000000000000e+00 1.3379014495151922e+00 7.6199720723376503e+00 9.1390091924975181e+00 0 0 0
+129 0 1 0.0000000000000000e+00 8.3724035312072296e+00 8.2055717122030654e+00 9.8218467419050750e+00 0 0 0
+225 0 1 0.0000000000000000e+00 5.3953678703465746e+00 6.8943585704749708e+00 1.0316211629709741e+01 0 0 0
+228 0 1 0.0000000000000000e+00 9.4521360114595634e+00 6.2662714886080204e+00 1.1758395928498729e+01 0 0 0
+229 0 1 0.0000000000000000e+00 1.1530654697378401e+01 7.7686057606154959e+00 1.0255708204717200e+01 0 0 0
+235 0 1 0.0000000000000000e+00 1.4932374737862055e+01 7.3750772252033299e+00 1.0309115170249378e+01 0 0 0
+326 0 1 0.0000000000000000e+00 1.3339071423334406e+01 5.8133102624061870e+00 1.2323003630732771e+01 0 0 0
+240 0 1 0.0000000000000000e+00 1.8113111140998356e+01 6.9026367060862199e+00 1.0345928210269221e+01 0 0 0
+212 0 1 0.0000000000000000e+00 1.6789847700816772e+01 8.6101420650371061e+00 1.2378227204231514e+01 0 0 0
+336 0 1 0.0000000000000000e+00 1.9668099578212257e+01 4.9762909847176893e+00 1.2546275646173253e+01 0 0 0
+216 0 1 0.0000000000000000e+00 1.6582495892483401e+01 5.3336467139263197e+00 1.2476343577491772e+01 0 0 0
+353 0 1 0.0000000000000000e+00 2.0015003905383089e+01 8.0604631281359822e+00 1.2554712921957028e+01 0 0 0
+20 0 1 0.0000000000000000e+00 2.1320090873984704e+01 6.4006390237414212e+00 1.0252507121396205e+01 0 0 0
+259 0 1 0.0000000000000000e+00 2.3097251307947005e+01 7.8528208839818383e+00 1.2423947881811365e+01 0 0 0
+241 0 1 0.0000000000000000e+00 3.2493841819366329e+00 9.0341766526756562e+00 1.1646977634584513e+01 0 0 0
+121 0 1 0.0000000000000000e+00 2.0147231956276377e+00 1.0716144574090267e+01 9.5381188559207661e+00 0 0 0
+145 0 1 0.0000000000000000e+00 3.7194028438065572e+00 1.2031402183702562e+01 1.1590152551427382e+01 0 0 0
+128 0 1 0.0000000000000000e+00 5.9853533471237412e+00 1.0134932446095869e+01 1.0675954612256923e+01 0 0 0
+47 0 1 0.0000000000000000e+00 8.6964664332245611e+00 1.1416207423435477e+01 1.0006047317064588e+01 0 0 0
+226 0 1 0.0000000000000000e+00 1.0102204952947920e+01 9.4936067745378363e+00 1.2139589549548113e+01 0 0 0
+231 0 1 0.0000000000000000e+00 1.2226751169940819e+01 1.0758004665872434e+01 1.0149923174456614e+01 0 0 0
+234 0 1 0.0000000000000000e+00 1.5212256598061439e+01 1.0432132163403772e+01 1.0130246634581084e+01 0 0 0
+330 0 1 0.0000000000000000e+00 1.3640312290789897e+01 8.8537396763870433e+00 1.2541083803923355e+01 0 0 0
+238 0 1 0.0000000000000000e+00 1.8506573798268647e+01 9.9448209997541674e+00 1.0104152140242576e+01 0 0 0
+255 0 1 0.0000000000000000e+00 1.7423249341425773e+01 1.1593329219639402e+01 1.2365587799334673e+01 0 0 0
+123 0 1 0.0000000000000000e+00 2.1711318470714836e+01 9.4859069803147751e+00 9.9410481269650308e+00 -1 0 0
+261 0 1 0.0000000000000000e+00 2.4723560942954510e+00 1.4189000205666954e+01 9.2963413343117338e+00 0 0 0
+144 0 1 0.0000000000000000e+00 4.2662704193069665e+00 1.4958502635678389e+01 1.1841692433228888e+01 0 0 0
+258 0 1 0.0000000000000000e+00 5.4618213105258295e+00 1.5013267942422646e+01 8.7061834820147030e+00 1 0 0
+252 0 1 0.0000000000000000e+00 6.5216393235086070e+00 1.3234369123717382e+01 1.0812879037749463e+01 0 0 0
+167 0 1 0.0000000000000000e+00 9.3393880093803734e+00 1.4517313666670228e+01 1.0123797772828084e+01 0 0 0
+249 0 1 0.0000000000000000e+00 1.0820234650554157e+01 1.2695674328764669e+01 1.2165475008654736e+01 0 0 0
+171 0 1 0.0000000000000000e+00 1.2866180388432159e+01 1.3765649629459750e+01 1.0255227996207136e+01 0 0 0
+160 0 1 0.0000000000000000e+00 1.5970226848888231e+01 1.3583045758920283e+01 1.0103434881149287e+01 0 0 0
+155 0 1 0.0000000000000000e+00 1.9195022845738265e+01 1.2996197874258973e+01 1.0343639969654648e+01 0 0 0
+378 0 1 0.0000000000000000e+00 1.9603079705440898e+01 1.6254235908915202e+01 1.0381185264237633e+01 0 0 0
+159 0 1 0.0000000000000000e+00 2.2355675074442374e+01 1.2567783428866651e+01 1.0316475910490739e+01 0 0 0
+283 0 1 0.0000000000000000e+00 2.2767273384079068e+01 1.6096502976836781e+01 1.0485404121853508e+01 -1 0 0
+264 0 1 0.0000000000000000e+00 3.1003049358429822e+00 1.7015109157479500e+01 9.8146405285418563e+00 0 0 0
+262 0 1 0.0000000000000000e+00 5.7615080185286800e+00 1.8200485170940546e+01 8.8168116522506050e+00 0 0 0
+184 0 1 0.0000000000000000e+00 5.0399054528864697e+00 1.8053058927046571e+01 1.1989835727710188e+01 0 0 0
+285 0 1 0.0000000000000000e+00 7.2270913964653669e+00 1.6278171754562734e+01 1.0953744242481555e+01 0 0 0
+268 0 1 0.0000000000000000e+00 7.7841322801607955e+00 1.9284133638807390e+01 1.1308577710424338e+01 0 0 0
+365 0 1 0.0000000000000000e+00 1.0155287465506380e+01 1.7491435263324540e+01 1.0309660283927270e+01 0 0 0
+294 0 1 0.0000000000000000e+00 1.3047275426059885e+01 1.7015226696814732e+01 1.0236343244550223e+01 0 0 0
+274 0 1 0.0000000000000000e+00 1.6526504860520085e+01 1.6734105975933822e+01 1.0111082387527549e+01 0 0 0
+394 0 1 0.0000000000000000e+00 1.6931348701067265e+01 1.9865521280048860e+01 1.0087856238478409e+01 0 0 0
+281 0 1 0.0000000000000000e+00 2.0328114394311129e+01 1.9345378335336072e+01 1.0173270033306030e+01 -1 0 0
+381 0 1 0.0000000000000000e+00 2.3662341426030622e+01 1.9176126046480768e+01 1.0378945849852252e+01 -1 0 0
+183 0 1 0.0000000000000000e+00 3.7075514816774615e+00 2.0130353716217741e+01 9.8266048737675042e+00 0 0 0
+104 0 1 0.0000000000000000e+00 4.3430007128136934e+00 2.3304819000803427e+01 1.0114399442558771e+01 0 -1 0
+301 0 1 0.0000000000000000e+00 1.3313768419499967e+00 2.2316301883941229e+01 1.0729672733363850e+01 0 -1 0
+282 0 1 0.0000000000000000e+00 6.5428543798830914e+00 2.1414555450271010e+01 9.0300309356171571e+00 0 0 0
+288 0 1 0.0000000000000000e+00 8.2676303003024252e+00 2.2455100016377145e+01 1.1042854554607374e+01 0 0 0
+363 0 1 0.0000000000000000e+00 5.6273031855431714e+00 2.1266356608932071e+01 1.2113339350770957e+01 0 0 0
+289 0 1 0.0000000000000000e+00 1.0769561666810693e+01 2.0742931674860891e+01 1.0309167673832617e+01 0 0 0
+272 0 1 0.0000000000000000e+00 1.3620037489134665e+01 2.0128061460784565e+01 1.0595550706727604e+01 0 0 0
+390 0 1 0.0000000000000000e+00 1.3858146481852920e+01 2.3497817849237848e+01 1.0130683745398217e+01 0 0 0
+210 0 1 0.0000000000000000e+00 1.7198355698481798e+01 2.3141989643950176e+01 1.0144479474479859e+01 0 -1 0
+201 0 1 0.0000000000000000e+00 2.0504257875305505e+01 2.2426968775516876e+01 1.0335286942302163e+01 -1 -1 0
+321 0 1 0.0000000000000000e+00 3.8143229294795935e+00 3.8781102775411762e+00 1.3064272914405162e+01 0 0 0
+324 0 1 0.0000000000000000e+00 1.6583327162818491e+00 2.7779515950487843e+00 1.4816348375777151e+01 0 0 0
+304 0 1 0.0000000000000000e+00 4.8704650500512319e+00 2.0750350507721014e+00 1.5186939580081853e+01 0 0 0
+305 0 1 0.0000000000000000e+00 7.8398786786045775e+00 3.0453717443782078e+00 1.4760560735248553e+01 0 0 0
+202 0 1 0.0000000000000000e+00 1.0641733970014132e+01 4.4253536711171844e+00 1.3674349896280113e+01 0 0 0
+307 0 1 0.0000000000000000e+00 1.1798281355826306e+01 2.3596703690138900e+00 1.6036361718708534e+01 0 0 0
+205 0 1 0.0000000000000000e+00 1.0234691655189717e+01 2.3729420873880052e+01 1.3669727646663919e+01 0 -1 0
+213 0 1 0.0000000000000000e+00 1.6033143921710479e+01 1.8276481866868857e+00 1.2417006978886505e+01 0 0 0
+207 0 1 0.0000000000000000e+00 1.2859033380315925e+01 2.3776452061468167e+00 1.2577419554941565e+01 0 0 0
+333 0 1 0.0000000000000000e+00 1.4528127937640539e+01 3.7455088493084210e+00 1.4594245256786261e+01 0 0 0
+335 0 1 0.0000000000000000e+00 1.7864178222811518e+01 3.6155018951285776e+00 1.4784608408470836e+01 0 0 0
+337 0 1 0.0000000000000000e+00 2.2710272777798856e+01 4.5020964647920181e+00 1.2252401403936023e+01 0 0 0
+239 0 1 0.0000000000000000e+00 2.2193054281968045e+01 1.5294562893972810e+00 1.2329541010377469e+01 0 0 0
+318 0 1 0.0000000000000000e+00 2.1155209927739712e+01 3.1830618518744398e+00 1.4783102218283112e+01 0 0 0
+243 0 1 0.0000000000000000e+00 4.5422082584929235e+00 7.1552598818434054e+00 1.3585455104424055e+01 0 0 0
+322 0 1 0.0000000000000000e+00 1.9560106502865535e+00 6.0334468959388134e+00 1.4444334868472565e+01 0 0 0
+127 0 1 0.0000000000000000e+00 7.2475725496301386e+00 8.1055785143797738e+00 1.2735961907138826e+01 0 0 0
+222 0 1 0.0000000000000000e+00 5.8310236531476161e+00 5.1030451621718038e+00 1.5495426939405480e+01 0 0 0
+302 0 1 0.0000000000000000e+00 8.5117507220957194e+00 6.2096501917845437e+00 1.4847167191646211e+01 0 0 0
+345 0 1 0.0000000000000000e+00 6.2546589587389976e+00 8.4468131227827037e+00 1.5703296858884217e+01 0 0 0
+251 0 1 0.0000000000000000e+00 1.1333768217292850e+01 7.3511053678384943e+00 1.4076816574887905e+01 0 0 0
+306 0 1 0.0000000000000000e+00 1.2358094303311193e+01 5.3700989712815161e+00 1.6068767505447425e+01 0 0 0
+355 0 1 0.0000000000000000e+00 1.5191477224012292e+01 6.6522904786414063e+00 1.4832744639823769e+01 0 0 0
+332 0 1 0.0000000000000000e+00 1.3171085009710668e+01 8.6807260236814230e+00 1.6338289297492040e+01 0 0 0
+236 0 1 0.0000000000000000e+00 1.8245105228745402e+01 6.7752211273704432e+00 1.4675702608011420e+01 0 0 0
+458 0 1 0.0000000000000000e+00 2.1379618062107426e+01 6.3074190094004816e+00 1.4632753589518023e+01 0 0 0
+339 0 1 0.0000000000000000e+00 2.2248389164366289e+00 8.8935387863002013e+00 1.4565809862777924e+01 1 0 0
+341 0 1 0.0000000000000000e+00 2.9199449555580737e+00 1.1896200581910723e+01 1.4787170895135407e+01 0 0 0
+323 0 1 0.0000000000000000e+00 5.0598821458236909e+00 1.0231264039550947e+01 1.3608300838083379e+01 0 0 0
+265 0 1 0.0000000000000000e+00 7.8916267852027859e+00 1.1360237147030622e+01 1.3095882422639731e+01 0 0 0
+248 0 1 0.0000000000000000e+00 6.9927075614471530e+00 1.1605468776993535e+01 1.6212650360388320e+01 0 0 0
+208 0 1 0.0000000000000000e+00 9.2131233289198384e+00 9.2163023958823800e+00 1.5017136158591535e+01 0 0 0
+253 0 1 0.0000000000000000e+00 1.2139898159486807e+01 1.0695335271582994e+01 1.4435763623102272e+01 0 0 0
+349 0 1 0.0000000000000000e+00 1.4200325244891397e+01 1.1848323244160573e+01 1.2707443248418986e+01 0 0 0
+260 0 1 0.0000000000000000e+00 1.5600848049495813e+01 1.0071765567844407e+01 1.4693012606809242e+01 0 0 0
+444 0 1 0.0000000000000000e+00 1.8663005113477979e+01 9.8920874237085457e+00 1.4677836575377889e+01 -1 0 0
+242 0 1 0.0000000000000000e+00 2.3625192815703482e+01 1.0882019845734142e+01 1.2376017360782434e+01 -1 0 0
+244 0 1 0.0000000000000000e+00 2.0475996972524804e+01 1.1231899983094319e+01 1.2285251690446319e+01 -1 0 0
+379 0 1 0.0000000000000000e+00 2.1829559410991500e+01 9.5687650438974305e+00 1.4716817385274579e+01 0 0 0
+377 0 1 0.0000000000000000e+00 1.3800032872767720e+00 1.3981760018537674e+01 1.2566523553342488e+01 1 0 0
+399 0 1 0.0000000000000000e+00 3.3976104078387657e+00 1.5158919637058419e+01 1.4801153404213084e+01 1 0 0
+267 0 1 0.0000000000000000e+00 5.7135612615451219e+00 1.3369921918725762e+01 1.3729422229687348e+01 0 0 0
+370 0 1 0.0000000000000000e+00 8.6812375488999862e+00 1.4755622293868214e+01 1.3195429039858892e+01 0 0 0
+177 0 1 0.0000000000000000e+00 1.1545919995948431e+01 1.5725832316510889e+01 1.2563423348391915e+01 0 0 0
+245 0 1 0.0000000000000000e+00 9.8199057818275879e+00 1.2421780075707254e+01 1.5218591927711270e+01 0 0 0
+366 0 1 0.0000000000000000e+00 1.0440246046295620e+01 1.5687074648092002e+01 1.5431361478059793e+01 0 0 0
+295 0 1 0.0000000000000000e+00 1.4723768299299005e+01 1.4876587681878615e+01 1.2762848767346004e+01 0 0 0
+275 0 1 0.0000000000000000e+00 1.2546645303437604e+01 1.3730102582009275e+01 1.4621059932799772e+01 0 0 0
+254 0 1 0.0000000000000000e+00 1.6103363072281219e+01 1.3056993918420401e+01 1.4841354498337248e+01 0 0 0
+257 0 1 0.0000000000000000e+00 1.7954217527243578e+01 1.4855142999719220e+01 1.2432512881264620e+01 0 0 0
+477 0 1 0.0000000000000000e+00 1.9076267008047175e+01 1.2844149036020097e+01 1.4685169736063795e+01 0 0 0
+397 0 1 0.0000000000000000e+00 1.9511742390721075e+01 1.5950352449861114e+01 1.4785493423425612e+01 0 0 0
+297 0 1 0.0000000000000000e+00 2.1062811955844928e+01 1.4210603466793891e+01 1.2648621842272245e+01 0 0 0
+344 0 1 0.0000000000000000e+00 2.2379268543331861e+01 1.2543720954741152e+01 1.4828870185378342e+01 -1 0 0
+358 0 1 0.0000000000000000e+00 2.2488164478556278e+01 1.5874537067496332e+01 1.4866914161597824e+01 0 0 0
+299 0 1 0.0000000000000000e+00 2.0142007195826181e+00 1.7208787727570318e+01 1.2524187903467052e+01 1 0 0
+401 0 1 0.0000000000000000e+00 3.9272524457126705e+00 1.8273462567030364e+01 1.4850190078897462e+01 0 -1 0
+361 0 1 0.0000000000000000e+00 6.1324949843013048e+00 1.6481005837205657e+01 1.4119509980097449e+01 0 0 0
+287 0 1 0.0000000000000000e+00 6.6917539243428887e+00 1.9429352132793191e+01 1.4368391324297047e+01 0 0 0
+276 0 1 0.0000000000000000e+00 1.1806751145147258e+01 1.8711455139882986e+01 1.2671617414329763e+01 0 0 0
+393 0 1 0.0000000000000000e+00 9.1458793438791233e+00 1.7570945965172662e+01 1.3283411791349039e+01 0 0 0
+392 0 1 0.0000000000000000e+00 1.1047616657751076e+01 1.8791452952590923e+01 1.5545074135800924e+01 0 0 0
+215 0 1 0.0000000000000000e+00 1.4789967241146860e+01 1.8018663519388838e+01 1.2576544462958459e+01 0 -1 0
+473 0 1 0.0000000000000000e+00 1.3306144064191844e+01 1.6939301456750933e+01 1.5003597778392745e+01 0 0 0
+317 0 1 0.0000000000000000e+00 1.8049684961154220e+01 1.8174355865852284e+01 1.2369859463029954e+01 0 -1 0
+280 0 1 0.0000000000000000e+00 1.6515868308044887e+01 1.6516759551014154e+01 1.4831249419317368e+01 0 0 0
+220 0 1 0.0000000000000000e+00 1.6716451624180433e+01 1.9902125397049709e+01 1.4669068281119300e+01 0 -1 0
+284 0 1 0.0000000000000000e+00 1.9870651732186779e+01 1.9504136205826811e+01 1.5098527611888928e+01 -1 0 0
+362 0 1 0.0000000000000000e+00 2.1397577617081701e+01 1.7793810461216204e+01 1.2498228048013747e+01 -1 0 0
+385 0 1 0.0000000000000000e+00 2.3312888821574759e+01 1.8978094728578277e+01 1.4882596723110899e+01 -1 0 0
+223 0 1 0.0000000000000000e+00 3.1836650276086962e+00 2.3337143920348005e+01 1.2792767151513090e+01 0 -1 0
+382 0 1 0.0000000000000000e+00 2.4143599811185066e+00 2.0148060422188408e+01 1.2739412681779447e+01 0 0 0
+384 0 1 0.0000000000000000e+00 4.5255479868540549e+00 2.1588457013156599e+01 1.4917742034262563e+01 0 0 0
+437 0 1 0.0000000000000000e+00 2.3611620723595387e+01 2.2228545310776248e+01 1.4982101170116795e+01 0 -1 0
+386 0 1 0.0000000000000000e+00 7.4684111671817721e+00 2.2538256642236028e+01 1.4634755070287024e+01 0 0 0
+309 0 1 0.0000000000000000e+00 1.2357239122572041e+01 2.1902214910011324e+01 1.2877860331093521e+01 0 -1 0
+387 0 1 0.0000000000000000e+00 9.6579193644274586e+00 2.0756007064425241e+01 1.3549534063115859e+01 0 0 0
+395 0 1 0.0000000000000000e+00 1.1640955718246092e+01 2.1901934118749658e+01 1.5841227222348484e+01 0 0 0
+315 0 1 0.0000000000000000e+00 1.3684554557550673e+01 2.0070952754860542e+01 1.4837854288194951e+01 0 -1 0
+311 0 1 0.0000000000000000e+00 1.5592023386469505e+01 2.1396906373900983e+01 1.2368370801899433e+01 0 -1 0
+430 0 1 0.0000000000000000e+00 1.4366446929146941e+01 2.3370774898470451e+01 1.4709575425200892e+01 0 -1 0
+195 0 1 0.0000000000000000e+00 1.8828197442438480e+01 2.0997896458963567e+01 1.2521834241443210e+01 0 0 0
+296 0 1 0.0000000000000000e+00 1.7497438016013398e+01 2.2997070443689005e+01 1.4805113009339397e+01 0 0 0
+303 0 1 0.0000000000000000e+00 2.2088154067466775e+01 2.0881266471558362e+01 1.2591666008678857e+01 -1 -1 0
+219 0 1 0.0000000000000000e+00 2.0641147777997467e+01 2.2617690708082392e+01 1.4868671480511116e+01 0 -1 0
+422 0 1 0.0000000000000000e+00 3.2793427625967615e+00 4.0726832595589162e+00 1.6948921373268369e+01 0 0 0
+483 0 1 0.0000000000000000e+00 1.6490817560963027e+00 2.6234969168624360e+00 1.9528650338102679e+01 0 1 0
+6 0 1 0.0000000000000000e+00 4.5823468073831108e+00 2.5514033135051202e+00 1.9645120844111695e+01 0 0 -1
+402 0 1 0.0000000000000000e+00 6.6708418090055970e+00 3.5534922628437378e+00 1.7799767738407006e+01 0 0 0
+466 0 1 0.0000000000000000e+00 7.8241973356711583e+00 1.6957611050136880e+00 1.9861897463462363e+01 0 1 0
+90 0 1 0.0000000000000000e+00 8.5436406016987405e+00 4.8280788743895817e+00 1.9823722282497364e+01 0 1 -1
+427 0 1 0.0000000000000000e+00 4.7397313309758351e+00 5.5342470401869104e+00 1.9680878273934525e+01 0 0 0
+492 0 1 0.0000000000000000e+00 9.6836789317929224e+00 4.1779169615125147e+00 1.7094384668205954e+01 0 1 0
+310 0 1 0.0000000000000000e+00 1.0948102677962341e+01 2.2603464095884824e+00 1.9196167552385447e+01 0 0 0
+388 0 1 0.0000000000000000e+00 9.2651949432000595e+00 2.3565482926109929e+01 1.6877759760873808e+01 0 0 0
+410 0 1 0.0000000000000000e+00 1.3633379296999335e+01 3.7047498053204539e+00 1.8158605301826512e+01 0 0 0
+313 0 1 0.0000000000000000e+00 1.5871875916364189e+01 1.8122097887548712e+00 1.7091584511784781e+01 0 0 0
+415 0 1 0.0000000000000000e+00 1.7863920913483305e+01 3.0907049694296553e+00 1.9150829827024360e+01 0 0 0
+300 0 1 0.0000000000000000e+00 1.9394252292000957e+01 1.6505056067581814e+00 1.7048030744468608e+01 0 1 0
+357 0 1 0.0000000000000000e+00 2.0842176227890235e+01 3.3275584979930302e+00 1.8900541098265897e+01 0 0 0
+438 0 1 0.0000000000000000e+00 2.2769962538975577e+01 4.7825963998744125e+00 1.7040949613155924e+01 0 0 0
+383 0 1 0.0000000000000000e+00 2.2422162051067815e+01 2.3793842625377295e+01 1.7111957747003590e+01 -1 0 0
+457 0 1 0.0000000000000000e+00 1.9087541358840683e+00 5.8073212989100558e+00 1.9341626165531110e+01 1 0 0
+328 0 1 0.0000000000000000e+00 3.8137654959615448e+00 7.0168057215367536e+00 1.7192329233947916e+01 0 0 0
+312 0 1 0.0000000000000000e+00 7.2209108357468699e+00 6.7953200454576121e+00 1.8052282566471682e+01 0 0 0
+327 0 1 0.0000000000000000e+00 5.3842924377712125e+00 8.6270712811009993e+00 1.9368845202336438e+01 0 0 0
+350 0 1 0.0000000000000000e+00 8.8720218575447447e+00 7.8291147942182944e+00 2.0068105646434780e+01 0 0 0
+429 0 1 0.0000000000000000e+00 1.1441857179148453e+01 5.5210832754249326e+00 1.9357165195998085e+01 0 0 0
+329 0 1 0.0000000000000000e+00 1.0313759826892417e+01 7.3295408553534029e+00 1.7433347669528139e+01 0 0 0
+30 0 1 0.0000000000000000e+00 1.2179402917702578e+01 8.4942143320628141e+00 1.9602361525441964e+01 0 0 -1
+433 0 1 0.0000000000000000e+00 1.4308658012170488e+01 6.6715496695441781e+00 1.8214193721662703e+01 0 0 0
+340 0 1 0.0000000000000000e+00 1.6315514564116206e+01 4.8635797440201856e+00 1.7252460390328999e+01 0 0 0
+279 0 1 0.0000000000000000e+00 1.9738650574300358e+01 4.8687428845151812e+00 1.6738492972691052e+01 0 0 0
+373 0 1 0.0000000000000000e+00 1.6889004435588525e+01 8.0883414328063026e+00 1.7200697985717866e+01 0 0 0
+338 0 1 0.0000000000000000e+00 1.8366787942167512e+01 5.9624459652949886e+00 1.9266034411882949e+01 0 0 0
+360 0 1 0.0000000000000000e+00 2.0089900414370135e+01 8.1870965849628394e+00 1.6865957464804463e+01 0 0 0
+455 0 1 0.0000000000000000e+00 2.1252926679269166e+01 6.4634532333427694e+00 1.8997889326041175e+01 0 0 0
+459 0 1 0.0000000000000000e+00 2.3373850813552799e+01 7.9153351625639692e+00 1.7142251214747390e+01 0 0 0
+343 0 1 0.0000000000000000e+00 2.3399709929706418e+00 8.9876319507841025e+00 1.9405899601166148e+01 0 0 0
+428 0 1 0.0000000000000000e+00 4.0577390681398944e+00 1.0073042570188536e+01 1.7020773265500505e+01 0 0 0
+342 0 1 0.0000000000000000e+00 3.0647578264636426e+00 1.2300790220819236e+01 1.9187401416690605e+01 0 0 0
+325 0 1 0.0000000000000000e+00 8.1279261039905215e+00 9.7094250246114591e+00 1.7938301940627113e+01 0 0 0
+247 0 1 0.0000000000000000e+00 6.1315622820119824e+00 1.1601791161263350e+01 1.9279521792546923e+01 0 0 0
+271 0 1 0.0000000000000000e+00 1.0913901700015481e+01 1.0605277306717042e+01 1.7285193611622283e+01 0 0 0
+436 0 1 0.0000000000000000e+00 8.7661836802632003e+00 1.2769245899615195e+01 1.8190278074993905e+01 0 0 0
+389 0 1 0.0000000000000000e+00 1.2592346735599611e+01 1.1681863473995175e+01 1.9721561983831080e+01 0 0 0
+175 0 1 0.0000000000000000e+00 1.3682251431472794e+01 1.1554873710770535e+01 1.6798521034181348e+01 0 0 0
+453 0 1 0.0000000000000000e+00 1.4762710371519747e+01 9.7192863766444297e+00 1.8818323670506196e+01 0 0 0
+460 0 1 0.0000000000000000e+00 1.8922850000044882e+01 9.0192642736229161e+00 1.9512502063083424e+01 0 0 0
+375 0 1 0.0000000000000000e+00 1.7479194035554322e+01 1.1225267407080075e+01 1.7156982303525297e+01 0 0 0
+449 0 1 0.0000000000000000e+00 1.9141144608173512e+01 1.1977619409058761e+01 1.9793492781657044e+01 0 0 0
+441 0 1 0.0000000000000000e+00 1.2244263479393851e+00 1.1041887784394568e+01 1.7146117157138370e+01 0 0 0
+58 0 1 0.0000000000000000e+00 2.0622237903284194e+01 1.1440314117913339e+01 1.6995817162283203e+01 0 0 -1
+443 0 1 0.0000000000000000e+00 2.1760607812759467e+01 9.7920529295963235e+00 1.9120200964662310e+01 -1 0 0
+442 0 1 0.0000000000000000e+00 2.2276915874302105e+01 1.2923637413390498e+01 1.9205495049552098e+01 -1 0 0
+446 0 1 0.0000000000000000e+00 3.4710011867707231e+00 1.5512197648336768e+01 1.9432062436716883e+01 0 0 0
+369 0 1 0.0000000000000000e+00 4.5116783913696636e+00 1.3583694590552909e+01 1.6900946437827692e+01 0 0 0
+364 0 1 0.0000000000000000e+00 1.4419920135418178e+00 1.4143375665958862e+01 1.7027986251151120e+01 0 0 0
+346 0 1 0.0000000000000000e+00 7.5324794480537518e+00 1.4660469009919707e+01 1.5989917669673684e+01 0 0 0
+448 0 1 0.0000000000000000e+00 6.3630252223252919e+00 1.4893034819636275e+01 1.9168917473261438e+01 0 0 0
+374 0 1 0.0000000000000000e+00 1.1456656363323882e+01 1.3712801601285520e+01 1.7478781229406508e+01 0 0 0
+426 0 1 0.0000000000000000e+00 9.1899977106520989e+00 1.5701320462379888e+01 1.8918145904614782e+01 0 0 0
+256 0 1 0.0000000000000000e+00 1.5557113930359352e+01 1.2762515114406412e+01 1.8989440097907966e+01 0 0 0
+352 0 1 0.0000000000000000e+00 1.3315842292902248e+01 1.4637039297143051e+01 1.9827503911667279e+01 0 0 0
+376 0 1 0.0000000000000000e+00 1.4556113343584487e+01 1.5139332103054702e+01 1.7103544123650124e+01 0 0 0
+478 0 1 0.0000000000000000e+00 1.7395312786879572e+01 1.7066772212277016e+01 2.0161030853841382e+01 0 0 0
+380 0 1 0.0000000000000000e+00 1.7697780158802253e+01 1.4411199856676024e+01 1.7680729538963618e+01 0 0 0
+461 0 1 0.0000000000000000e+00 2.0840867800089249e+01 1.4553708386384896e+01 1.7236218244089017e+01 -1 0 0
+464 0 1 0.0000000000000000e+00 2.2879116572114306e+01 1.6042022476216694e+01 1.9295412007843396e+01 -1 0 0
+468 0 1 0.0000000000000000e+00 1.9875907101491697e+00 1.7453173557307494e+01 1.7219515227613847e+01 0 0 0
+485 0 1 0.0000000000000000e+00 3.8700212069479822e+00 1.8859318453784489e+01 1.9453942345174518e+01 0 0 0
+462 0 1 0.0000000000000000e+00 8.2384732524259618e+00 1.7700131182212857e+01 1.6591095506803867e+01 0 0 0
+368 0 1 0.0000000000000000e+00 5.0099712789801121e+00 1.6630947556390865e+01 1.7116132003091064e+01 0 0 0
+371 0 1 0.0000000000000000e+00 7.0384789423276262e+00 1.7813727902320302e+01 1.9405450502536311e+01 0 0 0
+405 0 1 0.0000000000000000e+00 5.6560556633155761e+00 1.9904035218560509e+01 1.7319940415668889e+01 0 -1 0
+486 0 1 0.0000000000000000e+00 1.1913366483172474e+01 1.6711325539839667e+01 1.8033906543445255e+01 0 0 0
+367 0 1 0.0000000000000000e+00 9.9834002964329880e+00 1.8789773486576934e+01 1.8932303174858511e+01 0 0 0
+93 0 1 0.0000000000000000e+00 1.5241034238571574e+01 1.8255516786244371e+01 1.7045632914315032e+01 0 0 -1
+451 0 1 0.0000000000000000e+00 1.3986421241670579e+01 1.7711599467639381e+01 1.9846008481131548e+01 0 0 0
+413 0 1 0.0000000000000000e+00 1.8516516842541229e+01 1.7781083779141014e+01 1.7185536264549700e+01 0 -1 0
+495 0 1 0.0000000000000000e+00 1.7815885492009230e+01 1.9955486614432736e+01 2.0336219791271361e+01 0 0 0
+479 0 1 0.0000000000000000e+00 2.0462026394886955e+01 1.8126467892112110e+01 1.9795584805004907e+01 0 0 0
+498 0 1 0.0000000000000000e+00 2.1568690009579214e+01 1.7755261157085606e+01 1.7013223286066399e+01 0 0 0
+85 0 1 0.0000000000000000e+00 2.3387671984842164e+01 1.9048904478003180e+01 1.9491526147513348e+01 -1 0 -1
+421 0 1 0.0000000000000000e+00 3.1020700537196411e+00 2.3562508868652799e+01 1.7345038311256438e+01 0 -1 0
+482 0 1 0.0000000000000000e+00 2.6234269090855906e+00 2.0570249477907026e+01 1.7124657674764073e+01 0 0 0
+408 0 1 0.0000000000000000e+00 4.4697434159237996e+00 2.1958605688304026e+01 1.9631469147322903e+01 0 -1 0
+308 0 1 0.0000000000000000e+00 6.3008057411176672e+00 2.3010945981386172e+01 1.7585709581475989e+01 0 -1 0
+470 0 1 0.0000000000000000e+00 7.4982775924569482e+00 2.0829959231673868e+01 1.9520716387137966e+01 0 0 0
+331 0 1 0.0000000000000000e+00 8.6803848155997390e+00 2.0556818754556652e+01 1.6479506980553921e+01 0 -1 0
+400 0 1 0.0000000000000000e+00 1.0363199322244594e+01 2.1834945078000587e+01 1.9134066304241742e+01 0 0 0
+372 0 1 0.0000000000000000e+00 1.2545291461916758e+01 1.9956195859878072e+01 1.8062349214070544e+01 0 0 0
+391 0 1 0.0000000000000000e+00 1.3325597375249172e+01 2.3064846689692054e+01 1.8264163741080942e+01 0 0 0
+319 0 1 0.0000000000000000e+00 1.5876851458044756e+01 2.1432126091198917e+01 1.7221119735611296e+01 0 -1 0
+396 0 1 0.0000000000000000e+00 1.8874234779446191e+01 2.1050565469231380e+01 1.7372274060623973e+01 0 0 0
+418 0 1 0.0000000000000000e+00 2.3784137248199634e+01 2.2229937324333662e+01 1.9377317556321877e+01 0 -1 0
+398 0 1 0.0000000000000000e+00 2.2234051339461232e+01 2.0453042743149176e+01 1.7185072741059702e+01 0 0 0
+417 0 1 0.0000000000000000e+00 2.0894827073986086e+01 2.0940959199764855e+01 1.9812267624949740e+01 0 -1 0
+403 0 1 0.0000000000000000e+00 3.0580516912199540e+00 4.3964505639929623e+00 2.1823650758655688e+01 0 0 0
+9 0 1 0.0000000000000000e+00 6.2731045845425539e+00 3.8665914421456256e+00 2.1735382760925603e+01 0 0 -1
+92 0 1 0.0000000000000000e+00 9.7067280128924800e+00 3.0054779834404890e+00 2.1937535384348379e+01 0 1 -1
+16 0 1 0.0000000000000000e+00 1.4762221198751645e+01 4.2399443217341899e+00 1.2446810786613483e+00 0 0 0
+489 0 1 0.0000000000000000e+00 1.5386567393375195e+01 1.6339088917933910e+00 2.0099367639442669e+01 0 1 0
+434 0 1 0.0000000000000000e+00 1.5605232875651041e+01 4.6857103729489582e+00 2.0673358926439420e+01 0 0 0
+431 0 1 0.0000000000000000e+00 1.2883262894375749e+01 3.3096509693431879e+00 2.1286392590479174e+01 0 0 0
+15 0 1 0.0000000000000000e+00 1.7018329996463713e+01 2.6713218239280518e+00 2.2539580470377814e+01 0 0 -1
+359 0 1 0.0000000000000000e+00 1.9421303199409628e+01 3.8386812227425526e+00 2.1550693407336851e+01 0 0 0
+404 0 1 0.0000000000000000e+00 2.0493998733401455e+01 1.9079261341783931e+00 2.3630400164416233e+01 -1 0 0
+481 0 1 0.0000000000000000e+00 2.3317623185067035e+01 2.9534189841804510e+00 2.3071154314940230e+01 -1 1 0
+320 0 1 0.0000000000000000e+00 2.1529029648867628e+01 1.3380552487582020e+00 2.0852471750608835e+01 0 0 0
+439 0 1 0.0000000000000000e+00 2.2402543289695423e+01 5.0036599223410478e+00 2.1226806262770047e+01 0 0 0
+423 0 1 0.0000000000000000e+00 3.4379320409256153e+00 7.3665090768613508e+00 2.1898698845677266e+01 0 0 0
+21 0 1 0.0000000000000000e+00 1.3661829007437492e+00 6.2014153521407245e+00 2.3590417373776546e+01 0 0 -1
+26 0 1 0.0000000000000000e+00 5.4694115264971437e+00 8.6522841670602020e+00 1.3317477356921439e+00 0 0 0
+425 0 1 0.0000000000000000e+00 6.4895858142377900e+00 6.8770591935461942e+00 2.1757509706066813e+01 0 0 0
+447 0 1 0.0000000000000000e+00 8.4700060997692894e+00 8.0788931956539827e+00 1.2483111549261778e+00 0 0 1
+29 0 1 0.0000000000000000e+00 1.0390918292477879e+01 6.1161053616317016e+00 2.2244209558658184e+01 0 0 -1
+33 0 1 0.0000000000000000e+00 1.3340927972389425e+01 6.4101066453074340e+00 2.1754799684745208e+01 0 0 -1
+356 0 1 0.0000000000000000e+00 1.6241325698361443e+01 7.4659483755567786e+00 2.0607976406769488e+01 0 0 0
+435 0 1 0.0000000000000000e+00 1.7453519060468345e+01 5.6125363872170073e+00 2.2813612980953330e+01 0 0 0
+454 0 1 0.0000000000000000e+00 1.9996171645370268e+01 6.7633185203582826e+00 2.1795409334988285e+01 0 0 0
+424 0 1 0.0000000000000000e+00 2.3029921567080564e+01 7.9496049644801419e+00 2.1423501970427495e+01 -1 0 0
+79 0 1 0.0000000000000000e+00 2.6431334544417013e+00 1.2283748621032027e+01 2.3754583277347834e+01 1 0 -1
+61 0 1 0.0000000000000000e+00 1.9516680624374068e+00 9.4045712755102535e+00 2.3806173156054150e+01 0 0 -1
+445 0 1 0.0000000000000000e+00 3.9335076857780935e+00 1.0480896131950399e+01 2.1666354972471694e+01 0 0 0
+46 0 1 0.0000000000000000e+00 5.6435447716039056e+00 1.1776551849870891e+01 1.2598469554046603e+00 0 0 0
+51 0 1 0.0000000000000000e+00 6.9905286347769007e+00 9.8639464058458763e+00 2.1494755205846594e+01 0 0 -1
+153 0 1 0.0000000000000000e+00 8.8801259453808044e+00 1.1457068284949628e+01 2.3682434256394725e+01 0 0 -1
+12 0 1 0.0000000000000000e+00 9.9079225794853922e+00 1.0620458402996592e+01 2.0306890619708668e+01 0 0 -1
+36 0 1 0.0000000000000000e+00 1.3860475846930122e+01 9.3539810866107658e+00 2.1812192513759804e+01 0 0 -1
+351 0 1 0.0000000000000000e+00 1.6541058429603275e+01 1.0893751008467202e+01 2.1289197862701059e+01 0 0 0
+53 0 1 0.0000000000000000e+00 1.7892072381361743e+01 8.7747543752591746e+00 2.2901871921874715e+01 0 0 -1
+480 0 1 0.0000000000000000e+00 1.8837315378815234e+01 1.2074121894602870e+01 2.2896306341412192e+01 0 0 0
+347 0 1 0.0000000000000000e+00 2.3458051993832591e+01 1.1171963967013976e+01 2.1140790645569268e+01 -1 0 0
+469 0 1 0.0000000000000000e+00 4.6307229004073633e+00 1.3572889207919312e+01 2.1745972974724275e+01 0 0 0
+348 0 1 0.0000000000000000e+00 1.5956444545685340e+00 1.4208004970559319e+01 2.1499870794039630e+01 0 0 0
+49 0 1 0.0000000000000000e+00 7.8352451292070313e+00 1.3242986726839138e+01 2.1322497922106507e+01 0 0 -1
+452 0 1 0.0000000000000000e+00 8.2615991125518384e+00 1.6424426940744183e+01 2.1766649872944626e+01 0 0 0
+55 0 1 0.0000000000000000e+00 1.0999518090181663e+01 1.3287133650799264e+01 2.1389954876061353e+01 0 0 -1
+56 0 1 0.0000000000000000e+00 1.4264960966631477e+01 1.2564678539742001e+01 2.1994549558608618e+01 0 0 -1
+450 0 1 0.0000000000000000e+00 1.4987114524667517e+01 1.5885456527288524e+01 2.2111731629628636e+01 0 0 0
+497 0 1 0.0000000000000000e+00 2.0028103406767144e+01 1.5209402997923796e+01 1.9964908123541285e+01 0 0 0
+456 0 1 0.0000000000000000e+00 1.7386054157657341e+01 1.4090353316845862e+01 2.1244867747997006e+01 0 0 0
+474 0 1 0.0000000000000000e+00 1.9071921424566476e+01 1.5234793044130358e+01 2.3380044218106754e+01 0 0 0
+178 0 1 0.0000000000000000e+00 2.1329814547662338e+01 1.3234370012847959e+01 2.2209652632157152e+01 0 0 -1
+487 0 1 0.0000000000000000e+00 1.9380361514886837e+00 1.7186721933024160e+01 2.1597577502567802e+01 0 0 0
+465 0 1 0.0000000000000000e+00 4.8760868009537770e+00 1.6829379405923252e+01 2.1805311019774457e+01 0 0 0
+407 0 1 0.0000000000000000e+00 5.5559937314874634e+00 1.9674978206892021e+01 2.1680725803093857e+01 0 -1 0
+409 0 1 0.0000000000000000e+00 8.7721021812446107e+00 1.9407553725863572e+01 2.1747044446004523e+01 0 -1 0
+54 0 1 0.0000000000000000e+00 1.1193818372243703e+01 1.6611464579823050e+01 2.1205512259961225e+01 0 0 -1
+50 0 1 0.0000000000000000e+00 1.1951037461872190e+01 1.9886822311185874e+01 2.0981665059939402e+01 0 0 -1
+471 0 1 0.0000000000000000e+00 1.3207953505795958e+01 1.7933066664946999e+01 2.3467374331438702e+01 0 0 0
+494 0 1 0.0000000000000000e+00 1.5471820406702584e+01 1.9181892812786181e+01 2.2401326577315174e+01 0 0 0
+476 0 1 0.0000000000000000e+00 1.9032135485108832e+01 1.8217629842654688e+01 2.2741001402059744e+01 0 0 0
+463 0 1 0.0000000000000000e+00 2.1580357682162884e+01 1.6256017767198795e+01 2.2134375992729098e+01 -1 0 0
+81 0 1 0.0000000000000000e+00 2.2312546351608212e+01 1.9300036996188119e+01 2.2281333802656043e+01 -1 0 -1
+406 0 1 0.0000000000000000e+00 2.6857209491356278e+00 2.3643231175619192e+01 2.1903290780757906e+01 0 -1 0
+3 0 1 0.0000000000000000e+00 2.5176888633820145e+00 2.0514805581982365e+01 2.1659044289098020e+01 0 -1 -1
+488 0 1 0.0000000000000000e+00 6.1810243918699408e+00 2.2874092847863707e+01 2.1965125033694250e+01 0 0 0
+89 0 1 0.0000000000000000e+00 9.2087409401204869e+00 2.2399741228003847e+01 2.1916821034636563e+01 0 0 -1
+416 0 1 0.0000000000000000e+00 1.2599570525327625e+01 2.2984467581808417e+01 2.1304307003420256e+01 0 -1 0
+14 0 1 0.0000000000000000e+00 1.4446898079204708e+01 1.2127018401735583e+00 1.3078455339910691e+00 0 0 0
+491 0 1 0.0000000000000000e+00 1.3516014707040497e+01 2.0971385671921716e+01 1.3438482910986451e+00 0 0 1
+493 0 1 0.0000000000000000e+00 1.4779330175446079e+01 2.1103954859888255e+01 2.0053272562845876e+01 0 0 0
+414 0 1 0.0000000000000000e+00 1.8223777455214609e+01 2.3018097297814414e+01 2.0074952311347381e+01 0 -1 0
+411 0 1 0.0000000000000000e+00 1.6462861182507833e+01 2.2084488554675382e+01 2.2317440264149809e+01 0 -1 0
+499 0 1 0.0000000000000000e+00 1.9938086928573739e+01 2.1698708098308060e+01 2.3055264051916176e+01 0 0 0
+97 0 1 0.0000000000000000e+00 2.2825069858171958e+01 2.2486101623571258e+01 2.3015680266404772e+01 0 0 -1
+
+Velocities
+
+8 6.0521281385949124e-04 -6.5066936694857286e-04 -1.6897378433743636e-03
+86 9.3976227452845836e-04 -4.1237037544160869e-04 3.5574495827881466e-04
+107 -1.2018771666397366e-03 6.6449024131339353e-04 -2.4366017896001115e-03
+185 -2.9651454722026296e-03 -8.3475608385567704e-04 2.8100964247041485e-04
+412 1.3552534486129890e-03 -2.1433646581123221e-06 -1.9715711258550195e-04
+186 -1.2122203375884823e-03 -3.4023825552682990e-03 -3.8960315017195425e-03
+109 2.8704312022205304e-03 1.7264527261887307e-03 8.4229255194824342e-04
+31 8.5726077547351482e-04 3.4508460507837655e-05 -3.2169563621024149e-03
+111 -1.0064237224388841e-03 -1.3201456044040123e-03 -2.5269429323441228e-03
+420 9.0933858643606769e-05 -2.7937048222966901e-03 1.8900121951416005e-04
+18 -1.0913314325497765e-03 1.3672537985910197e-04 4.2442844365973157e-03
+117 3.3629266428963191e-03 -1.9320681954118597e-04 -3.1048095311714797e-03
+1 -8.7852348092906445e-04 -1.9161985616348887e-04 2.8373383419337309e-03
+35 5.2369361222615431e-04 3.0270629126760880e-03 -2.5924469158614622e-03
+22 -6.7289940505041023e-04 -1.6809391956782568e-03 3.9702085371303092e-03
+27 2.1730698930745975e-03 -3.2090319354893544e-04 2.6226295842316210e-03
+25 -1.1845438540461885e-04 1.9640727318607637e-03 2.0129168114985893e-03
+11 9.1978111493063223e-04 6.1196386340919232e-04 2.7010288222361436e-03
+432 5.3199540368377941e-03 -8.7282557493428413e-04 4.3971530007528561e-03
+116 1.8698999975228952e-03 -1.4287622011162045e-03 -2.7018990923078729e-03
+133 1.0049867104410296e-03 2.3244736204215796e-03 1.0293840668492082e-03
+114 -1.0260003169933884e-03 1.6975081646834693e-04 1.0101360942629800e-03
+440 -1.6952840917561095e-03 1.3430908724801603e-03 4.7577152089204033e-06
+134 -3.0916732217277634e-03 1.7064941345163421e-03 -2.8011906767565437e-04
+316 1.1339608893454051e-03 -8.9665837650427008e-04 -1.1600671990451678e-03
+39 -1.8249146848343654e-03 -1.2298583648757268e-03 -1.7716840663668022e-03
+44 1.6170722894203377e-03 1.7449055571580035e-03 -4.1155291276844669e-03
+57 1.2506963409561866e-03 -3.8316094564970824e-04 9.3462882804220388e-04
+41 -3.1189651466237227e-04 -1.5563564621263524e-03 -2.7456409311475082e-03
+45 -1.6243149919967083e-03 -1.1136788423426261e-03 3.1621225015868772e-04
+146 -2.9419537814975535e-03 2.0599201616446003e-03 -2.2396917654485311e-05
+149 2.4000650226692079e-03 -2.0134406772881002e-03 2.2391429623187823e-03
+130 -3.5089477453745374e-04 1.5352073565577111e-03 -1.9331349164783220e-03
+71 1.9643193513903018e-04 5.2089091345623674e-04 -1.6040108410971773e-03
+156 -1.9319460902342579e-03 2.0242279319691244e-05 2.1941186843322659e-03
+354 -1.7061208382885865e-04 2.9361583243596979e-03 8.0825306918641765e-04
+78 -6.5903744196932638e-04 3.2663167420972031e-03 2.0402406920718311e-04
+24 -1.1728182162094364e-03 -6.2574145602532620e-04 1.1861071988353150e-03
+62 7.8969304265770486e-06 2.8034331345552139e-03 -2.8614548533727607e-03
+60 1.1333898010254220e-03 1.2540446520826760e-04 -2.8803377413030608e-03
+43 1.4410527059234869e-03 2.3497003627651922e-03 -5.0974129395392476e-04
+158 2.4633760429714395e-03 -5.0190526141114520e-04 -6.6401379849366927e-04
+42 1.7370037071607351e-03 -1.2621256413957737e-03 -1.4786491544191603e-03
+467 -1.1175816668652773e-03 -1.8875694092854636e-03 3.2799270824615881e-03
+52 1.7584576722569725e-03 7.9082707666231844e-04 -3.2721089578733296e-04
+65 -2.4052048117743428e-03 -1.1899509452785381e-04 1.0829032797966983e-03
+170 -2.2207039891523599e-03 4.7779637338920839e-03 2.9832206169748488e-03
+73 2.1625802527768024e-03 -2.2824123707896578e-03 -1.5969889896412818e-04
+91 8.4974936913217959e-04 -2.0573087218221160e-04 5.3670229786258498e-04
+72 -2.2029384919354075e-03 1.5293077092366231e-03 -3.2094431983317405e-03
+76 -1.7294101354847890e-03 -1.9899003181520526e-03 -1.1178030837032140e-03
+174 9.1787481389712401e-05 -2.1576143254969956e-03 -2.3328139572560905e-04
+77 2.0804416753400978e-04 1.9339409743275129e-03 -2.5050120717619558e-03
+75 -7.9432079532909376e-04 -1.6759863314429115e-03 -2.3616838311385315e-03
+59 -3.2785386142712997e-03 -7.8178362065052108e-04 -3.3184942845002710e-03
+63 -1.1837775442236900e-03 8.2367218799184042e-04 4.4231294877352971e-03
+181 8.0580695864653081e-05 1.2801689761386577e-03 1.1501198276847714e-03
+484 8.6127482114015672e-05 -2.5718070300256479e-03 1.7076596626893006e-03
+162 3.1096929583512554e-03 -1.2271124127552267e-03 -1.3984844436344740e-03
+64 1.5423823090403100e-03 -4.9209665548404467e-03 4.6296447706718237e-03
+142 -1.8039450923320146e-03 3.4120305409307290e-03 1.2939577225581848e-03
+83 -1.2315306968421812e-03 3.5732049789946592e-03 1.7860611474020017e-03
+70 1.0314242601288969e-03 -1.7627690220299358e-03 2.4555885618765308e-03
+69 -5.0527448379797807e-03 2.1204368669498573e-04 -2.1058021272071319e-03
+214 3.6779286922076408e-04 -2.0247134642577625e-03 1.0226798370768229e-03
+197 -1.5577010773596370e-03 -3.4138572263494090e-03 7.2632911425246356e-04
+475 -2.4478932003680980e-04 1.0543387585000279e-03 -2.1517182855016023e-03
+74 1.6155328516577494e-03 -3.0148641684409056e-04 -2.3105470125064920e-03
+161 -1.8688617907586832e-04 1.6115445378090875e-03 1.2056182941106136e-04
+496 3.7462319398300135e-04 -2.4029791463578234e-03 -9.9018561908680979e-04
+7 -1.3505703027709569e-03 -7.8303190507175344e-04 7.1842600707137125e-04
+102 -1.3493731886708932e-03 6.2483830135696852e-04 9.3979298522489164e-04
+5 6.0550856821912384e-03 -1.6777185682879860e-04 2.5066181965442205e-03
+82 5.0091744084051317e-03 3.8519816618433014e-04 -9.9966815396957016e-04
+88 -2.9131824376185944e-03 -3.5653070471490918e-04 -3.2628731017077762e-03
+66 3.0913140310644968e-03 -2.5224823053198227e-03 -4.0954570596887551e-03
+10 2.4133353914957798e-03 3.6546952166134979e-05 -2.0285255361226504e-03
+67 2.6581503991566065e-04 5.4385970866466447e-05 1.0270760407707763e-03
+472 3.3101477286192676e-03 1.5428578454729737e-03 -2.6849937782977388e-04
+13 2.8629288014156591e-04 7.9277044377107180e-04 1.0680073324975167e-03
+94 2.6533472083534607e-03 4.0058070002924452e-04 -1.3190590033368710e-03
+490 -9.7679024525807801e-05 4.0996549832578963e-04 -3.9295865100183892e-03
+500 -2.2011794798527757e-03 -1.3671760892085738e-03 3.4004876145300551e-03
+100 1.6887264492657111e-04 9.0215589865928674e-05 -8.8366240283769800e-04
+419 -2.8452371785360362e-03 2.9474245434502982e-04 1.3220768665948251e-03
+19 -1.2784778254536543e-03 -2.1574229521627831e-03 -6.3790902045638385e-04
+101 -1.2917468600302066e-03 2.9230595151235215e-03 -3.0671086542054292e-04
+2 -3.0921554723100683e-03 1.6114535138167362e-03 -2.0202407402629542e-03
+125 6.6819739690918243e-04 1.2390480212684583e-03 -9.0540127788543874e-04
+87 2.4301265910488955e-03 2.7825576029609830e-03 -2.6519062895006998e-03
+110 4.5791978750227242e-04 -2.2946171224722308e-03 -2.9021147354527776e-03
+192 -3.8838687050074491e-03 1.2543722072350799e-03 1.1055030447148931e-03
+191 2.6632351792130150e-03 3.5208879519347072e-04 -2.6063184162237470e-04
+120 2.1257462636468994e-03 2.1244781056718853e-03 -9.2726229353198711e-04
+209 -3.3117461170371386e-03 4.9329671752866644e-03 -1.0941911780597599e-03
+115 -3.5353792980863863e-04 6.9659798443967829e-04 2.7827052338330539e-03
+113 -2.1729446462762638e-03 -6.3845401327728541e-04 -8.8726769843279528e-04
+217 -4.8587294575287677e-04 3.0432747559015132e-04 -2.7433896901681927e-03
+34 2.0424854061457318e-04 -1.9879673697686452e-03 6.2869620731991778e-05
+237 2.5772816838968019e-03 -3.8103745395828359e-03 -4.7546848533919393e-05
+4 -3.9565500257460967e-03 3.3769005048003430e-03 -3.8443276019186668e-04
+28 2.1677719228957552e-03 -7.5356574318509635e-04 1.8258487213130439e-03
+38 -2.2561601102415504e-03 3.6892255639157018e-04 6.8293821587142286e-04
+106 -9.1907777936750578e-04 -2.4931936800646317e-03 8.4359699116455641e-04
+105 -1.9777645588981000e-03 1.3289274267834356e-03 1.5246335758681515e-04
+108 2.4224834782917183e-04 2.8444324427226789e-04 3.9157925523322408e-05
+32 4.0184599132017046e-03 -9.6802065392393864e-04 -1.7415842493928764e-03
+131 8.7341400305393860e-04 2.6926766622720308e-03 -4.1712496913318218e-03
+232 -3.2543805991237678e-03 2.0629240237062334e-03 -6.6459255477166143e-04
+151 -1.3554164693283192e-03 8.6651615776319716e-04 -2.6634246662453026e-03
+112 -9.5432765361180155e-04 -1.3964485581203028e-03 1.5314402895548549e-03
+135 4.0412564875750044e-04 1.2600014379033858e-04 -1.1653117828031834e-03
+194 -4.1967221043862936e-04 1.5568437273397525e-03 -2.6658377812005605e-04
+233 8.4429370143309333e-04 1.2254317389084166e-03 1.8304186679659073e-03
+139 3.3650303034381697e-03 1.0525349968104932e-03 2.3894468995837152e-03
+136 -5.0883328976074197e-04 -3.2087465499651933e-03 -2.7557383633733186e-03
+118 -3.0460476433671170e-03 2.1033152425857272e-03 -8.6187991063388597e-04
+37 1.7030871489647019e-03 6.5666279527316494e-04 -7.1603338961717081e-04
+122 2.2904640219469576e-03 -6.7650863560313093e-04 -4.1214778721880884e-03
+23 -1.9789231081274181e-03 -9.1665779217382315e-04 6.4995535926546397e-04
+141 -4.3789779066810620e-05 -1.2610908612437698e-04 -4.2729513167639524e-03
+132 9.8914732538751978e-04 -1.8455096357883856e-03 -1.6295549085397810e-03
+148 3.3151973653906548e-04 8.4199996509370196e-04 2.2329217517879922e-03
+126 1.3816169223454793e-03 -4.9173366841753384e-04 4.4495551186280548e-04
+147 -1.7464219486810200e-03 -5.6732551384960569e-03 -6.4179044687183581e-04
+150 8.4683413234716500e-04 5.4750407058482800e-04 -1.6431910187032505e-03
+230 -2.9062704252160380e-03 -7.4293498825921957e-04 -2.3159526550019620e-03
+173 -1.0131247951220875e-03 3.5913225284269043e-04 1.3248943141158302e-03
+196 -4.2160367931199788e-03 1.3662932295988547e-03 4.3273280922130281e-03
+137 3.6822482524591568e-03 -2.8769871876725118e-03 1.8388859583466524e-03
+179 -3.3171640018601887e-03 3.8245343277855857e-03 -1.4454934264673035e-03
+157 7.8776679757406050e-05 1.3791209994508677e-03 3.0274457577689263e-03
+273 6.3917964749126441e-04 -2.7956982629923329e-03 -9.0842837310893673e-04
+143 1.5575306090443824e-04 -1.8599851428697921e-03 -9.6865035005593502e-04
+99 1.8723329772466395e-03 -4.1549674915302278e-03 1.6178574491850697e-03
+48 -6.6214117532955902e-04 -1.5163127766827241e-03 -1.6845589507778738e-03
+263 3.9569205029553424e-04 2.0242166572626836e-03 -3.8971083380304580e-03
+152 1.2270079232985819e-03 2.1629872053313373e-03 1.1155711238540001e-03
+172 1.4307887106113823e-03 3.9714544730720159e-04 1.6228853795139731e-03
+246 -1.0146567094905933e-03 3.5312608063643412e-03 8.5796090934567889e-04
+250 8.1250663419876756e-05 -1.5726002906629164e-03 2.5364759644003031e-04
+278 -2.1066150002927021e-03 -1.7486796840893298e-04 -1.2543220054655700e-03
+40 -1.9819606691295808e-03 2.6065930720805771e-03 3.7954965468424209e-03
+277 2.7487742241007924e-03 1.9824966422203015e-03 3.0713100878106995e-03
+138 -6.3757900689721976e-04 1.6302193815041989e-03 -3.9762719415898512e-04
+154 -1.4955171353207640e-03 6.2831768726329389e-04 2.4477383161461449e-03
+163 3.6779103330884324e-05 3.5354653400207817e-03 -3.0295806521116273e-03
+140 -2.3322220120637199e-03 3.9738554436906173e-03 -1.5316815403335388e-03
+68 -3.0005235095317976e-03 -7.3702424221601750e-04 1.0075834316419472e-04
+164 -1.4245015329184900e-03 -4.0966859109289828e-04 8.2467353219426831e-04
+166 -1.3121338021372000e-03 -1.6054343399668051e-03 1.6367053765616072e-03
+168 3.3238723077972954e-04 -1.7401874337566160e-04 2.6287427707644026e-04
+165 4.5052006537687627e-04 -1.5030899050417950e-03 -1.4229247194073558e-03
+266 6.6321733764635881e-04 -1.3573290613101200e-03 1.4781690475847696e-03
+269 -3.5751182926200961e-03 -1.0759827591088531e-03 -7.2394152099884322e-04
+270 -1.1686040487852213e-03 -2.3596172335364316e-03 -2.5275949993918377e-04
+176 3.7415180433717212e-03 -2.1311593888505111e-04 -3.3680527269647721e-03
+291 3.2679820700807971e-03 -1.3394190063250125e-03 -1.2305861972799373e-03
+80 -2.0401167909280819e-03 -1.4770636417382411e-03 -9.0129081454322802e-04
+293 -1.3286156135134566e-03 -2.8150308567680366e-05 -3.0637805774495807e-04
+95 5.4764552878067564e-04 -2.3788441158536420e-03 3.8348154051483290e-03
+98 3.7279007974182878e-03 5.5696523742809875e-04 2.0343105387712734e-03
+198 -6.6297366061811129e-04 -1.7715433501851933e-04 2.7341138139363655e-04
+180 3.2434747594587370e-04 -1.6915441774735048e-03 4.0900730729909740e-03
+298 3.7917888152135264e-03 -6.0610302042556118e-04 -1.3875468066675820e-03
+103 -2.0879688220456416e-03 1.2646047134506972e-04 1.2250082530130472e-03
+169 -2.6507307279781210e-04 8.6291263075896922e-04 -6.7278747395675014e-05
+189 1.0108929282190010e-03 1.8982228120259098e-03 -6.5403180612554708e-05
+286 -9.9322150759894646e-04 -3.4066272046452608e-04 -3.4391033780846124e-03
+292 -2.8658205835321157e-03 -3.3216530133501603e-03 1.0505501750627060e-03
+96 8.5948527672316977e-04 3.0749615424166990e-03 1.4231419851661021e-03
+193 1.9754417833916038e-03 1.5163925953976014e-04 -4.9594994187479753e-04
+17 2.6203886895607336e-03 1.5657363458411731e-03 -3.3032581483992485e-03
+190 4.9782385948773239e-04 3.7999572516664343e-03 8.8513954433283625e-04
+200 -3.2512502715393121e-03 2.9247741223781645e-04 1.5320219960207888e-03
+199 3.2401819979390274e-03 2.3567110227937513e-03 -6.6379610847127164e-03
+84 1.2853605266484948e-04 -1.6665986892649412e-03 1.5365440747583529e-03
+182 1.0500187924447895e-03 1.3060955508696847e-03 -2.3925701475310803e-03
+218 9.9422111868216413e-04 1.2436004535260903e-03 -1.3984048590214761e-03
+124 -6.0354862784081269e-03 2.6416845271526475e-03 7.6296227357268171e-04
+187 2.6397631568138447e-03 1.6196839586482474e-03 -9.3159653437194245e-04
+203 -1.3997762856391713e-03 -1.6968083442662190e-03 2.8296936126429475e-03
+206 2.3977359122881871e-03 1.3492233762833007e-04 1.6290145544154882e-03
+204 -2.5872997944973602e-03 1.2357813966710320e-03 -9.1318842702398713e-04
+188 2.3615474111001863e-03 -3.5646846425912195e-04 7.5794147335859412e-04
+227 3.3076496702881975e-03 -5.5024833261576114e-04 1.9142797994066022e-03
+290 4.2695361269452616e-03 3.0294108389474403e-03 1.5696508009880735e-03
+211 -2.4255699688947256e-03 -2.7001410256076333e-03 1.9232062836780192e-03
+334 7.6685189730765486e-04 -1.9631580657884016e-03 5.7712148067976064e-04
+314 -2.8797332483865897e-03 -8.5672209489761925e-04 3.2739234898783742e-03
+119 -3.3585760669252738e-03 -6.1006448191953987e-04 -3.9684756344600261e-03
+224 1.8932901548282272e-03 1.9617403572698679e-05 6.8565236255958856e-03
+221 -7.7519737842780638e-04 3.1935955912612579e-04 1.4521771397544179e-03
+129 -3.7685657151218047e-05 -4.3248933823646528e-03 -2.2164403360178790e-03
+225 3.4481773388121248e-03 1.4855793377451544e-03 -6.7482867697712284e-04
+228 -1.0099195114481245e-03 -5.6864665840238287e-04 -7.2346527917625998e-04
+229 6.5206210473492290e-04 1.0375242872500982e-03 -3.4193522168213214e-03
+235 -1.7331190602430293e-03 -1.1922220360773676e-03 -1.4255539269474157e-03
+326 -2.5632406310712088e-03 1.1399125675088367e-03 -3.4449083267841158e-03
+240 4.6858545370598575e-04 6.0202353766934484e-04 1.0517528415147481e-03
+212 9.4744085553805183e-05 7.2889381132012988e-04 2.7350290740291070e-03
+336 5.6413785769561617e-04 2.2000498661511828e-03 2.5539852593847107e-03
+216 5.2293929292899040e-03 -8.0725378360506253e-04 4.5283074169980356e-04
+353 -1.7716423450133926e-03 -2.8715029709979367e-03 2.1424612207143119e-03
+20 -1.7795438288434832e-03 -3.7199560100303537e-03 -6.5621911753945835e-05
+259 -3.0802096194159701e-04 -1.2705888556113429e-03 -9.7032962284322114e-04
+241 2.6565080559829595e-04 3.5947239231116758e-03 2.3156054638490465e-03
+121 8.4830046916992412e-04 -1.3055570169459736e-04 -4.9310836855299424e-04
+145 1.1448019481393281e-03 6.0343581078799082e-04 3.6289113021610684e-05
+128 3.2720765432977671e-04 1.1863621575201907e-03 -2.6177102295131889e-03
+47 6.3077329054681743e-05 -1.2939357770017951e-03 1.5846591323844461e-04
+226 7.5054763449884003e-04 1.5290306703410841e-03 -1.0949698839388049e-03
+231 1.9028137636342489e-03 -1.4105044415469166e-03 -2.2017032515285941e-03
+234 1.3935004958806483e-04 -2.7252866997580171e-03 -1.4895323629442146e-03
+330 8.2987748489144050e-04 -1.6236186048035378e-03 -2.6565208928671952e-04
+238 -9.6243764659710031e-04 1.5442917435534997e-03 1.0760473972351711e-03
+255 1.9972040357425463e-03 2.4435516607932304e-03 1.8757947188284918e-04
+123 2.6084561502437245e-05 5.6573522122929143e-05 -2.1934429996865227e-03
+261 -1.8629173993183806e-03 1.6754306896246655e-04 3.7264654569544361e-03
+144 -2.6835943846997231e-03 1.3514774591682033e-03 -7.3919507786279499e-04
+258 -1.2467388292081904e-03 2.3440361863916155e-03 3.1904021082157876e-03
+252 3.9020596868135970e-04 -1.8394053155932643e-03 -1.5987591755230461e-03
+167 -3.3600636990243872e-04 -1.3137584146102462e-03 -3.1682853839386858e-03
+249 2.3620316928144565e-03 1.5476355099160435e-04 1.1983701912006144e-03
+171 1.5648430702716750e-03 2.7481288801309224e-03 1.1986964759035164e-03
+160 -9.2329901540815233e-04 2.9041392915601520e-04 7.8874426026349809e-05
+155 2.1983788159873736e-03 -9.7643028626312868e-04 -1.4426615588660372e-03
+378 1.0640147722973949e-05 2.0327512352889404e-03 -3.2533693129536165e-04
+159 -1.5864675629277624e-03 -3.0703685652035463e-03 4.8574265807828452e-03
+283 2.9650304679928281e-04 4.8625082507146284e-04 -1.7015488815269671e-03
+264 -9.5663299167541216e-04 -7.2288544570680354e-04 -4.7973995699611264e-04
+262 2.0664937496479348e-03 2.8681109624955157e-03 1.5969687221177196e-03
+184 8.4186099562227900e-04 3.0578643634809775e-03 4.6237006079282777e-03
+285 1.1171575951229450e-03 -8.3898916538464527e-04 -1.5656429912159638e-03
+268 -1.5500947643504930e-03 2.6415196615837523e-03 5.1265997097915622e-03
+365 2.2277291685135103e-03 6.4830591246754494e-04 3.6975153924516937e-03
+294 1.1354935003531281e-03 5.5148317820443360e-04 1.4955334698314843e-04
+274 1.7245080718448135e-03 -1.2582847644971116e-03 7.9773213736465415e-04
+394 1.0101249784683570e-03 1.8551574495554292e-03 2.0831714036208208e-03
+281 -9.7535101680167372e-04 -9.6192792076584812e-04 -2.0150377923143455e-03
+381 3.0822969696219322e-03 -1.6943360467097256e-03 1.8119047637429923e-03
+183 -9.1737972642921698e-04 -2.9785318037134568e-04 7.7184544238638041e-04
+104 1.4608757667932341e-03 -8.9999325544748670e-04 -9.9905735541408057e-04
+301 6.0763230870012773e-04 6.8376344644200423e-04 -1.1090695015858821e-03
+282 1.2776990029966435e-03 -4.5279686996466577e-03 1.1766732180814102e-03
+288 -3.2665573077548561e-03 -1.8539058556929196e-03 1.2416871810107084e-03
+363 2.5288361995639617e-03 2.6209516983687754e-03 4.6358445561513184e-04
+289 -3.7335548758849613e-04 -8.4775282303383196e-04 8.0990495184246462e-04
+272 -1.7653397038327521e-04 1.2598532500276555e-03 3.8959709421247494e-04
+390 -9.8711645658341855e-04 5.0121215526464295e-04 -4.1895058332230752e-03
+210 -2.3112395449002266e-03 -1.2409859389933100e-03 3.0412633783885442e-03
+201 -2.0825774332607124e-03 -2.0571285983734945e-03 -1.5344096265509904e-03
+321 2.2552243353167749e-03 -1.4895493048255940e-03 -3.0886152967162840e-04
+324 -4.2305071348074850e-04 -3.1357667760763719e-03 1.2023346865277257e-03
+304 -1.4179714974118965e-03 1.7993698088091109e-03 -3.5449682299797450e-04
+305 -3.6555126738370685e-04 -3.8719052845621866e-04 -3.1834476403038861e-03
+202 -1.1573311278138937e-03 -7.9221543470051146e-04 -1.5098267562923915e-03
+307 -1.1133193275190965e-04 -2.9945334977416599e-04 -1.8662189317815957e-03
+205 -3.1297214156072151e-03 3.2218400073006075e-04 -2.0000372392747472e-03
+213 6.5782259807053815e-04 1.2959398574551586e-03 3.4379471504841254e-03
+207 9.3190221178334430e-04 -4.5020980452626979e-04 -2.1411381244297542e-03
+333 -3.2087735265534574e-03 -3.1660252191515647e-04 1.4684055852223700e-03
+335 1.7176083621334970e-03 -1.3493006219197658e-03 8.0689775557796011e-04
+337 -2.5278450498638413e-04 -2.9039000339830382e-03 -2.6471506901025749e-03
+239 -1.6638234028414100e-03 4.4866045686130793e-04 -5.5929094134353409e-04
+318 -1.9027947491449002e-04 -1.0068321430880994e-03 3.0494588309031849e-03
+243 2.5358941918180293e-03 2.8935317784905329e-03 -2.5969603719953084e-03
+322 -1.1672436317366492e-03 1.7140037821392095e-04 2.3376726642225553e-03
+127 -2.2458182410726502e-03 2.2050711901738704e-03 3.0884408903567341e-03
+222 2.9300900388863978e-03 -2.0611224923709751e-04 -1.5740987669778185e-04
+302 -7.1440988561800433e-05 -2.2915460488400034e-03 1.0806173565343746e-03
+345 2.7682071698140048e-03 -2.6030002608760979e-03 -2.4418869687139705e-03
+251 -1.9360033183045398e-03 -1.7157867362095876e-03 -8.0326755463953924e-04
+306 2.3230882915067502e-03 1.5595852373144711e-03 -2.0500653988042477e-03
+355 3.1967473736938872e-03 1.4847886357149053e-03 4.7071020009066368e-05
+332 1.6393286869590446e-03 1.8648437466567708e-03 3.2950891725107371e-04
+236 1.5988969585143777e-03 3.7124777096419325e-03 -1.4485834114926282e-03
+458 4.7123010021465022e-04 -2.1414809191476090e-03 -1.1619999134719107e-03
+339 -3.8078561611472290e-04 2.1403212119247835e-04 -1.0096205175425599e-03
+341 1.8210014330418127e-03 -1.7719300854409253e-03 4.3945143760923469e-03
+323 2.2820309309220499e-03 -6.6125163004705648e-04 1.7382498018796225e-03
+265 1.1630908954100329e-03 2.7017386844050686e-03 4.1742201651506159e-04
+248 -3.9018765500633835e-04 2.3488276590135078e-03 1.4979817921225377e-03
+208 1.7970508341701972e-03 2.2725398503391507e-03 -2.0529728442275741e-04
+253 5.6948929860086274e-04 1.2110801804582269e-03 1.9942355569129316e-03
+349 5.0586467303659279e-04 2.0483104864146604e-04 -2.6447893696742312e-03
+260 2.9900254717591833e-03 -2.5043357721079421e-03 -3.6205206200828868e-03
+444 8.6831307518253241e-04 -1.4932977477787345e-03 2.3399632682566921e-03
+242 -1.7890042744604155e-04 1.1872929359643427e-03 1.2157922993257569e-03
+244 -5.7170379760045401e-04 -1.4818517612309328e-03 4.3847255993564836e-03
+379 8.5007593674650452e-04 -9.1517064043428070e-05 -1.5500762475528086e-03
+377 -1.0785621891164921e-03 -3.5233710069381423e-03 -3.6032489062973920e-03
+399 -1.3311651497227526e-04 -2.5255560842930716e-03 4.9519999174886108e-04
+267 3.9370563838770911e-05 4.4290313513214658e-03 1.1549605252750268e-03
+370 -7.0521738202652398e-04 2.8995135969510344e-03 -1.8799302580299671e-03
+177 6.5784695165428772e-04 -1.4727623663507413e-03 1.6566461396686719e-03
+245 -3.3134532861266350e-03 2.5887432486885382e-03 -7.5751549185102524e-04
+366 1.4059300279821141e-03 6.8310099928115865e-04 2.1750580497491936e-03
+295 -1.2719348945948519e-03 -3.8035698820589162e-04 1.1743323581468151e-04
+275 1.2772515632125839e-03 3.9100192088269397e-04 -1.8979785170667085e-03
+254 2.0601703211055415e-03 -1.6322616933050231e-03 -1.4312612801839215e-03
+257 1.5791977765052879e-03 1.8163568663206429e-03 -3.0984509438593787e-03
+477 -2.1661430642163364e-03 2.0153496152709822e-03 4.2557311343473746e-04
+397 -3.1840847525018501e-03 -1.2872367357906684e-03 6.5823831525502739e-04
+297 1.3135738850070158e-03 2.5458395141422564e-03 -1.8750526605074331e-03
+344 -6.4722119315761210e-04 4.7577715672526794e-04 -1.5129726685974298e-03
+358 -2.1465379238566665e-03 -1.1671894420638408e-04 1.4823024973242660e-03
+299 2.3314274357102006e-03 1.7335451458835908e-03 9.5482315176073391e-04
+401 -2.0408409161793888e-03 3.6870566220612862e-04 -1.0617196612027065e-03
+361 -2.1665879063716585e-03 1.3822044173548715e-03 -9.4199595866656307e-04
+287 -1.2042025384945490e-03 -4.6933035891021037e-04 -3.3668768572103872e-05
+276 2.8892177387081452e-04 8.6168058175235888e-05 -2.9916128210045276e-03
+393 -2.7605682978356469e-03 7.9575863455107757e-05 -1.0862607592506339e-03
+392 1.9186550238151768e-03 2.1462648780456758e-03 9.3772309867200428e-04
+215 -3.6171185347302573e-04 5.2907929990529256e-04 -2.1735870296627521e-03
+473 -2.6181607745337297e-03 1.1084831786168383e-03 6.6771884560414766e-04
+317 -5.9980768687535569e-04 2.2511994578444240e-03 3.4990780661351617e-03
+280 3.3608894779296977e-03 -2.2521727793870733e-03 -3.7651498909054281e-04
+220 -2.2729652551663022e-03 5.5801273991681823e-04 -3.0166891887367084e-04
+284 -4.6086348671922996e-04 -1.3112633631651520e-03 -3.4510563684961352e-03
+362 -1.1943883659488423e-04 -1.8140690851188317e-03 -3.1280353814004307e-03
+385 1.0868703298976135e-03 1.8175542150992135e-03 1.1353781817820016e-03
+223 2.2524323760714916e-03 -2.1698696168632428e-03 4.9226320371650719e-03
+382 -8.4912198791648776e-04 2.2995047945029317e-03 -1.0310472154109363e-03
+384 1.0400372059544975e-03 1.1464219357216563e-04 -1.0593198818281799e-03
+437 2.3121444117664763e-03 1.1630655982477920e-03 1.1454099390502161e-04
+386 -8.0520601149773542e-04 1.0237663174428938e-03 -4.0085427791805269e-03
+309 -4.3544047885048774e-04 3.9866755762649570e-03 -8.7755863069763514e-04
+387 1.6903532747731809e-03 -3.3785697051814043e-03 -1.8836213405804790e-03
+395 -1.1104020314967019e-03 -7.1787716481856723e-04 5.1993665351760389e-04
+315 -2.1902260800212904e-04 -3.5367376548775791e-04 -7.9549235993014457e-05
+311 3.4353682931392779e-03 -6.1820809461380906e-04 -3.8820675534636160e-03
+430 9.0698894742180904e-04 2.0583803127023912e-03 7.2133293186377146e-04
+195 1.8270679494353666e-03 -7.1909867189323500e-04 3.0776541195474678e-03
+296 -9.0138696173039081e-05 1.3076673599266817e-04 -2.9438997230539917e-05
+303 -5.4590465616321160e-04 -2.9995715023698249e-03 -2.7848039522779919e-03
+219 -3.5846926190465419e-03 1.8888940603883082e-03 5.6072812699315289e-04
+422 1.9843472352448618e-03 1.8988657272367784e-04 -9.9636522094757006e-04
+483 2.1968633575140672e-03 -1.6956061748047891e-04 -1.7508504548785545e-03
+6 -2.2844789142860405e-03 -2.0343742530299505e-03 -1.2819999665354118e-03
+402 2.2633663175384727e-03 7.4147873544461640e-04 -3.9233573064448961e-03
+466 -1.1351074157466583e-04 6.3632991092161942e-04 -8.7900347134080834e-04
+90 -2.2928175245243219e-03 -1.3246785274982067e-03 -9.7734759245299914e-04
+427 2.3156840709526302e-03 -2.5671726230952138e-03 -1.7275101656739375e-03
+492 2.5392528043687485e-04 -2.1950682197774090e-04 -2.7208965162652161e-04
+310 1.8720223775601083e-03 1.7142595874558061e-03 -1.8406657396183015e-03
+388 -1.9152327990303651e-03 -1.0013991023485925e-03 -1.3555237358448100e-03
+410 -2.0237912958097136e-03 3.1232541148496964e-03 -1.4827387217520758e-03
+313 1.8787055037367069e-03 1.6681421804387684e-04 1.2665503838384443e-03
+415 6.0526222932421063e-04 -8.0737483238360727e-04 4.1814245075683020e-03
+300 -2.4651521753219861e-03 3.6740855574560072e-03 -1.9473699713361929e-03
+357 2.4206832722438506e-03 6.8937222560719758e-04 7.0127582366754032e-04
+438 1.6668808915262833e-03 -6.0153735447678307e-04 -1.8983953523190494e-03
+383 7.3704010998155219e-04 -3.1500015914905292e-03 -1.4937005339901584e-03
+457 6.2992156589620216e-04 1.2217408767679068e-03 -1.7548653386414645e-03
+328 -3.8826605166282216e-03 1.3732140275091766e-03 -2.9016230138804856e-03
+312 -1.9297604215825326e-04 1.0901783161727200e-03 2.9907856389464801e-03
+327 -9.3942695756488788e-04 3.3013189998627314e-03 2.2457870434311705e-03
+350 -1.0237603286686915e-03 1.6384864088078643e-03 -4.0827315351258482e-04
+429 -8.4692757126497654e-04 3.7662435097104334e-03 1.2794626394001111e-03
+329 2.1124395295422311e-03 -5.6455740723678773e-04 -1.7542281592454300e-03
+30 -1.5929183775248352e-03 -5.1691923476778043e-04 2.4804022935065342e-03
+433 6.0003504245358314e-04 7.1377829910753733e-04 2.5159968315170826e-03
+340 -3.7403057445980359e-04 -5.5559367868022380e-03 -1.0871913210549313e-03
+279 2.7639482434859150e-03 8.5603406880551108e-04 -7.7940292287611852e-04
+373 3.2660104512463122e-03 -1.3121397677317217e-03 -1.1513172279306973e-03
+338 -3.6330794767596196e-03 6.3745770235122288e-04 2.6775500004282285e-03
+360 -2.4791670382264979e-03 1.0958489583426994e-03 9.1290156461476806e-04
+455 -3.6030406805129391e-04 -1.9569835614612584e-03 7.1852790228043167e-03
+459 6.9705152763721383e-04 -2.1166405293922079e-03 1.5170748425320578e-03
+343 -9.2972259523129179e-04 -1.2480449524144986e-03 -5.1251350106437177e-04
+428 -2.6850214736920462e-03 3.1639691167397627e-05 1.2743451440597260e-03
+342 -4.0164306512025768e-03 -2.4344649205734164e-03 -5.8738137183141602e-04
+325 -1.2747344636050882e-03 -1.6423821142803167e-03 4.6887935643372975e-03
+247 -6.5756390919714076e-04 -4.1722224209813754e-03 -1.4151517643160318e-03
+271 2.9380534734776971e-03 -2.1961618258549922e-04 -3.2315638178425873e-03
+436 -3.2676991506224331e-03 -4.0543773858916846e-03 2.4601372192327282e-03
+389 1.2519702853920037e-03 -1.0550289279486398e-03 -1.4213233026464948e-04
+175 8.5243144052646802e-05 -1.4871278255663154e-04 -1.0669098644149541e-03
+453 1.0317243863455402e-04 -1.0421080878299151e-03 1.3418409200593618e-04
+460 1.7933337081942628e-03 -2.8047662601310358e-03 -2.5885631853998056e-03
+375 7.3828959705810428e-04 -2.4433801976700806e-03 3.2359801741246321e-03
+449 4.2171374280312645e-04 -1.2371942658606085e-03 1.4935838185656822e-03
+441 1.7249811260933673e-03 5.2129663049817188e-04 -2.5442848824655589e-03
+58 -2.5158268753660168e-04 4.3053771358676192e-03 -5.0808842044628463e-04
+443 1.6263383878832153e-03 -7.0041407472204930e-04 -3.5538553828905312e-03
+442 3.4580693716947412e-03 9.4492924511419723e-04 2.6449790825674845e-03
+446 1.3248188133816114e-03 -8.5781117114037573e-04 1.5120442588340329e-03
+369 -1.0317965844323881e-03 4.3348968090893396e-04 4.0699902818131352e-04
+364 4.2581669389528425e-04 8.8945195659957210e-04 2.2184809469880254e-03
+346 3.4557271734211013e-04 9.1035553963184817e-04 1.3760393261073192e-03
+448 -9.4884318517475129e-04 -4.1927181285179952e-04 2.0532113261841657e-03
+374 3.6202883193873063e-03 -8.9087116849977371e-04 -1.5757948796239142e-03
+426 -3.1461196701124757e-03 -1.1446582208610892e-03 1.9683336330733811e-03
+256 -1.9256540576433998e-03 1.6724826448614792e-03 -3.0790559932979296e-04
+352 5.2671134785486657e-04 1.1872812335450874e-03 2.5249123724068352e-03
+376 8.6890657642062577e-04 8.5252172913718625e-04 -2.2713225773509605e-04
+478 -3.6283284477266180e-03 4.6745097077068795e-03 -1.7108255380976604e-03
+380 -3.0645929965449595e-03 6.8287379832471229e-04 -1.3831529418228145e-03
+461 2.6550624288114843e-03 -6.9512069407744246e-04 9.9923368318543073e-04
+464 9.1110820465431887e-04 -2.8653447321693049e-03 8.5412163808125071e-04
+468 -3.8152725148750699e-03 -2.0465705115425689e-03 2.5193075596576602e-03
+485 2.9348222569429757e-03 -2.6782445548356894e-04 3.7963662208926742e-03
+462 -4.3099173998260316e-03 4.4560391077053298e-04 -5.5297510452495839e-04
+368 -6.3329115523144111e-04 -2.4801458516594808e-03 1.0016584433331975e-03
+371 2.6293605539608042e-03 -3.5380005536258066e-03 1.7799796038459781e-03
+405 1.9771270070737612e-03 -2.4940677473769395e-04 -2.2712818321849845e-03
+486 -1.0807203376415797e-03 -9.1249169685973092e-04 1.3505635368442279e-03
+367 2.3319180814497286e-03 -1.8149002068804300e-03 -5.6427068497124950e-04
+93 2.9254363430124787e-03 -1.3220173658012614e-03 -5.0835443191101491e-04
+451 -8.8166799788622226e-04 2.8616847154508098e-04 7.1400900557011863e-04
+413 4.2754035219471601e-04 6.9409005584291272e-04 -2.7684112063508878e-04
+495 1.9958799391164607e-03 2.9072994955888978e-04 -1.6959300562416329e-03
+479 -1.8623400732509811e-03 8.6005228247481517e-04 3.9862991367150833e-03
+498 -2.4017897480937056e-03 -1.5179052769936886e-03 1.5349653267155930e-04
+85 -2.1746337617904285e-03 -5.9229823637887086e-03 5.4414173069874732e-03
+421 6.1557617722022998e-04 3.3170114575318817e-03 5.2313703039082323e-04
+482 2.0325825555778765e-03 -1.6428996629427347e-03 -8.4701529989549646e-04
+408 -1.9554967576321399e-03 -2.0802653782753808e-04 -1.3314670969127791e-04
+308 -1.0473996117749389e-03 1.7088156588155907e-03 -1.6054407224560549e-03
+470 -9.4250191456994844e-05 1.2877998345667608e-03 2.1322007517923613e-03
+331 2.3068573171461122e-04 4.4824223445180476e-03 -1.2026270684820204e-03
+400 3.2583018651494203e-03 -6.1511704708170170e-04 -8.8890271501417364e-04
+372 -4.9008669928443842e-03 -1.1311964854989172e-03 3.0117048102269368e-03
+391 -1.2295557108587540e-03 -7.9999408071573927e-04 9.2948925356539408e-04
+319 -3.2749283965689471e-04 1.7829929035476804e-03 -7.1962738416963981e-04
+396 -2.3737828098664431e-03 2.1183509952245431e-03 -2.6652156352281248e-04
+418 -1.0078179004473454e-03 9.1716009903879071e-04 3.4660576791200383e-04
+398 8.8802353799259171e-04 -2.9017227747198098e-03 2.4166867255496077e-03
+417 -3.3351675139951663e-03 -1.8563425695282184e-03 1.3284488645014863e-03
+403 -2.2847101349495906e-04 2.4613273582906390e-03 -9.8034771954835049e-04
+9 2.6958377732940264e-03 -1.9360454092315275e-03 1.9534142531600521e-03
+92 1.3123652555622986e-03 -1.4587971618137267e-03 -2.6005808381503238e-03
+16 -1.9132272011858811e-04 -2.2633325748491320e-04 3.7952111645841455e-05
+489 -1.8242082422073233e-04 -4.0591745115598773e-04 -1.7152115771593632e-03
+434 2.2581960543508060e-03 -9.1551533021416872e-04 -1.8001649066804104e-03
+431 -2.4826825697417338e-03 -1.3388053814229939e-03 -5.4054846108979066e-04
+15 -1.4259114792251849e-03 2.8495336015210691e-03 6.9100832192740694e-04
+359 -1.9089214336145881e-04 -1.3476459863517938e-03 1.9241224041239074e-03
+404 6.5196908262600767e-04 -7.6121357073886877e-04 -1.3045374297483297e-03
+481 -3.3419546859555960e-03 2.4678966253440945e-03 -2.6517941066009285e-03
+320 1.6964989082969071e-03 -1.0793146197673293e-03 -3.4166504864223114e-04
+439 1.5429425438398779e-03 2.1514615422845666e-03 -8.5412007197891023e-04
+423 3.6897528530627812e-04 -5.6050751833693351e-04 -1.9776414170156664e-03
+21 7.3427256928093154e-04 -2.1471189984696984e-03 1.0224802562185376e-03
+26 4.1954458848232432e-03 4.0155235363054619e-03 2.8120428843107746e-03
+425 -2.7745543935504776e-03 1.3122546079151495e-03 -1.2037024681921674e-03
+447 2.0070556846697118e-03 -1.2425656355303071e-03 -9.9029787370708564e-04
+29 -1.0235975924294857e-03 -3.7840836773946605e-03 -2.3770757529121032e-04
+33 3.9091735115642312e-03 1.8102869759750108e-04 -2.9684246584093474e-04
+356 2.3319518715587081e-03 2.3980117157108324e-03 1.4565249746901945e-03
+435 1.1414747330544806e-03 2.6273635300508411e-03 1.3674274825162678e-04
+454 -2.3535119593732904e-03 1.2433384746692955e-03 1.4376989362530894e-03
+424 1.8132341404348130e-04 -3.3309178310775875e-04 3.0653701210651150e-03
+79 1.5112990607045167e-03 2.0159747189309020e-03 -3.3290522132489600e-03
+61 1.2886889272337621e-03 2.1077794629892487e-03 -2.8179522821801398e-04
+445 3.9095346023918683e-03 9.0400277298844907e-04 -3.4006810635950312e-03
+46 1.1620611367402563e-04 1.5471992755891379e-03 3.3835974842450884e-03
+51 -1.6529423398588098e-03 -4.8014546524332872e-03 -2.7091917338685777e-04
+153 -1.3796130553440870e-04 -2.9151448852417689e-03 8.8388365814346444e-04
+12 2.5554209218440383e-03 4.2276098728416707e-04 -2.4130327277711709e-03
+36 -3.2682976093382312e-03 5.0665780829412281e-04 1.4887861015329389e-03
+351 -1.1472406632425011e-04 8.0866249581331914e-04 -1.6522050561224664e-03
+53 -1.8369810760313669e-03 1.4322623456753370e-03 -1.4748956552180195e-03
+480 1.4762812695468587e-03 -7.9897692434481089e-05 4.6576697944758803e-04
+347 -4.6461229925300702e-03 -9.0678439227221330e-04 8.2201301137781950e-04
+469 -4.1396434872045607e-03 4.6067789401016915e-03 3.1140109410905384e-03
+348 -2.1339512804240904e-03 7.5031411598407236e-04 -1.5610819106890049e-04
+49 -5.0874764732909495e-03 -2.9224535776547376e-03 1.5411556278910575e-03
+452 2.2032280632498005e-04 2.7716781251983773e-03 -1.5447870804767725e-03
+55 -4.2117920832382121e-03 -9.1558705161940074e-04 -3.3459934505675488e-03
+56 -2.5033660915152640e-03 1.8462428610320920e-04 -1.8161205986829136e-03
+450 -4.1641807177792204e-04 -2.6060851179770020e-03 2.2807624945954978e-03
+497 -1.2528462639809638e-03 2.3431620394270525e-03 -1.9456063805062245e-03
+456 -4.0015385135877338e-03 -1.7593888076234444e-03 -8.3564358153969244e-04
+474 -5.6382623935872600e-04 1.4074103835875053e-03 1.7785979574574163e-03
+178 -8.8534504698713852e-04 -3.9389676237588040e-03 -3.7462753378634302e-04
+487 1.4583451963899006e-03 -2.9298788438461821e-03 4.5545276489271109e-03
+465 -6.2251495160510744e-04 -3.0734318118023912e-04 2.2234492252822119e-03
+407 -4.9975278988537923e-04 -1.4394905735341040e-03 4.1517661388455708e-03
+409 4.1634117140784202e-03 -1.7607699651765820e-03 2.3705402117329467e-03
+54 -2.7112798396483258e-05 3.3802443763337833e-03 2.2330257519618873e-03
+50 7.5879068791805517e-04 -7.6013403174139032e-04 2.9249428853348136e-04
+471 -1.8308997751882573e-03 -3.1473802690848597e-04 -3.0503496455969617e-03
+494 6.8013995592248393e-04 -6.5507948054693876e-04 1.9227906750496045e-03
+476 2.9772777837340629e-03 1.5391279753352188e-03 2.1141157830254203e-04
+463 -9.7045976861112669e-04 -1.2100246479087870e-03 -5.0821567321955173e-04
+81 2.6146256393594540e-03 5.5751482428006616e-05 2.6211376672392178e-04
+406 -1.6762173310718850e-03 -4.1360750309806242e-04 -4.8466652552463035e-04
+3 -5.8385791535896670e-04 -1.4808202806524181e-03 -7.1242871867967749e-05
+488 -1.0568705589743619e-03 4.7822080819901044e-04 5.2169396478932541e-04
+89 5.0472082922534752e-05 -3.4907941738932932e-03 -2.5587447462204300e-03
+416 -1.8653269799559695e-03 -4.0160439521433108e-03 5.1522355600492837e-03
+14 2.2589326775400566e-03 1.8792951388289054e-03 -3.0250705209853611e-03
+491 1.9839952030441762e-03 9.4622613672882812e-04 -4.1388198772042634e-03
+493 -1.4322401561544184e-03 2.5633116513281854e-03 1.4580414035209282e-03
+414 -5.2991496210179291e-04 -9.7705599265339080e-04 9.2277468567712837e-04
+411 8.6036137106734235e-04 -1.6532985438912653e-04 -2.1296446632531081e-04
+499 1.6056306800325039e-03 -1.2274854984763829e-03 -2.3933189273202733e-03
+97 -1.6581041497309116e-03 2.4412000533923030e-05 1.2613361277769687e-03
diff --git a/examples/USER/misc/grem/lj-6rep/425/restart.init b/examples/USER/misc/grem/lj-6rep/425/restart.init
new file mode 100644
index 000000000..115b5ee98
--- /dev/null
+++ b/examples/USER/misc/grem/lj-6rep/425/restart.init
@@ -0,0 +1,1022 @@
+LAMMPS data file via write_data, version 5 Nov 2016, timestep = 10000
+
+500 atoms
+1 atom types
+
+1.1763237388036316e+00 2.3823676261196674e+01 xlo xhi
+1.1763237388036316e+00 2.3823676261196674e+01 ylo yhi
+1.1763237388036316e+00 2.3823676261196674e+01 zlo zhi
+
+Masses
+
+1 62.5
+
+Pair Coeffs # lj/cut
+
+1 1.1 2.8
+
+Atoms # full
+
+8 0 1 0.0000000000000000e+00 2.3940398944005628e+00 3.9599386058215478e+00 2.7672068145631616e+00 0 0 0
+86 0 1 0.0000000000000000e+00 4.4667002136820866e+00 2.1817010248219670e+00 1.6222011679704309e+00 0 1 0
+107 0 1 0.0000000000000000e+00 3.7341559599379068e+00 2.1639840271405757e+00 4.6552296846732286e+00 0 0 0
+185 0 1 0.0000000000000000e+00 6.5789643773771793e+00 3.4583504013246902e+00 3.5799773886820208e+00 0 1 0
+186 0 1 0.0000000000000000e+00 7.7081271732780978e+00 1.4915260421203695e+00 1.5211191486913718e+00 0 1 0
+412 0 1 0.0000000000000000e+00 7.9064890272518467e+00 4.9492140531618167e+00 1.4373325343538070e+00 0 0 1
+109 0 1 0.0000000000000000e+00 9.4343916105223062e+00 3.0727554972458138e+00 3.3576719000627464e+00 0 0 0
+31 0 1 0.0000000000000000e+00 1.1476053311902200e+01 4.4900182058858160e+00 1.2899064003468494e+00 0 0 0
+111 0 1 0.0000000000000000e+00 1.2791546359122426e+01 2.8354951795650578e+00 3.8887133639625469e+00 0 0 0
+420 0 1 0.0000000000000000e+00 1.5952932766266892e+01 2.5451134480963358e+00 3.6811495971044490e+00 0 0 1
+18 0 1 0.0000000000000000e+00 1.8413882205625406e+01 3.7130999885791116e+00 2.1860164935447979e+00 0 0 0
+1 0 1 0.0000000000000000e+00 2.2361112652442998e+01 2.9216626685608098e+00 3.4384286813919047e+00 -1 0 0
+34 0 1 0.0000000000000000e+00 2.0468836491821744e+01 5.0506174815245242e+00 4.5537692118615727e+00 0 0 0
+435 0 1 0.0000000000000000e+00 2.1031451398342828e+01 4.9895149254179660e+00 1.5532217992218080e+00 0 0 1
+22 0 1 0.0000000000000000e+00 3.2769455013108457e+00 7.1556702521224738e+00 3.0351125299189361e+00 0 0 0
+25 0 1 0.0000000000000000e+00 4.8483668010543948e+00 5.5975146732679422e+00 2.3724834919344751e+01 0 0 -1
+27 0 1 0.0000000000000000e+00 6.7675145951230444e+00 6.7452287476220016e+00 3.6163976134094287e+00 0 0 0
+26 0 1 0.0000000000000000e+00 5.3640142051232518e+00 8.6687068547142552e+00 1.2542105980778944e+00 0 0 0
+11 0 1 0.0000000000000000e+00 9.9219091342977705e+00 5.9483889046819698e+00 3.7166384196220332e+00 0 0 0
+116 0 1 0.0000000000000000e+00 1.3446165978786729e+01 5.9640696842108722e+00 3.4866449162241939e+00 0 0 0
+114 0 1 0.0000000000000000e+00 1.6488213096638813e+01 5.6463985523058753e+00 3.6031902460937202e+00 0 0 0
+35 0 1 0.0000000000000000e+00 1.8973587808903755e+01 6.9613754978519786e+00 2.5193273168637784e+00 0 0 0
+134 0 1 0.0000000000000000e+00 1.6834020614154625e+01 8.7103424232000393e+00 3.3631334439320213e+00 0 0 0
+39 0 1 0.0000000000000000e+00 2.3110843519051592e+01 6.0896948998480278e+00 3.7004383966566712e+00 0 0 0
+44 0 1 0.0000000000000000e+00 2.1887482675418539e+01 8.0725573776106359e+00 1.6418572145261461e+00 -1 0 0
+57 0 1 0.0000000000000000e+00 2.1019715503986951e+01 8.2791125660518539e+00 4.8134222268212952e+00 0 0 0
+41 0 1 0.0000000000000000e+00 3.8633789806824446e+00 1.0428696844318672e+01 3.2398833943073324e+00 0 0 0
+43 0 1 0.0000000000000000e+00 1.4538216919334301e+00 1.2592901640461482e+01 4.0859991698072049e+00 0 0 0
+79 0 1 0.0000000000000000e+00 2.4428918335262284e+00 1.2253036185153444e+01 2.3814058279168599e+01 1 0 -1
+61 0 1 0.0000000000000000e+00 2.1212910318266367e+00 9.0806427366956814e+00 2.3577110050308995e+01 0 0 -1
+45 0 1 0.0000000000000000e+00 7.0672238854524991e+00 1.0207558051992303e+01 3.5061771977598406e+00 0 0 0
+146 0 1 0.0000000000000000e+00 1.0374753828575074e+01 9.2123956313672242e+00 3.7630545335191692e+00 0 0 0
+153 0 1 0.0000000000000000e+00 8.9439373671572788e+00 1.1466989378566659e+01 1.2188873903697670e+00 0 0 0
+150 0 1 0.0000000000000000e+00 1.3915667293628474e+01 9.2917159698667309e+00 3.6079901217015946e+00 0 0 0
+156 0 1 0.0000000000000000e+00 1.5649573568730757e+01 1.0746251968270359e+01 2.3654259808074837e+01 0 0 -1
+71 0 1 0.0000000000000000e+00 1.3910771586564222e+01 1.2302434184721905e+01 3.3230283079531180e+00 0 0 0
+354 0 1 0.0000000000000000e+00 1.7186390916341100e+01 1.1839640092752147e+01 3.6024681529105926e+00 0 0 1
+78 0 1 0.0000000000000000e+00 1.9583292120645968e+01 9.9384042282023000e+00 2.6263249970156970e+00 0 0 0
+24 0 1 0.0000000000000000e+00 2.3726313320502666e+01 9.2351186496768118e+00 3.8894611007019382e+00 -1 0 0
+62 0 1 0.0000000000000000e+00 2.2569785064077742e+01 1.1101264818519615e+01 1.8968657006926852e+00 -1 0 0
+60 0 1 0.0000000000000000e+00 2.1226956126493000e+01 1.1460095443120206e+01 4.9037724837561214e+00 0 0 0
+158 0 1 0.0000000000000000e+00 2.2885898346723783e+00 1.5418516480162557e+01 3.8879563757959552e+00 1 0 0
+42 0 1 0.0000000000000000e+00 4.4737114242810296e+00 1.3526359100745745e+01 3.2798531848748245e+00 0 0 0
+52 0 1 0.0000000000000000e+00 7.7088564478829982e+00 1.3263540970883126e+01 3.6704271840980751e+00 0 0 0
+170 0 1 0.0000000000000000e+00 8.3740062007902338e+00 1.6493816982137744e+01 3.6338054861069096e+00 0 0 0
+65 0 1 0.0000000000000000e+00 6.4434298891452633e+00 1.4627629351188299e+01 2.3610663823165307e+01 0 0 -1
+73 0 1 0.0000000000000000e+00 1.0653626666187517e+01 1.2465883759104088e+01 3.5731234937833363e+00 0 0 0
+91 0 1 0.0000000000000000e+00 1.1527825857458362e+01 1.5776587382353627e+01 3.8667438088291139e+00 0 0 0
+72 0 1 0.0000000000000000e+00 9.5231622119651931e+00 1.4471307893060896e+01 1.6154354312332311e+00 0 0 0
+174 0 1 0.0000000000000000e+00 1.4532635455242620e+01 1.5690463002626757e+01 3.5419145352510921e+00 0 0 0
+77 0 1 0.0000000000000000e+00 1.6255167772941675e+01 1.3897048712403157e+01 1.4236212998103546e+00 0 0 0
+75 0 1 0.0000000000000000e+00 1.7583033244005009e+01 1.4984798996404431e+01 3.6541366924650833e+00 0 0 0
+59 0 1 0.0000000000000000e+00 1.9690030783851114e+01 1.3078617719008156e+01 2.5803837742040754e+00 0 0 0
+63 0 1 0.0000000000000000e+00 2.2986518325940853e+01 1.4270512066104983e+01 1.7363131933932556e+00 -1 0 0
+74 0 1 0.0000000000000000e+00 2.0486370576636560e+01 1.6046742268249027e+01 2.8478677179731311e+00 0 0 0
+181 0 1 0.0000000000000000e+00 2.6005655106976491e+00 1.8402224875505080e+01 4.3749736344438208e+00 0 0 0
+484 0 1 0.0000000000000000e+00 3.7505506103693298e+00 1.8287589454378285e+01 1.2206236982961622e+00 0 0 1
+162 0 1 0.0000000000000000e+00 5.2283618884335183e+00 1.6551252588613387e+01 3.2478519531973036e+00 0 0 0
+142 0 1 0.0000000000000000e+00 6.8450922079079106e+00 1.8128410572162139e+01 1.2344144784614683e+00 0 0 0
+83 0 1 0.0000000000000000e+00 8.7222230442652169e+00 1.9500088163093984e+01 3.7741039612690419e+00 0 0 0
+64 0 1 0.0000000000000000e+00 5.5713615487934529e+00 1.9786884824707908e+01 3.3049724484870766e+00 0 0 0
+70 0 1 0.0000000000000000e+00 1.2014184647346474e+01 1.9318255303996278e+01 3.8083106363305714e+00 0 0 0
+69 0 1 0.0000000000000000e+00 1.0343281897799702e+01 1.7586142725599547e+01 1.5905179517900350e+00 0 0 0
+214 0 1 0.0000000000000000e+00 1.4994744704426489e+01 1.8955326826392213e+01 3.7946220779760984e+00 0 -1 0
+475 0 1 0.0000000000000000e+00 1.6827222386549828e+01 1.7150329169974576e+01 1.4360775803041306e+00 0 0 1
+197 0 1 0.0000000000000000e+00 1.8278964243118843e+01 1.8177162425637963e+01 3.7267670827968531e+00 0 0 0
+161 0 1 0.0000000000000000e+00 2.3227811632104107e+01 1.7324778909079562e+01 1.9755515612694241e+00 -1 0 0
+496 0 1 0.0000000000000000e+00 2.1129609285968495e+01 1.9462723492041714e+01 2.9076027906699817e+00 0 0 1
+7 0 1 0.0000000000000000e+00 1.8339935342472082e+00 2.3340035552936985e+01 2.4486577934569027e+00 0 -1 0
+5 0 1 0.0000000000000000e+00 4.1886947882169370e+00 2.1788838222642010e+01 1.3433051050771612e+00 0 -1 0
+82 0 1 0.0000000000000000e+00 1.5606148662165618e+00 2.0357390010989786e+01 2.3516119705750977e+00 0 0 0
+102 0 1 0.0000000000000000e+00 3.3454318989781049e+00 2.1676765707837824e+01 4.4706871756177335e+00 0 -1 0
+88 0 1 0.0000000000000000e+00 6.1607727724767729e+00 2.3128341301851808e+01 3.6452337938911521e+00 0 0 0
+66 0 1 0.0000000000000000e+00 7.5521363504293566e+00 2.1167840612716901e+01 1.2579302207699741e+00 0 0 0
+10 0 1 0.0000000000000000e+00 1.1181501384090526e+01 1.3978769963346132e+00 1.4146890513790655e+00 0 0 0
+67 0 1 0.0000000000000000e+00 9.1835487609358992e+00 2.2660175250827805e+01 3.8267287853092173e+00 0 0 0
+472 0 1 0.0000000000000000e+00 1.0679142552329578e+01 2.0850452543321843e+01 1.5780561560629427e+00 0 0 1
+13 0 1 0.0000000000000000e+00 1.2315043589099780e+01 2.2521676348646288e+01 3.9151620118683725e+00 0 -1 0
+94 0 1 0.0000000000000000e+00 1.5559221856298889e+01 2.1861860711476869e+01 3.8627886703846639e+00 0 0 0
+490 0 1 0.0000000000000000e+00 1.6900858181707015e+01 2.0183136694623052e+01 1.7680314969448894e+00 0 0 1
+500 0 1 0.0000000000000000e+00 1.7622747176837571e+01 2.2960988659889928e+01 1.6985915624851000e+00 0 0 1
+100 0 1 0.0000000000000000e+00 1.8859685198465744e+01 2.1522667567622047e+01 3.8879602943763039e+00 0 0 0
+419 0 1 0.0000000000000000e+00 2.1666669846424700e+01 2.2485694614112212e+01 3.0872939344672128e+00 0 -1 1
+19 0 1 0.0000000000000000e+00 2.8622976354602025e+00 2.3680683825006978e+00 7.7320285106654065e+00 1 0 0
+101 0 1 0.0000000000000000e+00 1.5676878163990968e+00 4.2514510903963307e+00 5.6491091844456642e+00 0 0 0
+125 0 1 0.0000000000000000e+00 5.6397299152361882e+00 3.3421209472655278e+00 7.3092308004767519e+00 0 0 0
+87 0 1 0.0000000000000000e+00 7.6783707862812056e+00 1.5177850424641077e+00 6.1479687477459306e+00 0 1 0
+110 0 1 0.0000000000000000e+00 1.1330704907823320e+01 4.4214077435686407e+00 6.1056184137188607e+00 0 0 0
+192 0 1 0.0000000000000000e+00 9.8711725653344331e+00 3.0890618377323671e+00 8.3168162883285586e+00 0 1 0
+209 0 1 0.0000000000000000e+00 1.2866661310262860e+01 2.7204394878897107e+00 8.3100635994344767e+00 0 0 0
+120 0 1 0.0000000000000000e+00 1.4479846521851847e+01 4.1189745960088722e+00 6.0234232774426992e+00 0 0 0
+115 0 1 0.0000000000000000e+00 1.5908428015114380e+01 2.4240872159435591e+00 8.3261751423759982e+00 0 0 0
+113 0 1 0.0000000000000000e+00 1.7703798579514952e+01 3.6600245494086727e+00 5.9368687149028725e+00 0 0 0
+217 0 1 0.0000000000000000e+00 1.9356296998932972e+01 1.6691546093703662e+00 7.8815007701947701e+00 0 0 0
+117 0 1 0.0000000000000000e+00 1.9664126871163898e+01 1.8782635824530693e+00 4.3486927692996460e+00 0 0 0
+28 0 1 0.0000000000000000e+00 4.4033044292283172e+00 5.3793094394938263e+00 5.0701231447880950e+00 0 0 0
+38 0 1 0.0000000000000000e+00 2.4781961844701241e+00 7.7183983121235800e+00 6.1411421025139790e+00 1 0 0
+106 0 1 0.0000000000000000e+00 3.4594211926334841e+00 5.5930361081993496e+00 8.0520938938199151e+00 0 0 0
+105 0 1 0.0000000000000000e+00 8.2393005878380947e+00 4.6430513556573372e+00 5.9664661582057033e+00 0 0 0
+108 0 1 0.0000000000000000e+00 6.3067354347908573e+00 6.6484576797737693e+00 7.5232726417994842e+00 0 0 0
+131 0 1 0.0000000000000000e+00 8.5281221088165182e+00 7.9659519842979307e+00 5.9133599582459802e+00 0 0 0
+32 0 1 0.0000000000000000e+00 5.3154844705371733e+00 8.6000152765159559e+00 5.5512312796662862e+00 0 0 0
+232 0 1 0.0000000000000000e+00 9.9931863494753674e+00 6.1296153961148505e+00 8.4714911605913130e+00 0 0 0
+151 0 1 0.0000000000000000e+00 1.1956613756179495e+01 7.3938743385809396e+00 5.8242555862532619e+00 0 0 0
+135 0 1 0.0000000000000000e+00 1.5137905698772423e+01 7.0788131048132579e+00 5.7787911138488282e+00 0 0 0
+112 0 1 0.0000000000000000e+00 1.3253950454298606e+01 5.7538181057324991e+00 8.3616870616293646e+00 0 0 0
+194 0 1 0.0000000000000000e+00 1.9760275435744553e+01 5.1214216198615921e+00 7.7698290231433580e+00 0 1 0
+233 0 1 0.0000000000000000e+00 1.6331674566142624e+01 5.5402930775562540e+00 8.0931178032307987e+00 0 0 0
+139 0 1 0.0000000000000000e+00 1.8309945125939070e+01 6.9465491574146894e+00 5.5895311757019268e+00 0 0 0
+118 0 1 0.0000000000000000e+00 1.9791214691249102e+01 8.4512246191805112e+00 8.0999627174766253e+00 0 0 0
+136 0 1 0.0000000000000000e+00 1.6781351010925611e+01 8.4205780160980002e+00 8.0019260577946163e+00 0 0 0
+37 0 1 0.0000000000000000e+00 2.2328191781698219e+01 6.4151191875115439e+00 6.8442627031012959e+00 0 0 0
+122 0 1 0.0000000000000000e+00 4.0346413188721559e+00 8.7977704127432848e+00 8.4835678490182822e+00 0 0 0
+23 0 1 0.0000000000000000e+00 3.0299217202258437e+00 1.0745560305679419e+01 6.2633208218757463e+00 0 0 0
+132 0 1 0.0000000000000000e+00 6.6756243468195082e+00 9.9315624733762178e+00 7.8326343679739825e+00 0 0 0
+148 0 1 0.0000000000000000e+00 5.8478974913157824e+00 1.1815817999587869e+01 5.5539403606795226e+00 0 0 0
+126 0 1 0.0000000000000000e+00 9.1868253282020955e+00 1.0987063530287589e+01 6.1149962159995441e+00 0 0 0
+147 0 1 0.0000000000000000e+00 1.0550163347050946e+01 9.0169110127726899e+00 8.1628866177534380e+00 0 0 0
+152 0 1 0.0000000000000000e+00 1.2388757559206903e+01 1.0407568458904894e+01 5.8549732737699474e+00 0 0 0
+230 0 1 0.0000000000000000e+00 1.3667018562218090e+01 8.9511082318834099e+00 8.2348836375208556e+00 0 0 0
+173 0 1 0.0000000000000000e+00 1.5449177092225190e+01 1.0274020174782111e+01 5.9581494303277740e+00 0 0 0
+196 0 1 0.0000000000000000e+00 1.4227936863626791e+01 1.2133745783862231e+01 7.9514245817410076e+00 0 0 0
+137 0 1 0.0000000000000000e+00 1.8498868766841245e+01 1.0124380342999316e+01 5.7334731555691771e+00 0 0 0
+179 0 1 0.0000000000000000e+00 1.7257971234649734e+01 1.1566083428773624e+01 8.0131861936868560e+00 0 0 0
+273 0 1 0.0000000000000000e+00 2.0293483188538605e+01 1.1317245847177318e+01 7.9420003515336157e+00 0 0 0
+157 0 1 0.0000000000000000e+00 2.2695301146827784e+01 9.6727094972574896e+00 7.1340291449881086e+00 0 0 0
+143 0 1 0.0000000000000000e+00 3.4463676205141147e+00 1.3787360972730196e+01 6.0513182575265514e+00 0 0 0
+99 0 1 0.0000000000000000e+00 2.3623071713630583e+01 1.5521232992005789e+01 7.1684043845047292e+00 0 0 0
+263 0 1 0.0000000000000000e+00 7.6325348714752179e+00 1.3009798862222848e+01 8.0168514241382116e+00 0 0 0
+48 0 1 0.0000000000000000e+00 6.3066091533286235e+00 1.4964257609951376e+01 5.8330734349064652e+00 0 0 0
+168 0 1 0.0000000000000000e+00 7.8759215030749017e+00 1.6107445426894230e+01 8.1871546799490638e+00 0 0 0
+249 0 1 0.0000000000000000e+00 1.1047495707603460e+01 1.2397221624815847e+01 8.3175144902461504e+00 0 0 0
+172 0 1 0.0000000000000000e+00 9.3513514755484852e+00 1.4594650427446062e+01 5.9355247677205387e+00 0 0 0
+246 0 1 0.0000000000000000e+00 1.1344310709537451e+01 1.5872747191979949e+01 7.8582973604775335e+00 0 0 0
+250 0 1 0.0000000000000000e+00 1.2720686692288810e+01 1.3764529734164407e+01 5.9190791060859134e+00 0 0 0
+278 0 1 0.0000000000000000e+00 1.4415153538105512e+01 1.5291555283763762e+01 7.8856353919327171e+00 0 0 0
+40 0 1 0.0000000000000000e+00 1.5843106358154037e+01 1.3554327719789109e+01 5.7936708717751522e+00 0 0 0
+277 0 1 0.0000000000000000e+00 1.7574001306879300e+01 1.4867920738875748e+01 7.8714988285008376e+00 0 0 0
+138 0 1 0.0000000000000000e+00 1.8810510869935946e+01 1.3222979964137611e+01 5.7574540531529248e+00 0 0 0
+163 0 1 0.0000000000000000e+00 2.3102565202497907e+01 1.2515816141698179e+01 7.1583885395589109e+00 -1 0 0
+154 0 1 0.0000000000000000e+00 2.1794044544405857e+01 1.4389650042174605e+01 4.8401120586686046e+00 0 0 0
+140 0 1 0.0000000000000000e+00 2.0626222214248386e+01 1.4526345240774191e+01 7.9556002258304037e+00 0 0 0
+68 0 1 0.0000000000000000e+00 3.8985089998390436e+00 1.6939243097200183e+01 6.3715675183299751e+00 0 0 0
+164 0 1 0.0000000000000000e+00 1.4193099357607055e+00 1.8687625561332791e+01 7.3084226927467446e+00 0 0 0
+166 0 1 0.0000000000000000e+00 4.2669468078234996e+00 1.9967637505896526e+01 6.8489561662956309e+00 0 0 0
+165 0 1 0.0000000000000000e+00 6.8284168044201747e+00 1.7890544375940017e+01 5.8345097974135767e+00 0 0 0
+268 0 1 0.0000000000000000e+00 8.5061422826975583e+00 1.9328746615046839e+01 8.1719394819182298e+00 0 0 0
+269 0 1 0.0000000000000000e+00 1.0113039837654245e+01 1.7729815038441018e+01 5.9275014276985116e+00 0 0 0
+266 0 1 0.0000000000000000e+00 1.1837292850393306e+01 1.8999060108996737e+01 8.2808145435720668e+00 0 0 0
+176 0 1 0.0000000000000000e+00 1.3187168516086883e+01 1.7362193511752547e+01 5.9439441216114943e+00 0 0 0
+291 0 1 0.0000000000000000e+00 1.4816292252469569e+01 1.8558707248516846e+01 8.0236488867685232e+00 0 0 0
+80 0 1 0.0000000000000000e+00 1.9459767337445623e+01 1.6416274979959987e+01 5.8432442940402485e+00 0 0 0
+293 0 1 0.0000000000000000e+00 1.6097299758816455e+01 1.6821787501023291e+01 6.0195173497721335e+00 0 0 0
+95 0 1 0.0000000000000000e+00 1.8201659546530227e+01 1.8105915413827454e+01 8.2669311294294090e+00 0 0 0
+198 0 1 0.0000000000000000e+00 1.9876514207994479e+01 1.9508024488741938e+01 5.8590178535294948e+00 0 0 0
+98 0 1 0.0000000000000000e+00 2.2339318806620540e+01 1.7435605957201481e+01 5.1166777506003207e+00 0 0 0
+180 0 1 0.0000000000000000e+00 2.1232482621900775e+01 1.7549831744179521e+01 8.0499426414085029e+00 0 0 0
+298 0 1 0.0000000000000000e+00 1.9071547490548093e+00 2.1951491927438749e+01 7.5989262999108016e+00 1 0 0
+103 0 1 0.0000000000000000e+00 5.0297729222141596e+00 2.2826039674283710e+01 6.9097366093552370e+00 0 -1 0
+169 0 1 0.0000000000000000e+00 7.2205809820484532e+00 2.0992394772241362e+01 6.0224091257849226e+00 0 0 0
+191 0 1 0.0000000000000000e+00 1.0962923464959689e+01 2.3744825577130626e+01 6.5695086035861525e+00 0 0 0
+189 0 1 0.0000000000000000e+00 1.0398389790007558e+01 2.0712107971707887e+01 6.1198692764183562e+00 0 0 0
+286 0 1 0.0000000000000000e+00 9.0534042099052563e+00 2.2353503706236552e+01 8.2242853736756203e+00 0 0 0
+96 0 1 0.0000000000000000e+00 1.4061539418677777e+01 2.3764321791887600e+01 6.0202155044318468e+00 0 0 0
+193 0 1 0.0000000000000000e+00 1.3741306001954856e+01 2.0631582649569275e+01 6.1170246869578513e+00 0 0 0
+17 0 1 0.0000000000000000e+00 1.5492713785944938e+01 2.2029470845098245e+01 7.9634360885730890e+00 0 -1 0
+190 0 1 0.0000000000000000e+00 1.6633087401223733e+01 1.9879170195743228e+01 6.0981467519539230e+00 0 0 0
+200 0 1 0.0000000000000000e+00 1.7255498418331989e+01 2.3290966968582453e+01 6.0426357785774130e+00 0 0 0
+199 0 1 0.0000000000000000e+00 1.8606123330964746e+01 2.1171520383807071e+01 8.1347352302253597e+00 0 0 0
+2 0 1 0.0000000000000000e+00 2.3594126468334139e+01 2.3381027098377167e+01 5.3629124115674234e+00 -1 -1 0
+84 0 1 0.0000000000000000e+00 2.3012416931778528e+01 2.0422570616625837e+01 5.0980573620807030e+00 -1 0 0
+182 0 1 0.0000000000000000e+00 2.1803262413097301e+01 2.0971281038626625e+01 7.8603120466722842e+00 -1 0 0
+218 0 1 0.0000000000000000e+00 1.8518097602611499e+00 2.4991306393345933e+00 1.0660175906028821e+01 1 0 0
+124 0 1 0.0000000000000000e+00 4.6895556090198447e+00 3.6994235351337856e+00 1.0097344383195356e+01 0 0 0
+187 0 1 0.0000000000000000e+00 6.9411854324549660e+00 1.5162600821660182e+00 9.0404174775035813e+00 0 1 0
+203 0 1 0.0000000000000000e+00 5.8412307301762674e+00 1.8860429303549913e+00 1.2109718665433528e+01 0 0 0
+206 0 1 0.0000000000000000e+00 7.5471802921066136e+00 4.7206012465276812e+00 9.5355615685663278e+00 0 0 0
+188 0 1 0.0000000000000000e+00 9.0742707817340822e+00 3.1032001921953434e+00 1.1423806844629963e+01 0 1 0
+227 0 1 0.0000000000000000e+00 1.1724770253725707e+01 4.5316487200167881e+00 1.0666290382898982e+01 0 0 0
+211 0 1 0.0000000000000000e+00 1.4795010634585495e+01 3.8850511278595303e+00 1.0324837949102456e+01 0 0 0
+207 0 1 0.0000000000000000e+00 1.2622270977103646e+01 2.2184534648217848e+00 1.2828347061552604e+01 0 0 0
+334 0 1 0.0000000000000000e+00 1.7899865556178263e+01 3.6359003109924579e+00 1.0279799126244722e+01 0 0 0
+237 0 1 0.0000000000000000e+00 2.2599151972623606e+01 1.5900316620792414e+00 8.1246310807340905e+00 0 0 0
+4 0 1 0.0000000000000000e+00 2.3288797930551205e+01 4.4018702427197258e+00 8.6482275885138549e+00 -1 0 0
+119 0 1 0.0000000000000000e+00 2.1251007021056786e+01 3.0972239000346957e+00 1.0491207567358769e+01 0 0 0
+239 0 1 0.0000000000000000e+00 2.2266558174704990e+01 1.3139311211310520e+00 1.2779243277867373e+01 0 0 0
+224 0 1 0.0000000000000000e+00 2.5418146466145854e+00 5.8337472135402724e+00 1.1061042064116364e+01 0 0 0
+221 0 1 0.0000000000000000e+00 1.2752545350001441e+00 7.6988263200334970e+00 8.9959315111130085e+00 0 0 0
+204 0 1 0.0000000000000000e+00 6.3822218800503352e+00 5.0113764340598186e+00 1.2509431429972116e+01 0 0 0
+225 0 1 0.0000000000000000e+00 5.2798780198646744e+00 7.0471151808164683e+00 1.0495760288458984e+01 0 0 0
+129 0 1 0.0000000000000000e+00 8.2377736015782865e+00 8.1438056522354358e+00 9.7483585813455278e+00 0 0 0
+228 0 1 0.0000000000000000e+00 9.3586761190833503e+00 6.3373318300180381e+00 1.1797678161111913e+01 0 0 0
+229 0 1 0.0000000000000000e+00 1.1715074381937304e+01 7.5242523154814833e+00 1.0553192752483115e+01 0 0 0
+235 0 1 0.0000000000000000e+00 1.4919794884903638e+01 7.0469687774800303e+00 1.0582257955841339e+01 0 0 0
+240 0 1 0.0000000000000000e+00 1.8464342013575543e+01 6.6400468253256824e+00 9.9594746486373023e+00 0 0 0
+20 0 1 0.0000000000000000e+00 2.1457465291312733e+01 6.3847055247649962e+00 1.0511352508576023e+01 0 0 0
+259 0 1 0.0000000000000000e+00 2.3064837568009949e+01 7.7890958539304913e+00 1.2619422677555320e+01 0 0 0
+141 0 1 0.0000000000000000e+00 4.6387638819530892e+00 1.2111232102570218e+01 8.5451496802913276e+00 0 0 0
+121 0 1 0.0000000000000000e+00 1.6724423010831526e+00 1.0931717547976548e+01 9.3739845551978966e+00 0 0 0
+241 0 1 0.0000000000000000e+00 2.9970858407578911e+00 9.1791340603049587e+00 1.1533332484448641e+01 0 0 0
+145 0 1 0.0000000000000000e+00 3.7376535782811811e+00 1.2145785209217152e+01 1.1472223189960753e+01 0 0 0
+128 0 1 0.0000000000000000e+00 5.7865783158667314e+00 1.0115093323525107e+01 1.0781652080595348e+01 0 0 0
+47 0 1 0.0000000000000000e+00 8.8972298746059533e+00 1.1568509726657426e+01 1.0218166990373842e+01 0 0 0
+231 0 1 0.0000000000000000e+00 1.2501061358960023e+01 1.0586437092732673e+01 1.0292672354361580e+01 0 0 0
+226 0 1 0.0000000000000000e+00 1.0061845988707992e+01 9.6025250367737272e+00 1.2078750173712098e+01 0 0 0
+234 0 1 0.0000000000000000e+00 1.5557796199162237e+01 1.0257530517651521e+01 1.0156434420897789e+01 0 0 0
+330 0 1 0.0000000000000000e+00 1.3851121303645108e+01 9.0919825823186180e+00 1.2788173273542505e+01 0 0 0
+238 0 1 0.0000000000000000e+00 1.8596757767913076e+01 9.9697043305237472e+00 1.0670368000094941e+01 0 0 0
+255 0 1 0.0000000000000000e+00 1.7165538313880639e+01 1.1736771354973779e+01 1.2411244651680896e+01 0 0 0
+123 0 1 0.0000000000000000e+00 2.1663406639317387e+01 9.6554055725421435e+00 1.0397292715617246e+01 -1 0 0
+261 0 1 0.0000000000000000e+00 2.3658488642933837e+00 1.3912888557016220e+01 9.2679667991393497e+00 0 0 0
+144 0 1 0.0000000000000000e+00 3.8344935257288739e+00 1.4996853270716944e+01 1.1839669259945563e+01 0 0 0
+377 0 1 0.0000000000000000e+00 2.3761348099856367e+01 1.4211356623924569e+01 1.2202307315041431e+01 0 0 0
+258 0 1 0.0000000000000000e+00 5.2002322430606611e+00 1.4969843060194723e+01 8.7643836369291250e+00 1 0 0
+252 0 1 0.0000000000000000e+00 6.4493822806502088e+00 1.3313221574899377e+01 1.0791682150696291e+01 0 0 0
+265 0 1 0.0000000000000000e+00 1.0812121114843736e+01 1.2786763061963777e+01 1.2148165137932015e+01 0 0 0
+167 0 1 0.0000000000000000e+00 9.4434283341815828e+00 1.4654836033831263e+01 1.0277085842525187e+01 0 0 0
+171 0 1 0.0000000000000000e+00 1.2874600354349409e+01 1.4078648530880406e+01 1.0004627853012940e+01 0 0 0
+160 0 1 0.0000000000000000e+00 1.5899681523418490e+01 1.3471915703687658e+01 1.0149673497958617e+01 0 0 0
+155 0 1 0.0000000000000000e+00 1.9118750373152881e+01 1.2970070606523844e+01 1.0078467614131165e+01 0 0 0
+257 0 1 0.0000000000000000e+00 1.7401919766204564e+01 1.4589998052033428e+01 1.2820789318854654e+01 0 0 0
+159 0 1 0.0000000000000000e+00 2.2071810758945627e+01 1.2820396883283069e+01 1.0054714086799683e+01 0 0 0
+283 0 1 0.0000000000000000e+00 2.2645335537539353e+01 1.5866924145919622e+01 1.0061718128531716e+01 -1 0 0
+297 0 1 0.0000000000000000e+00 2.0887348052363073e+01 1.4606976586950138e+01 1.2478760368721961e+01 0 0 0
+264 0 1 0.0000000000000000e+00 2.8482396351452746e+00 1.6994212835085001e+01 9.6698788895284533e+00 0 0 0
+184 0 1 0.0000000000000000e+00 4.6086285023727056e+00 1.8359040505243723e+01 1.1773091058533147e+01 0 0 0
+299 0 1 0.0000000000000000e+00 1.8917303509159606e+00 1.7178076514046079e+01 1.2777854334009453e+01 1 0 0
+285 0 1 0.0000000000000000e+00 6.8003429358047329e+00 1.6493149933163821e+01 1.1180217277056123e+01 0 0 0
+262 0 1 0.0000000000000000e+00 5.6914316533345390e+00 1.8222921437330921e+01 8.6057643290560364e+00 0 0 0
+287 0 1 0.0000000000000000e+00 7.4289250005765721e+00 1.9641829995658874e+01 1.1526100430247293e+01 0 0 0
+365 0 1 0.0000000000000000e+00 9.6311294620612813e+00 1.7611418807618705e+01 1.0541862039599625e+01 0 0 0
+270 0 1 0.0000000000000000e+00 1.3072895766858553e+01 1.7114606691494185e+01 1.0336376465561568e+01 0 0 0
+274 0 1 0.0000000000000000e+00 1.6275034673129234e+01 1.6417973685210370e+01 1.0123213164366550e+01 0 0 0
+378 0 1 0.0000000000000000e+00 1.9254869427494249e+01 1.6193890799711639e+01 1.0371337096473260e+01 0 0 0
+394 0 1 0.0000000000000000e+00 1.6844796929526549e+01 1.9962340105287666e+01 1.0131548223858578e+01 0 0 0
+281 0 1 0.0000000000000000e+00 2.0007085143710281e+01 1.9389473705085869e+01 1.0480571658359768e+01 -1 0 0
+381 0 1 0.0000000000000000e+00 2.3190060583039340e+01 1.8983584733888712e+01 1.0117158156404969e+01 -1 0 0
+183 0 1 0.0000000000000000e+00 3.5503162240205755e+00 2.0032670420847932e+01 9.7730874983062694e+00 0 0 0
+104 0 1 0.0000000000000000e+00 4.2486664798162508e+00 2.3315234382514131e+01 9.9814784585356922e+00 0 -1 0
+301 0 1 0.0000000000000000e+00 1.3597388761638420e+00 2.2192707014158703e+01 1.0707289011003009e+01 0 -1 0
+282 0 1 0.0000000000000000e+00 6.2614984155063533e+00 2.1227298868362443e+01 9.1616042345464201e+00 0 0 0
+363 0 1 0.0000000000000000e+00 4.9619065664942932e+00 2.1379556237598759e+01 1.2096257556451606e+01 0 0 0
+288 0 1 0.0000000000000000e+00 8.4329498413359580e+00 2.2387115431492354e+01 1.1357122871048109e+01 0 0 0
+290 0 1 0.0000000000000000e+00 1.0902239764006197e+01 2.3735914643531679e+01 1.0360590442754313e+01 0 0 0
+289 0 1 0.0000000000000000e+00 1.0603381357457977e+01 2.0773281946700273e+01 1.0258406248542130e+01 0 0 0
+292 0 1 0.0000000000000000e+00 1.3759123174001408e+01 2.0241825003264854e+01 1.0527402733871449e+01 0 0 0
+390 0 1 0.0000000000000000e+00 1.4093086094923835e+01 2.3405664580774403e+01 1.0504574924029352e+01 0 0 0
+210 0 1 0.0000000000000000e+00 1.7502631626862691e+01 2.3160785663324493e+01 1.0238002676883958e+01 0 -1 0
+201 0 1 0.0000000000000000e+00 2.0498004569544364e+01 2.2344112302649272e+01 1.0412276940047143e+01 -1 -1 0
+303 0 1 0.0000000000000000e+00 2.2208625121706220e+01 2.0809290723768960e+01 1.2544098722648807e+01 -1 -1 0
+321 0 1 0.0000000000000000e+00 3.4867952110057816e+00 4.0027270151629040e+00 1.3004467501318468e+01 0 0 0
+324 0 1 0.0000000000000000e+00 1.4694838189889987e+00 2.5866597899724009e+00 1.4912507528075105e+01 0 0 0
+304 0 1 0.0000000000000000e+00 4.9669147120333017e+00 2.2103737407111161e+00 1.5033916916788947e+01 0 0 0
+305 0 1 0.0000000000000000e+00 7.5643404345337180e+00 3.1802586087102345e+00 1.4335707667811816e+01 0 0 0
+202 0 1 0.0000000000000000e+00 1.0670966543706555e+01 4.2435253977944623e+00 1.3747872772118725e+01 0 0 0
+307 0 1 0.0000000000000000e+00 1.2180681232743385e+01 2.3501965549012391e+00 1.6000355569675257e+01 0 0 0
+213 0 1 0.0000000000000000e+00 1.6017294309388745e+01 2.0600301850549032e+00 1.2677530174673386e+01 0 0 0
+333 0 1 0.0000000000000000e+00 1.4948153575147378e+01 3.2417844143445813e+00 1.5348462446504291e+01 0 0 0
+314 0 1 0.0000000000000000e+00 1.9137872921342840e+01 1.6638344699522367e+00 1.2505272032374419e+01 0 0 0
+335 0 1 0.0000000000000000e+00 1.7886708475816992e+01 3.5753148689851559e+00 1.4835509779007765e+01 0 0 0
+336 0 1 0.0000000000000000e+00 1.9629417157275409e+01 4.7850037532988638e+00 1.2461884004675662e+01 0 0 0
+337 0 1 0.0000000000000000e+00 2.2756767131431051e+01 4.4185771478177767e+00 1.2618782086273606e+01 0 0 0
+318 0 1 0.0000000000000000e+00 2.0751738044971091e+01 3.0016216722460003e+00 1.5040573393435515e+01 0 0 0
+243 0 1 0.0000000000000000e+00 4.5696742512061945e+00 7.3520347123532952e+00 1.3255086672767263e+01 0 0 0
+322 0 1 0.0000000000000000e+00 2.0024397954759787e+00 6.0119604939028060e+00 1.4515143569775670e+01 0 0 0
+127 0 1 0.0000000000000000e+00 7.2697374867820752e+00 8.3623062174543321e+00 1.2789550667817201e+01 0 0 0
+222 0 1 0.0000000000000000e+00 5.2162954895986280e+00 5.3608761320668750e+00 1.5241335938493295e+01 0 0 0
+302 0 1 0.0000000000000000e+00 8.5425096832083032e+00 6.1605712988916350e+00 1.4884901355552502e+01 0 0 0
+328 0 1 0.0000000000000000e+00 6.0972864907902862e+00 8.5456485056834577e+00 1.5580709012025446e+01 0 0 0
+251 0 1 0.0000000000000000e+00 1.1212588303679318e+01 7.4856965180752901e+00 1.3726789371410288e+01 0 0 0
+216 0 1 0.0000000000000000e+00 1.6661405302270989e+01 5.2193638580351411e+00 1.2588631515397717e+01 0 0 0
+326 0 1 0.0000000000000000e+00 1.3476258911259741e+01 5.9238365598494047e+00 1.2691324510176470e+01 0 0 0
+355 0 1 0.0000000000000000e+00 1.5254972317033907e+01 6.7085045330725661e+00 1.5060427576193145e+01 0 0 0
+212 0 1 0.0000000000000000e+00 1.6839856932411507e+01 8.3363223907427582e+00 1.2358918607300630e+01 0 0 0
+279 0 1 0.0000000000000000e+00 1.8067168203858170e+01 6.8424573676187590e+00 1.4816662487933073e+01 0 0 0
+353 0 1 0.0000000000000000e+00 1.9982981596174984e+01 8.2197599998223758e+00 1.2513346296379101e+01 0 0 0
+458 0 1 0.0000000000000000e+00 2.1310895408604601e+01 6.6157157999086511e+00 1.4856546761088078e+01 0 0 0
+339 0 1 0.0000000000000000e+00 2.2223215597239920e+00 9.1628109940510161e+00 1.4625963397542993e+01 1 0 0
+428 0 1 0.0000000000000000e+00 2.3594331179685435e+00 1.2450556884372951e+01 1.4454326559490827e+01 0 0 0
+323 0 1 0.0000000000000000e+00 4.6975276328935536e+00 1.0611182323928787e+01 1.3895488288072007e+01 0 0 0
+345 0 1 0.0000000000000000e+00 7.4838481509361481e+00 1.1379142137731572e+01 1.3028355469353730e+01 0 0 0
+248 0 1 0.0000000000000000e+00 6.7805801574654385e+00 1.1739275478119954e+01 1.5813423568491892e+01 0 0 0
+208 0 1 0.0000000000000000e+00 9.1239946007380972e+00 9.4482779686521674e+00 1.5096180797668996e+01 0 0 0
+253 0 1 0.0000000000000000e+00 1.1778297579364194e+01 1.0829870687674664e+01 1.4181386454137810e+01 0 0 0
+349 0 1 0.0000000000000000e+00 1.3890380356128137e+01 1.2185951312674863e+01 1.2229802614585434e+01 0 0 0
+260 0 1 0.0000000000000000e+00 1.5758221630050604e+01 1.0058639945690199e+01 1.5362515535623725e+01 0 0 0
+236 0 1 0.0000000000000000e+00 1.8845689441279884e+01 9.9007948211188133e+00 1.4655170344408193e+01 0 0 0
+244 0 1 0.0000000000000000e+00 2.0240650540870398e+01 1.1494751165083304e+01 1.2416228230943403e+01 -1 0 0
+242 0 1 0.0000000000000000e+00 2.3309673085834650e+01 1.1058693341252063e+01 1.2423306593937523e+01 -1 0 0
+379 0 1 0.0000000000000000e+00 2.1920584746369698e+01 9.7055021319018699e+00 1.4915773940410322e+01 0 0 0
+399 0 1 0.0000000000000000e+00 3.1496475586540011e+00 1.5315930300092116e+01 1.4998730233417964e+01 1 0 0
+267 0 1 0.0000000000000000e+00 5.3351027369616775e+00 1.3603444917937464e+01 1.4097537141639833e+01 0 0 0
+370 0 1 0.0000000000000000e+00 8.0090582713061682e+00 1.4395374935437534e+01 1.3140414994250568e+01 0 0 0
+346 0 1 0.0000000000000000e+00 7.2550553423085775e+00 1.4719870227221621e+01 1.6355836341811120e+01 0 0 0
+294 0 1 0.0000000000000000e+00 1.1521179260803756e+01 1.5723949884048439e+01 1.2486520348377367e+01 0 0 0
+245 0 1 0.0000000000000000e+00 9.5620062021789511e+00 1.2497727605935374e+01 1.5376036425536665e+01 0 0 0
+366 0 1 0.0000000000000000e+00 1.0070775062392546e+01 1.5492249411044796e+01 1.5511915954061486e+01 0 0 0
+177 0 1 0.0000000000000000e+00 1.2293284568437691e+01 1.3797267910947070e+01 1.4595710670026794e+01 0 0 0
+295 0 1 0.0000000000000000e+00 1.4620400172071113e+01 1.5249430218400896e+01 1.2524951074847687e+01 0 0 0
+175 0 1 0.0000000000000000e+00 1.5230389601213801e+01 1.3126978141325241e+01 1.4768661154905711e+01 0 0 0
+254 0 1 0.0000000000000000e+00 1.8496942898389424e+01 1.2905888159975980e+01 1.4938740290071086e+01 0 0 0
+280 0 1 0.0000000000000000e+00 1.6391200728687693e+01 1.6429880510361869e+01 1.5251480385235693e+01 0 0 0
+344 0 1 0.0000000000000000e+00 2.1964337943505452e+01 1.2840210171583148e+01 1.4842485894536031e+01 -1 0 0
+358 0 1 0.0000000000000000e+00 2.2763176008112076e+01 1.5774022371995020e+01 1.4803514244574043e+01 0 0 0
+401 0 1 0.0000000000000000e+00 3.6482995660016062e+00 1.8582519759827321e+01 1.5197463075707880e+01 0 -1 0
+361 0 1 0.0000000000000000e+00 5.8775550583047202e+00 1.6623916784359373e+01 1.3964532875567681e+01 0 0 0
+371 0 1 0.0000000000000000e+00 6.4341653870509532e+00 1.9572566918820819e+01 1.4441768055332583e+01 0 0 0
+462 0 1 0.0000000000000000e+00 7.9416909184593703e+00 1.7645075667553023e+01 1.6588025791980286e+01 0 0 0
+276 0 1 0.0000000000000000e+00 1.1682628299089791e+01 1.8639351287883727e+01 1.2718037116131635e+01 0 0 0
+393 0 1 0.0000000000000000e+00 8.7771773453297026e+00 1.7453267103801377e+01 1.3489082502862585e+01 0 0 0
+392 0 1 0.0000000000000000e+00 1.0770357044539237e+01 1.8686882087055672e+01 1.5556849927735772e+01 0 0 0
+272 0 1 0.0000000000000000e+00 1.4951645900713956e+01 1.8092078919705376e+01 1.2718579631513897e+01 0 0 0
+215 0 1 0.0000000000000000e+00 1.3317251871240353e+01 1.6970229355276260e+01 1.4864066054445038e+01 0 -1 0
+477 0 1 0.0000000000000000e+00 1.9474127148156896e+01 1.5815801038509971e+01 1.4919222834379894e+01 0 0 0
+317 0 1 0.0000000000000000e+00 1.7784893431569778e+01 1.7693392128386854e+01 1.2880834233738357e+01 0 -1 0
+397 0 1 0.0000000000000000e+00 1.6973218381604799e+01 1.9507302982373034e+01 1.5447978193222323e+01 0 0 0
+284 0 1 0.0000000000000000e+00 2.0063782508958429e+01 1.9205330340811429e+01 1.4666376591750343e+01 -1 0 0
+362 0 1 0.0000000000000000e+00 2.1397846038916292e+01 1.7474782439562834e+01 1.2409034160579530e+01 -1 0 0
+385 0 1 0.0000000000000000e+00 2.3015296226363468e+01 1.8766291425972735e+01 1.5069822195795057e+01 -1 0 0
+382 0 1 0.0000000000000000e+00 2.3538803687764238e+00 2.0001312565814853e+01 1.2967856563419412e+01 0 0 0
+223 0 1 0.0000000000000000e+00 3.1355611664622423e+00 2.3539090697631934e+01 1.2910012387506370e+01 0 -1 0
+384 0 1 0.0000000000000000e+00 4.1506463380067533e+00 2.1684928161145560e+01 1.5099159829170725e+01 0 0 0
+386 0 1 0.0000000000000000e+00 7.0861646523639346e+00 2.2659675899516341e+01 1.4455227350735150e+01 0 0 0
+205 0 1 0.0000000000000000e+00 9.8736319331633595e+00 2.3732135209104889e+01 1.3584402172006200e+01 0 -1 0
+387 0 1 0.0000000000000000e+00 9.6215868565470721e+00 2.0639358648300405e+01 1.3430809595544030e+01 0 0 0
+395 0 1 0.0000000000000000e+00 1.1400291865033795e+01 2.1931253553846108e+01 1.5846707011909075e+01 0 0 0
+315 0 1 0.0000000000000000e+00 1.3514115258746809e+01 1.9911121379641695e+01 1.4802529435402516e+01 0 -1 0
+309 0 1 0.0000000000000000e+00 1.2340174001446645e+01 2.1883852734235241e+01 1.2749684235033383e+01 0 -1 0
+311 0 1 0.0000000000000000e+00 1.5423162387184918e+01 2.1285660562045827e+01 1.2729341207307289e+01 0 -1 0
+430 0 1 0.0000000000000000e+00 1.4144751366143961e+01 2.3000456723589739e+01 1.4890479514939024e+01 0 -1 0
+195 0 1 0.0000000000000000e+00 1.8401504842936816e+01 2.1105746747886553e+01 1.2479003672022948e+01 0 0 0
+220 0 1 0.0000000000000000e+00 1.7138649808582777e+01 2.2544756601051454e+01 1.5010106314151052e+01 0 -1 0
+437 0 1 0.0000000000000000e+00 2.3519245128129764e+01 2.1954264896386686e+01 1.4913696666491497e+01 0 -1 0
+219 0 1 0.0000000000000000e+00 2.0179768306022691e+01 2.2466390876247225e+01 1.4920669979369706e+01 0 -1 0
+422 0 1 0.0000000000000000e+00 3.0513345603885691e+00 3.7061221957205515e+00 1.7199376795315509e+01 0 0 0
+483 0 1 0.0000000000000000e+00 1.5645153684017852e+00 2.5856186707567579e+00 1.9609913819090234e+01 0 1 0
+6 0 1 0.0000000000000000e+00 4.6063444438610297e+00 2.2657523619562894e+00 1.9515448436834109e+01 0 0 -1
+402 0 1 0.0000000000000000e+00 6.7634922328086171e+00 3.3447208605386356e+00 1.7232553893747642e+01 0 0 0
+466 0 1 0.0000000000000000e+00 7.8517232590806874e+00 1.7334413152927222e+00 1.9561300276707438e+01 0 1 0
+90 0 1 0.0000000000000000e+00 8.2125734337886414e+00 4.8562547493756316e+00 1.9650142103255828e+01 0 1 -1
+492 0 1 0.0000000000000000e+00 9.6606771696180846e+00 4.0723821993903933e+00 1.6733036309122046e+01 0 1 0
+310 0 1 0.0000000000000000e+00 1.0739397174780597e+01 2.4797603717611869e+00 1.8883599199889087e+01 0 0 0
+410 0 1 0.0000000000000000e+00 1.3469749442813285e+01 3.8262359605236478e+00 1.8415706221066021e+01 0 0 0
+296 0 1 0.0000000000000000e+00 1.5983625574269725e+01 1.3524493265268964e+00 1.7514403993773243e+01 0 1 0
+340 0 1 0.0000000000000000e+00 1.6326667095661605e+01 4.6987909865928064e+00 1.7598033646973303e+01 0 0 0
+313 0 1 0.0000000000000000e+00 1.7655602843222482e+01 2.6552415015959525e+00 1.9578792883297719e+01 0 0 0
+300 0 1 0.0000000000000000e+00 1.9128403710777995e+01 1.7411385351338380e+00 1.7146745758628363e+01 0 1 0
+357 0 1 0.0000000000000000e+00 2.0986937544331312e+01 3.6088025658293672e+00 1.8982890410101504e+01 0 0 0
+438 0 1 0.0000000000000000e+00 2.2934980677566820e+01 4.7133342414435493e+00 1.6640322196865004e+01 0 0 0
+383 0 1 0.0000000000000000e+00 2.2157179072733811e+01 1.1822855613270491e+00 1.7246796746015765e+01 -1 1 0
+457 0 1 0.0000000000000000e+00 3.3913158688838494e+00 7.0661242551440369e+00 1.7123439956340647e+01 1 0 0
+439 0 1 0.0000000000000000e+00 1.6456771692841889e+00 5.9082456608655765e+00 1.9388690277881441e+01 1 0 0
+427 0 1 0.0000000000000000e+00 4.8937362875961075e+00 5.4906282593055380e+00 1.9271591567528734e+01 0 0 0
+312 0 1 0.0000000000000000e+00 7.0734940036179150e+00 6.4947944816535790e+00 1.7516912692120446e+01 0 0 0
+423 0 1 0.0000000000000000e+00 5.3408751326436308e+00 8.7687788528029209e+00 1.9392422033802756e+01 0 0 0
+306 0 1 0.0000000000000000e+00 1.2573636572276015e+01 5.4087719549098781e+00 1.5946143777705498e+01 0 0 0
+429 0 1 0.0000000000000000e+00 1.1356216267856171e+01 5.4948898960950991e+00 1.9008847650748613e+01 0 0 0
+329 0 1 0.0000000000000000e+00 1.0217858596150132e+01 7.2749865026093588e+00 1.7070947264201607e+01 0 0 0
+30 0 1 0.0000000000000000e+00 1.1841557194182398e+01 8.6104014781555946e+00 1.9542026626589042e+01 0 0 -1
+332 0 1 0.0000000000000000e+00 1.2644715089326848e+01 8.4247813739243220e+00 1.6204162513905260e+01 0 0 0
+433 0 1 0.0000000000000000e+00 1.4294641666033518e+01 6.7404947180215595e+00 1.8503527204633240e+01 0 0 0
+455 0 1 0.0000000000000000e+00 1.9215764033059813e+01 5.1536995407142800e+00 1.6992562877065424e+01 0 0 0
+373 0 1 0.0000000000000000e+00 1.7089620846166206e+01 7.7350756641138236e+00 1.7594238030870439e+01 0 0 0
+338 0 1 0.0000000000000000e+00 1.8479408649098779e+01 5.6977094754562838e+00 1.9861923502445006e+01 0 0 0
+360 0 1 0.0000000000000000e+00 1.9949707609793101e+01 8.2108966937703194e+00 1.7099696262447416e+01 0 0 0
+459 0 1 0.0000000000000000e+00 2.3107996491948199e+01 7.8517600551892208e+00 1.7077040918950107e+01 0 0 0
+454 0 1 0.0000000000000000e+00 2.1289859782723077e+01 6.6084957420601116e+00 1.9084203050317264e+01 0 0 0
+343 0 1 0.0000000000000000e+00 2.2332858100301607e+00 9.2345617483063105e+00 1.9179619819780061e+01 0 0 0
+327 0 1 0.0000000000000000e+00 4.1153995623555577e+00 1.0404019518018465e+01 1.7081509721436191e+01 0 0 0
+342 0 1 0.0000000000000000e+00 2.8298564108576332e+00 1.2333541469316375e+01 1.9308507884903847e+01 0 0 0
+325 0 1 0.0000000000000000e+00 7.7385756289814633e+00 9.8232696911100934e+00 1.7769320680683524e+01 0 0 0
+247 0 1 0.0000000000000000e+00 5.9263352489321708e+00 1.1613531348404802e+01 1.9489983576880089e+01 0 0 0
+271 0 1 0.0000000000000000e+00 1.0549996023217021e+01 1.0490313364791106e+01 1.7780316904494310e+01 0 0 0
+389 0 1 0.0000000000000000e+00 1.2590969150758321e+01 1.1535215568248223e+01 1.9630789536743666e+01 0 0 0
+374 0 1 0.0000000000000000e+00 1.3364593386759294e+01 1.1614340893325314e+01 1.6590994592833113e+01 0 0 0
+453 0 1 0.0000000000000000e+00 1.4690802944622657e+01 9.5298651175097788e+00 1.8345012871835419e+01 0 0 0
+375 0 1 0.0000000000000000e+00 1.7487110284228184e+01 1.0568493271942932e+01 1.7759413458328162e+01 0 0 0
+460 0 1 0.0000000000000000e+00 1.8789754633953550e+01 8.7009919007546426e+00 1.9832684180866799e+01 0 0 0
+449 0 1 0.0000000000000000e+00 1.9365035735331372e+01 1.1749884788530416e+01 2.0077506582757941e+01 0 0 0
+444 0 1 0.0000000000000000e+00 2.0341271698920131e+01 1.1410888162249712e+01 1.6962765479164048e+01 -1 0 0
+341 0 1 0.0000000000000000e+00 2.3537611966515179e+01 1.0889039600422995e+01 1.6961562115639836e+01 -1 0 0
+441 0 1 0.0000000000000000e+00 2.1737509162328738e+01 9.6863326038615511e+00 1.8964552591169248e+01 -1 0 0
+369 0 1 0.0000000000000000e+00 4.4490480851172372e+00 1.3508663854227891e+01 1.7273814155596412e+01 0 0 0
+464 0 1 0.0000000000000000e+00 3.0561760343828874e+00 1.5395280957218409e+01 1.9322269137775837e+01 0 0 0
+364 0 1 0.0000000000000000e+00 2.3791765838928086e+01 1.4053284109968770e+01 1.6907058143057320e+01 -1 0 0
+436 0 1 0.0000000000000000e+00 8.5565126522038604e+00 1.2630164354828068e+01 1.8415369849181353e+01 0 0 0
+448 0 1 0.0000000000000000e+00 6.2472875113482651e+00 1.4754925809509379e+01 1.9222115988505543e+01 0 0 0
+486 0 1 0.0000000000000000e+00 1.1386880338820493e+01 1.3651430913774572e+01 1.7607338336257818e+01 0 0 0
+426 0 1 0.0000000000000000e+00 9.2923903680648650e+00 1.5654236910020153e+01 1.8522994314899137e+01 0 0 0
+275 0 1 0.0000000000000000e+00 1.4056139428579371e+01 1.4829953771979627e+01 1.6871086653750972e+01 0 0 0
+256 0 1 0.0000000000000000e+00 1.5186045819952900e+01 1.2671556904959363e+01 1.8771611041305853e+01 0 0 0
+376 0 1 0.0000000000000000e+00 1.5861104909808361e+01 1.5653044262735170e+01 1.9140898284276062e+01 0 0 0
+352 0 1 0.0000000000000000e+00 1.2923444380395356e+01 1.4868047419258353e+01 1.9962059711838943e+01 0 0 0
+380 0 1 0.0000000000000000e+00 1.7732007178154230e+01 1.3607480949501587e+01 1.7741571867198704e+01 0 0 0
+442 0 1 0.0000000000000000e+00 2.2120886669757919e+01 1.2850781748479720e+01 1.9216623233346290e+01 -1 0 0
+58 0 1 0.0000000000000000e+00 2.0834790395864594e+01 1.4563695060756128e+01 1.7212007507960500e+01 0 0 -1
+461 0 1 0.0000000000000000e+00 2.2791618605747253e+01 1.5875645319343430e+01 1.9176712067039247e+01 -1 0 0
+468 0 1 0.0000000000000000e+00 1.9766964989156917e+00 1.7227996614825589e+01 1.7243427779885966e+01 0 0 0
+485 0 1 0.0000000000000000e+00 3.8729289306834471e+00 1.8537805644053432e+01 1.9561372688507635e+01 0 0 0
+368 0 1 0.0000000000000000e+00 5.1366664260557666e+00 1.6721259241970973e+01 1.7026882684194440e+01 0 0 0
+465 0 1 0.0000000000000000e+00 6.8471639438959819e+00 1.7869677817966327e+01 1.9343352207864907e+01 0 0 0
+405 0 1 0.0000000000000000e+00 5.6456939278658336e+00 1.9937218607189703e+01 1.7459388438272324e+01 0 -1 0
+473 0 1 0.0000000000000000e+00 1.1925437583873244e+01 1.6907744651201796e+01 1.7659296312436723e+01 0 0 0
+367 0 1 0.0000000000000000e+00 1.0035427259724926e+01 1.8946060912655820e+01 1.8868470420947151e+01 0 0 0
+372 0 1 0.0000000000000000e+00 1.2571888407135896e+01 1.9950320020371990e+01 1.7827144174546948e+01 0 0 0
+93 0 1 0.0000000000000000e+00 1.5003917679749225e+01 1.7908618622174217e+01 1.7329640917786204e+01 0 0 -1
+451 0 1 0.0000000000000000e+00 1.3664588557978300e+01 1.7906234782799782e+01 2.0097338835249062e+01 0 0 0
+413 0 1 0.0000000000000000e+00 1.8331471783993500e+01 1.6619193453850663e+01 1.7684750031449973e+01 0 -1 0
+498 0 1 0.0000000000000000e+00 2.1287344322313775e+01 1.7680928018613294e+01 1.7409357907678320e+01 0 0 0
+85 0 1 0.0000000000000000e+00 2.3037043198856381e+01 1.8944916893169129e+01 1.9360625574109854e+01 -1 0 -1
+479 0 1 0.0000000000000000e+00 2.0425337266581330e+01 1.7850713324120452e+01 2.0395819988337927e+01 0 0 0
+421 0 1 0.0000000000000000e+00 2.6310992750466773e+00 2.3516486786091104e+01 1.7178168740164221e+01 0 -1 0
+482 0 1 0.0000000000000000e+00 2.1982219699046786e+00 2.0347010160151495e+01 1.7301358853102048e+01 0 0 0
+408 0 1 0.0000000000000000e+00 4.1814447047451555e+00 2.1800279831164207e+01 1.9437006499957633e+01 0 -1 0
+308 0 1 0.0000000000000000e+00 6.0853292963316150e+00 2.3077760004875298e+01 1.7391876483251902e+01 0 -1 0
+470 0 1 0.0000000000000000e+00 7.4469021538053353e+00 2.0993671259787849e+01 1.9537751109391582e+01 0 0 0
+331 0 1 0.0000000000000000e+00 8.7061590618223512e+00 2.0772157101277166e+01 1.6634527720833248e+01 0 -1 0
+388 0 1 0.0000000000000000e+00 9.0652583766254597e+00 2.3689392538634564e+01 1.6736211951371367e+01 0 0 0
+400 0 1 0.0000000000000000e+00 1.0375125943623035e+01 2.1934653697460217e+01 1.8964832685956143e+01 0 0 0
+391 0 1 0.0000000000000000e+00 1.3052298305820846e+01 2.3095094081121829e+01 1.8203128414685139e+01 0 0 0
+319 0 1 0.0000000000000000e+00 1.5268533511214097e+01 2.1091009122144570e+01 1.7262655393452299e+01 0 -1 0
+396 0 1 0.0000000000000000e+00 1.8710636673824407e+01 2.1402894391240029e+01 1.7382230396418500e+01 0 0 0
+418 0 1 0.0000000000000000e+00 2.3411582075913142e+01 2.1900435771208148e+01 1.9525737864793204e+01 0 -1 0
+398 0 1 0.0000000000000000e+00 2.1717481088922860e+01 2.0734809993495446e+01 1.6952984997843096e+01 0 0 0
+403 0 1 0.0000000000000000e+00 3.2515365009789301e+00 4.1036208983689164e+00 2.1708690965950467e+01 0 0 0
+9 0 1 0.0000000000000000e+00 6.2647477889721559e+00 3.5938630105320160e+00 2.1852205092002063e+01 0 0 -1
+92 0 1 0.0000000000000000e+00 9.3965888121330270e+00 3.0694664531875988e+00 2.1991829941142765e+01 0 1 -1
+431 0 1 0.0000000000000000e+00 1.2445795991321463e+01 2.8430594965103575e+00 2.1415014969789222e+01 0 0 0
+16 0 1 0.0000000000000000e+00 1.4711136328300006e+01 4.3790381781475487e+00 1.3301195055529724e+00 0 0 0
+489 0 1 0.0000000000000000e+00 1.4939236379841349e+01 1.7077584977853153e+00 2.0242466177133217e+01 0 1 0
+434 0 1 0.0000000000000000e+00 1.5692925635724098e+01 4.6582813383846773e+00 2.0384114627085548e+01 0 0 0
+415 0 1 0.0000000000000000e+00 1.9490265973989690e+01 3.6660763540316235e+00 2.1735119264804261e+01 0 0 0
+15 0 1 0.0000000000000000e+00 1.6599519910488496e+01 2.5141467650070739e+00 2.2653608404313228e+01 0 0 -1
+404 0 1 0.0000000000000000e+00 2.0659384981713643e+01 1.6976730058662102e+00 2.3759932781020041e+01 -1 0 0
+481 0 1 0.0000000000000000e+00 2.3401797304020903e+01 2.8463486877615392e+00 2.3192101418492875e+01 -1 1 0
+359 0 1 0.0000000000000000e+00 2.2290042225621775e+01 4.7620491903935100e+00 2.1400819229848711e+01 0 0 0
+320 0 1 0.0000000000000000e+00 2.1740494992917014e+01 1.6883543998799091e+00 2.0918781007941668e+01 0 0 0
+21 0 1 0.0000000000000000e+00 3.5881924431916814e+00 7.1609919249180400e+00 2.1359844757849316e+01 0 0 -1
+316 0 1 0.0000000000000000e+00 1.4511894408042423e+00 6.0709156511260494e+00 2.3475512106020112e+01 1 0 0
+447 0 1 0.0000000000000000e+00 8.4127801523639683e+00 8.2503833571908309e+00 1.4165456994805052e+00 0 0 1
+425 0 1 0.0000000000000000e+00 6.6196773935346185e+00 6.7192689674595565e+00 2.1724128579807402e+01 0 0 0
+432 0 1 0.0000000000000000e+00 1.1881576905198592e+01 7.8685372643200804e+00 1.6032640155783575e+00 0 0 1
+350 0 1 0.0000000000000000e+00 8.8905108725283704e+00 7.8708696554907087e+00 1.9768858464618134e+01 0 0 0
+29 0 1 0.0000000000000000e+00 9.9597803751418184e+00 6.3584965321152351e+00 2.2122401539069593e+01 0 0 -1
+130 0 1 0.0000000000000000e+00 1.5125883298410630e+01 7.6505538569352582e+00 2.3821223545490184e+01 0 0 -1
+33 0 1 0.0000000000000000e+00 1.3503598182133038e+01 6.2889377620811073e+00 2.1761369142752866e+01 0 0 -1
+356 0 1 0.0000000000000000e+00 1.6041024162853358e+01 7.5991004898765677e+00 2.0618343388498722e+01 0 0 0
+133 0 1 0.0000000000000000e+00 1.7347543523586143e+01 5.4943944624358503e+00 2.2785193127161140e+01 0 0 -1
+440 0 1 0.0000000000000000e+00 2.0228379632130533e+01 6.8666683965548803e+00 2.2043893697416259e+01 0 0 0
+53 0 1 0.0000000000000000e+00 1.7841727444528996e+01 8.6323895035604483e+00 2.2921528538508202e+01 0 0 -1
+424 0 1 0.0000000000000000e+00 2.3069542331779449e+01 8.0497657428816503e+00 2.1217135837233140e+01 -1 0 0
+445 0 1 0.0000000000000000e+00 4.1251762846073028e+00 1.0099878426930136e+01 2.1701293972792435e+01 0 0 0
+46 0 1 0.0000000000000000e+00 5.7882872612510106e+00 1.1712175061440483e+01 2.3669495520618518e+01 0 0 -1
+51 0 1 0.0000000000000000e+00 7.3429342236989772e+00 9.9488407888922037e+00 2.1706156134389101e+01 0 0 -1
+149 0 1 0.0000000000000000e+00 1.1869462605979836e+01 1.1518325398661412e+01 2.3396397934337816e+01 0 0 -1
+12 0 1 0.0000000000000000e+00 1.0060770632012796e+01 1.0625637392694797e+01 2.1049648652147258e+01 0 0 -1
+36 0 1 0.0000000000000000e+00 1.3656978300568515e+01 9.5365109060893456e+00 2.1645911210686961e+01 0 0 -1
+351 0 1 0.0000000000000000e+00 1.6681907755840804e+01 1.0483525792916268e+01 2.0773612352656858e+01 0 0 0
+480 0 1 0.0000000000000000e+00 1.8362489264924434e+01 1.1816123740838378e+01 2.2807789220959268e+01 0 0 0
+443 0 1 0.0000000000000000e+00 2.0838935255068993e+01 9.8207911008292506e+00 2.1873573017672541e+01 -1 0 0
+347 0 1 0.0000000000000000e+00 2.3735310000004318e+01 1.1154277932552564e+01 2.1569787898342302e+01 -1 0 0
+467 0 1 0.0000000000000000e+00 3.1449201034621339e+00 1.5540111187734791e+01 2.3785983357419852e+01 0 0 0
+469 0 1 0.0000000000000000e+00 4.5254887859527706e+00 1.3408200145969905e+01 2.1648257896016382e+01 0 0 0
+348 0 1 0.0000000000000000e+00 1.3857264349548153e+00 1.4315597196613677e+01 2.1672463452288632e+01 0 0 0
+49 0 1 0.0000000000000000e+00 7.5806556447215829e+00 1.2767617407861987e+01 2.1614259365624175e+01 0 0 -1
+452 0 1 0.0000000000000000e+00 8.2755233106138135e+00 1.5995891464522609e+01 2.1616725575968395e+01 0 0 0
+55 0 1 0.0000000000000000e+00 1.0648830134644639e+01 1.3385838882082091e+01 2.1487251489016256e+01 0 0 -1
+76 0 1 0.0000000000000000e+00 1.2588191060052305e+01 1.4551035981587807e+01 2.3817376129965126e+01 0 0 -1
+56 0 1 0.0000000000000000e+00 1.4308438300780237e+01 1.2860944971456210e+01 2.1835329906316495e+01 0 0 -1
+450 0 1 0.0000000000000000e+00 1.5054005922738559e+01 1.5999478459833922e+01 2.1922704788950348e+01 0 0 0
+497 0 1 0.0000000000000000e+00 1.9967999068777541e+01 1.4816788726355973e+01 1.9961562135235699e+01 0 0 0
+456 0 1 0.0000000000000000e+00 1.7222250843777978e+01 1.3913052931653231e+01 2.0970878988165371e+01 0 0 0
+474 0 1 0.0000000000000000e+00 1.8929942272784345e+01 1.5125458554575422e+01 2.2991432665027759e+01 0 0 0
+178 0 1 0.0000000000000000e+00 2.1016382475304152e+01 1.2978610718251527e+01 2.2317233032290208e+01 0 0 -1
+463 0 1 0.0000000000000000e+00 2.1582240902449879e+01 1.6078163953174190e+01 2.2394152494815224e+01 -1 0 0
+487 0 1 0.0000000000000000e+00 1.7573472248101150e+00 1.7356410863630916e+01 2.1513361088778261e+01 0 0 0
+446 0 1 0.0000000000000000e+00 4.9803752316109842e+00 1.6348206720291266e+01 2.1518932177549228e+01 0 0 0
+407 0 1 0.0000000000000000e+00 5.4725212063704367e+00 1.9976940766376895e+01 2.1572213200225324e+01 0 -1 0
+409 0 1 0.0000000000000000e+00 8.4451150804170894e+00 1.9015802912330145e+01 2.1592166278518441e+01 0 -1 0
+54 0 1 0.0000000000000000e+00 1.1351797393153154e+01 1.6476099986302824e+01 2.1649538622116040e+01 0 0 -1
+50 0 1 0.0000000000000000e+00 1.1593724467625512e+01 1.9642473727300374e+01 2.1652883610143004e+01 0 0 -1
+471 0 1 0.0000000000000000e+00 1.3277706800532309e+01 1.7772211360949271e+01 1.2427873404357737e+00 0 0 1
+494 0 1 0.0000000000000000e+00 1.6021317739589037e+01 1.9111457371904059e+01 2.1780918746484843e+01 0 0 0
+478 0 1 0.0000000000000000e+00 1.7819131462083316e+01 1.6930288900080967e+01 2.1052095472555202e+01 0 0 0
+476 0 1 0.0000000000000000e+00 1.9466567808529653e+01 1.8227644103242685e+01 2.3355990279303235e+01 0 0 0
+495 0 1 0.0000000000000000e+00 1.7240497954882859e+01 1.9282240076261122e+01 1.9101875132912998e+01 0 0 0
+81 0 1 0.0000000000000000e+00 2.2322654826622259e+01 1.9331238826340776e+01 2.2377231600591291e+01 -1 0 -1
+406 0 1 0.0000000000000000e+00 2.8204715865920962e+00 2.3462222114849432e+01 2.1712124167813389e+01 0 -1 0
+3 0 1 0.0000000000000000e+00 2.5440862289199289e+00 2.0439454619588446e+01 2.1605895599463103e+01 0 -1 -1
+488 0 1 0.0000000000000000e+00 6.0163733003066131e+00 2.3141320360282741e+01 2.1856681577588237e+01 0 0 0
+89 0 1 0.0000000000000000e+00 9.3996521497746723e+00 2.2653597435484556e+01 2.1807483498140112e+01 0 0 -1
+416 0 1 0.0000000000000000e+00 1.2523254656334945e+01 2.2406509319493857e+01 2.1829038761388595e+01 0 -1 0
+493 0 1 0.0000000000000000e+00 1.4254076635237949e+01 2.0870961298305300e+01 2.0051042947599932e+01 0 0 0
+14 0 1 0.0000000000000000e+00 1.4158625864982913e+01 2.3786562499891176e+01 1.5771700404828948e+00 0 -1 0
+491 0 1 0.0000000000000000e+00 1.3719918047782754e+01 2.0761138162970749e+01 1.7374322422965705e+00 0 0 1
+411 0 1 0.0000000000000000e+00 1.6098205905663292e+01 2.2137663187834015e+01 2.1965985848298189e+01 0 -1 0
+414 0 1 0.0000000000000000e+00 1.8890586035777982e+01 2.3447566182035679e+01 2.1428388820049133e+01 0 -1 0
+499 0 1 0.0000000000000000e+00 2.0083027626359467e+01 2.1344000166172407e+01 2.3489740675715300e+01 0 0 0
+417 0 1 0.0000000000000000e+00 2.0586092330959747e+01 2.0828198905510376e+01 2.0251220410254703e+01 0 -1 0
+97 0 1 0.0000000000000000e+00 2.2736717060598266e+01 2.2169269418157434e+01 2.2676268596808356e+01 0 0 -1
+
+Velocities
+
+8 6.4379894536347436e-04 6.0778059744137072e-04 4.0975589785625906e-03
+86 -1.9820550497287766e-03 -2.7113694472680125e-03 -1.1351205454245142e-03
+107 9.1603080520704131e-04 -3.9829878929790495e-03 4.5677371460097769e-03
+185 3.1501225830829370e-03 3.9737776393280856e-03 1.6077317343790136e-03
+186 -3.7212815732603696e-04 3.0934980168122296e-03 1.4895841378301392e-03
+412 -7.8330045172172308e-05 -4.2329688834505247e-03 2.5287095737537464e-03
+109 -3.4282072806417993e-03 2.7871225219395068e-03 -1.0126786815145036e-03
+31 2.2936928034389473e-03 -4.5968792814755303e-04 -7.1839408598376581e-04
+111 -3.3275239918885463e-03 -7.2352110204495799e-05 -2.1905603281031192e-04
+420 -2.6562157188719684e-03 2.5558131731788589e-04 -8.8136533867046575e-04
+18 -4.9803740413089076e-04 -1.4528491878251870e-03 -6.4219809007443767e-04
+1 2.2821271486228199e-03 -4.7313104955521665e-04 -6.7273350466257845e-04
+34 -3.2671440957668233e-04 6.0000005383839441e-04 -6.7713303312684514e-04
+435 1.9478157837952864e-03 -2.9754801385513132e-03 1.8132101205827456e-03
+22 2.0024045672126277e-03 -1.2292234112580356e-03 -2.2283421120369543e-03
+25 9.9525726158173093e-04 -1.7590592234821045e-03 2.1117569312581685e-03
+27 2.2685361711566052e-03 -2.1246210525394816e-03 -7.5853230579064760e-04
+26 2.0899987417404190e-05 -4.2162721566978622e-04 1.7255885314701176e-03
+11 1.4943339552124938e-03 -8.7918159187747524e-04 4.1612757428465430e-04
+116 -1.3535424380083195e-04 -1.2446502138298886e-03 1.5440732968027982e-03
+114 -2.2333847086465188e-03 -5.0829641207820835e-04 -8.0819690545875481e-04
+35 1.3592308723165561e-03 -2.1270002529772797e-03 3.8708364114561894e-04
+134 6.2961896164142358e-04 4.3878864002628139e-03 -3.7898820177910139e-03
+39 -1.0246720954851617e-04 -2.2111393212416687e-03 8.6699054615891669e-04
+44 -1.8197672163745087e-03 -1.7116104948000598e-03 2.2555030521205165e-03
+57 2.4862605063230705e-04 1.0754530232736038e-03 -2.4814101788060792e-05
+41 3.0836020064692552e-03 -3.2949643615484052e-04 -1.0532793734614498e-03
+43 1.3897607607924142e-03 -2.2505165531794555e-03 -9.9813818893744900e-04
+79 1.3950659380422342e-04 1.5727876503261219e-03 2.2050811816493572e-03
+61 -2.9998887286234927e-03 1.6953012099746492e-03 -1.8588757171389832e-03
+45 -8.3882635812331289e-04 1.7455045742822610e-03 -3.2364646400194932e-03
+146 8.2775770999471331e-05 -1.4618510320258422e-03 2.3050484134849189e-05
+153 -1.4538175708981435e-03 3.9762551150007422e-03 -2.6460665476582611e-03
+150 -9.3305438228124670e-04 4.0756993769805119e-04 -1.7067917125495398e-03
+156 -1.1023980618402129e-03 -1.5005593706774933e-03 -1.2246800191211273e-04
+71 -1.2824061168203020e-03 1.3092219578681272e-03 1.1782837589710275e-03
+354 1.0903303542197662e-03 1.0740395519666403e-03 7.6439069929636115e-04
+78 -1.4591818072149718e-04 -4.3574476394408150e-04 9.8534699560356488e-04
+24 1.3065692421031850e-03 -3.2367683391634116e-04 1.2030574452801756e-03
+62 -1.4744656664196221e-03 8.7567341113329420e-05 5.2538440507229585e-04
+60 -1.9688531217907260e-03 1.7961024154458552e-03 4.1165086704837163e-04
+158 -1.7443877933172288e-03 2.8282214186101779e-03 -3.5179707776998673e-04
+42 7.9256656563131628e-04 1.3881127300665482e-03 -4.9794828013623102e-03
+52 -3.3089782806203005e-04 -2.5081962926763548e-03 2.5425907463834676e-03
+170 1.9908314792790203e-03 1.2497611156829494e-03 -1.9659195967801136e-03
+65 -5.1701303632325458e-03 -1.8559532539659358e-03 2.6992012147996369e-03
+73 3.3634763842309837e-04 2.3333102085357368e-04 -7.8633657407874776e-04
+91 1.2383315326485712e-03 -2.8445080388263587e-03 -1.0296738388029824e-03
+72 -3.5280033053620326e-03 -2.4034804564514048e-03 3.0402489530283796e-04
+174 -2.9552643206936396e-03 2.2107794207851985e-04 -2.7173762897966824e-04
+77 -3.4622961014676617e-03 8.7521346922250309e-04 -1.0413469487095528e-03
+75 -3.3001292243359839e-04 -1.8643778456373052e-03 2.0025835931125478e-03
+59 -1.2185890365711967e-04 1.5349845058112682e-03 -4.9728763730810127e-04
+63 -1.7934097057167248e-03 -9.6327899686013418e-04 5.1895391942098201e-04
+74 7.2840361665777884e-06 1.9954631587488293e-04 -2.1998774140313490e-03
+181 2.7462106319288107e-03 -2.9295177658904539e-03 1.8939336718189999e-03
+484 -2.8025360979193588e-03 -9.3211523820296762e-04 1.0088238758206810e-03
+162 -1.3089065440234043e-03 8.5765904573636173e-04 -6.6282618893250239e-04
+142 3.1381433750177525e-03 -2.7328059785994789e-04 3.2251580063506801e-03
+83 2.3075804453623382e-03 1.9906440390968162e-03 -2.5430079326068823e-03
+64 1.0325764211635289e-03 2.3484424201519988e-03 -5.5708737420886436e-03
+70 1.3001821070034040e-03 1.6013557815647279e-03 5.6685077007585522e-04
+69 4.4205158402401360e-03 -1.5211436722265335e-03 1.1728221827194628e-03
+214 -7.6917680695481113e-04 -2.9956487344571531e-03 4.1234588880337906e-03
+475 -9.8348984409791563e-04 -1.3200629564931528e-03 -9.0041372393267669e-04
+197 7.0284387988665687e-06 -1.7619872998593474e-03 -2.3984290297334597e-03
+161 -2.1034465490616010e-03 7.2398932591213601e-04 -2.1787249481869243e-03
+496 -1.7473673694765322e-03 -4.1920182549646276e-04 -2.1876785390183102e-03
+7 -1.9555642214078156e-03 1.8022654918578090e-03 -3.0027517188173278e-03
+5 -4.0029386372114348e-03 1.5706016506532297e-03 4.3559712135963759e-04
+82 1.4187147725232918e-03 -8.5874749417233205e-04 2.2296175558202698e-05
+102 2.1916609757355867e-03 2.1550754343104767e-03 -2.0928012105286844e-03
+88 4.2149348666422948e-04 2.4717632747210424e-03 1.0002159525630666e-05
+66 1.5485498239086958e-03 7.3289306507054019e-04 1.4225190201450140e-03
+10 2.3833017621458668e-03 3.5065013856146912e-03 -4.1314518685847167e-03
+67 -7.2182882153824541e-04 2.1463222554018767e-03 2.3567577004780151e-04
+472 1.2045258589683777e-03 2.1421294191104139e-03 3.2395870326263898e-03
+13 -4.0136507935682178e-03 2.8088852167406720e-03 -1.3522861122914408e-03
+94 3.4933639262960852e-04 -2.5315866923059415e-03 3.0779724705244497e-03
+490 3.0372839484287414e-03 3.1224586170482252e-04 5.0472519159895091e-03
+500 3.8113326527169714e-03 -1.9093285856460116e-03 2.9806049470196003e-03
+100 -4.4774265020782712e-05 -2.6849411502886263e-03 2.8722821320914470e-03
+419 9.2868862713011910e-04 -2.1746514268310602e-03 -4.5662714605532813e-05
+19 8.0045256466797297e-04 1.2915846599779444e-03 8.8130391368763342e-04
+101 -4.9264488192700727e-03 -1.0619431954192753e-03 -1.5489459350794871e-03
+125 3.8702440586074868e-04 -1.3173997939406031e-04 -1.8621753416658362e-03
+87 2.3030794582206970e-03 1.1189116234424095e-03 2.4352805841681997e-03
+110 -4.3334632374086862e-04 2.6080562995664503e-04 7.7936469364586203e-06
+192 2.5356456653637073e-04 2.8180186014771362e-03 2.7408778333066656e-04
+209 -2.7487991814586859e-03 2.1312301290663809e-03 1.7858514665821149e-03
+120 -2.3420572837009784e-06 -3.6341858046748904e-03 -1.7224496908944422e-03
+115 2.1910339581703697e-03 2.5840252361093441e-03 6.6444708729235550e-04
+113 -4.0477242670019873e-03 9.6122058762843489e-04 -5.5366606832079500e-03
+217 1.5707015136823311e-03 1.3858480234152060e-03 1.4740112870920219e-03
+117 -2.0538097144008108e-03 -2.2510032630040562e-03 2.7877445405583403e-03
+28 -2.0266061182882922e-03 4.4145039812623329e-03 4.2062085932222382e-03
+38 5.2145698272498949e-04 1.5193765052082706e-03 1.2255500017937149e-03
+106 1.0828039841508260e-04 4.7125881374490762e-04 -3.3782657445465326e-03
+105 9.0645057854421150e-04 1.0604014649895541e-03 6.8302618746327634e-04
+108 1.1545657134436188e-03 2.5761926100753441e-03 -2.6776640643283185e-03
+131 -1.2589579695971088e-03 1.1202925269455410e-03 -3.7680171987805929e-03
+32 4.4283796091113204e-04 -1.3878441690929463e-03 3.2460149023716880e-03
+232 1.6212357058630354e-04 -1.8065666011841158e-03 -4.2078682752758416e-05
+151 -2.4279972606894001e-03 8.4794640196943520e-04 1.1172725379755600e-03
+135 -1.8743764336230841e-03 6.7724283454385437e-04 4.2235406313635167e-04
+112 -7.3036562300409370e-04 1.2458125071290664e-03 7.8140195138296246e-04
+194 -2.9547964730146587e-03 3.4459007778423830e-03 -2.1036734138494264e-03
+233 -2.4156710923521714e-03 1.7319043430220897e-03 -9.6054539593977005e-04
+139 2.8679386615162745e-03 -4.9172334302430088e-03 -7.3424191375682515e-04
+118 3.4123466501134849e-03 2.2119962428248994e-03 -1.8548336471144980e-03
+136 -2.3742714001018096e-03 1.4073094134979486e-03 -7.1729501767178543e-04
+37 -1.6064019030127151e-03 3.0512176703192864e-04 9.0689639580461795e-04
+122 7.4641328917222319e-04 -2.6940148284757431e-03 -2.1021713645035809e-03
+23 1.3746419201686819e-03 -1.0963801833889127e-03 4.0122895180260331e-03
+132 -1.0941142033243545e-03 1.2483169426520445e-03 -1.8788273261469758e-03
+148 1.2417425757498930e-03 5.0666189164960858e-04 2.1604182059885672e-03
+126 1.8469375442264047e-03 1.5094043100743768e-03 -1.1713274510130600e-03
+147 3.1653396940087273e-03 -5.9497422112707104e-04 2.3069890313656707e-03
+152 -1.0974308197623686e-03 -8.8382197677867446e-04 7.8538277437864782e-05
+230 -1.0658187348607533e-03 1.2252829362637717e-03 8.0140713245098482e-04
+173 8.8602876947226075e-05 9.6932314322009357e-04 -1.8921219029922025e-04
+196 1.8412818549949452e-03 -3.6313079891908094e-03 1.5335422203709603e-03
+137 1.7459074767934825e-04 2.8890634477784457e-03 7.0830860846993345e-04
+179 -3.4400223114390365e-03 4.5813797106444660e-03 -2.9153951293517948e-03
+273 1.9527165159015742e-03 -2.2005139487978279e-03 1.8888414018571871e-03
+157 -7.2454457528929161e-04 2.4126159316449325e-03 -3.0670444071359323e-03
+143 7.5780228567589095e-04 3.8684441668264458e-03 4.8320156546348268e-04
+99 -2.7212614920660420e-03 -1.4747059412350456e-03 -3.0778113324421636e-04
+263 -1.4002210243168728e-03 2.2155163013719433e-03 -1.1123282874369966e-03
+48 -2.0508725075293281e-03 -9.3569574976209286e-04 1.2878939766330052e-03
+168 -1.5806959120756425e-03 3.6497474499411057e-03 1.0718192142709720e-03
+249 9.9780758532047419e-05 2.2331747107975949e-03 -3.0038209830703291e-03
+172 -2.0081149309196899e-03 2.0511630202217131e-03 3.0854356429967367e-03
+246 1.6147313866638788e-03 -1.1028043618644357e-03 -2.2660609623792292e-04
+250 1.5671715485689997e-03 -2.6338337709171629e-03 4.6852629226905399e-04
+278 -7.1833816549833455e-04 -1.0896415836827908e-03 -1.3298165774187326e-03
+40 -1.9291475913358683e-03 -3.3688923865741029e-04 -1.4739877996562431e-03
+277 1.4588900379604020e-03 -4.3524653735381859e-04 -5.1277293114447705e-04
+138 -8.5693311837498781e-04 -2.3027604205060038e-03 -2.3488221963864635e-03
+163 -1.6453024354086372e-04 1.6770363808205706e-04 2.9867654869818468e-05
+154 -2.4611125758828788e-03 8.4277015401604792e-04 -6.1445036018563848e-04
+140 -3.2679847137170318e-05 1.3360005689480952e-03 -2.4427694973272853e-03
+68 -5.6697938780537398e-04 -9.4649894589483321e-04 2.0133196175404480e-03
+164 7.9923684200638163e-05 8.3781987571604423e-04 3.2616576485811717e-03
+166 1.8471835096468491e-03 8.3576524980994837e-04 -3.3921757446022591e-03
+165 -2.5927465248657038e-03 8.5122656462792076e-04 8.7066879527393309e-04
+268 1.0263218713776033e-03 1.0731201025223633e-03 3.9234730688545031e-03
+269 -5.0898118904628593e-03 -1.6178455997652478e-03 -1.7244123067860250e-03
+266 -5.9523735373185195e-04 1.2911659086407382e-04 -5.5985224895814076e-05
+176 -5.0595353260359972e-03 -8.5294970205718028e-04 -1.9513637152327489e-03
+291 -1.1883790798425298e-03 2.5190881933929501e-03 -3.2286135485235044e-04
+80 -1.8507156339707639e-04 -1.2657745531167355e-03 3.9899409913521057e-04
+293 -4.0649017547319836e-03 2.9167447083610709e-03 -9.6543759733198908e-04
+95 -1.3249047815661783e-03 6.3661835553023593e-04 5.7686045848834462e-04
+198 -3.1577946130374964e-03 -1.5232338595560595e-03 -1.8889792006337881e-03
+98 1.9114702333878860e-03 3.8311975158483121e-03 7.9542721701916222e-04
+180 2.1905650923269306e-03 9.5652247462871991e-04 -1.7509411656673826e-03
+298 3.7090568846068241e-03 -5.1928878610085489e-04 4.0812714604935505e-04
+103 -1.3289233933532576e-03 -2.5088779007823750e-03 1.0152183635657056e-03
+169 4.1113493573446209e-04 -1.7835603928652961e-03 -2.2529856089165105e-04
+191 9.7367526663405123e-04 -8.5812665929942589e-04 -2.5894169453932660e-04
+189 -1.6598965203136421e-03 -2.3725783485321738e-03 5.7335713410928003e-04
+286 5.2528027336990748e-04 -1.1928482108268129e-03 1.8433146595347534e-03
+96 1.2225935768125835e-03 2.2829877611556154e-04 2.6177584240623447e-03
+193 -4.9462448627665993e-03 -2.6190708106491452e-04 1.1369250025544137e-03
+17 -4.0490138143087031e-05 2.2592761205509726e-03 -2.3403460441514682e-03
+190 2.5924489586712724e-03 -2.6901002587865005e-04 -3.5026071745527456e-03
+200 -2.0593494162099218e-03 -7.2658226286050390e-04 -4.2867739492607002e-03
+199 -2.0235526419468850e-03 2.7245892794032379e-03 2.4505600691618434e-03
+2 4.8094867838744223e-04 -2.6308241736951671e-03 1.7217000301975427e-03
+84 2.6127433313465538e-03 2.2568135209984563e-04 -7.6509381931350994e-04
+182 -1.3379258535366428e-03 -2.0348837446166296e-03 9.2681087213019730e-04
+218 -1.5726319037393059e-03 1.8720616031625643e-03 1.3144713885302976e-03
+124 -3.3689081645780876e-03 -1.7003097747858591e-03 -2.2702759546282510e-03
+187 3.1460358410531908e-03 8.3872263593005164e-04 3.6009546186119637e-03
+203 9.7428452036389592e-04 2.8309055582589654e-03 4.1533456354832813e-04
+206 -4.2244035847670774e-04 -1.9204509100576306e-03 1.8837377129114676e-04
+188 -6.0537410696857212e-04 -3.5069016476961865e-04 2.0300789875095995e-03
+227 4.9472563884544031e-04 -1.5051468715397602e-03 -2.2388166500904288e-03
+211 -2.8678149649846549e-03 2.6273837901870612e-03 9.0158734710253251e-04
+207 -2.2524657259641108e-03 8.9442400327419136e-04 4.4253209701347208e-03
+334 -4.2732103734444719e-03 2.3179830510056820e-04 9.1291696097457427e-04
+237 2.4976667317744773e-03 1.0695817160680666e-03 -7.7546808387821641e-04
+4 1.4765365793899202e-03 -2.6808950462766132e-03 1.0978157098042891e-04
+119 1.4496966094218271e-03 3.5152337856775783e-04 3.9004461159895085e-03
+239 -2.2330864765897451e-03 3.6918536807804569e-05 -4.0183436917323352e-03
+224 1.9625800906068027e-03 -2.6701202517370676e-03 -2.1830920104209182e-03
+221 3.9740710965256547e-04 2.4629423367568987e-05 -1.5752430893396605e-03
+204 -7.1916080650913188e-05 -4.3198599802260387e-04 -3.4371764163215815e-03
+225 2.0997521508804118e-03 1.8584557434353447e-03 -2.6387317726328241e-03
+129 -2.5163152259975887e-04 -2.7003320516581133e-03 4.0140790899217992e-04
+228 5.5986217818956444e-03 -4.2163561417477230e-03 -1.1468834734367802e-03
+229 5.1885302555768878e-04 -2.2041895482862138e-03 8.3908872232689696e-04
+235 9.8693155530692189e-04 -3.2543714742940648e-03 8.2532069805886632e-05
+240 -5.1705296788212194e-04 9.5378349884427279e-04 1.1015434613760361e-03
+20 3.1740272347857380e-03 9.0624013639959550e-04 -7.2827023038963743e-04
+259 1.0601709319792354e-03 6.6843303356129552e-04 3.2454212935294499e-03
+141 -3.9804679859680786e-03 7.0870116208143340e-04 3.7229436013468315e-03
+121 -2.2453355477810026e-03 2.3557003057983404e-04 3.3892539955313523e-03
+241 1.9929239259574145e-04 -6.9142521907484785e-04 2.5261556030811960e-05
+145 1.8830572454092331e-03 -2.1016625305938892e-04 1.6978798941204602e-03
+128 -4.4081905354549075e-04 -1.0177417216298320e-03 -5.0317602421247323e-03
+47 6.4919656557881945e-04 1.1471713567447164e-03 8.8291874984514226e-04
+231 2.3302821675380489e-03 5.1898555911742243e-03 7.9379178018983197e-04
+226 5.3434166922286487e-04 3.0125781383225068e-03 7.2227526907018050e-04
+234 -2.1026569780635863e-03 -8.3281312453425981e-04 1.4024666901220845e-03
+330 -1.5165719091241316e-03 1.7019806873576047e-03 3.0849720107488541e-03
+238 4.8223869029298874e-04 -1.4901064994118356e-03 1.9568927766628339e-03
+255 -1.3558385624902541e-03 -4.4892268189241384e-03 -2.2692283138006611e-03
+123 6.4643975017231951e-04 -5.5063928251941913e-03 -2.5515125106029962e-03
+261 1.1017940666011542e-03 -5.3411199328632318e-04 -2.3786366461014117e-04
+144 1.1094342891009126e-03 1.1298131511054701e-03 -2.1862039912546858e-03
+377 6.1834395708889496e-03 3.4176323492465868e-03 2.1001666714086224e-03
+258 -6.6740620004826642e-04 -1.0642672011088102e-03 -2.1870735438813934e-03
+252 2.1710061388093599e-03 -6.2719887481875382e-04 4.1621458303112190e-03
+265 -2.6867188283602730e-03 -2.1334792455705284e-04 7.5948402296102636e-04
+167 -2.4238836695691227e-03 9.5975855713592031e-04 1.1484872534545361e-03
+171 -3.4824587533913154e-03 1.2610009931356635e-04 1.9423283340233969e-03
+160 1.5980605207822432e-03 -1.2369572156648947e-03 -4.5934969826065552e-04
+155 2.3942200877245952e-03 -2.2717149340228815e-04 -1.0281671500471214e-03
+257 1.3926600624605411e-03 1.4292460122957184e-03 7.0285239344855240e-04
+159 -1.1959600355032512e-03 -1.8663166695182462e-03 3.5177018097928142e-03
+283 -1.3473726842710601e-03 8.1038215191310558e-04 -8.4600938523483893e-04
+297 -1.2106564688201329e-04 3.0609244785367224e-03 4.3059322053284393e-03
+264 -1.9648449423093051e-03 4.2953822814448938e-03 -5.3707167924366584e-04
+184 1.8221572657910129e-03 -4.0140328858222669e-03 3.4150103508582322e-03
+299 1.7331961031546119e-04 3.9934486415458600e-03 -1.4091435739605640e-03
+285 1.4484239540363962e-03 -9.9306306842814897e-04 1.8642002343304816e-03
+262 2.6772234225812068e-03 -2.0477238309130934e-05 1.1874080588327126e-03
+287 -2.3616115231476342e-03 1.4678557722574987e-03 -2.4191163137901707e-03
+365 -3.2615392159574649e-03 1.3418497455956080e-03 1.1710242310563387e-03
+270 -7.5860175429537868e-04 -1.5603338088223076e-03 1.6948613381388936e-03
+274 1.2183844708581796e-03 2.0901564630530093e-03 -3.2679617307293731e-03
+378 7.7479016327415789e-04 1.0650373734461518e-03 -1.5585391954791557e-03
+394 4.0995175677672482e-04 -3.0626723099884865e-03 -2.0053790601444669e-03
+281 2.6805717212034191e-03 1.1226996084296905e-03 4.0353407935674366e-04
+381 -2.7267780035173826e-03 3.6663514727421174e-04 4.4719803488607364e-05
+183 -1.1761290508928662e-03 3.9173800360495329e-04 -1.1321890001828475e-03
+104 6.3825085812867807e-04 1.2614671456359660e-04 2.1761397977270846e-04
+301 -1.0375916977283864e-03 -2.0335057651458864e-03 -7.3762559752087750e-04
+282 -2.4379130038537367e-03 -1.0961545328112311e-03 2.3427590449896368e-03
+363 3.7494271972456144e-03 -3.3334783945510246e-03 1.2198092106606154e-04
+288 3.5611585331747318e-03 -9.8574814991884833e-05 -7.8742744613455014e-04
+290 1.8489856075665789e-03 -1.8916600655498055e-03 2.2849726859394629e-03
+289 -1.9001420989754802e-03 -2.0439758490761297e-03 -4.6255208743441413e-05
+292 -2.2794750687121124e-03 9.9045919685261782e-05 7.7739780315561220e-04
+390 9.4648763032249524e-04 9.7153137040587446e-04 5.7600991055865793e-04
+210 -2.6680052510529165e-03 1.4352842078476959e-03 -1.6505232555185619e-03
+201 1.9799247893159230e-03 1.5554216933096436e-03 1.3374734783868562e-03
+303 -2.7146164919026159e-03 2.3959290541688996e-03 1.6602227664529055e-03
+321 4.7100197052727982e-04 -3.0952368640916007e-03 2.6788121996442235e-03
+324 1.0221186777254684e-04 9.1594933562461403e-04 2.3904170347903660e-03
+304 -4.1035740240974493e-04 1.1129399004070951e-03 -3.5623474650475920e-03
+305 -5.8690635517551096e-04 -2.8304003924844523e-03 -1.3876031518855316e-03
+202 1.2856273729727899e-03 -5.4433081700333086e-03 1.9954143507278439e-03
+307 -1.1305282355513499e-03 6.4314463324724556e-04 1.5284379402153654e-04
+213 2.2119063015434868e-03 -1.3575970804068063e-03 -4.0339623486016982e-03
+333 -4.0140982584599438e-04 -2.8386789163395948e-03 3.4927994828866068e-04
+314 1.2914930931936391e-03 1.1824315430092385e-03 -1.8124081343126564e-03
+335 1.1600705115052015e-03 -2.0724817732855052e-03 1.3470048019586379e-03
+336 -3.8752387164769945e-03 1.4542186086699516e-03 -1.4349317361333023e-03
+337 -3.4464452111168309e-03 -3.0422814553341808e-04 -1.5325046859601997e-05
+318 1.0776378797118455e-03 -2.7451275656860657e-04 5.2742980874857185e-04
+243 -3.4719181525781173e-04 1.3890193403896995e-03 -1.9017509875353898e-03
+322 4.4034859797623446e-03 5.2246008814763566e-04 -3.6588501102075379e-03
+127 1.4255633325132553e-03 -6.3414284108516026e-04 -8.3021555888221241e-05
+222 -2.7916765666096749e-03 2.5545709318912130e-03 -2.6709459188743764e-03
+302 5.7368229041955966e-04 9.6360409039603231e-04 -1.8968347316496419e-03
+328 -1.7121717999058522e-03 1.3796172596518099e-03 -3.1826639049445937e-03
+251 4.5460152702102524e-04 6.8337118804994996e-04 -3.2172479187221690e-03
+216 -1.0900245073708684e-03 3.1341510185566241e-03 7.4196905285891590e-04
+326 -5.6185855531467493e-04 -1.7595711921096259e-03 1.0430137861824594e-03
+355 -1.4080872913195589e-03 -1.3148201513083714e-03 7.4124754284927942e-04
+212 -1.5319174593197875e-03 -3.7430112214845591e-04 1.1233745081750432e-03
+279 7.4101057655799878e-04 2.9216591770251033e-04 -3.0580474287489668e-03
+353 -8.5198804145568982e-04 1.3990179834311471e-03 2.0914697274296104e-03
+458 1.0595035731598692e-03 -1.1331145604466047e-03 -1.9181635356100870e-03
+339 9.1996181296291797e-04 -1.1568155205176432e-03 8.1450924081989283e-04
+428 -6.2170819893675369e-04 3.7331278015875274e-03 1.7162090452545050e-03
+323 -5.2785374419643668e-04 1.1195749119643076e-03 3.7419456253736110e-03
+345 -7.1888317046312259e-04 -2.3936890145096973e-03 -1.4389637366394330e-03
+248 1.7048765902839802e-04 -1.8616463090046537e-03 2.1906896988549557e-03
+208 -5.4703403223647473e-04 3.7705302079621208e-03 -4.2054636653857747e-03
+253 -6.1943057901254301e-04 2.4549896072244446e-03 1.3675395033928099e-03
+349 1.4860274572290808e-04 1.1499112851432018e-03 -1.6804901616523875e-04
+260 -1.9917645741932169e-03 -2.8342988049826091e-03 -1.5607086124623118e-03
+236 6.2277680815458179e-04 -3.1307175321744511e-03 -2.8410287870764255e-03
+244 2.1070297695999622e-03 1.7722851796426796e-03 -2.5995389569613944e-03
+242 9.5321912137845920e-04 2.5031573994851609e-03 -3.3217624328681855e-03
+379 -3.7310485575515295e-03 -2.1547929785680647e-04 -2.6481199253550105e-03
+399 -1.5938828483173064e-03 2.2561725416001383e-03 1.5222090500146068e-04
+267 1.0215308004962130e-03 -1.3856143113403776e-03 -1.9219400725912054e-03
+370 1.9419214986259156e-03 -1.2671869034886099e-03 -1.8418552004426318e-03
+346 3.8038668162742261e-03 5.0141449758444429e-04 1.8723634625205992e-04
+294 -2.6273982611409851e-03 3.1532321532899464e-03 2.6008755336756045e-03
+245 3.8536049201206278e-04 1.6891177645279635e-03 -5.7464160442217483e-04
+366 2.5637567593925505e-03 -6.6862698660436740e-04 1.5391851515800863e-04
+177 9.2064120457829629e-04 6.7042605993130049e-04 5.6121088956608599e-03
+295 -3.3673277388852869e-04 -1.9929732722985447e-03 9.2310863305026299e-04
+175 8.1075025573649887e-04 2.4875849604739063e-04 1.5904999845618170e-03
+254 -2.6029670408294343e-03 -6.8138776665710942e-04 2.9779724530801617e-03
+280 -1.0372208562479880e-03 -1.9058245205686004e-03 4.5503041480901363e-03
+344 2.1237482968618480e-03 2.4102313492794925e-04 6.4138130419745987e-04
+358 1.4737203207791270e-03 1.8063318032543814e-03 2.6474978694422473e-04
+401 -4.2815079568706135e-03 -3.7674326286688286e-03 2.8303383760367364e-03
+361 -1.0112681959290614e-03 -1.2328839636228668e-04 -2.6760602695373799e-03
+371 2.6344732998046056e-03 -4.0687508512807155e-03 -1.5231888542356301e-03
+462 -2.0048025144212590e-03 -8.1480459352542480e-05 -8.3261377760793936e-04
+276 -1.3507493222799918e-03 6.8192439716560399e-04 9.2443648939090101e-04
+393 1.8541855204345116e-03 -4.4927103245791120e-04 -1.4893120100601381e-03
+392 1.1321110925651202e-03 2.9300679119447897e-04 1.5567284299702496e-03
+272 4.4826239797155351e-03 6.1916164824813824e-04 4.9119657571060735e-05
+215 2.1361799018578191e-03 -2.9688359009790986e-03 -6.3877259376043547e-04
+477 -3.5342704884546621e-03 2.1980223284461045e-03 1.1464197649404348e-04
+317 2.8921528627856435e-03 -1.0195789245458866e-03 -1.8326468903099406e-03
+397 -1.3604555626271799e-03 3.2057913835498159e-04 1.5793781347596620e-03
+284 -1.2786753783719535e-03 4.3319101982616940e-03 3.8571995012317656e-04
+362 -2.1481384199123640e-03 -3.7327297831012550e-03 -1.9379790306148868e-03
+385 -4.8272143481106300e-04 -4.7281411781019403e-03 -9.1480507847926712e-04
+382 1.7227003395437401e-03 1.5131043377809167e-04 -2.2219759664824485e-03
+223 1.2019344968144158e-03 3.3732635178802405e-04 -2.9492134244251127e-04
+384 1.0738221673711212e-03 -2.3927899259058990e-03 -3.7768961628709564e-03
+386 -1.0253768537202155e-03 -1.5417967535949055e-03 1.1951265114966950e-03
+205 -1.1435260829746366e-04 -2.9045954422066952e-04 1.4843995361524553e-03
+387 1.9693864629895027e-03 -1.8777312727767982e-04 8.1498818418862073e-04
+395 -2.2819171305440279e-03 -1.0517144997391112e-03 -3.6838141826428032e-05
+315 1.8454656759423560e-03 -1.5765852847184742e-03 -2.1405402576384191e-03
+309 -4.2862730374181425e-03 2.8214895510031234e-04 2.2150451290405470e-03
+311 -1.0067331522898373e-03 -2.1471246368802870e-03 -5.3261705114396069e-04
+430 -1.8393518227622513e-03 -9.3535468180066508e-04 4.5697799470286390e-03
+195 -2.3058384457389457e-04 -2.3804525592173889e-03 2.6663606194820863e-03
+220 -3.0903286062563401e-04 1.1210353779364840e-03 6.4123644913359866e-05
+437 2.4188555111846489e-04 2.5139295952949004e-03 -6.2634399056554324e-04
+219 3.7808526018848687e-03 -4.3306476739395159e-04 -8.9761344419948038e-04
+422 2.4225538479895918e-03 -7.5092573500674139e-04 -2.6272553129304060e-04
+483 1.2114175467578927e-03 1.2010566142437314e-03 1.9855413591238699e-03
+6 6.8443218658450838e-05 -1.4615388521486037e-04 -2.5532427290160370e-03
+402 8.0239920740190714e-04 -6.5449247999254810e-04 -1.3249441801256093e-03
+466 3.9488554914042962e-04 -1.2542502667644737e-03 -1.4188125178472217e-03
+90 2.1287226499078185e-03 4.2519294895582784e-04 -4.5075456064600335e-04
+492 -4.0601175515814023e-03 3.6539168322080925e-03 2.2513041938906470e-03
+310 7.0859930295422223e-04 6.9328198032311741e-04 -1.3883705239967506e-03
+410 -2.5532324722499842e-03 -3.3082855507748743e-03 -1.1112780591877693e-03
+296 8.0538279249529952e-04 6.2737091643593599e-05 -7.9824520120122663e-04
+340 1.0727067442530813e-03 -4.3779798049043984e-04 3.9260166361564262e-03
+313 8.3010954850726011e-04 2.2950025342219758e-04 -1.9582088619435158e-04
+300 -3.4044575912236456e-03 -2.5606242056684676e-03 -2.0276944060489003e-03
+357 -3.2589097385133243e-04 3.5407562544096118e-03 -1.4535894174090016e-03
+438 -1.8034978725199118e-03 -6.1731199575191761e-04 2.4348881500881928e-03
+383 -6.0110824792871073e-06 3.0934589612733802e-03 8.4857793276578452e-04
+457 -1.9585411271585192e-03 -2.0382766968830325e-04 -2.4056112515995955e-03
+439 -1.6983852937943681e-03 -3.3868173232243321e-03 1.8877808427418923e-03
+427 1.0118906431721803e-03 1.0873734989465128e-03 1.4978106818553686e-03
+312 -8.7157475662598492e-04 -5.8426264280488310e-04 -3.5324269275291583e-04
+423 1.3914803724283749e-03 -9.8346115679010882e-04 5.7628073175613494e-04
+306 -2.5898054466647366e-03 7.6422651373355679e-05 -3.3287746219557227e-04
+429 4.9381210632988932e-03 2.0174113929827013e-03 1.5374083450483353e-03
+329 -2.3046755665995316e-03 3.5254665694550155e-04 1.9134564654456794e-03
+30 7.6908701232155632e-04 -3.8333740971593917e-03 2.3530407602302080e-03
+332 -4.6102787679734949e-04 -5.3722567767675187e-06 -1.3938494756756551e-03
+433 -3.2495705128976001e-03 -2.5670271832799181e-03 1.9445903815982805e-03
+455 -2.0371999353914544e-03 1.1754341130262387e-03 -1.2926519714327148e-03
+373 -5.7678130664264309e-04 -7.0386805279857624e-04 1.7109988921711074e-03
+338 -8.6852464655468638e-04 3.7862164882461616e-03 2.4456375283813097e-04
+360 -9.0117493724165343e-05 7.5282556020402525e-04 3.4504392313768127e-03
+459 9.1072771272011585e-04 1.8522640421834758e-03 -1.5951373377787376e-04
+454 5.2351987204760011e-04 5.9347096622384358e-04 -1.6276015088786035e-03
+343 7.4104713853551799e-06 -1.9559887395699171e-03 2.8755522463343852e-03
+327 2.1314910806022024e-04 2.9092150844891762e-03 -4.1511492672619032e-04
+342 -1.4125775546852241e-03 1.9414303691787337e-03 -9.5809566483720965e-04
+325 4.9593641411103265e-03 2.1460366429677745e-03 -4.0762721796519423e-03
+247 -5.6591891565898407e-04 1.2020240280177297e-03 6.8430847715547454e-04
+271 -5.7963583444353554e-04 9.3639950062640663e-04 8.6270150326548582e-04
+389 -8.9323941156595633e-04 -5.2248436036776463e-04 -1.5277083480439635e-03
+374 2.1214055474882165e-03 1.6243617380744897e-03 -3.3694147357844618e-03
+453 2.4380288877266171e-03 -2.7825180998081993e-03 -2.6708706484497671e-03
+375 3.7133533647868300e-04 -3.6781990916474193e-03 5.6755749581888009e-04
+460 -1.4580581351112269e-04 -4.4811327305725474e-03 3.4735454591771362e-04
+449 1.5595863213837648e-03 -5.2840239308906442e-04 -2.4855700400553560e-03
+444 2.1474727101301796e-03 -1.7693326084129162e-03 4.0847181323378027e-04
+341 7.4052802947752433e-04 6.8721296312037336e-04 3.1044885603715945e-03
+441 2.8086941847219288e-03 1.2940694693201256e-03 1.3461517301324814e-04
+369 6.4199676211165345e-04 -2.0747975944203651e-03 -3.5231162736551586e-03
+464 -2.4210049971717844e-03 1.4476719429880983e-04 1.1237021329355719e-03
+364 2.3360942056408931e-03 -1.7809939318636770e-05 -1.3740036809440734e-03
+436 -2.8569280100335483e-04 1.8048987079273659e-03 1.5890491604020698e-03
+448 -2.1150349888488587e-03 -1.3646549388028951e-03 2.8982784467873233e-04
+486 -6.1920723755593324e-04 2.9200514323659407e-03 1.3286963846728724e-04
+426 -4.8142981853087500e-03 -2.5855264535075083e-03 -1.0631182579242226e-03
+275 -2.0941435286217971e-03 -3.8970115582354038e-04 -1.4993831990366231e-03
+256 -2.8112326234680882e-03 1.4386961555496716e-03 1.2812591435066984e-03
+376 -4.5395525413190267e-04 2.2336372294436724e-04 -4.2107726910956212e-04
+352 1.3457120458006825e-03 -2.0906000823633264e-03 -5.3589015724200947e-04
+380 2.6852200895070423e-03 -2.2443736575388160e-03 -2.2590599994311493e-03
+442 1.1537437686100264e-03 -4.8094587626054978e-03 -1.5390264053612211e-03
+58 1.0522592329244124e-03 -5.3107646755934379e-04 2.0333631176535877e-03
+461 -6.9165904788225468e-05 1.5211635332723350e-03 -2.3230253220639899e-03
+468 -4.5500741901898135e-04 5.7230394623220427e-03 2.4826216061316869e-03
+485 1.4042624116818662e-03 1.3030305301650968e-04 7.4551003307398638e-04
+368 1.7325798522012199e-03 -2.5973078458350765e-03 -1.5691214592025826e-03
+465 -5.2916589692629332e-03 -3.6854912004693156e-03 -1.9764376439565367e-03
+405 -1.5096255474598076e-03 -7.5102961139341914e-04 2.8559462342673343e-04
+473 2.6984051439716181e-03 -2.4499447869708087e-03 -2.1290927374320529e-03
+367 -2.1447189996379864e-03 1.2657446558115451e-03 2.4920635954945930e-03
+372 1.9080575174046752e-03 1.3817359172390979e-03 1.6968145285702540e-03
+93 1.2065990567208698e-03 2.5338039278760996e-03 -7.3578799621791687e-04
+451 7.6181194328339415e-04 -5.0019659794260998e-04 7.4260932444514076e-04
+413 -1.8967812574926079e-03 1.2646501562172713e-03 -5.2934080776610541e-03
+498 4.2970536049511095e-03 1.0069888231180690e-03 1.7807365168153662e-04
+85 2.0647974712029705e-03 2.2297295437629757e-04 1.2909413882130050e-03
+479 2.2928357046003568e-03 -8.3046827354972175e-05 -1.2872789095273410e-03
+421 -4.2586466056815554e-04 -8.0342781658269231e-04 3.9729931719043434e-03
+482 2.5815671351109440e-03 -1.8216373958361526e-03 -1.9288061333048157e-03
+408 -3.1148385964034336e-03 4.4167942818529760e-04 1.6837789133142731e-03
+308 5.2966859653464345e-03 1.8233545906015118e-03 3.2536304484669190e-03
+470 1.9636430363089746e-03 -2.4962535543788828e-04 3.0944429694528498e-03
+331 1.9089716433538699e-03 3.3026910596239160e-03 -2.7873553611832503e-04
+388 -2.0030267421687160e-03 6.3260190231678075e-04 6.8655210486148559e-04
+400 -9.5433956726766211e-04 1.9084886718567222e-03 -6.4337899551740013e-05
+391 4.8509137810749003e-04 -1.4942012729519652e-03 -3.0258458323331396e-03
+319 1.0233426782999780e-03 2.6568232811177523e-03 -1.4194099800373010e-03
+396 -1.7989586753719710e-03 2.3006635082278327e-03 9.4869973064437194e-04
+418 4.2660269358966795e-04 -5.1630874021886012e-03 7.7031929973504581e-04
+398 -2.3715289676693205e-03 3.6996563998783400e-03 -7.2757579780128147e-04
+403 1.1309898833439169e-03 -1.7324790185177395e-03 3.1842536337324469e-04
+9 2.2849296990020739e-03 -2.5301431737496344e-03 -2.8916649812388800e-03
+92 -1.7796267005809373e-03 -8.1119413870503823e-04 2.6429754777983318e-03
+431 3.5696159728247916e-03 2.6249595318269545e-03 1.8215219859328590e-03
+16 6.2259872865209898e-04 1.9475848171593996e-03 -1.6569786096703755e-03
+489 -1.8349245373711826e-03 2.7905507301250890e-03 -2.3060190063784801e-03
+434 -1.6964390074179425e-03 -6.6035862456560420e-04 -2.1973179968139724e-03
+415 9.1028290854076714e-04 -1.2920642771154292e-03 2.8776466423115779e-04
+15 2.6394301610365755e-03 -1.9446461591012681e-04 -2.3493572065293866e-04
+404 -4.0308229128546192e-04 2.3070369138735719e-04 9.7805461764390034e-04
+481 7.9315358752507850e-04 1.3467476996946580e-03 7.9014757579320765e-04
+359 3.5593534959289520e-04 -2.3468663574913398e-04 1.1775774319805413e-04
+320 -1.1652774377176839e-03 -5.2064221659067788e-04 -1.0632200221112609e-03
+21 -3.1353619294724332e-03 1.3507046123909495e-03 7.3166678961304168e-04
+316 -7.2360767811096845e-04 3.1530862783200989e-04 -1.4318798260812466e-04
+447 1.9934541084767809e-03 1.5761400285302771e-03 2.3261823537140359e-03
+425 3.4960842429688148e-03 -5.4954900128563954e-04 1.4369712676616676e-03
+432 -8.4996887554087493e-04 -8.6509049705101005e-04 3.1183271237633812e-03
+350 1.8088644959341768e-03 -2.0568381984389524e-04 -8.6828570715299697e-04
+29 -1.7697910575903018e-03 -3.2852459940288727e-03 -2.5663915554721148e-03
+130 5.0201702158958765e-04 -1.3298043050733305e-03 -2.9927894184174795e-03
+33 -2.1809781813436212e-03 -5.9321117984626999e-04 1.1964819804488687e-03
+356 2.9676964031793832e-03 1.6782501595842582e-04 -1.4727149904237864e-03
+133 6.4068849545076878e-04 -1.1034203926599606e-04 -3.1949042827659493e-03
+440 -9.5068669158439073e-04 2.5841965808095389e-03 -1.3125882563005320e-03
+53 -2.5311921727082130e-03 1.4380957292763872e-03 1.3760371616659062e-03
+424 2.1642413783934931e-03 -1.7687978432480102e-03 -9.6465595624602054e-04
+445 1.7895792510783930e-03 -8.6794824911864588e-05 1.8675019629659242e-03
+46 3.9042809439989198e-03 4.8845946302580540e-03 -1.2215366405862360e-03
+51 1.0132336632253675e-03 -5.8188333999018146e-04 -1.0975445957309873e-03
+149 8.4493825300203669e-04 3.6528112778455054e-03 2.9145803828524433e-03
+12 4.8501278367257437e-04 4.6885640314346682e-04 -1.5974203012411080e-03
+36 8.0449483212574667e-04 1.7030080829973479e-03 -3.6194866857706406e-04
+351 4.1045425562703645e-04 7.3053292667287460e-04 3.9140879690000166e-03
+480 -7.7923429056073624e-04 -3.4610654470619037e-03 -5.5280818472128244e-04
+443 -2.1968431155049315e-03 2.0654214812553147e-03 2.5342239361134588e-03
+347 3.0807487478787467e-03 -1.4799157549842720e-03 -1.6002347525230695e-03
+467 -8.0753715744399642e-04 -1.3054960113147592e-03 -1.4782249525222802e-03
+469 -2.3593420615691369e-03 2.0238501729156035e-03 -3.6982476784568730e-04
+348 1.2676612036610114e-05 -7.8954393213972833e-04 -2.7442477941816311e-03
+49 6.6233034900057674e-04 5.7531627272310124e-04 1.4009245536769042e-03
+452 4.2717316037237637e-03 1.3781920458619643e-03 -6.6712602457631753e-04
+55 4.5866057697300684e-03 -1.4013585178093088e-03 3.9152985144547825e-04
+76 -1.3205425436515063e-03 -1.0411748013695861e-03 -3.5506425579526245e-04
+56 -2.5887506220044005e-04 -2.5453759773720604e-05 -2.6557368420582774e-03
+450 1.2348635617106033e-03 -1.5793417572089812e-03 -1.2710107482649898e-03
+497 -1.3766683026417181e-04 1.6196240940750983e-04 2.8305711445430533e-03
+456 -5.1405315751029115e-04 4.7747939849148482e-04 1.9480583217868282e-03
+474 -7.9969760670143967e-04 6.0665065927719103e-04 3.5329561001391733e-03
+178 -2.5348045084196949e-04 -3.2365764527525595e-03 -1.1510590355715972e-03
+463 -2.8594486038572963e-03 -6.6847660186133973e-04 3.2036400452159101e-04
+487 -4.3180968060190037e-04 -2.9734869353958260e-04 6.8280534288923977e-04
+446 2.9544964874953753e-03 1.9597545006695249e-04 -4.3594163218061812e-03
+407 -3.7990980503556430e-04 4.9609107075804220e-03 -1.7393731005435666e-04
+409 -1.7393075802610732e-03 1.4267399567502470e-03 -2.3640815088543650e-03
+54 -3.0162686078124955e-03 -3.8506710457073411e-03 2.2865636051668035e-03
+50 2.7402023712415438e-03 -4.3167285917098274e-05 -5.7919763032012502e-04
+471 -1.0570440212317399e-03 5.1726461598349807e-04 -1.6551779207346386e-03
+494 1.0944474329991276e-03 -7.5805333463148904e-04 -4.2992748497669181e-04
+478 1.2697683954914589e-03 1.5790145949652302e-03 3.2462605654445483e-04
+476 -3.2889726611268667e-05 -9.9665978164582814e-04 1.9315893519523493e-03
+495 2.0403694714671871e-03 -1.5176481237076367e-03 3.5177406832196099e-03
+81 1.6429665233251437e-03 -1.1729086810412103e-03 3.3073943322614332e-03
+406 1.2346566036500203e-04 -7.4655476877672533e-05 -4.8749705451350319e-03
+3 2.5370440561594508e-03 3.2082705487430805e-03 -3.6697271552057430e-03
+488 1.7706526092807747e-03 -1.0948442806828595e-03 -2.6383221282771222e-03
+89 1.7731005905573529e-03 -1.1280984142426314e-03 -2.8367554197334099e-04
+416 2.6144828016896244e-03 2.1991850656296079e-07 1.1957829056825438e-03
+493 -3.7012610654381584e-04 2.4764783637007178e-03 9.2526836824891598e-04
+14 -2.7811021102025078e-03 -2.0238373727441460e-03 8.7739107190958597e-04
+491 6.6781719954084697e-04 -3.5453501177138903e-03 3.5625655759408351e-03
+411 2.9755847494295146e-04 -1.0175212108443838e-03 -4.1839431585658567e-04
+414 -1.0816574631649261e-04 -1.0518120243319332e-03 -1.5581126937762885e-03
+499 9.6517969666124815e-04 -2.9091813538092478e-03 -2.7880052201288536e-03
+417 1.2748420206661487e-03 -5.1975559011183949e-04 -1.0660960387896053e-03
+97 2.0867063989404202e-04 9.8360524406446701e-04 2.7861658953964065e-03
diff --git a/examples/USER/misc/grem/lj-6rep/clean.sh b/examples/USER/misc/grem/lj-6rep/clean.sh
new file mode 100755
index 000000000..1ea6e79d0
--- /dev/null
+++ b/examples/USER/misc/grem/lj-6rep/clean.sh
@@ -0,0 +1,15 @@
+#/bin/bash
+
+for i in $(ls -d [0-9]*)
+do
+ rm -f $i/final*
+ rm -f $i/log*
+ rm -f $i/ent*
+ rm -f $i/output
+ cp $i/restart.init $i/restart_file
+done
+
+echo 1 > lastexchange
+cp walker.bkp lastwalker
+
+exit 0
diff --git a/examples/USER/misc/grem/lj-6rep/double-re-short.py b/examples/USER/misc/grem/lj-6rep/double-re-short.py
new file mode 100755
index 000000000..36705fe7b
--- /dev/null
+++ b/examples/USER/misc/grem/lj-6rep/double-re-short.py
@@ -0,0 +1,168 @@
+#!/usr/bin/env python2.7
+
+import os, sys
+from numpy import *
+import numpy.random
+
+### Runs replica exchange with gREM (fix grem) for unlimited number of replicas on a set number of processors. This script is inefficient, but necessary if wanting to run with hundreds of replicas on relatively few number of procs.
+
+
+### read number of processors from the command line
+nproc = int(sys.argv[1])
+
+### path to simulation directory
+path = os.getcwd()
+
+### path to LAMMPS executable
+lmp = sys.argv[2]
+
+### LAMMPS input name
+inp = sys.argv[3]
+
+### define pressure for simulations (0 if const V)
+pressure = 0
+
+### some constants for gREM, must match with LAMMPS input file!
+H = -30000
+eta = -0.01
+#kB = 0.000086173324 # eV (metal)
+kB = 0.0019872 # kcal/mol (real)
+
+### define lambdas - script assumes that there are already existing directories with all files necessary to run
+lambdas=[400,405,410,415,420,425]
+ll = len(lambdas)
+
+### define number of exchanges
+starting_ex = int(loadtxt("lastexchange"))
+how_many_ex = 5
+max_exchange = starting_ex+how_many_ex
+
+### array with walkers
+walker = loadtxt("lastwalker")
+
+### initiate array with enthalpies
+enthalpy = zeros(ll)
+aver_enthalpy = zeros(ll)
+
+for exchange in arange(starting_ex,max_exchange):
+ print "run", exchange
+ for l in range(ll):
+ #print "replica", l
+ os.chdir(path+"/%s" % lambdas[l])
+ #os.system("cp restart_file restart_file%d" % exchange)
+ if (nproc > 1):
+ os.system("mpirun -np %d " % (nproc) + lmp + " -in ../" + inp + " -var lambda %g -var eta %g -var enthalpy %g > output" % (lambdas[l], eta, H))
+ if (nproc == 1):
+ os.system(lmp + " -in ../" + inp + " -var lambda %g -var eta %g -var enthalpy %g > output" % (lambdas[l], eta, H))
+ os.system("grep -v '[a-zA-Z]' output | awk '{if(NF==6 && NR>19)print $0}' | awk '{print $3}' >ent")
+ enthalpy[l] = os.popen("tail -n 1 ent").read()
+ ee = loadtxt("ent")
+ aver_enthalpy[l] = mean(ee[-1])
+# os.system("mv dump.dcd dump%d.dcd" % exchange)
+ os.system("mv log.lammps log%d.lammps" % exchange)
+ os.system("mv final_restart_file final_restart_file%d" % exchange)
+ os.system("mv ent ent%d" % exchange)
+ os.system("bzip2 log%d.lammps ent%d" % (exchange,exchange))
+ os.system("cp final_restart_file%d restart_file" % exchange)
+
+ ### replicas will be exchanged based on enthalpy order, not replicas order (termostat order)
+ #entalpy_sorted_indices = enthalpy.argsort()
+ aver_entalpy_sorted_indices = aver_enthalpy.argsort()
+
+ ### choose pair of replicas for exchange attempt based on enthalpy order
+ pp = random.random_integers(0,ll-2)
+ first = aver_entalpy_sorted_indices[pp]
+ second = aver_entalpy_sorted_indices[pp+1]
+ #if (first>second):
+ # tmp = first
+ # first = second
+ # second = tmp
+ print "pair1:", first, second
+
+ ### calculate weights for exchange criterion
+ w1 = log(lambdas[first]+eta*(enthalpy[first]-1*H))
+ w2 = log(lambdas[first]+eta*(enthalpy[second]-1*H))
+ w3 = log(lambdas[second]+eta*(enthalpy[first]-1*H))
+ w4 = log(lambdas[second]+eta*(enthalpy[second]-1*H))
+ weight = (w4-w3+w1-w2)/eta/kB
+
+ ### generate randon number for exchange criterion and calc its log
+ LOGRANDNUM = log(random.random())
+
+ ### wyzeruj warunki
+ compare1 = 0
+ compare2 = 0
+
+ if (weight>0):
+ compare1 = 1
+ if (weight>LOGRANDNUM):
+ compare2 = 1
+
+ ### exchange restart files if exchange condition is satisfied
+ if (compare1>0 or compare2>0):
+ print "exchange1 accepted for pair", first, second, lambdas[first], lambdas[second], "with compares as", compare1, compare2, "weight as", weight, "and lograndnum", LOGRANDNUM
+ os.system("cp %s/%s/final_restart_file%d %s/%s/restart_file" % (path,lambdas[first],exchange,path,lambdas[second]))
+ os.system("cp %s/%s/final_restart_file%d %s/%s/restart_file" % (path,lambdas[second],exchange,path,lambdas[first]))
+ ### update walkers
+ tmp1=walker[first]
+ tmp2=walker[second]
+ walker[first]=tmp2
+ walker[second]=tmp1
+ else:
+ print "exchange1 not accepted for pair", first, second, lambdas[first], lambdas[second], "with compares as", compare1, compare2, "weight as", weight, "and lograndnum", LOGRANDNUM
+
+ ### choose again pair of replicas for exchange attempt based on enthalpy order
+ ### but make sure this pair is different than the first pair
+ if_different = 0
+ while if_different<1:
+ pp2 = random.random_integers(0,ll-2)
+ third = aver_entalpy_sorted_indices[pp2]
+ fourth = aver_entalpy_sorted_indices[pp2+1]
+ if (third!=first and third!=second and third!=aver_entalpy_sorted_indices[pp-1]):
+ if_different = 1
+
+ print "pair2:", third, fourth
+
+ ### calculate weights for exchange criterion
+ w1 = log(lambdas[third]+eta*(enthalpy[third]-1*H))
+ w2 = log(lambdas[third]+eta*(enthalpy[fourth]-1*H))
+ w3 = log(lambdas[fourth]+eta*(enthalpy[third]-1*H))
+ w4 = log(lambdas[fourth]+eta*(enthalpy[fourth]-1*H))
+ weight = (w4-w3+w1-w2)/eta/kB
+
+ ### generate randon number for exchange criterion and calc its log
+ LOGRANDNUM = log(random.random())
+
+ ### wyzeruj warunki
+ compare1 = 0
+ compare2 = 0
+
+ if (weight>0):
+ compare1 = 1
+ if (weight>LOGRANDNUM):
+ compare2 = 1
+
+ ### exchange restart files if exchange condition is satisfied
+ if (compare1>0 or compare2>0):
+ print "exchange2 accepted for pair", third, fourth, lambdas[third], lambdas[fourth], "with compares as", compare1, compare2, "weight as", weight, "and lograndnum", LOGRANDNUM
+ os.system("cp %s/%s/final_restart_file%d %s/%s/restart_file" % (path,lambdas[third],exchange,path,lambdas[fourth]))
+ os.system("cp %s/%s/final_restart_file%d %s/%s/restart_file" % (path,lambdas[fourth],exchange,path,lambdas[third]))
+ ### update walkers
+ tmp1=walker[third]
+ tmp2=walker[fourth]
+ walker[third]=tmp2
+ walker[fourth]=tmp1
+ else:
+ print "exchange2 not accepted for pair", third, fourth, lambdas[third], lambdas[fourth], "with compares as", compare1, compare2, "weight as", weight, "and lograndnum", LOGRANDNUM
+ #print "walkers:", walker
+ print "".join(["%d " % x for x in walker])
+ sys.stdout.flush()
+
+ lastwalker = open(path + "/lastwalker", "w")
+ lastwalker.write("".join(["%d " % w for w in walker]))
+ lastwalker.close()
+
+ lastexchange = open(path + "/lastexchange", "w")
+ lastexchange.write("%d" % (exchange+1))
+ lastexchange.close()
+
diff --git a/examples/USER/misc/grem/lj-6rep/in.gREM b/examples/USER/misc/grem/lj-6rep/in.gREM
new file mode 100644
index 000000000..6a75c4599
--- /dev/null
+++ b/examples/USER/misc/grem/lj-6rep/in.gREM
@@ -0,0 +1,25 @@
+# LJ particles
+variable T0 index 300.0
+variable press index 0.0
+variable lambda index 400.0
+variable eta index -0.01
+variable enthalpy index -30000.0
+
+units real
+atom_style full
+pair_style lj/cut 5.0
+
+read_data "restart_file"
+
+thermo 10
+thermo_style custom step temp pe etotal press vol
+
+velocity all create ${T0} 12427
+timestep 1.0
+
+fix fxnvt all npt temp ${T0} ${T0} 1000.0 iso ${press} ${press} 10000.0
+fix fxgREM all grem ${lambda} ${eta} ${enthalpy} fxnvt
+thermo_modify press fxgREM_press
+run 10000
+
+write_data final_restart_file
diff --git a/examples/USER/misc/grem/lj-6rep/run.sh b/examples/USER/misc/grem/lj-6rep/run.sh
new file mode 100755
index 000000000..f933afddc
--- /dev/null
+++ b/examples/USER/misc/grem/lj-6rep/run.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+NPROCS=1
+if [ $# -gt 0 ]; then
+ NPROCS=$1
+fi
+
+bash ./clean.sh
+
+python ./double-re-short.py $NPROCS $HOME/compile/lammps-icms/src/lmp_omp in.gREM > total_output.$NPROCS
+
+exit 0
diff --git a/examples/USER/misc/grem/lj-6rep/walker.bkp b/examples/USER/misc/grem/lj-6rep/walker.bkp
new file mode 100644
index 000000000..b2d0253c9
--- /dev/null
+++ b/examples/USER/misc/grem/lj-6rep/walker.bkp
@@ -0,0 +1 @@
+0 1 2 3 4 5
diff --git a/examples/USER/misc/grem/lj-single/in.gREM-npt b/examples/USER/misc/grem/lj-single/in.gREM-npt
new file mode 100644
index 000000000..685170638
--- /dev/null
+++ b/examples/USER/misc/grem/lj-single/in.gREM-npt
@@ -0,0 +1,21 @@
+# LJ particles
+variable T0 equal 300.0
+variable press equal 0.0
+
+units real
+atom_style full
+pair_style lj/cut 5.0
+
+read_data "lj.data"
+
+thermo 10
+thermo_style custom step temp pe etotal press vol
+
+timestep 1.0
+
+fix fxnpt all npt temp ${T0} ${T0} 1000.0 iso ${press} ${press} 10000.0
+fix fxgREM all grem 400 -.01 -30000 fxnpt
+thermo_modify press fxgREM_press
+run 1000
+
+#write_data lj-out.data
diff --git a/examples/USER/misc/grem/lj-single/in.gREM-nvt b/examples/USER/misc/grem/lj-single/in.gREM-nvt
new file mode 100644
index 000000000..9e229ff60
--- /dev/null
+++ b/examples/USER/misc/grem/lj-single/in.gREM-nvt
@@ -0,0 +1,20 @@
+# LJ particles
+variable T0 equal 300.0
+variable press equal 0.0
+
+units real
+atom_style full
+pair_style lj/cut 5.0
+
+read_data "lj.data"
+
+thermo 10
+thermo_style custom step temp pe etotal press vol
+
+timestep 1.0
+
+fix fxnvt all nvt temp ${T0} ${T0} 1000.0
+fix fxgREM all grem 400 -.01 -30000 fxnvt
+run 1000
+
+#write_data lj-out.data
diff --git a/examples/USER/misc/grem/lj-single/lj.data b/examples/USER/misc/grem/lj-single/lj.data
new file mode 100644
index 000000000..19804a122
--- /dev/null
+++ b/examples/USER/misc/grem/lj-single/lj.data
@@ -0,0 +1,1022 @@
+LAMMPS data file via write_data, version 5 Nov 2016, timestep = 10000
+
+500 atoms
+1 atom types
+
+1.0687419820172011e+00 2.3931258017983296e+01 xlo xhi
+1.0687419820172011e+00 2.3931258017983296e+01 ylo yhi
+1.0687419820172011e+00 2.3931258017983296e+01 zlo zhi
+
+Masses
+
+1 62.5
+
+Pair Coeffs # lj/cut
+
+1 1.1 2.8
+
+Atoms # full
+
+412 0 1 0.0000000000000000e+00 4.4809456658533886e+00 2.8421516617731473e+00 1.2368989589374935e+00 0 0 1
+82 0 1 0.0000000000000000e+00 2.4282887518669538e+00 1.0789105232915170e+00 3.7708892161240906e+00 0 1 0
+19 0 1 0.0000000000000000e+00 1.5911015279715386e+00 3.7694942598732193e+00 4.8066424873559050e+00 1 0 0
+108 0 1 0.0000000000000000e+00 4.9511056952491508e+00 3.0932647258237687e+00 4.1160353993000900e+00 0 0 0
+427 0 1 0.0000000000000000e+00 6.6863664962001099e+00 4.8853771926838219e+00 1.9706876808075053e+00 0 0 1
+103 0 1 0.0000000000000000e+00 7.8069112043620077e+00 2.2654270198751996e+00 4.2459349196190423e+00 0 0 0
+406 0 1 0.0000000000000000e+00 7.0357980279248409e+00 1.3291738912752034e+00 1.1891767333263754e+00 0 0 1
+206 0 1 0.0000000000000000e+00 9.6146730236691464e+00 4.8735210908695707e+00 4.4158855996673534e+00 0 0 0
+111 0 1 0.0000000000000000e+00 1.1054052727142052e+01 2.3796446559465576e+01 4.0590728519333190e+00 0 -1 0
+432 0 1 0.0000000000000000e+00 1.2248785614157724e+01 3.7873802895244713e+00 2.9744325579401267e+00 0 0 1
+110 0 1 0.0000000000000000e+00 1.3960486183885420e+01 1.3620199528977150e+00 4.4157506080980067e+00 0 0 0
+134 0 1 0.0000000000000000e+00 1.6268309501735523e+01 2.5378283480079666e+00 2.7311892905001862e+00 0 0 0
+484 0 1 0.0000000000000000e+00 1.9536496539452024e+01 2.3171550014788412e+01 3.7132970641459475e+00 -1 0 1
+115 0 1 0.0000000000000000e+00 1.8070545803960606e+01 4.5391759586012839e+00 4.5739630853294173e+00 0 0 0
+107 0 1 0.0000000000000000e+00 2.3903310741270378e+01 3.0778067122813981e+00 1.9934701781736113e+00 -1 0 0
+2 0 1 0.0000000000000000e+00 2.0375267554467573e+01 3.4930478982680429e+00 2.9628116373024289e+00 -1 0 0
+200 0 1 0.0000000000000000e+00 2.2423312172633437e+01 1.5532961143330470e+00 4.4875140941537577e+00 0 1 0
+8 0 1 0.0000000000000000e+00 3.4042276347912663e+00 5.2683514956337820e+00 2.8058811153007541e+00 0 0 0
+27 0 1 0.0000000000000000e+00 4.7463216518047631e+00 7.6835955250390446e+00 4.7488004385051497e+00 0 0 0
+429 0 1 0.0000000000000000e+00 7.7470142287905102e+00 7.4113605063820494e+00 2.6902240560041744e+00 0 0 1
+26 0 1 0.0000000000000000e+00 5.1822376861240080e+00 7.6065857517246194e+00 1.3005485614415910e+00 0 0 0
+12 0 1 0.0000000000000000e+00 1.0123250043149675e+01 6.0393364511707883e+00 1.5612014131040080e+00 0 0 0
+137 0 1 0.0000000000000000e+00 1.2763257105598887e+01 6.6581123913854086e+00 2.8100006126166761e+00 0 0 0
+139 0 1 0.0000000000000000e+00 1.5559972037970699e+01 5.4225252924085190e+00 3.3025563067940000e+00 0 0 0
+35 0 1 0.0000000000000000e+00 1.7861843361720471e+01 5.7426284192066142e+00 1.3937479840554419e+00 0 0 0
+120 0 1 0.0000000000000000e+00 1.7356534105487629e+01 8.0034779493682429e+00 3.3477828746782343e+00 0 0 0
+57 0 1 0.0000000000000000e+00 2.0194258910343304e+01 6.6248368691709087e+00 3.4580433594335855e+00 0 0 0
+22 0 1 0.0000000000000000e+00 2.3182642694443626e+01 6.0050276425168549e+00 3.0168664461019548e+00 -1 0 0
+39 0 1 0.0000000000000000e+00 2.3935539262818679e+00 8.1183186531997968e+00 2.7054302684830764e+00 1 0 0
+51 0 1 0.0000000000000000e+00 2.0371625256427675e+00 1.1411322490097950e+01 3.8769046456703125e+00 0 0 0
+41 0 1 0.0000000000000000e+00 4.7180229555109916e+00 1.0276956228835948e+01 2.6194159551757483e+00 0 0 0
+121 0 1 0.0000000000000000e+00 5.2740643801495786e+00 1.2603722082668318e+01 4.4627758061248155e+00 0 0 0
+45 0 1 0.0000000000000000e+00 7.1538335530161445e+00 1.2535239987425356e+01 2.0118699319738580e+00 0 0 0
+232 0 1 0.0000000000000000e+00 9.7963613768788456e+00 9.7298148162089539e+00 2.5613513358670801e+00 0 0 0
+226 0 1 0.0000000000000000e+00 1.2199397785011888e+01 9.2605672620857060e+00 4.2059073603455275e+00 0 0 0
+135 0 1 0.0000000000000000e+00 1.2415944706271233e+01 1.1923978848044444e+01 2.9008851418511257e+00 0 0 0
+33 0 1 0.0000000000000000e+00 1.2230669971833883e+01 8.8228769533912246e+00 2.3790949355060292e+01 0 0 -1
+113 0 1 0.0000000000000000e+00 1.4837662673894014e+01 1.0067477080097813e+01 2.8191358343840749e+00 0 0 0
+44 0 1 0.0000000000000000e+00 1.7767990159653660e+01 1.1631892316803215e+01 3.3537340480838416e+00 -1 0 0
+443 0 1 0.0000000000000000e+00 1.9822318864488864e+01 9.0743201336425958e+00 1.8261132574689076e+00 -1 0 1
+61 0 1 0.0000000000000000e+00 2.2330984413722629e+01 8.8540163035009112e+00 3.6937511391113342e+00 -1 0 0
+23 0 1 0.0000000000000000e+00 2.2335367334938628e+01 1.0999846740359695e+01 1.6013458585331650e+00 -1 0 0
+43 0 1 0.0000000000000000e+00 2.7734739744780477e+00 1.4506910769700296e+01 4.4146600856536491e+00 0 0 0
+447 0 1 0.0000000000000000e+00 3.2519017594458264e+00 1.3089078364778484e+01 1.6241079627459576e+00 0 0 1
+83 0 1 0.0000000000000000e+00 5.1511429943884766e+00 1.5269224940696791e+01 2.7986401135214347e+00 0 0 0
+142 0 1 0.0000000000000000e+00 9.9946358814748333e+00 1.3291416233373958e+01 1.5175273205612121e+00 0 0 0
+149 0 1 0.0000000000000000e+00 1.0712822941299331e+01 1.5322706776608465e+01 3.7313259727390493e+00 0 0 0
+156 0 1 0.0000000000000000e+00 1.5296247750299116e+01 1.2699229460725926e+01 4.5947310733888660e+00 0 0 0
+36 0 1 0.0000000000000000e+00 1.4916259220359752e+01 1.2552460066327285e+01 1.2882512832854203e+00 0 0 0
+130 0 1 0.0000000000000000e+00 1.2669998086118580e+01 1.4524767029776967e+01 1.4829822743199244e+00 0 0 0
+293 0 1 0.0000000000000000e+00 1.7667762891154720e+01 1.4685869126055099e+01 4.1469550172843928e+00 0 0 0
+62 0 1 0.0000000000000000e+00 1.9727838032470395e+01 1.2703786600979377e+01 1.0821172098629008e+00 -1 0 0
+78 0 1 0.0000000000000000e+00 1.7018110260051117e+01 1.4470311224183430e+01 1.3062135325603634e+00 0 0 0
+157 0 1 0.0000000000000000e+00 2.0844781887237335e+01 1.2397676027314303e+01 3.7981475975098853e+00 0 0 0
+75 0 1 0.0000000000000000e+00 2.0557997925708360e+01 1.5256533681960777e+01 2.9875621575766971e+00 0 0 0
+467 0 1 0.0000000000000000e+00 2.3381224870846388e+01 1.3792595937081506e+01 2.4008271068567053e+00 -1 0 1
+65 0 1 0.0000000000000000e+00 2.3741978029878448e+00 1.6707257305266008e+01 2.2333525998933634e+00 0 0 0
+298 0 1 0.0000000000000000e+00 2.6808299689975144e+00 1.9849310503081806e+01 1.6273316794411072e+00 1 0 0
+165 0 1 0.0000000000000000e+00 3.5964496861046160e+00 1.7675354044307280e+01 4.8308548744430535e+00 0 0 0
+69 0 1 0.0000000000000000e+00 8.2110799119889286e+00 1.6292389066918158e+01 2.0918308900966602e+00 0 0 0
+469 0 1 0.0000000000000000e+00 6.4824372339609075e+00 2.0223413306028995e+01 3.2841257331989278e+00 0 0 1
+487 0 1 0.0000000000000000e+00 5.0563417102741859e+00 1.7928307749325739e+01 1.4438191869066133e+00 0 0 1
+66 0 1 0.0000000000000000e+00 7.9774025192783826e+00 1.8887911894708751e+01 2.3555194141426249e+01 0 0 -1
+56 0 1 0.0000000000000000e+00 9.4035831750169478e+00 1.8656376618575155e+01 3.6253650394621588e+00 0 0 0
+480 0 1 0.0000000000000000e+00 1.4828872689056764e+01 1.6248361399499615e+01 2.0415787316501044e+00 0 0 1
+76 0 1 0.0000000000000000e+00 1.2580343536943865e+01 1.8337623599022798e+01 2.9904924490772116e+00 0 0 0
+93 0 1 0.0000000000000000e+00 1.5414847407340186e+01 1.9279999971820111e+01 2.2134215119588991e+00 0 0 0
+81 0 1 0.0000000000000000e+00 1.8428565015393662e+01 1.7452876935640585e+01 2.3308470189170043e+00 -1 0 0
+161 0 1 0.0000000000000000e+00 2.3019040877589049e+01 1.6262561168817157e+01 4.3415045380299535e+00 -1 0 0
+3 0 1 0.0000000000000000e+00 2.2320309528165115e+01 1.8710148959281938e+01 2.6125817351116871e+00 -1 -1 0
+154 0 1 0.0000000000000000e+00 2.0265291334615132e+01 1.8061350966641537e+01 4.7405829682632907e+00 0 0 0
+223 0 1 0.0000000000000000e+00 3.2329186851693250e+00 2.0764559079610144e+01 4.3015676455107563e+00 0 -1 0
+102 0 1 0.0000000000000000e+00 4.7791908452211178e+00 2.2710997634357096e+01 2.2640268660223843e+00 0 -1 0
+67 0 1 0.0000000000000000e+00 8.9183340110968352e+00 2.2107434287451497e+01 2.9826052268206293e+00 0 0 0
+169 0 1 0.0000000000000000e+00 1.1634983593579690e+01 2.0746497504331806e+01 4.4150187678255275e+00 0 0 0
+191 0 1 0.0000000000000000e+00 1.4491384787045261e+01 1.9875177875726489e+01 4.9004697067989724e+00 0 0 0
+96 0 1 0.0000000000000000e+00 1.3521575478985056e+01 2.1560534818207824e+01 2.5497299657717294e+00 0 0 0
+174 0 1 0.0000000000000000e+00 1.8298580529496022e+01 2.0148103209327719e+01 4.2983153223131279e+00 0 0 0
+420 0 1 0.0000000000000000e+00 1.6335860032698328e+01 2.2268505832462345e+01 3.5301727200099999e+00 0 -1 1
+197 0 1 0.0000000000000000e+00 2.0243701100011581e+01 2.0829690326094301e+01 1.9588312300725961e+00 0 0 0
+64 0 1 0.0000000000000000e+00 2.3347181786434792e+01 2.1751273812354516e+01 2.8278603733288588e+00 -1 0 0
+407 0 1 0.0000000000000000e+00 2.1573727766538678e+01 2.3796210853952584e+01 1.4291779425830260e+00 -1 -1 1
+186 0 1 0.0000000000000000e+00 3.2644605964169195e+00 1.7135442413303557e+00 6.4715970181008489e+00 0 1 0
+185 0 1 0.0000000000000000e+00 6.4359748457107777e+00 2.3888612828503000e+00 7.0986229197657629e+00 0 1 0
+105 0 1 0.0000000000000000e+00 1.1708137292497762e+01 3.1912319978792927e+00 6.0129364572444057e+00 0 0 0
+112 0 1 0.0000000000000000e+00 9.2204969756243678e+00 4.0996861257203658e+00 7.3930798965320124e+00 0 0 0
+355 0 1 0.0000000000000000e+00 1.4445812174215538e+01 4.8104852974849956e+00 6.2513169691801203e+00 0 0 0
+290 0 1 0.0000000000000000e+00 1.3714297673642074e+01 2.1410594692314824e+00 7.9557578585548461e+00 0 1 0
+214 0 1 0.0000000000000000e+00 1.6498399150471261e+01 2.4435641993792467e+00 5.8123054403839554e+00 0 0 0
+334 0 1 0.0000000000000000e+00 1.6894045157139921e+01 1.7581449889470391e+00 8.8729255815109056e+00 0 0 0
+119 0 1 0.0000000000000000e+00 1.8069961656428614e+01 4.6089491773196425e+00 7.7912371680424393e+00 0 0 0
+17 0 1 0.0000000000000000e+00 1.9802448035879788e+01 2.3653800476296922e+00 6.0449778170916790e+00 0 0 0
+18 0 1 0.0000000000000000e+00 2.2841025613366060e+01 2.8598858269517882e+00 7.4933569417661561e+00 0 0 0
+28 0 1 0.0000000000000000e+00 4.0191995067210540e+00 4.9242815517196270e+00 6.4061213912597834e+00 0 0 0
+129 0 1 0.0000000000000000e+00 4.3400092330908677e+00 7.4891968710483861e+00 7.8745007144476116e+00 0 0 0
+25 0 1 0.0000000000000000e+00 1.7923151615791775e+00 6.7702470501707914e+00 5.4896352273483107e+00 0 0 0
+126 0 1 0.0000000000000000e+00 1.3193022261004654e+00 5.9243846533922220e+00 8.3867597385403236e+00 0 0 0
+11 0 1 0.0000000000000000e+00 6.7460157698274363e+00 5.3220965763790140e+00 5.2793380323686385e+00 0 0 0
+127 0 1 0.0000000000000000e+00 7.1713347714392510e+00 8.1975753516479237e+00 6.9746648119691823e+00 0 0 0
+204 0 1 0.0000000000000000e+00 6.4709377103456154e+00 5.1809943345472274e+00 8.3696903925892148e+00 0 0 0
+230 0 1 0.0000000000000000e+00 9.3461912014511128e+00 7.8446977407754268e+00 5.0973729991111583e+00 0 0 0
+118 0 1 0.0000000000000000e+00 1.1962621259687538e+01 6.5316661683811716e+00 5.6791851268613280e+00 0 0 0
+106 0 1 0.0000000000000000e+00 9.7779879879743596e+00 7.0037714264574848e+00 8.0484251817693853e+00 0 0 0
+240 0 1 0.0000000000000000e+00 1.2086708932383178e+01 5.0747439770419023e+00 8.3613561053160996e+00 0 0 0
+136 0 1 0.0000000000000000e+00 1.4607928817203895e+01 7.6445154668429085e+00 5.0714414438652708e+00 0 0 0
+151 0 1 0.0000000000000000e+00 1.6349830512217913e+01 7.0761076613600711e+00 7.7747453514787574e+00 0 0 0
+233 0 1 0.0000000000000000e+00 1.9400193203720320e+01 6.9094076776546833e+00 6.3106972457772024e+00 0 0 0
+194 0 1 0.0000000000000000e+00 2.1591723880949299e+01 4.9228961929661654e+00 5.5717932006798776e+00 0 1 0
+20 0 1 0.0000000000000000e+00 2.1210117885775865e+01 5.2109732280926364e+00 8.5466187663442739e+00 0 0 0
+37 0 1 0.0000000000000000e+00 2.2264112943423740e+01 7.9351495797528209e+00 7.1224230503254820e+00 0 0 0
+42 0 1 0.0000000000000000e+00 2.4207853449436119e+00 9.7215876946860966e+00 6.4217353378993591e+00 0 0 0
+163 0 1 0.0000000000000000e+00 3.0284558325295587e+00 1.2752914078423283e+01 6.8362783020506077e+00 0 0 0
+132 0 1 0.0000000000000000e+00 7.1051790113576212e+00 9.8662236179850300e+00 4.4508465176468812e+00 0 0 0
+38 0 1 0.0000000000000000e+00 5.2135729856148876e+00 1.0541024062301082e+01 6.8638879895015368e+00 1 0 0
+143 0 1 0.0000000000000000e+00 7.7441120201024543e+00 1.2234803272485014e+01 6.5044225427087046e+00 0 0 0
+47 0 1 0.0000000000000000e+00 1.0363432368503529e+01 1.0091733240341059e+01 6.8512609853589730e+00 0 0 0
+326 0 1 0.0000000000000000e+00 1.3396477392876006e+01 8.4861608360170955e+00 7.6399677402333728e+00 0 0 0
+131 0 1 0.0000000000000000e+00 1.2954032133246177e+01 1.1458412449084850e+01 6.1870171972776982e+00 0 0 0
+171 0 1 0.0000000000000000e+00 1.5550077087960533e+01 1.2222336204155088e+01 7.5507925326893952e+00 0 0 0
+24 0 1 0.0000000000000000e+00 1.9531482658265599e+01 9.5566449500985176e+00 4.8562660102530417e+00 -1 0 0
+60 0 1 0.0000000000000000e+00 1.6835975801415962e+01 9.9050926405202837e+00 6.0818642462763952e+00 0 0 0
+250 0 1 0.0000000000000000e+00 1.9425872830906179e+01 9.1638133884038364e+00 8.1218786085572283e+00 0 0 0
+238 0 1 0.0000000000000000e+00 2.2378476320112775e+01 1.0753439406451767e+01 5.7947117960158510e+00 0 0 0
+140 0 1 0.0000000000000000e+00 2.0986733319412195e+01 1.2367132945242421e+01 8.0109057861492374e+00 0 0 0
+79 0 1 0.0000000000000000e+00 8.0457721105213196e+00 1.4868884491066478e+01 4.9811873675043881e+00 1 0 0
+99 0 1 0.0000000000000000e+00 5.3069408098392934e+00 1.5280194445455646e+01 6.2341582529073083e+00 1 0 0
+148 0 1 0.0000000000000000e+00 7.9766227130717287e+00 1.5028370595540425e+01 8.0958079475295257e+00 0 0 0
+147 0 1 0.0000000000000000e+00 1.0102176349210438e+01 1.2557558096098459e+01 8.6123260798687831e+00 0 0 0
+146 0 1 0.0000000000000000e+00 1.0190979769770841e+01 1.2354058146199117e+01 4.7327766425924436e+00 0 0 0
+170 0 1 0.0000000000000000e+00 1.0973529111602284e+01 1.4729739559074019e+01 6.6710365926100703e+00 0 0 0
+71 0 1 0.0000000000000000e+00 1.3870297757484762e+01 1.5397711753983140e+01 5.2790708749713122e+00 0 0 0
+73 0 1 0.0000000000000000e+00 1.3601604718258358e+01 1.4492182812159694e+01 8.4548086620875953e+00 0 0 0
+234 0 1 0.0000000000000000e+00 1.8535311979903497e+01 1.2424990143540965e+01 6.3626762732119735e+00 0 0 0
+277 0 1 0.0000000000000000e+00 1.6621659711095127e+01 1.4990834962545902e+01 7.1742315697338341e+00 0 0 0
+183 0 1 0.0000000000000000e+00 2.0219360535057113e+01 1.5100834353453976e+01 6.1858431647727548e+00 -1 0 0
+138 0 1 0.0000000000000000e+00 2.2951262389902201e+01 1.3549278828513833e+01 5.5723085207230749e+00 0 0 0
+158 0 1 0.0000000000000000e+00 1.6997757816791004e+00 1.5875051046837923e+01 7.0920540808382251e+00 1 0 0
+166 0 1 0.0000000000000000e+00 2.8103088362573625e+00 1.8682671677054699e+01 7.6358453473717596e+00 0 0 0
+48 0 1 0.0000000000000000e+00 6.3344859418159842e+00 1.7480173350400520e+01 4.4077188225685244e+00 0 0 0
+87 0 1 0.0000000000000000e+00 5.6937490463026750e+00 1.9644042900600283e+01 6.3028432227848112e+00 0 0 0
+288 0 1 0.0000000000000000e+00 5.5569151860942592e+00 1.7298399698937413e+01 8.3736336602163082e+00 0 0 0
+269 0 1 0.0000000000000000e+00 8.5603126811216264e+00 1.7752767775931844e+01 6.3960551151010616e+00 0 0 0
+70 0 1 0.0000000000000000e+00 1.2155442869059884e+01 1.7644842807829328e+01 5.8712577113790392e+00 0 0 0
+94 0 1 0.0000000000000000e+00 1.6238999614660251e+01 1.7407341966987630e+01 4.9333514024581486e+00 0 0 0
+189 0 1 0.0000000000000000e+00 1.4706675243575701e+01 1.7336947886775313e+01 7.6140366373653574e+00 0 0 0
+471 0 1 0.0000000000000000e+00 1.3509978655278903e+01 2.0115763971169820e+01 8.0643404066778377e+00 0 0 1
+14 0 1 0.0000000000000000e+00 1.6390864710063205e+01 1.9739214468912131e+01 7.2527736757691628e+00 0 -1 0
+91 0 1 0.0000000000000000e+00 1.8521438997288868e+01 1.7487406276395237e+01 7.2471777063185501e+00 0 0 0
+201 0 1 0.0000000000000000e+00 1.9836373797503089e+01 2.0453621916498250e+01 7.6500675979531811e+00 -1 -1 0
+162 0 1 0.0000000000000000e+00 2.3664502278926864e+01 1.9243576708102282e+01 5.1789238616234474e+00 -1 0 0
+475 0 1 0.0000000000000000e+00 2.1916815812260712e+01 1.7740426606039076e+01 7.0317797060909015e+00 0 0 1
+184 0 1 0.0000000000000000e+00 3.6653055257076055e+00 2.1658302416698085e+01 7.2060095406635147e+00 0 0 0
+182 0 1 0.0000000000000000e+00 1.0856783972346535e+00 2.2207121923272883e+01 5.8439726514067685e+00 0 0 0
+181 0 1 0.0000000000000000e+00 5.9567421224989019e+00 2.2705496698438012e+01 4.9546398614370766e+00 0 0 0
+282 0 1 0.0000000000000000e+00 6.6036518602303902e+00 2.2292353070031020e+01 7.9709311142303694e+00 0 0 0
+109 0 1 0.0000000000000000e+00 8.5339403404799121e+00 2.0771427687805488e+01 5.6964579620515021e+00 0 -1 0
+286 0 1 0.0000000000000000e+00 9.2556591439891864e+00 2.3703560449287743e+01 6.9050966847255548e+00 0 0 0
+193 0 1 0.0000000000000000e+00 1.0555309801885326e+01 1.9951481781062196e+01 7.7752827243423734e+00 0 0 0
+235 0 1 0.0000000000000000e+00 1.1942452827134465e+01 2.2584621956069213e+01 6.7848167346699970e+00 0 -1 0
+95 0 1 0.0000000000000000e+00 1.5000482142055242e+01 2.2412893225003458e+01 6.7081033951144615e+00 0 0 0
+196 0 1 0.0000000000000000e+00 1.8127725378213515e+01 2.2566082174354811e+01 6.5074962287460556e+00 0 0 0
+381 0 1 0.0000000000000000e+00 2.3136422126549565e+01 2.0568979548148029e+01 8.0711004336457695e+00 -1 0 0
+84 0 1 0.0000000000000000e+00 2.1249207619036333e+01 2.1181214299117880e+01 4.9421067262672747e+00 -1 0 0
+190 0 1 0.0000000000000000e+00 2.1391059296611129e+01 2.3025318582802253e+01 7.6191684115817182e+00 0 0 0
+101 0 1 0.0000000000000000e+00 2.8017306813718887e+00 3.5624949162297641e+00 9.2593329887520479e+00 0 0 0
+303 0 1 0.0000000000000000e+00 3.9132064070986918e+00 3.1226504852118828e+00 1.2108198293255786e+01 0 0 0
+353 0 1 0.0000000000000000e+00 1.4850502371676710e+00 1.4205130237567911e+00 1.1612347863695065e+01 1 0 0
+104 0 1 0.0000000000000000e+00 4.6433275640809342e+00 1.1976998397695573e+00 9.4985861097657640e+00 0 0 0
+187 0 1 0.0000000000000000e+00 7.7697554871656713e+00 1.6087876814143842e+00 9.7018769671612120e+00 0 1 0
+225 0 1 0.0000000000000000e+00 6.9377607140313451e+00 4.1617332992423455e+00 1.1525260369871173e+01 0 0 0
+211 0 1 0.0000000000000000e+00 1.0768976654131912e+01 2.1970851244529954e+00 9.2417277557708388e+00 0 0 0
+433 0 1 0.0000000000000000e+00 9.5397056280774866e+00 2.6691464612659113e+00 1.1884645798993189e+01 0 0 0
+373 0 1 0.0000000000000000e+00 1.2549010038860807e+01 4.0909945073747549e+00 1.1205855932547543e+01 0 0 0
+216 0 1 0.0000000000000000e+00 1.4554283189049491e+01 1.6193001507442626e+00 1.0774717557744628e+01 0 0 0
+332 0 1 0.0000000000000000e+00 1.5122391482809640e+01 4.5089825604271834e+00 9.3368553626255615e+00 0 0 0
+340 0 1 0.0000000000000000e+00 1.5514592845932553e+01 3.9586533129419599e+00 1.2491344818462380e+01 0 0 0
+336 0 1 0.0000000000000000e+00 1.7984967072088164e+01 3.9925566903763881e+00 1.0840226621842950e+01 0 0 0
+124 0 1 0.0000000000000000e+00 2.0015802598276579e+01 2.4298341677727642e+00 9.0607278505174254e+00 -1 0 0
+117 0 1 0.0000000000000000e+00 2.2647091442770208e+01 3.3613040137698120e+00 1.0480596857008756e+01 0 0 0
+318 0 1 0.0000000000000000e+00 2.0047743617406820e+01 2.1646116739699259e+00 1.2332966273260455e+01 0 0 0
+224 0 1 0.0000000000000000e+00 4.4931645540336422e+00 5.9703780742525572e+00 1.0611005403270665e+01 0 0 0
+237 0 1 0.0000000000000000e+00 2.5327997957379225e+00 8.4141514118726839e+00 1.0356378499055484e+01 1 0 0
+321 0 1 0.0000000000000000e+00 1.7172199663356200e+00 5.3465450303180360e+00 1.1604292101944010e+01 0 0 0
+188 0 1 0.0000000000000000e+00 7.7231794616564482e+00 7.3993734296070652e+00 1.0229311624225822e+01 0 1 0
+227 0 1 0.0000000000000000e+00 1.0085043587394173e+01 5.3761725141388812e+00 1.0550900302866818e+01 0 0 0
+246 0 1 0.0000000000000000e+00 1.2872063516125657e+01 7.1468999520451391e+00 1.0309571252071274e+01 0 0 0
+330 0 1 0.0000000000000000e+00 1.5957775479933270e+01 6.9329714808714327e+00 1.0982205458583213e+01 0 0 0
+231 0 1 0.0000000000000000e+00 1.8793347322420630e+01 6.8729045274748284e+00 9.9579658546136240e+00 0 0 0
+458 0 1 0.0000000000000000e+00 2.0584444701517040e+01 5.2160768127201074e+00 1.1968363440421966e+01 0 0 0
+221 0 1 0.0000000000000000e+00 2.2038148639298541e+01 7.7644851405280848e+00 1.0034072052649019e+01 -1 0 0
+241 0 1 0.0000000000000000e+00 3.4391409283644201e+00 1.1442102469442721e+01 9.5276089293796566e+00 0 0 0
+243 0 1 0.0000000000000000e+00 3.3725843066620671e+00 1.0603316548783738e+01 1.2590696335649017e+01 0 0 0
+168 0 1 0.0000000000000000e+00 7.9803676567578465e+00 1.0330843706842774e+01 8.9948095120547098e+00 0 0 0
+145 0 1 0.0000000000000000e+00 5.4098360499007923e+00 9.3015115794712475e+00 1.0001769954703601e+01 0 0 0
+144 0 1 0.0000000000000000e+00 8.4887711818193363e+00 9.7694831474811767e+00 1.2158203041008687e+01 0 0 0
+248 0 1 0.0000000000000000e+00 6.0332566577207363e+00 1.1859961163303055e+01 1.1683972347178280e+01 0 0 0
+172 0 1 0.0000000000000000e+00 1.0831379808550007e+01 9.3453063085268546e+00 9.7022236384010547e+00 0 0 0
+252 0 1 0.0000000000000000e+00 1.0780024968509906e+01 1.1861743700820455e+01 1.1724285864625294e+01 0 0 0
+251 0 1 0.0000000000000000e+00 1.3637721732189823e+01 9.4763090746027085e+00 1.1817542640748394e+01 0 0 0
+229 0 1 0.0000000000000000e+00 1.2893615220692698e+01 1.1581416745091532e+01 9.4036108744197797e+00 0 0 0
+150 0 1 0.0000000000000000e+00 1.5673369559609023e+01 9.8015803520126852e+00 9.3886137434485786e+00 0 0 0
+179 0 1 0.0000000000000000e+00 1.8192569278182432e+01 9.3671667009288306e+00 1.1566187583817054e+01 0 0 0
+173 0 1 0.0000000000000000e+00 1.8197389917313537e+01 1.1566909608807945e+01 9.3037396719230649e+00 0 0 0
+4 0 1 0.0000000000000000e+00 2.3395595871500781e+01 1.0408783983127263e+01 8.6167997227203657e+00 -1 0 0
+40 0 1 0.0000000000000000e+00 2.1096661610178600e+01 1.0681544616352808e+01 1.0656465278647349e+01 0 0 0
+261 0 1 0.0000000000000000e+00 2.3610546594880834e+01 1.1907897213416874e+01 1.1633344218307272e+01 -1 0 0
+159 0 1 0.0000000000000000e+00 3.7609868238264723e+00 1.5207982389508995e+01 9.4223663638739357e+00 1 0 0
+264 0 1 0.0000000000000000e+00 3.5669886753183406e+00 1.3761967107048401e+01 1.2012888874760659e+01 0 0 0
+283 0 1 0.0000000000000000e+00 1.3296808206606621e+00 1.5656026007976335e+01 1.1186773437526815e+01 0 0 0
+128 0 1 0.0000000000000000e+00 5.6822336270838782e+00 1.3105751249182113e+01 8.6638100682605739e+00 0 0 0
+263 0 1 0.0000000000000000e+00 6.0641853166021038e+00 1.5569298501032796e+01 1.1597380021399115e+01 0 0 0
+285 0 1 0.0000000000000000e+00 8.1985640939650182e+00 1.3700345367226856e+01 1.0671906578911001e+01 0 0 0
+249 0 1 0.0000000000000000e+00 1.1000432853169167e+01 1.4651781518318533e+01 1.0385667548349275e+01 0 0 0
+366 0 1 0.0000000000000000e+00 1.3455380261958316e+01 1.3456237585833577e+01 1.1457451447032964e+01 0 0 0
+272 0 1 0.0000000000000000e+00 1.6205198051014719e+01 1.3609191618033197e+01 1.0211426498661211e+01 0 0 0
+378 0 1 0.0000000000000000e+00 1.9083371421390893e+01 1.4520581200144557e+01 9.0049926953982684e+00 0 0 0
+175 0 1 0.0000000000000000e+00 1.8988581701934461e+01 1.2292531219442447e+01 1.2037052731818767e+01 0 0 0
+274 0 1 0.0000000000000000e+00 1.8737937379051512e+01 1.5338969187957440e+01 1.1988484914315110e+01 0 0 0
+273 0 1 0.0000000000000000e+00 2.2120961720065807e+01 1.5515736024628378e+01 8.8992220311026635e+00 0 0 0
+141 0 1 0.0000000000000000e+00 1.1781670834160813e+00 1.3356589429844323e+01 9.0622322818322232e+00 0 0 0
+155 0 1 0.0000000000000000e+00 2.1469760204140346e+01 1.3879742860802370e+01 1.1271908604071253e+01 0 0 0
+164 0 1 0.0000000000000000e+00 3.3362347848928247e+00 1.7775505816072751e+01 1.0713329351910954e+01 0 0 0
+301 0 1 0.0000000000000000e+00 6.4525330345655032e+00 1.8328466290543226e+01 1.1303983335909056e+01 0 -1 0
+266 0 1 0.0000000000000000e+00 7.7608941418425710e+00 1.9531274310723827e+01 8.9745300023956744e+00 0 0 0
+392 0 1 0.0000000000000000e+00 9.0598446923400626e+00 1.7022578636660434e+01 1.0324635128229172e+01 0 0 0
+152 0 1 0.0000000000000000e+00 1.1962661951389832e+01 1.7119160324996454e+01 8.8647451923223972e+00 0 0 0
+393 0 1 0.0000000000000000e+00 1.1920182254490456e+01 1.9690709539655085e+01 1.0714060102878154e+01 0 0 0
+289 0 1 0.0000000000000000e+00 9.0986441235815718e+00 1.9568798671832401e+01 1.1820563898282790e+01 0 0 0
+292 0 1 0.0000000000000000e+00 1.3734696205573098e+01 1.6446073131538068e+01 1.1368366889051485e+01 0 0 0
+176 0 1 0.0000000000000000e+00 1.4928886813155225e+01 1.8980817841485962e+01 1.0268167099418214e+01 0 0 0
+294 0 1 0.0000000000000000e+00 1.6281080445571718e+01 1.7667097210256170e+01 1.2878046802242370e+01 0 0 0
+199 0 1 0.0000000000000000e+00 1.6762167924683965e+01 1.6673408583557254e+01 9.9016912992043782e+00 0 0 0
+217 0 1 0.0000000000000000e+00 1.8016022133688676e+01 1.9495839711068285e+01 9.8266217898187485e+00 0 -1 0
+198 0 1 0.0000000000000000e+00 2.0055474050913109e+01 1.7376169240272265e+01 9.8206598234645952e+00 0 0 0
+80 0 1 0.0000000000000000e+00 2.3263183181731833e+01 1.8066838216499399e+01 9.8594940536279925e+00 0 0 0
+180 0 1 0.0000000000000000e+00 2.1680220733998222e+01 1.7031066301341216e+01 1.2504904671804933e+01 0 0 0
+281 0 1 0.0000000000000000e+00 2.1175303702142543e+01 2.0355486020537434e+01 1.0674229908381157e+01 -1 0 0
+258 0 1 0.0000000000000000e+00 4.2375101509202837e+00 2.0605063986140006e+01 9.8909110779624019e+00 1 0 0
+218 0 1 0.0000000000000000e+00 1.6786841761555908e+00 2.3153688168160986e+01 9.0709148419965384e+00 1 -1 0
+68 0 1 0.0000000000000000e+00 1.2103750939880180e+00 2.1273126678019647e+01 1.1354199454106107e+01 0 0 0
+125 0 1 0.0000000000000000e+00 3.7684090949351883e+00 2.2541647934638291e+01 1.2057444327822916e+01 0 -1 0
+270 0 1 0.0000000000000000e+00 6.7041546878218234e+00 2.1378497582264824e+01 1.1483738226257913e+01 0 0 0
+307 0 1 0.0000000000000000e+00 1.2004848914668800e+01 1.2249578103869290e+00 1.2206095466694453e+01 0 0 0
+268 0 1 0.0000000000000000e+00 9.5803781730723916e+00 2.2023061566087666e+01 9.6383315159038556e+00 0 0 0
+291 0 1 0.0000000000000000e+00 1.2589099643667902e+01 2.2617867183237625e+01 9.6225538235436030e+00 0 0 0
+192 0 1 0.0000000000000000e+00 1.3929968140447873e+01 2.1663679137735642e+01 1.1984026804942273e+01 0 0 0
+209 0 1 0.0000000000000000e+00 1.5788106757013299e+01 2.1948135119405894e+01 9.5542873966109045e+00 0 -1 0
+314 0 1 0.0000000000000000e+00 1.7470643913802444e+01 2.3925902683737696e+01 1.1715528633947068e+01 0 -1 0
+100 0 1 0.0000000000000000e+00 1.8877299864800133e+01 2.2465851680726658e+01 9.6939139861150831e+00 0 0 0
+337 0 1 0.0000000000000000e+00 2.1570396477914983e+01 2.3213022783457525e+01 1.0551529237850358e+01 0 -1 0
+382 0 1 0.0000000000000000e+00 2.2630807369051285e+00 1.6053357471259120e+00 1.4376109585273610e+01 0 1 0
+322 0 1 0.0000000000000000e+00 2.2284972429141741e+00 4.8118877720412101e+00 1.4652904112901680e+01 0 0 0
+202 0 1 0.0000000000000000e+00 6.2385495701266436e+00 1.4104630505218507e+00 1.2588634073171683e+01 0 0 0
+401 0 1 0.0000000000000000e+00 4.9410718819372352e+00 2.9366762902582479e+00 1.5237709046991620e+01 0 0 0
+305 0 1 0.0000000000000000e+00 8.0056537970484580e+00 3.9238800055637868e+00 1.4390871319894675e+01 0 0 0
+331 0 1 0.0000000000000000e+00 1.0550372459938044e+01 1.8581908419893720e+00 1.4751546212350574e+01 0 0 0
+356 0 1 0.0000000000000000e+00 1.3359369939548897e+01 3.1910204578295751e+00 1.4415179148551276e+01 0 0 0
+313 0 1 0.0000000000000000e+00 1.5188378537433419e+01 2.3889857799547674e+01 1.3619113895117156e+01 0 -1 0
+410 0 1 0.0000000000000000e+00 1.5357404839220530e+01 3.2313514429864152e+00 1.6770145680647751e+01 0 0 0
+296 0 1 0.0000000000000000e+00 1.7807693468257579e+01 3.4197137572110941e+00 1.4503453757386508e+01 0 1 0
+335 0 1 0.0000000000000000e+00 2.0157256758318034e+01 5.2503379704289195e+00 1.4902743403236503e+01 0 0 0
+311 0 1 0.0000000000000000e+00 2.0534254858414222e+01 2.0547612377155429e+00 1.5322577433157832e+01 0 0 0
+324 0 1 0.0000000000000000e+00 2.2566531280567315e+01 3.2497622080663180e+00 1.3456689968851746e+01 -1 0 0
+323 0 1 0.0000000000000000e+00 2.8475842225846977e+00 7.5349588892858339e+00 1.3317298518852629e+01 0 0 0
+222 0 1 0.0000000000000000e+00 4.6581729890320416e+00 8.1636852098792936e+00 1.5833373502172797e+01 0 0 0
+488 0 1 0.0000000000000000e+00 5.1099495455603687e+00 5.6184999524977837e+00 1.3746880374126173e+01 0 1 0
+228 0 1 0.0000000000000000e+00 8.3606938684452263e+00 6.6713969720136319e+00 1.3291524701513888e+01 0 0 0
+122 0 1 0.0000000000000000e+00 5.8554742372749100e+00 8.4308722308379576e+00 1.2778988797175478e+01 0 0 0
+265 0 1 0.0000000000000000e+00 1.1054191234366105e+01 8.0366806025544228e+00 1.2758120079716221e+01 0 0 0
+492 0 1 0.0000000000000000e+00 1.0840554390703470e+01 4.9123150393183614e+00 1.3647890323510181e+01 0 1 0
+208 0 1 0.0000000000000000e+00 1.0283825621362867e+01 7.2223535719086360e+00 1.5702408565522532e+01 0 0 0
+167 0 1 0.0000000000000000e+00 1.3718828512142451e+01 6.4303720880329864e+00 1.3054392721754345e+01 0 0 0
+357 0 1 0.0000000000000000e+00 1.5886965122302952e+01 5.7324689970083540e+00 1.5183844946276372e+01 0 0 0
+455 0 1 0.0000000000000000e+00 1.5961335880051712e+01 8.6668793026951203e+00 1.3770866860477529e+01 0 0 0
+333 0 1 0.0000000000000000e+00 1.7869622654106031e+01 6.1152991019677669e+00 1.3094665706512107e+01 0 0 0
+379 0 1 0.0000000000000000e+00 1.8187197230849591e+01 7.7186018936997138e+00 1.5618755045053527e+01 0 0 0
+212 0 1 0.0000000000000000e+00 2.0387025274563229e+01 7.9636713751669443e+00 1.3248313166331835e+01 0 0 0
+304 0 1 0.0000000000000000e+00 2.2854053686963237e+01 6.5238388020270728e+00 1.3908412766160843e+01 -1 0 0
+242 0 1 0.0000000000000000e+00 2.1628199348198942e+00 9.8917110675313680e+00 1.5005892074205581e+01 0 0 0
+325 0 1 0.0000000000000000e+00 7.8701509347725116e+00 9.0631142889349796e+00 1.5170836437322109e+01 0 0 0
+247 0 1 0.0000000000000000e+00 5.7004312250037135e+00 1.1059176463766669e+01 1.4590113062980494e+01 0 0 0
+245 0 1 0.0000000000000000e+00 8.4767656669114153e+00 1.2355520363799059e+01 1.3644678730799304e+01 0 0 0
+306 0 1 0.0000000000000000e+00 1.0569522345763884e+01 1.0321447224042215e+01 1.4640337270680444e+01 0 0 0
+260 0 1 0.0000000000000000e+00 1.6021978968149334e+01 1.1660009710280205e+01 1.2534312061809318e+01 0 0 0
+271 0 1 0.0000000000000000e+00 1.3147529877740142e+01 8.4878534553879526e+00 1.5224971171453017e+01 0 0 0
+253 0 1 0.0000000000000000e+00 1.3368469948068148e+01 1.1670938193642513e+01 1.4120652415806267e+01 0 0 0
+389 0 1 0.0000000000000000e+00 1.5742270589720855e+01 1.1500413546170826e+01 1.5841579572368458e+01 0 0 0
+349 0 1 0.0000000000000000e+00 1.8469506309686466e+01 1.0489639988697121e+01 1.4329225736477325e+01 0 0 0
+123 0 1 0.0000000000000000e+00 2.3221254136694288e+01 9.1812020800007215e+00 1.2398978399006682e+01 -1 0 0
+236 0 1 0.0000000000000000e+00 2.2135727966862273e+01 9.3449227465466720e+00 1.5791803539192356e+01 0 0 0
+244 0 1 0.0000000000000000e+00 2.1383909992090310e+01 1.1602334411220825e+01 1.3820187207888743e+01 -1 0 0
+344 0 1 0.0000000000000000e+00 3.2684220430310225e+00 1.2903396491185203e+01 1.4981235017874381e+01 0 0 0
+358 0 1 0.0000000000000000e+00 2.4371114380582597e+00 1.5268517323463167e+01 1.6401766465795632e+01 1 0 0
+267 0 1 0.0000000000000000e+00 8.6078220399339163e+00 1.5758492554836199e+01 1.3249368530058595e+01 0 0 0
+364 0 1 0.0000000000000000e+00 5.9065715935881542e+00 1.4253144834237027e+01 1.4312772768961096e+01 0 0 0
+365 0 1 0.0000000000000000e+00 1.1441884240483640e+01 1.4456608793854224e+01 1.3472983987714061e+01 0 0 0
+376 0 1 0.0000000000000000e+00 1.3591922364236044e+01 1.6320405301917319e+01 1.4448228808529755e+01 0 0 0
+177 0 1 0.0000000000000000e+00 1.5747537632682047e+01 1.4665584678597920e+01 1.3100338206760181e+01 0 0 0
+275 0 1 0.0000000000000000e+00 1.6356640372755198e+01 1.5358817821260704e+01 1.6595878862978942e+01 0 0 0
+256 0 1 0.0000000000000000e+00 1.7939488202511995e+01 1.3438092703944285e+01 1.4982221202075518e+01 0 0 0
+257 0 1 0.0000000000000000e+00 2.3385092677301035e+01 1.2230437798948911e+01 1.6004739101517650e+01 0 0 0
+160 0 1 0.0000000000000000e+00 2.0625199339564514e+01 1.4374752039682384e+01 1.4464447868230948e+01 0 0 0
+377 0 1 0.0000000000000000e+00 2.3376322380271588e+01 1.4171643155041034e+01 1.3739267582888337e+01 0 0 0
+220 0 1 0.0000000000000000e+00 1.4265284146972717e+00 1.8563354459129215e+01 1.2816214506357516e+01 1 -1 0
+399 0 1 0.0000000000000000e+00 3.5365775140751858e+00 1.6153929329432252e+01 1.3633131568386016e+01 1 0 0
+385 0 1 0.0000000000000000e+00 2.6119707102403247e+00 1.8605873214718638e+01 1.5630801166773857e+01 0 0 0
+203 0 1 0.0000000000000000e+00 4.5371356858241230e+00 1.9717742844153694e+01 1.3151329398274717e+01 0 -1 0
+262 0 1 0.0000000000000000e+00 6.7974823427633737e+00 1.7930017629972671e+01 1.4294912753087825e+01 0 0 0
+368 0 1 0.0000000000000000e+00 5.2204360731505419e+00 2.0233595323194454e+01 1.6803054548183482e+01 0 0 0
+370 0 1 0.0000000000000000e+00 1.1199255365925188e+01 1.7587682716980460e+01 1.2634754104747243e+01 0 0 0
+482 0 1 0.0000000000000000e+00 9.9106168605446445e+00 1.8984480852315443e+01 1.5120939113181269e+01 0 0 0
+295 0 1 0.0000000000000000e+00 1.3724783288537834e+01 1.8938188580778970e+01 1.3173679165504248e+01 0 0 0
+486 0 1 0.0000000000000000e+00 1.5466431052830533e+01 1.8071070869455134e+01 1.5785851169491346e+01 0 0 0
+462 0 1 0.0000000000000000e+00 1.2739752701810135e+01 1.9855794993012459e+01 1.6112830051261568e+01 0 0 0
+493 0 1 0.0000000000000000e+00 1.8462415304471520e+01 1.6773431596695865e+01 1.4802793219917204e+01 0 0 0
+278 0 1 0.0000000000000000e+00 1.9184502583948124e+01 1.8636544793111998e+01 1.2570887192950398e+01 0 0 0
+276 0 1 0.0000000000000000e+00 1.8238448543516913e+01 1.9663193287955153e+01 1.5305925163820167e+01 0 0 0
+397 0 1 0.0000000000000000e+00 2.2989699075323308e+01 1.7020775891630350e+01 1.5071138072943475e+01 0 0 0
+362 0 1 0.0000000000000000e+00 2.1598114318232291e+01 1.9935518884091209e+01 1.3849929595434352e+01 -1 0 0
+284 0 1 0.0000000000000000e+00 1.8601289967903700e+00 2.1254072283093386e+01 1.4324112392482377e+01 0 0 0
+386 0 1 0.0000000000000000e+00 4.6485327361519602e+00 2.2657089850056710e+01 1.4883696614530560e+01 0 0 0
+388 0 1 0.0000000000000000e+00 7.7002712571836049e+00 1.1847782771427091e+00 1.5466914826974270e+01 0 1 0
+470 0 1 0.0000000000000000e+00 7.2672654287840075e+00 2.0889313744781191e+01 1.4650266439691260e+01 0 0 0
+210 0 1 0.0000000000000000e+00 1.1363836943016379e+01 2.0987806671918687e+01 1.3315955878868733e+01 0 -1 0
+387 0 1 0.0000000000000000e+00 9.0347100536124199e+00 2.2692949279519862e+01 1.2901884060869826e+01 0 0 0
+205 0 1 0.0000000000000000e+00 1.0112455880459283e+01 2.2121875574684442e+01 1.6103367046466438e+01 0 -1 0
+213 0 1 0.0000000000000000e+00 1.2901117884345920e+01 2.3128985374757299e+01 1.5439785880359965e+01 0 -1 0
+390 0 1 0.0000000000000000e+00 1.5426871915741970e+01 2.0911563298736265e+01 1.4929826848245391e+01 0 0 0
+299 0 1 0.0000000000000000e+00 1.6830824320088578e+01 2.0773784367587464e+01 1.2449410890853025e+01 0 0 0
+239 0 1 0.0000000000000000e+00 1.9499776053086585e+01 2.1875673092026485e+01 1.2695292481615361e+01 0 -1 0
+195 0 1 0.0000000000000000e+00 1.7689998198812219e+01 2.2920523163241064e+01 1.4908423065611792e+01 0 0 0
+394 0 1 0.0000000000000000e+00 2.0357495137642097e+01 2.1697230284832660e+01 1.5973977700223942e+01 0 0 0
+300 0 1 0.0000000000000000e+00 2.2367318192338104e+01 2.2883885641866090e+01 1.3480007674434690e+01 0 0 0
+219 0 1 0.0000000000000000e+00 2.6968546930486195e+00 2.5304930521154949e+00 1.7378470924813726e+01 1 0 0
+483 0 1 0.0000000000000000e+00 2.1048959361860931e+00 4.9934954210971902e+00 1.9414027543230233e+01 0 1 0
+421 0 1 0.0000000000000000e+00 4.5997366631428269e+00 2.9755873947424178e+00 1.9628462070776575e+01 0 0 0
+400 0 1 0.0000000000000000e+00 7.1193392156460122e+00 3.2488602767369210e+00 1.7569748988204882e+01 0 1 0
+391 0 1 0.0000000000000000e+00 9.5300867239211673e+00 1.3048988228182945e+00 1.8229280103227925e+01 0 1 0
+431 0 1 0.0000000000000000e+00 8.7932485203634911e+00 3.9145968714699100e+00 2.0049314827670639e+01 0 0 0
+90 0 1 0.0000000000000000e+00 9.8294674717711565e+00 4.3198714533455309e+00 1.6742410030210273e+01 0 1 -1
+316 0 1 0.0000000000000000e+00 1.2289418427456010e+01 2.6021517644636689e+00 1.7533658408515986e+01 0 0 0
+414 0 1 0.0000000000000000e+00 1.7011033600780188e+01 2.8876654817306271e+00 1.9573425088936450e+01 0 0 0
+438 0 1 0.0000000000000000e+00 2.3074559977983782e+01 4.4110789359897442e+00 1.6800554508242104e+01 0 0 0
+419 0 1 0.0000000000000000e+00 2.3293903261391403e+01 2.5090412916233227e+00 1.9274722537166983e+01 0 0 0
+320 0 1 0.0000000000000000e+00 2.0568234064004898e+01 2.9962160957764743e+00 1.8049121878868220e+01 0 0 0
+441 0 1 0.0000000000000000e+00 1.5035540452423777e+00 7.2659642334802150e+00 1.6612001239728027e+01 0 0 0
+384 0 1 0.0000000000000000e+00 4.2637351672365265e+00 5.2983199172773139e+00 1.7060934742009984e+01 0 1 0
+308 0 1 0.0000000000000000e+00 3.7370714131233438e+00 8.1921071063087947e+00 1.8658627307910855e+01 0 0 0
+302 0 1 0.0000000000000000e+00 7.0707294984708176e+00 6.2353139375478257e+00 1.6189824579889248e+01 0 0 0
+329 0 1 0.0000000000000000e+00 6.0194547682477495e+00 5.9814598252874678e+00 1.9560429810215016e+01 0 0 0
+434 0 1 0.0000000000000000e+00 1.1335061449482859e+01 5.2026449734387210e+00 1.9022587156187370e+01 0 0 0
+402 0 1 0.0000000000000000e+00 8.8989036330957987e+00 6.9526513609101395e+00 1.8860193861491346e+01 0 0 0
+351 0 1 0.0000000000000000e+00 1.2900766211115965e+01 8.0420947949425621e+00 1.8248696170905625e+01 0 0 0
+375 0 1 0.0000000000000000e+00 1.2914604374174772e+01 5.4013601486983260e+00 1.6427239894352844e+01 0 0 0
+338 0 1 0.0000000000000000e+00 1.5256977198958143e+01 5.8281633063926543e+00 1.8330065950916151e+01 0 0 0
+374 0 1 0.0000000000000000e+00 1.5627211992874964e+01 8.7723134963064133e+00 1.6977136779418846e+01 0 0 0
+315 0 1 0.0000000000000000e+00 1.8109005453505830e+01 4.6094309841971537e+00 1.7433556146467875e+01 0 0 0
+360 0 1 0.0000000000000000e+00 1.8164202624939421e+01 7.3977111640694284e+00 1.9148132543638006e+01 0 0 0
+6 0 1 0.0000000000000000e+00 2.3175520846162687e+01 7.8144131590858077e+00 1.9328323732453583e+01 -1 0 -1
+437 0 1 0.0000000000000000e+00 2.0854978079979364e+01 6.9017270651804630e+00 1.7447936968705662e+01 0 0 0
+459 0 1 0.0000000000000000e+00 2.2032531209994097e+01 5.1852123214820658e+00 1.9826004081767476e+01 0 0 0
+343 0 1 0.0000000000000000e+00 4.5492871454352404e+00 1.0956333551854620e+01 1.7440179937857557e+01 0 0 0
+328 0 1 0.0000000000000000e+00 6.7718947242953931e+00 8.8696415432272300e+00 1.7926946181980856e+01 0 0 0
+327 0 1 0.0000000000000000e+00 7.7715071613664426e+00 1.1850477198401128e+01 1.6866834339663221e+01 0 0 0
+350 0 1 0.0000000000000000e+00 1.0180586740703706e+01 9.3752076573283105e+00 1.7696417338501352e+01 0 0 0
+55 0 1 0.0000000000000000e+00 1.0748133505105951e+01 1.1818127895417895e+01 1.9368329095000529e+01 0 0 -1
+451 0 1 0.0000000000000000e+00 1.2735320422352084e+01 1.1080704288010109e+01 1.6985495766629519e+01 0 0 0
+380 0 1 0.0000000000000000e+00 1.4831575427471645e+01 1.1199286292692687e+01 1.9095302779568090e+01 0 0 0
+254 0 1 0.0000000000000000e+00 1.8183969056670943e+01 1.0198521374590252e+01 1.7346220270630095e+01 0 0 0
+255 0 1 0.0000000000000000e+00 2.0379018768032434e+01 1.2026524046069810e+01 1.6776396861847822e+01 0 0 0
+442 0 1 0.0000000000000000e+00 1.7790657082126291e+01 1.0332199363056917e+01 2.0424799454996851e+01 -1 0 0
+259 0 1 0.0000000000000000e+00 1.3339648922292306e+00 1.0229416824534049e+01 1.8117866294873075e+01 1 0 0
+444 0 1 0.0000000000000000e+00 2.0863475308759931e+01 9.9487619080952765e+00 1.8801174489053459e+01 -1 0 0
+342 0 1 0.0000000000000000e+00 2.4552970934279363e+00 1.3031213889570664e+01 1.8250787047417870e+01 0 0 0
+446 0 1 0.0000000000000000e+00 3.1548700237435710e+00 1.6126030639162714e+01 1.9068380553930215e+01 0 0 0
+341 0 1 0.0000000000000000e+00 5.6715941369441367e+00 1.3908297779168832e+01 1.7321763915258018e+01 0 0 0
+346 0 1 0.0000000000000000e+00 8.1191815089064985e+00 1.5508590275199392e+01 1.6479175707455319e+01 0 0 0
+426 0 1 0.0000000000000000e+00 8.2775377358550877e+00 1.3868449866774684e+01 1.9131096595599303e+01 0 0 0
+369 0 1 0.0000000000000000e+00 6.3627799931763933e+00 1.6401381317032641e+01 1.9271747733364503e+01 0 0 0
+345 0 1 0.0000000000000000e+00 1.0474503848190016e+01 1.3000211532686684e+01 1.6362390533113636e+01 0 0 0
+494 0 1 0.0000000000000000e+00 1.1760394995540670e+01 1.4439530678121185e+01 1.8599029224874354e+01 0 0 0
+371 0 1 0.0000000000000000e+00 1.3377256762181476e+01 1.3945623338068264e+01 1.6082526736100256e+01 0 0 0
+474 0 1 0.0000000000000000e+00 1.4671538948656298e+01 1.4371485972815345e+01 1.9022585199520623e+01 0 0 0
+280 0 1 0.0000000000000000e+00 1.7150068530412565e+01 1.2910280066417434e+01 1.8237393168904322e+01 0 0 0
+413 0 1 0.0000000000000000e+00 1.9267065449717798e+01 1.4877545183379851e+01 1.7457566892352197e+01 0 -1 0
+422 0 1 0.0000000000000000e+00 2.2548373258808478e+01 1.2571582785330223e+01 1.9169255956142113e+01 -1 0 0
+297 0 1 0.0000000000000000e+00 2.2254510030902065e+01 1.4687875958027536e+01 1.7013522153494428e+01 0 0 0
+479 0 1 0.0000000000000000e+00 2.0634940463458818e+01 1.6212668395229343e+01 1.9754108749875503e+01 0 0 0
+348 0 1 0.0000000000000000e+00 2.3545938796807405e+01 1.5271544205450876e+01 1.9994667674632375e+01 -1 0 0
+498 0 1 0.0000000000000000e+00 3.3184636422619409e+00 1.9179717913517067e+01 1.8834616668427060e+01 1 0 0
+361 0 1 0.0000000000000000e+00 4.8647304735222541e+00 1.6942534554211491e+01 1.6759630124323007e+01 0 0 0
+367 0 1 0.0000000000000000e+00 7.8617955696362101e+00 1.8513041407814661e+01 1.7216299317149289e+01 0 0 0
+50 0 1 0.0000000000000000e+00 1.0939358118703431e+01 1.6153260028565466e+01 1.6042058731372883e+01 0 0 -1
+352 0 1 0.0000000000000000e+00 9.7462513560681199e+00 1.6699957520142295e+01 1.8835611601546180e+01 0 0 0
+207 0 1 0.0000000000000000e+00 1.0566835638811707e+01 1.9538378666460748e+01 1.8233927435682801e+01 0 -1 0
+372 0 1 0.0000000000000000e+00 1.3430052847874620e+01 1.6917907109083696e+01 1.7381907765957497e+01 0 0 0
+309 0 1 0.0000000000000000e+00 1.5697294866659393e+01 2.0303694026267873e+01 1.7907188825456721e+01 0 -1 0
+489 0 1 0.0000000000000000e+00 1.3255640894879384e+01 1.9450589160936754e+01 1.9395824004814433e+01 0 0 0
+215 0 1 0.0000000000000000e+00 1.5336705772235025e+01 1.7351646616194508e+01 1.9696074508753441e+01 0 -1 0
+310 0 1 0.0000000000000000e+00 1.7976347584449318e+01 1.7677809684528608e+01 1.8132862260586258e+01 0 -1 0
+464 0 1 0.0000000000000000e+00 2.3790606652749833e+01 1.7616143810538503e+01 1.7877187077563967e+01 -1 0 0
+317 0 1 0.0000000000000000e+00 2.0513889773063948e+01 1.8113760463552481e+01 1.6398359616098872e+01 0 -1 0
+396 0 1 0.0000000000000000e+00 2.3117673509582527e+01 2.0268497546705436e+01 1.6628813611542931e+01 0 0 0
+363 0 1 0.0000000000000000e+00 2.6370494658377588e+00 2.2071411458809607e+01 1.7034824422167922e+01 0 0 0
+85 0 1 0.0000000000000000e+00 2.6757773991144473e+00 2.3328168726550921e+01 1.9618845328170490e+01 0 0 -1
+409 0 1 0.0000000000000000e+00 7.2828316431718507e+00 2.3528989722911597e+01 2.0110385781195994e+01 0 -1 0
+383 0 1 0.0000000000000000e+00 5.3386574172532280e+00 2.3551850721707883e+01 1.7733188924785150e+01 0 0 0
+287 0 1 0.0000000000000000e+00 7.7146145817948470e+00 2.1694592639678735e+01 1.7722085166207595e+01 0 0 0
+408 0 1 0.0000000000000000e+00 5.1651883716353062e+00 2.1376772102711843e+01 1.9871706810238202e+01 0 -1 0
+416 0 1 0.0000000000000000e+00 1.0116924513691025e+01 2.1835307332242561e+01 2.0250993134951276e+01 0 -1 0
+411 0 1 0.0000000000000000e+00 1.2442082361811403e+01 2.2075303341299030e+01 1.8339176073872231e+01 0 -1 0
+430 0 1 0.0000000000000000e+00 1.5153030664388147e+01 2.3167978634989947e+01 1.7548113460104705e+01 0 -1 0
+495 0 1 0.0000000000000000e+00 1.8272110556230238e+01 2.3394612168913238e+01 1.7804467786367915e+01 0 0 0
+15 0 1 0.0000000000000000e+00 1.8730446710787056e+01 2.0602907529513896e+01 1.9004664184726025e+01 0 -1 -1
+418 0 1 0.0000000000000000e+00 2.3476235096715360e+01 2.1163836502791252e+01 1.9363091516887849e+01 0 -1 0
+319 0 1 0.0000000000000000e+00 2.2929107046353582e+01 2.3702280723732322e+01 1.6605758497190202e+01 0 -1 0
+404 0 1 0.0000000000000000e+00 2.1146221011785904e+01 2.2545112507989991e+01 1.8691618853412024e+01 -1 -1 0
+88 0 1 0.0000000000000000e+00 2.3250314077403824e+00 2.4665011835265664e+00 2.1942506330849799e+01 0 1 -1
+466 0 1 0.0000000000000000e+00 6.5856591343570141e+00 3.3398894128959546e+00 2.1947917158571869e+01 0 1 0
+9 0 1 0.0000000000000000e+00 9.4998343717155400e+00 3.0808388181824786e+00 2.0568012446093595e+00 0 0 0
+31 0 1 0.0000000000000000e+00 1.1585028570995435e+01 1.6923005909666817e+00 2.0430034503206151e+01 0 0 -1
+29 0 1 0.0000000000000000e+00 9.1817844920129907e+00 1.7987012678402965e+00 2.2162554317891143e+01 0 0 -1
+116 0 1 0.0000000000000000e+00 1.1116908051202703e+01 4.2894310010350054e+00 2.1893312611017759e+01 0 0 -1
+440 0 1 0.0000000000000000e+00 1.3904797213015586e+01 4.8415115112307028e+00 2.3592553175893595e+01 0 0 0
+415 0 1 0.0000000000000000e+00 1.3505001467608999e+01 1.8451298858466800e+00 1.1315731515803507e+00 0 0 1
+435 0 1 0.0000000000000000e+00 1.3748732904715533e+01 3.8767937429669175e+00 2.0112629503943499e+01 0 0 0
+114 0 1 0.0000000000000000e+00 1.6013108991191967e+01 2.8096710400690443e+00 2.2461668175797818e+01 0 0 -1
+354 0 1 0.0000000000000000e+00 1.9279503816279359e+01 4.6204451266437641e+00 2.0680736672332710e+01 0 0 0
+34 0 1 0.0000000000000000e+00 1.9020545210774987e+01 3.0860487127288141e+00 2.3320959093804365e+01 0 0 -1
+439 0 1 0.0000000000000000e+00 1.9870403283718826e+01 1.5745321757078561e+00 2.0784005397100763e+01 0 0 0
+359 0 1 0.0000000000000000e+00 2.2145577951524217e+01 3.1075195859317790e+00 2.2177329627291630e+01 0 0 0
+403 0 1 0.0000000000000000e+00 2.8441438831382935e+00 8.0290842389446997e+00 2.1709373130735017e+01 0 0 0
+423 0 1 0.0000000000000000e+00 4.1986462056658089e+00 5.1810822229193985e+00 2.2217699647228592e+01 0 0 0
+30 0 1 0.0000000000000000e+00 7.3770183153231539e+00 6.3694281364269081e+00 2.2333285925847587e+01 0 0 -1
+425 0 1 0.0000000000000000e+00 5.8017937669922093e+00 8.7150774298604006e+00 2.0969524453714282e+01 0 0 0
+133 0 1 0.0000000000000000e+00 1.0497478234923332e+01 7.3062599805554260e+00 2.1577191185014875e+01 0 0 -1
+460 0 1 0.0000000000000000e+00 1.5194112552182014e+01 7.7039526968618084e+00 2.3865483624636436e+01 0 0 0
+477 0 1 0.0000000000000000e+00 1.5549285701596670e+01 8.4208804660000514e+00 2.0021349677957414e+01 0 0 0
+53 0 1 0.0000000000000000e+00 1.3411601084344449e+01 6.5220402649071234e+00 2.1087343642427737e+01 0 0 -1
+279 0 1 0.0000000000000000e+00 1.6183791990315903e+01 5.6008215031492323e+00 2.1158110872237877e+01 0 0 0
+454 0 1 0.0000000000000000e+00 1.7807394693943870e+01 7.8845679365073416e+00 2.2154486259054742e+01 0 0 0
+86 0 1 0.0000000000000000e+00 1.1850219403745859e+00 5.5836067910245850e+00 2.2899327485486790e+01 0 1 -1
+339 0 1 0.0000000000000000e+00 2.0631895597785213e+01 7.4177268983239735e+00 2.1094192263103569e+01 0 0 0
+21 0 1 0.0000000000000000e+00 2.0877957890350888e+01 5.9249759874606864e+00 2.3688551618058625e+01 -1 0 -1
+424 0 1 0.0000000000000000e+00 2.2717829444591700e+01 8.3185841634290618e+00 2.3343302520921483e+01 -1 0 0
+428 0 1 0.0000000000000000e+00 3.5329259835500606e+00 1.0611572539967556e+01 2.0238341935112814e+01 0 0 0
+32 0 1 0.0000000000000000e+00 2.4246180057298776e+00 1.0445316616061026e+01 2.3609477134314787e+01 0 0 -1
+49 0 1 0.0000000000000000e+00 6.4932176127825691e+00 1.1383704259474252e+01 1.9538423269493382e+01 0 0 -1
+52 0 1 0.0000000000000000e+00 5.1352096853253899e+00 1.1658236225427148e+01 2.2640114195485793e+01 0 0 -1
+312 0 1 0.0000000000000000e+00 7.7012323461195100e+00 9.6641087231448441e+00 2.3280789194987133e+01 0 0 0
+436 0 1 0.0000000000000000e+00 9.0643293722594276e+00 9.5710199682368682e+00 2.0424762223953266e+01 0 0 0
+453 0 1 0.0000000000000000e+00 1.2622614680520394e+01 9.7691530653390668e+00 2.0512685012605807e+01 0 0 0
+153 0 1 0.0000000000000000e+00 1.0586612951880621e+01 1.0957459159157130e+01 2.2483859370545485e+01 0 0 -1
+77 0 1 0.0000000000000000e+00 1.5007446724204721e+01 1.0221927377331733e+01 2.2311951050945368e+01 0 0 -1
+59 0 1 0.0000000000000000e+00 1.7490969969105080e+01 1.0661253331327186e+01 2.3303587505147505e+01 0 0 -1
+457 0 1 0.0000000000000000e+00 2.0718970349996390e+01 1.0311228293435065e+01 2.1967449041547152e+01 0 0 0
+445 0 1 0.0000000000000000e+00 2.3539365571896440e+01 1.0426556163786520e+01 2.1133228463986171e+01 -1 0 0
+63 0 1 0.0000000000000000e+00 2.2199568633925333e+00 1.3020007269402255e+01 2.1475065021311401e+01 0 0 -1
+461 0 1 0.0000000000000000e+00 3.1008861798005665e+00 1.5712696656985608e+01 2.2359940251885092e+01 0 0 0
+452 0 1 0.0000000000000000e+00 7.9960654953098143e+00 1.2568730792850205e+01 2.1902756805058292e+01 0 0 0
+347 0 1 0.0000000000000000e+00 5.0238115800641676e+00 1.3900445839719930e+01 2.0250503412971536e+01 0 0 0
+448 0 1 0.0000000000000000e+00 6.2005286427725776e+00 1.5104327610018975e+01 2.2727108371308379e+01 0 0 0
+450 0 1 0.0000000000000000e+00 1.0582577467236970e+01 1.4195880789103409e+01 2.1413724946810202e+01 0 0 0
+456 0 1 0.0000000000000000e+00 1.3241591378521690e+01 1.2690876147767694e+01 2.1457518144245022e+01 0 0 0
+472 0 1 0.0000000000000000e+00 1.4534736910424540e+01 1.5225625769112323e+01 2.1948047989518923e+01 0 0 0
+89 0 1 0.0000000000000000e+00 1.2312879405335334e+01 1.6705598622308251e+01 2.0649749328595910e+01 0 0 -1
+58 0 1 0.0000000000000000e+00 1.9657319093246148e+01 1.2975169789355068e+01 2.0421699435382362e+01 0 0 -1
+449 0 1 0.0000000000000000e+00 1.6455385952377476e+01 1.2946249012621546e+01 2.1293383177600052e+01 0 0 0
+473 0 1 0.0000000000000000e+00 1.7650024572739479e+01 1.5389896557847646e+01 2.0243880382621803e+01 0 0 0
+490 0 1 0.0000000000000000e+00 1.9480916904321020e+01 1.5589325810164041e+01 2.2684044249473157e+01 0 0 0
+497 0 1 0.0000000000000000e+00 2.1987416048537085e+01 1.3444067555208033e+01 2.2215111057049203e+01 0 0 0
+46 0 1 0.0000000000000000e+00 2.3768671631898627e+01 1.8427954551914954e+01 2.0903345006433948e+01 -1 0 -1
+465 0 1 0.0000000000000000e+00 4.7465905247274884e+00 1.8096626300714302e+01 2.1294947091202054e+01 0 0 0
+468 0 1 0.0000000000000000e+00 7.6216820082272561e+00 1.9416170093188121e+01 2.0176172186036091e+01 0 0 0
+54 0 1 0.0000000000000000e+00 8.5744883057274688e+00 1.6560822090993348e+01 2.1671701761101893e+01 0 0 -1
+72 0 1 0.0000000000000000e+00 1.0883954804618824e+01 1.7057778512027234e+01 2.3557015686385721e+01 0 0 -1
+92 0 1 0.0000000000000000e+00 1.0462676781462473e+01 1.9055711140833715e+01 2.1375652216541312e+01 0 0 -1
+500 0 1 0.0000000000000000e+00 1.3650962852505497e+01 1.8209586261633163e+01 2.2917533201561071e+01 0 0 0
+74 0 1 0.0000000000000000e+00 1.5725866695735183e+01 1.9919360779876740e+01 2.1159742471775754e+01 0 0 -1
+496 0 1 0.0000000000000000e+00 1.6512697914621157e+01 1.7327155203786525e+01 2.2648664191490397e+01 0 0 0
+476 0 1 0.0000000000000000e+00 1.8434667827117419e+01 1.8364080085211526e+01 2.0956993439684201e+01 0 0 0
+97 0 1 0.0000000000000000e+00 1.7715491346122707e+01 2.0205698125762584e+01 2.3536782687866513e+01 0 0 -1
+178 0 1 0.0000000000000000e+00 2.2917637362261104e+01 1.6045681324734392e+01 2.3190989680048961e+01 0 0 -1
+463 0 1 0.0000000000000000e+00 2.0674141597680411e+01 1.8458976610964079e+01 2.2939085166009800e+01 -1 0 0
+398 0 1 0.0000000000000000e+00 2.1286973899178939e+01 1.9205071981345263e+01 1.9073299868079587e+01 0 0 0
+478 0 1 0.0000000000000000e+00 2.2713231310869926e+01 2.0675387907959625e+01 2.2964626894235554e+01 0 0 0
+98 0 1 0.0000000000000000e+00 2.1439088117439011e+00 2.2931226994553036e+01 2.3579871320985017e+01 1 0 -1
+7 0 1 0.0000000000000000e+00 2.7804666843328820e+00 2.1000328085003776e+01 2.1536173038537356e+01 0 -1 -1
+5 0 1 0.0000000000000000e+00 4.7584391269634816e+00 2.3696776010742269e+01 2.1929822222435412e+01 0 -1 -1
+485 0 1 0.0000000000000000e+00 5.3727992886362816e+00 2.0644479285095610e+01 2.2912870370138517e+01 0 0 0
+405 0 1 0.0000000000000000e+00 8.3981511745004269e+00 2.1715362503755891e+01 2.2619438129909422e+01 0 -1 0
+13 0 1 0.0000000000000000e+00 1.1074037358767173e+01 2.0333099622796020e+01 1.3549264442646327e+00 0 -1 0
+10 0 1 0.0000000000000000e+00 1.1177599382719656e+01 2.3239162118732771e+01 1.0795755398772720e+00 0 -1 0
+395 0 1 0.0000000000000000e+00 1.4486743896723237e+01 2.3834413735373332e+01 2.0619867590174490e+01 0 0 0
+491 0 1 0.0000000000000000e+00 1.2593500763553267e+01 2.1305180331640248e+01 2.1796165974630469e+01 0 0 0
+16 0 1 0.0000000000000000e+00 1.5296886860652551e+01 2.2238668850209269e+01 2.3115434091094315e+01 0 -1 -1
+1 0 1 0.0000000000000000e+00 1.8022462641459430e+01 2.3172308173224259e+01 2.3849102383659172e+01 -1 -1 -1
+499 0 1 0.0000000000000000e+00 1.7290085948698763e+01 2.2796724156141085e+01 2.0779054213305582e+01 0 0 0
+417 0 1 0.0000000000000000e+00 1.9957492118058898e+01 2.1332876800861690e+01 2.1810327245661739e+01 0 -1 0
+481 0 1 0.0000000000000000e+00 2.2630083025075386e+01 2.3129434753903855e+01 2.1561481304569842e+01 -1 0 0
+
+Velocities
+
+412 -8.2993437060262937e-04 3.7920684874536526e-04 -1.0759085167639443e-03
+82 3.1803020979116314e-03 -1.9823093586736422e-03 6.8079245584735210e-04
+19 -7.2557797977171638e-04 -2.2764740771836346e-03 1.3874217307239989e-03
+108 -1.6024227945072855e-03 3.0002074438718104e-03 -7.0378536474888004e-04
+427 -7.0572552334065806e-04 1.3099787812956821e-03 1.9491910777951558e-03
+103 -6.1153375802225384e-04 1.1799862555906093e-03 1.5073831229785479e-03
+406 -1.6970399074095488e-03 2.1294329037986641e-03 -3.8305646130956764e-04
+206 -2.6871188690191753e-03 2.0976196464274842e-05 -2.3544322206262938e-03
+111 9.2017742746628231e-04 -2.6593659663344473e-03 -1.7756193021220825e-03
+432 -3.0009820217164460e-04 1.3805135188676891e-03 -2.6142494822946746e-03
+110 3.4768116613013603e-03 3.6221844329191351e-03 -1.3387100817108925e-03
+134 2.0065287499566055e-03 1.0182335076681730e-03 -1.3393999943140964e-03
+484 -2.3261920462973422e-03 1.1192540888254917e-03 2.5928589835379785e-03
+115 -1.6015215091127551e-03 -6.9006662746476486e-04 -1.3693717634426839e-03
+107 -5.8352814148299710e-03 -6.9037973500155145e-04 -3.4137272481615089e-04
+2 7.9472460497422381e-05 2.3068193296341003e-03 2.0452081789736230e-03
+200 -2.0345053562785985e-03 -7.4350195637161714e-04 9.1161390639206484e-04
+8 2.3586533117126679e-04 -1.7295285601196001e-03 -2.0285398552365610e-03
+27 3.6708113269664829e-03 -1.6572654025598017e-03 -1.8514459561805490e-03
+429 -4.5083249576370835e-03 4.1929759873624954e-03 -1.7440475885339389e-03
+26 9.5090679802911659e-04 -8.4031659332893744e-04 1.8742837800674085e-03
+12 1.7518221202565680e-03 6.2321717447139991e-04 -3.1902160151362906e-04
+137 -4.2442040441376919e-04 -6.7500783777652126e-04 3.8687127488556544e-03
+139 -1.4591024768980496e-03 1.3590092859525795e-03 -4.2225591509151474e-03
+35 -2.9177100896972362e-03 -8.4454316887805966e-04 1.0330547233847955e-03
+120 3.7491828846165611e-04 -2.8290181287593699e-03 -3.2808323328536865e-03
+57 2.3314809747641713e-04 3.1694396658339579e-03 4.5358982951323162e-03
+22 -1.9168129539929907e-03 -1.0896609403984064e-03 1.4726722760473359e-04
+39 1.7574301067666666e-03 2.9982739596501168e-03 3.7342665722169543e-03
+51 -1.6109409897753147e-04 -7.8525917758135182e-04 5.4862989485533428e-04
+41 2.3608647690139318e-03 -5.6465550392208240e-04 -9.2537209732324217e-04
+121 -1.4619062685869090e-03 -6.2788897844590313e-04 -1.9752751397566237e-04
+45 -1.4360964227292177e-03 -3.6059935976859758e-04 1.1342852055569383e-03
+232 2.9024838676716463e-04 2.1977761210303457e-03 -3.3271755474959335e-03
+226 -7.0343874750663159e-04 9.1922097709860450e-04 1.8079439956098149e-03
+135 -1.0218022505887802e-03 2.5892815016419573e-03 -6.2354759561986637e-04
+33 7.8728889786678377e-04 2.4487155023207759e-03 -3.0535856979919378e-03
+113 2.8675843288420229e-03 -1.0048063704912896e-03 1.4483277505767914e-03
+44 1.8094329063950746e-03 -1.9015034656367309e-03 -1.5062714981771504e-03
+443 1.1876946923459720e-03 -4.4685639955108093e-03 2.3657199703038061e-03
+61 3.6990479268504239e-04 1.4005426344121162e-03 -2.7025902870374857e-03
+23 -1.7908967914159310e-03 2.1813372511486482e-04 -2.0499047693308531e-04
+43 3.1810971070483762e-03 1.4896912643664840e-03 -9.7207177753718462e-04
+447 -4.4760055349576952e-03 -1.5023722112117448e-03 -1.4947262684942176e-04
+83 -4.6992012070594993e-04 -1.2935246740346538e-04 -1.4571120268666226e-03
+142 2.0748809852847317e-03 -2.9181576187960294e-03 1.4087387031204402e-03
+149 2.9514154094119972e-04 2.3871455181829460e-03 1.1292509714104272e-03
+156 5.0010668250524007e-03 1.9666290900182713e-04 1.2769344300527163e-03
+36 -8.5643270990555054e-04 9.2476338915865885e-04 -4.4433686565128758e-03
+130 -2.0477155623969219e-03 -2.3197537843232868e-03 -2.0448075199249369e-03
+293 2.7784521648342576e-03 3.4992972790087121e-03 2.7666191027583167e-03
+62 2.5109216916877016e-03 -3.6067380593636632e-03 2.0971145269665039e-04
+78 -1.1280640893014783e-03 3.1381324719803431e-05 1.8228855914922224e-04
+157 1.8894020895297487e-03 -1.1099973176924970e-03 -1.1175270533803677e-03
+75 1.4488910525638880e-03 -6.5380944766096612e-04 5.8568169898514072e-04
+467 3.0842718694357678e-04 3.6344154877561764e-03 1.9115431125237680e-03
+65 1.8900994989018902e-03 -2.0610199478998358e-03 2.4347354445969503e-03
+298 -4.5721241233174443e-03 1.9443251348900698e-04 2.2265544277989885e-03
+165 1.6638234096323606e-03 -1.8475506872233350e-03 -6.3145775514889349e-04
+69 -2.2572299212916184e-03 6.8468872106403544e-04 -3.1988955440147727e-03
+469 -3.3502210773338295e-03 -1.7282737719941984e-03 1.5028680812149754e-03
+487 -5.2642869843524845e-04 -9.3377569223734077e-04 5.8355398222607934e-04
+66 -9.7274240417888076e-04 1.7859743273262001e-03 -1.4819865270720774e-03
+56 2.5868908300990894e-03 -1.5585660061355297e-03 -3.1039901330690033e-03
+480 2.4322277944757316e-03 -8.7050542358851598e-04 -1.3739033282466982e-03
+76 4.6845491998168365e-04 1.2617963709907736e-03 6.4727511627460507e-04
+93 -9.0076479090080716e-04 4.5363216457698684e-03 6.2252776170537997e-04
+81 -1.5719917060616920e-03 -5.4361948962572426e-04 -3.0223163445733253e-03
+161 7.3739260988248199e-04 -1.1529074600715234e-04 2.3142359145928112e-03
+3 -7.3237635063819325e-04 -4.5378221956443362e-03 -2.4373877441979464e-03
+154 1.6118278093944888e-04 1.4809544813092037e-03 -1.4319687023777014e-03
+223 -1.5569372870645722e-03 9.8453994892600287e-04 1.8395453192246985e-03
+102 1.7878235823334417e-03 3.5350132373707607e-03 -3.2227144525744829e-03
+67 -1.1420897068220685e-03 -3.1485718770896810e-03 1.1722312514940150e-03
+169 -4.6717228280762857e-04 2.4654028384459561e-03 -5.5325778551508064e-03
+191 -5.1564749140435942e-04 -1.0057994008575816e-03 -4.2809370328352370e-04
+96 -3.5289191131275977e-04 1.8727472042895060e-03 2.2036777715595517e-03
+174 3.2129574024682356e-03 -2.1661664054129274e-03 -1.4454508011482901e-03
+420 -2.7930179016611386e-03 -9.7570821481161906e-05 -1.6404166480224786e-03
+197 -1.8022074923000310e-04 -1.1028312961090239e-03 1.5719032981802786e-03
+64 1.4894363880554780e-03 2.5267747801673663e-03 1.0771223280951841e-04
+407 -1.2834150015594425e-03 -8.3512306735303136e-04 -1.8977419956224457e-03
+186 3.6021379282666485e-03 4.1520179399898291e-04 -1.7567620378212247e-03
+185 1.2545329232935588e-03 -8.2710799483453061e-04 2.5986954689668192e-03
+105 -1.2782189845668669e-03 2.6300957349582690e-03 -3.8739167269906144e-04
+112 -1.0589726498783395e-03 4.0596847520183287e-03 8.8774549873903792e-04
+355 -5.2131463719902742e-04 -2.3605088332288890e-03 -7.7019242293888547e-04
+290 4.9837423605136736e-04 1.8141001049832494e-03 -3.7653004556760781e-03
+214 -8.9160143491278743e-04 -3.0762997834736655e-03 1.2445861403945382e-03
+334 2.8327385015196578e-03 -1.9451987942707529e-03 7.9156629794941661e-04
+119 9.5801619285636229e-04 -1.9433194443985850e-03 9.1746530012019054e-04
+17 8.5415287792292040e-04 1.8462476163839873e-03 8.2052550438962133e-04
+18 -1.0364172079008421e-03 -2.5671225694554548e-03 -1.0148412713937894e-03
+28 -1.3856179367043755e-03 -2.4771078884203877e-03 -5.6392961411858640e-04
+129 2.2782368835160736e-03 2.4480822051335168e-03 -4.1541941135668382e-03
+25 -1.5315453796389698e-03 7.6041995077182035e-04 2.4727424759295857e-03
+126 -2.1191287985416847e-03 4.0426042931599789e-03 2.1965105261038502e-03
+11 -1.8641475485088660e-03 5.6678994366763285e-03 1.2932454422647634e-03
+127 5.4376268437355472e-04 3.6168720055069570e-04 1.0409256769519685e-03
+204 2.2922389611020912e-04 -4.7150191486859169e-03 1.4917285200544085e-03
+230 -1.4863114611979036e-03 -1.5013268115914903e-03 -8.1819343907587108e-04
+118 -4.6742989667255168e-03 -5.9832334799261068e-05 -1.7040140581419021e-03
+106 -5.9363908840596362e-04 -2.4869311088383810e-03 -1.2945619663593433e-03
+240 -3.2076085518999793e-04 4.5978179175648363e-03 -2.2939456141390436e-04
+136 -1.2319432691246476e-03 3.9706962984606973e-04 -3.4368747497592200e-04
+151 -3.0825802128600218e-03 -2.1687948331874248e-03 1.7107940115494318e-03
+233 -2.1315531811839732e-03 1.6901448024780226e-03 5.0265210855722335e-04
+194 -2.3819461575846470e-03 1.2057138801867396e-03 1.6695700126110314e-03
+20 -1.9572414503302099e-03 3.9262086166393784e-04 -3.5374484180436872e-03
+37 -7.3807997504927406e-04 -8.5858115315696692e-05 -1.6041462786745427e-03
+42 8.0057912600652384e-04 4.6048831486381427e-04 -3.6238819806797603e-03
+163 2.9431178241892614e-03 -4.3535581708518289e-04 -1.4298941036787274e-03
+132 -2.5472741695273634e-04 -1.6488615301662828e-04 -9.0776885906943396e-04
+38 9.0084445080381906e-05 2.3226371150010697e-03 -5.3091810248211732e-04
+143 5.9577859285946301e-05 -2.8143255860431891e-03 2.3845835821352399e-04
+47 3.4093421145501989e-03 -5.2394569108049210e-03 -5.7886795878047651e-04
+326 -3.1133433513675870e-04 4.2357066277746058e-04 -1.8623258733145567e-03
+131 -2.2507182618722700e-03 1.8180846287512932e-03 -6.6801739712428216e-04
+171 -2.3581951120997197e-03 2.7438036826591739e-03 -1.5984243237737903e-03
+24 -4.1555456013176898e-04 1.6262158374232339e-03 1.7015495084286799e-03
+60 -2.9393594478887062e-04 -1.8208629421813812e-03 3.3549818868120434e-03
+250 1.5535876258167356e-03 -8.5222537282430178e-04 7.7128469556752481e-04
+238 6.1880818318008524e-04 -2.3098180881480543e-03 5.4588182445761504e-04
+140 -3.3974869609183838e-03 5.7876314742005251e-05 -3.4819230285924180e-03
+79 -7.0293525734060468e-04 2.2640055297953009e-03 1.9007379520620613e-03
+99 -9.6643726074341157e-04 1.0487021681563610e-04 -1.2164823290052623e-03
+148 3.5198657414952679e-04 -1.9510802571119817e-03 2.3603939957969299e-03
+147 -1.2377133922940823e-03 -9.6580039805210013e-04 1.5054608680593745e-03
+146 1.2114720709295130e-03 -3.0978239392564929e-03 1.5431010086914365e-03
+170 -1.8861890140622101e-03 1.4650966282513296e-04 -1.8636302972266337e-03
+71 -8.4813486544530435e-04 8.9569161128881026e-04 -3.8754589408696678e-04
+73 4.6771983726917609e-04 -2.1382719546563173e-03 1.1876997658376643e-03
+234 1.4146964784409057e-04 1.6528555375761804e-03 1.1028275149759469e-04
+277 1.1809838772474386e-03 5.6561616799458603e-04 3.1989746061684174e-03
+183 -5.9458082346084675e-04 -2.8923932849858275e-03 5.2981567895319715e-04
+138 2.2652415880820564e-03 -1.0561183485145750e-03 -1.5956648332956915e-03
+158 -1.3887836961490912e-04 3.3296435723973953e-03 4.5995082080074190e-03
+166 -4.9682995623422446e-04 1.0653411482482245e-03 3.5462598100552899e-04
+48 9.8656702536440832e-04 -2.6593262474352984e-03 -2.1987119479726386e-04
+87 -1.5863963429711908e-04 1.8358396093779235e-03 1.6413804409879463e-03
+288 2.1926734037369753e-03 2.6171184243012299e-03 -5.9118695548092642e-04
+269 -1.2331097849189935e-03 -2.5527098635363757e-05 2.2663260488904849e-03
+70 -1.3858725006617308e-03 -3.1592083781596071e-03 -1.1692288944369854e-03
+94 2.6751394224318304e-03 1.1163150246045531e-03 2.8608418829640572e-03
+189 -2.6392930371792363e-03 3.0331187863963062e-03 1.2195156995343320e-04
+471 1.5174497733679440e-03 -2.4812176555347666e-03 -1.5383801979462421e-03
+14 5.8877930110629148e-04 -3.3264525457166205e-03 -9.4599781176590598e-04
+91 -1.8962515412514901e-03 -3.7147433598244324e-03 2.0936370156547993e-03
+201 5.1142350011941474e-04 2.6418484257221680e-03 3.1052840648908213e-03
+162 1.9345520682104984e-03 1.6930933100660695e-04 -4.0173185990262910e-03
+475 1.0691060842638899e-03 -1.5210206889795816e-03 -5.8778934439565839e-04
+184 -2.6861668565781090e-03 -4.0588296472501319e-03 -2.2256565150274082e-03
+182 -2.4691168142758793e-03 -2.4490641612415851e-03 -7.3202243794233922e-04
+181 -2.2881693468085385e-03 -2.2582002637842775e-03 7.8121975296483414e-04
+282 1.2218813953190559e-03 4.8451409913849725e-05 3.3399864058483904e-04
+109 -2.0631553980315117e-04 1.5571081780196539e-03 -2.0759186165294203e-03
+286 1.7702452003224192e-03 4.6116395767172724e-04 -2.3906657853833137e-03
+193 -1.3114582553750600e-05 -1.6388559435091890e-03 -1.2616940890889025e-03
+235 2.9102287290085366e-03 1.9584417402291140e-04 -2.7709233854081858e-04
+95 8.3416301788352405e-04 6.0296330250470518e-04 8.2663992166929782e-05
+196 3.5297404239944285e-03 -4.6552481102418334e-04 -5.5592131143112353e-04
+381 -3.5542656434335543e-03 2.7565965619448887e-03 -2.9438347076628782e-03
+84 1.7216433827472484e-04 -1.7617381682696197e-03 -7.3805115824931934e-04
+190 -3.3012132421631991e-03 2.2398387008567039e-03 -1.7993842348296520e-03
+101 -1.1437549165149559e-04 1.1040795078407918e-03 5.5345696915260780e-04
+303 -2.1605494117069514e-03 -2.0584800225781287e-03 9.6840681467955537e-04
+353 1.1788643246138121e-03 3.5330314562298532e-03 7.6649053037339214e-05
+104 -5.1431331408902728e-03 -1.6501650616887512e-03 -2.4927618076796658e-03
+187 -4.8636085257643610e-03 6.4317691675460286e-04 5.8570209404852137e-04
+225 1.6230912466426270e-03 -2.0718638614252534e-03 2.0514523632636349e-03
+211 1.2138193135262107e-03 4.3563573483216458e-03 -5.9046622413908836e-04
+433 -3.5351739083961343e-03 1.0932706169523689e-03 5.9385013654590548e-04
+373 2.8417156878209671e-03 3.8413462944231276e-03 -1.9739282246953893e-03
+216 -5.6040442936728730e-04 -1.8302646488600018e-03 1.6148323214884252e-04
+332 3.1766647726021223e-04 -2.3491543141603839e-03 2.6094161068975765e-03
+340 3.0719076721168891e-03 -4.0808748073601839e-03 4.9511988857860103e-04
+336 -2.4491990707654768e-03 -8.3949907939281313e-04 -3.1181352508127484e-03
+124 2.9015274852930745e-04 1.8034036196020930e-03 1.6170647804504695e-03
+117 3.6975744675882814e-03 -1.4872435353224546e-03 -1.4512020221736307e-03
+318 9.7654545289737032e-04 2.0050292787634097e-03 7.9469380096134691e-04
+224 -7.1554761583301845e-04 3.0771162752672894e-04 -2.9049141304457304e-03
+237 1.5391618588270946e-03 -1.7143443377944738e-03 -2.8262333014019573e-03
+321 6.2496760307485062e-04 -1.6149626113298207e-03 1.1881079586811942e-03
+188 3.7252231099048632e-05 -9.4438280318514650e-05 4.9670469015675759e-03
+227 -3.0749166426346851e-03 -6.1950067717914190e-04 1.6413524072879460e-03
+246 -2.6492607326421818e-03 -5.2604180463700035e-04 -2.2817460958628866e-04
+330 1.0366418679272783e-03 2.9303592224523274e-04 2.9683926879528846e-03
+231 -2.0886525414847154e-03 -2.0444166548649455e-03 3.1996082728740129e-03
+458 -2.5169452106698375e-03 -4.8172728947809725e-04 5.6681417431628256e-04
+221 -6.5344208610233084e-04 -8.3759318784326880e-04 -2.4089925857150225e-03
+241 8.4879729342275450e-04 -2.2412141650179945e-03 1.8697006081848943e-03
+243 -1.4663405777219083e-03 -1.0017514316277092e-03 -2.1146635726139131e-04
+168 -1.9098115589327189e-03 3.3791493605940161e-03 -1.1829169546079782e-05
+145 -1.0189031795859696e-03 -9.7491362066921372e-04 2.0852257319671774e-03
+144 -1.2275031680936892e-04 -8.7430978046421678e-04 7.7454057720537659e-04
+248 5.5257010720878410e-03 3.6405435623959674e-04 1.3095222810161828e-03
+172 -9.6864238233375615e-04 -1.8940406998101229e-03 -2.3304513144872087e-03
+252 -2.1983666092273329e-03 1.7776144827402489e-03 7.5991021170535391e-04
+251 3.8497431783983656e-03 -1.6531432578078258e-03 4.1318342331662017e-03
+229 7.5348021899645818e-04 1.0706434262664805e-03 -6.4986544727794354e-04
+150 1.8476137630647147e-04 2.6005797784149519e-03 -1.2322107120165385e-03
+179 -3.7113933736102169e-03 5.4201909089506082e-04 2.1735713119522982e-03
+173 3.9610908551667736e-04 1.6955458528315138e-04 -2.0258746560651831e-03
+4 3.1804666241486498e-04 -3.1853202496565883e-04 2.9860255503768598e-04
+40 5.7490090839612984e-04 9.5233558284349310e-04 -1.6721831403796253e-04
+261 2.8421687490853328e-03 -5.2985737058846422e-04 2.5525007318668832e-03
+159 5.1654405770946710e-03 -8.9201856629436411e-04 -4.8552905196071905e-04
+264 -6.8534402841657655e-04 -3.0466639879714232e-03 2.3859726415651652e-03
+283 -1.0313743135994130e-03 1.5515673588846991e-03 -2.1262781898167107e-06
+128 2.7959898878628883e-03 6.2837208751516979e-04 4.9191060827628158e-04
+263 1.6636266937876815e-03 -2.7198595063259241e-03 -8.2395098571283010e-04
+285 1.0715762559011283e-03 1.9184594491374715e-03 6.3782525496909788e-04
+249 1.9766947063602383e-03 2.9555916717200143e-03 8.4264516949920565e-05
+366 3.3669851920838908e-03 -5.2528155663818341e-04 1.4643523353425746e-03
+272 1.8710986924993223e-03 -9.9809512495729441e-05 1.2092005618710459e-03
+378 2.6338008502241831e-03 -5.4626817268568452e-03 2.6292180818710130e-03
+175 2.0206357648250971e-03 -3.6272939387355799e-03 1.4145943406244183e-03
+274 1.6671307389056901e-03 -1.9443469732955611e-03 -1.0869137388473740e-03
+273 -1.8309496014826448e-03 -2.5932755664587631e-03 -1.4068361695450146e-03
+141 1.2377674499545908e-03 1.7597447524483564e-04 -2.1517422175783545e-03
+155 -5.4756041370855049e-04 2.5388338329237372e-03 -1.3069245781775563e-03
+164 5.7344713100858586e-04 -3.8471294379070920e-03 -9.3085027095162365e-04
+301 -2.9924562776133586e-03 1.3231725843494753e-03 -9.3550534226418259e-04
+266 -1.0364192090165062e-03 1.7399714886804538e-03 -1.7196888675706727e-03
+392 -1.8575547013249566e-03 -1.0307992756770636e-03 1.2368795237042525e-03
+152 -2.1617281848396877e-03 -5.3299604006865195e-04 7.4837949059960063e-04
+393 1.5831144391656735e-03 -1.8049855294419645e-03 1.0543034060000228e-03
+289 -3.7048349014874419e-04 1.3666475219923991e-03 1.1906698577060276e-03
+292 -2.1587022107255535e-03 -6.2058669608351560e-04 2.5354441392561066e-03
+176 -4.2363916611680178e-03 2.6034220111825642e-03 -9.6263757952541021e-04
+294 5.3069249340941557e-04 -2.6609511629714622e-04 1.7133196658027055e-03
+199 2.8879051816774458e-04 9.8766231635536578e-04 1.2890362994147047e-03
+217 1.3028763324968923e-03 3.3000854138794051e-03 1.0884754730549999e-03
+198 1.1809303101019734e-03 -1.1991556538227424e-03 3.8578167879612232e-03
+80 1.7284943165693626e-03 -8.1052561502505658e-04 -1.2860441389631815e-03
+180 1.0671813144720722e-03 -6.0152705816884115e-03 -4.6142848365478151e-03
+281 -9.9235438884782284e-04 -6.4974755074921750e-04 1.1274824426255878e-03
+258 -3.8061582147469989e-03 3.2415972833540162e-04 3.1734885225437727e-04
+218 4.6557587159313672e-04 7.3747424071847207e-04 2.1646942904383722e-04
+68 -2.2452815149067405e-03 2.3101911763640380e-03 1.3563434270069293e-03
+125 1.0100162774145788e-03 -2.4019396716821757e-03 2.6652670130237460e-03
+270 5.7051576227104073e-04 -2.4541684103423262e-03 1.5115371367491945e-03
+307 -1.5386888755101347e-03 -4.7401114455257291e-04 -1.6090023839518475e-03
+268 -6.6560406023524461e-04 8.7693185656411579e-05 1.9191246877678169e-04
+291 -2.7981348988683809e-04 4.6402231932292365e-04 -4.8234166761695349e-03
+192 -1.0045793792432037e-03 -1.8588334349829833e-03 -5.3924044933660543e-04
+209 9.7531199296030792e-04 -3.2078727251059715e-04 1.4333855928901900e-03
+314 -1.4066711284865075e-04 1.4074916259947177e-03 -2.3346407079588168e-03
+100 -1.7175465069520666e-03 4.5292781114357594e-03 9.6513727737270155e-04
+337 1.2791621173303281e-03 2.1503078640295521e-03 7.1674032682269803e-04
+382 -8.1341977501922660e-05 3.3938959188129343e-04 3.5316342626269086e-03
+322 4.4287009326187223e-04 3.8095145071791712e-04 -3.0734901022683538e-03
+202 -1.6280061265440257e-03 -3.9451153509388439e-03 6.7200203416967088e-04
+401 -1.9954118356800389e-03 -1.6930293268241688e-03 -3.3318915181569474e-04
+305 1.4182952062231100e-03 -4.0416153373069568e-03 1.0977118202357538e-03
+331 -6.8777743965285111e-04 4.0267300894677952e-03 2.8347170043000494e-04
+356 2.2029929362972567e-03 1.2327780846167194e-03 -2.1194227754926589e-04
+313 -9.4379172087396971e-05 2.2185272874509689e-03 -9.7254888178673106e-05
+410 1.0853574809967486e-03 -1.8284630601368083e-03 1.7387250725243121e-03
+296 2.4525218112032396e-03 -5.7483957847173520e-04 3.0532217915417268e-03
+335 -7.6145456078669751e-06 1.7998440824821178e-03 1.6267044437767317e-06
+311 -3.3959461860260322e-03 3.0648280963735516e-04 2.0565147268198016e-03
+324 6.1145298173894314e-04 1.0411666360882780e-03 -2.2058694669366283e-03
+323 1.9018325284838936e-03 -9.0035175600398454e-05 -2.6641105001257914e-03
+222 -1.5043582848716099e-04 9.6832223035822433e-04 7.6194087381769676e-05
+488 7.0236571875387536e-04 -2.1914540462126013e-03 -9.3162629197667560e-05
+228 1.6655844894100963e-03 1.1244317903396693e-03 -3.9635851739434061e-03
+122 1.7175143181649879e-03 2.5381082011771724e-03 2.8465066796911965e-03
+265 1.5673887881346000e-03 1.2446764581805876e-03 -1.0849212823288135e-03
+492 1.5250305642370752e-03 2.0664585840967338e-03 1.2675596919802806e-04
+208 -3.5085889921210246e-03 2.4622280020313130e-03 6.0451315615530439e-04
+167 2.3696156738065629e-03 7.9247134355341748e-04 8.7608437682443912e-04
+357 7.2021452899959245e-04 2.7174814324945457e-03 2.3257648079905344e-03
+455 3.6294242004868082e-03 1.5921278401520667e-03 -8.0216619151688405e-04
+333 2.3940622660821079e-03 7.4091825818836329e-04 4.6599554121808296e-04
+379 -1.0827769121782690e-03 1.4371191344740731e-03 -1.7758716938864228e-03
+212 3.8920097575193225e-03 -1.0682450287672205e-04 -5.7123020046041166e-04
+304 1.3380245441767266e-03 3.1806383629438541e-04 -2.1558621751847367e-03
+242 -2.9754738900152522e-03 2.0504324430379254e-03 -7.9253465276276627e-04
+325 -1.4661730716124270e-03 2.0567349262821766e-03 5.5471912101960163e-04
+247 3.6687056936876258e-04 -5.5948282790191806e-04 -2.6427728950553162e-03
+245 1.0585137546471086e-03 7.0210568856324501e-04 -2.3974574078227894e-03
+306 -2.7234819824709247e-03 -2.8943622239602825e-04 3.3698139529805939e-03
+260 -1.4810989417119876e-03 -2.4068674304652902e-03 -1.1286372340802726e-03
+271 -1.5681005031572369e-04 1.5413136730642203e-03 1.7885342439106059e-03
+253 -9.8848983722144663e-04 1.5394409406956736e-04 -1.2887427189892371e-03
+389 1.2000095205950676e-03 -1.1534867207681463e-03 7.0660527967103591e-04
+349 2.0918604117084196e-03 1.5993899988266669e-03 6.7705716368390270e-04
+123 1.2926922175879444e-03 -2.0077280987216054e-04 3.9591094448226801e-03
+236 8.7044649849365107e-04 1.8286706293933772e-03 -1.8377757844613076e-03
+244 -5.7602170603955226e-04 1.0490285011564590e-03 3.0382138195395952e-03
+344 -1.8357736956277842e-04 -2.0372848448535000e-03 2.8732761968551885e-03
+358 1.6941285793051796e-03 -1.1867757088699973e-04 -1.0594836495678960e-03
+267 5.5637310360227051e-04 -2.2469167432137933e-03 -4.7361980932445082e-04
+364 5.4713585395920362e-04 -2.1299855494185667e-03 6.6472063097120090e-04
+365 1.2235496015822181e-03 1.3254064422154770e-03 -2.1923908944913822e-03
+376 -1.0290812215444087e-03 1.3232422830826633e-03 8.0693279920010280e-04
+177 -3.1667139750746561e-04 -1.0185149767735489e-03 1.1499496475523823e-03
+275 -1.6143116737547759e-03 3.9919182362189156e-03 9.6750172540824872e-04
+256 2.4709395827424165e-03 -1.7463234647420631e-03 2.1826492828756531e-03
+257 2.3094013346577472e-03 -1.1803860662907410e-03 -5.9952078789988832e-04
+160 1.1226001312084084e-04 -2.4582650672028448e-04 5.7201782941169749e-04
+377 2.3501907190604551e-03 -2.0716771369233414e-04 -8.9491585680630216e-04
+220 3.7655690333030394e-03 5.7771144041725087e-03 -4.3822726533569748e-03
+399 1.4303452786706883e-03 1.7056590594489093e-03 1.4893779526982548e-03
+385 -3.1982017430717596e-04 -5.4475936628632102e-03 1.4619384093702914e-03
+203 -7.4638942259412254e-04 -1.8059429851393553e-03 6.0249153036003623e-03
+262 2.0092930159346734e-03 3.2568842148671230e-03 2.3614303873887499e-03
+368 -3.4640763563603752e-03 1.8487413031748258e-03 5.6617825043750100e-04
+370 -2.0584644977147794e-03 -3.4554050068134278e-03 2.5727891648827258e-03
+482 5.8037968954447307e-04 6.4616049891764895e-04 -1.3372861107403958e-03
+295 -1.0602300034978436e-03 -2.3012665525235206e-03 -1.2773634186253954e-04
+486 -8.5479313079969525e-04 -5.9262792824708215e-04 6.9768434310316313e-04
+462 1.1776097469637847e-03 -2.4876933856252561e-03 9.8348265535187491e-04
+493 -1.8857510772139747e-04 1.9435541056283814e-03 -2.8065888054207865e-03
+278 -1.0126989108534667e-03 -1.6882614961662105e-04 -1.6629026840489793e-04
+276 -5.0215846108199208e-04 9.0121306475249080e-04 4.0212402511279033e-04
+397 2.6276185926145152e-03 -1.6700602984945528e-03 -1.4527060322601444e-04
+362 -1.1431202814231226e-04 -1.2293848824697865e-03 2.7839243805617996e-03
+284 2.4467277596116437e-03 -1.6587648013625736e-03 -2.9756827042994673e-04
+386 -2.2987727164812285e-04 1.6351967918346363e-03 -7.4749916210178240e-04
+388 -1.0527427961917117e-03 -2.8181998288677461e-03 3.2450087720132729e-03
+470 1.0012719054433375e-03 8.3417495983255472e-04 -1.8108477138593538e-03
+210 -1.1338454469392329e-04 3.9101684246411672e-03 1.3998227971322801e-03
+387 3.3430754354719369e-04 1.0615065577343765e-03 -4.6427374704773759e-03
+205 -1.0373739158452261e-03 1.1481425901764663e-03 1.9204340418485641e-03
+213 -2.1803268530278383e-03 1.7030137466186206e-03 -9.5754673276939896e-04
+390 -3.3350094395839750e-03 5.5539014448013088e-04 1.7365767807529160e-03
+299 6.2416383472621594e-04 -3.4652763511321865e-03 -4.0072097481172264e-03
+239 -1.1710781794756272e-03 -1.9852453018797968e-03 3.1782483392487926e-04
+195 -2.1083507144877655e-03 -3.4854053379510490e-05 1.9884243440100747e-03
+394 -3.3374893690176762e-04 -4.2329632283860110e-04 -2.0946001663825339e-03
+300 2.6225122474353266e-03 -4.3759288309176405e-03 -1.8688000540668648e-03
+219 -4.4770121788591383e-03 1.3327590297463354e-04 -2.2975197200800546e-03
+483 -6.1268374258061445e-04 2.4153415799513887e-03 8.1851721156164813e-04
+421 1.8883652363418924e-03 6.5822800945698453e-04 -5.5398117242759027e-04
+400 -1.0875580859761249e-04 -5.1040452577182799e-04 -2.3156940010383587e-03
+391 3.1223999028522440e-03 2.0409013959533265e-03 1.6402321133564927e-03
+431 5.3485407984580156e-03 -6.0602426643935846e-04 1.7230594112612946e-03
+90 -3.3815932364422907e-03 -1.8173240495760984e-03 -1.7333344953480560e-03
+316 -2.2554877924252240e-03 -3.2529704927903859e-04 -1.0812889513819120e-03
+414 -5.4859650510729653e-04 2.4165841994214935e-03 -6.1707011418265752e-04
+438 -8.9892676291358363e-04 5.4780736405081085e-04 9.2290927979510318e-04
+419 5.9273571685588200e-03 9.3871109185123422e-05 -1.9799267175806681e-05
+320 -9.6285395553363502e-04 3.0514739881874371e-03 4.1483919750891730e-03
+441 -1.2837798848308374e-03 3.3953050613934623e-03 1.2642054201527882e-03
+384 -2.2444458621247106e-04 9.8267526524231869e-04 -1.7410417497673051e-03
+308 6.6513929455200185e-04 -2.6452505234414087e-03 -2.7231057917146946e-03
+302 9.6614605484167729e-04 2.3222243068953012e-03 -2.2524960832731250e-03
+329 -2.7915311220495853e-05 5.2912491318426048e-04 1.8068719405171551e-03
+434 -1.7968551393862521e-03 4.0437272658517019e-04 3.6050873017622737e-04
+402 -2.6050017588597897e-03 -2.9380517889216725e-03 -2.0257318999879568e-03
+351 -4.2337893995444296e-03 6.0959802356690574e-04 -2.6633013065169003e-03
+375 4.1748111877792351e-04 1.0639919973652160e-03 -1.8223818537561208e-03
+338 -2.3301745929742526e-03 -1.7010383914706319e-03 -9.7942443222314682e-04
+374 -5.6103361054887344e-05 1.8429514730233137e-03 1.7186673112487797e-03
+315 -1.1848952327715783e-03 1.7248494765111054e-05 8.5697199205783626e-04
+360 -1.9671448969801352e-03 -5.3291846213355792e-03 -7.5757038870966596e-04
+6 5.2476920321571586e-04 -1.3316608907506064e-03 -8.6293363631373757e-04
+437 -2.1443541918461152e-04 9.5068103693344999e-04 -2.8719495035905095e-03
+459 -3.2416430726239712e-05 -2.6613204268003334e-03 1.0758634788177361e-03
+343 -4.1331099067331298e-03 -9.9789759505297540e-04 1.7828790963531947e-04
+328 2.4505755662814803e-05 3.8147061379782883e-03 4.6133914933398574e-03
+327 2.4008338410267329e-03 -5.2159373297866246e-04 3.5897785141164864e-03
+350 1.3496429111610269e-03 -7.0867981779391682e-05 -1.3640983686385667e-03
+55 2.9850643052829161e-03 2.8023869131754793e-03 8.5198159534716558e-04
+451 4.5017077179117264e-03 8.0214837551130177e-04 2.3281157695472247e-04
+380 2.0244810405307249e-03 2.5625025197900677e-05 1.6165804740252713e-03
+254 4.8094558867192039e-03 -6.7093725580732652e-04 2.4622731948538337e-03
+255 -7.9067256550486382e-04 3.1879673867568669e-03 1.9656661485655840e-04
+442 -1.0136223590435792e-03 2.8633121019275400e-03 -2.6234992369472197e-03
+259 1.1904520408375595e-03 -1.1688433299746820e-03 1.0318214778257742e-03
+444 1.8883442665429803e-03 -1.5505813260501169e-03 -3.2266350252273279e-03
+342 7.2196918952210768e-04 -2.4510625022416770e-03 2.1578353767992310e-03
+446 2.8113527347099257e-03 1.4277895611523939e-03 -8.0211028624596815e-05
+341 9.7651559061159865e-04 -2.9471569040554037e-03 -1.6740954255529002e-03
+346 2.0478121560047759e-03 -1.0984534177705357e-04 1.6552432331567528e-03
+426 1.1026288002299943e-03 -3.9997869786842326e-03 5.9765415164335313e-04
+369 -4.3085214884811150e-03 1.5239523133506504e-03 2.5259830058241972e-04
+345 2.7704399615936906e-04 9.9759654845793088e-04 -1.6168345128055863e-03
+494 -8.9346821556119662e-04 1.3587770505358529e-03 3.9214037698881904e-04
+371 -7.2098534995409136e-04 1.4105637957985622e-05 -2.1372988442788673e-04
+474 1.9748237009879501e-03 4.8644739247133450e-04 8.6823943591334083e-04
+280 1.1523417292654530e-03 -9.4721603791458615e-04 1.2123637953557406e-03
+413 -3.4818419473125898e-03 -1.3714978033581731e-03 -2.5885621917254189e-04
+422 5.2234106221582728e-04 3.0194555160369340e-03 -3.8932994673240823e-04
+297 -5.3750700871805918e-03 8.3505170898867036e-04 -1.1258659183054234e-03
+479 -2.3222774614949033e-03 -4.9239739771967772e-04 -2.8021358470426577e-03
+348 1.5769851697130929e-03 -3.7866364620419450e-03 -1.0033554229960145e-04
+498 -5.8863090165232619e-04 -1.2090154951817287e-03 7.2571207588706011e-05
+361 2.5506766624942192e-03 -1.5141661866552773e-03 1.1899201738005073e-04
+367 -8.1989339894588265e-04 1.3023581108995104e-04 2.6262894562046292e-03
+50 -1.3197314981445619e-04 6.5803363401778319e-04 -2.0450851194350455e-03
+352 -3.6642323417388047e-03 8.8591672596429925e-04 -2.6727710825028158e-03
+207 7.8340368677923874e-04 -1.8918788830783887e-03 4.3356594278586716e-03
+372 -1.3373356554079860e-03 -4.8087468615088595e-04 8.0591308946142395e-04
+309 -1.1779938479583814e-04 4.7272517494192798e-04 -2.5467069615191845e-05
+489 -6.2269845144033724e-04 5.7257208114622562e-04 -1.0816408826194908e-03
+215 3.8740453603665422e-03 -1.6859124937945158e-03 3.1162823713692814e-04
+310 -2.6900459570056790e-03 -1.6542027909305422e-03 5.5002546062805869e-04
+464 -2.1544941105241253e-03 -1.7851272082243731e-03 -2.2738405689104210e-03
+317 3.8744738168322908e-03 2.9723156940975595e-03 -1.8947092294682387e-03
+396 -2.4708367226315511e-03 -2.4498163686478613e-04 -3.6203926724811910e-03
+363 1.8642477217684723e-03 3.8252213962618051e-04 -4.4813532659014922e-03
+85 1.6599632632345040e-03 1.1838463584991060e-03 1.8093656659757557e-03
+409 2.9823682083612150e-03 -1.3066434221477524e-03 2.3261039710234426e-04
+383 -1.3940705769916527e-03 -2.5782979124488654e-03 -2.2221556130935661e-04
+287 -2.3338542516832994e-03 -3.2043401689138475e-04 -2.5910868716313767e-03
+408 2.3235766507737310e-04 2.8444465597239070e-03 -7.6966571309892995e-04
+416 1.8849262499754892e-03 1.0242373161707197e-04 1.6088012685103541e-03
+411 4.8675456069347098e-04 7.0815062816057060e-04 -4.8935194920549519e-04
+430 -5.3585453804692559e-04 3.0968814550745151e-03 -9.4161920976324753e-05
+495 4.1652059273823063e-03 9.7607371677476524e-04 3.6173109612031804e-04
+15 1.6284610959060391e-03 3.1615020513944768e-03 -2.0282287983297664e-03
+418 1.5869299366358790e-03 8.2222589711756697e-04 -4.1049252160634169e-03
+319 3.4198051730270970e-04 -9.6998494157235742e-04 -1.3769240940754524e-03
+404 6.2360815849812998e-04 7.5001730908259520e-04 3.8514846857333638e-03
+88 2.6909810150635680e-05 5.9670854494812552e-04 4.0457385014947894e-03
+466 -3.5918570784670522e-04 1.5821653243903555e-03 -5.9003433651227336e-04
+9 -4.4386620083754717e-03 2.9017123473320503e-04 -4.2560226869914333e-03
+31 1.2139117643751823e-03 1.6621333351748342e-03 -6.2087445303649666e-04
+29 7.7157129385549341e-04 -2.3032005800148032e-03 -2.6768970918547115e-03
+116 -8.8385517291357583e-04 -2.7138557421622920e-03 1.4414501229615226e-03
+440 -1.4088234746763009e-03 1.5123744237380329e-03 -1.4266839486909569e-03
+415 -2.2331821831548153e-03 2.6852234084488192e-05 4.2889676699904518e-04
+435 -3.5115437915028218e-03 1.1590688148823954e-03 2.1413473731584694e-03
+114 9.6110026190493309e-05 1.5453815653669112e-03 -9.2234732356874754e-04
+354 -1.6758223422899622e-04 1.4784876592869446e-03 1.2592054461891948e-03
+34 2.7638027019302948e-03 1.8710978365427797e-03 -4.6317833622692636e-04
+439 -4.2677147874601413e-04 -9.5284643127722262e-04 -2.9454159809958959e-03
+359 -5.9542473627317849e-04 2.2441335691601970e-03 9.6447191273973812e-04
+403 -1.6124575067158653e-03 6.6073933492415229e-06 2.2368118360736908e-03
+423 2.1683532022178107e-03 -2.0815582417892825e-03 3.8254040566953790e-03
+30 -6.2139263171323122e-04 2.6933353247353287e-03 2.5979846834380273e-03
+425 2.6915903991464005e-04 -5.1752141809969761e-03 -1.5844767511868486e-03
+133 -2.0603183932415233e-03 2.9742681854297453e-03 1.0125402402136976e-04
+460 1.4916758794932667e-03 -9.5866520625988020e-04 -1.3804300950853213e-03
+477 -3.2595260686615625e-03 3.2244966604976885e-03 2.7675982133273510e-05
+53 1.0064954849672439e-03 -3.0061029711958018e-03 -1.1909505089391769e-03
+279 2.5097644429631963e-03 -1.8987131379082265e-03 2.1534171403089983e-03
+454 2.6624845389683154e-03 8.0633754486829075e-04 1.5567445698043830e-03
+86 -4.5475973082033063e-04 4.5686926113909969e-03 2.1315813602196228e-03
+339 -1.4826148741998804e-03 -9.0970731689759871e-04 -3.1513338190716631e-04
+21 -3.0397717093679820e-03 1.7489685678938392e-03 6.5584111490292701e-04
+424 4.5754210445647170e-04 -7.9344029728729891e-04 -1.4375963882125417e-04
+428 2.3209038517520847e-03 2.3948649748685180e-03 -1.4191063883562010e-03
+32 1.2685219206434505e-03 -1.7406081620211871e-03 -6.8994893705623015e-04
+49 4.4438305906737373e-04 -5.1743741639464136e-04 -1.7025464059926024e-04
+52 2.7623838076332010e-03 -2.7495498151145859e-04 -4.1794711813950298e-03
+312 -9.0043241947716926e-05 1.9142565853318653e-03 -1.0540950508103047e-03
+436 7.1637295041183946e-04 4.4359356199794942e-03 3.5323491995886821e-03
+453 -3.7236917221136431e-03 3.4342043759152176e-04 1.5511844046204998e-03
+153 3.0003111639965085e-03 -1.1732591814145744e-03 2.5190988415396795e-03
+77 -3.3519286756655690e-04 1.6625127107269672e-03 5.4560712104942800e-04
+59 2.5925348774254690e-04 -2.2594819509571748e-03 6.1474769036970840e-03
+457 -4.0745602414642753e-03 -3.2237031818974997e-03 -2.5499022482350759e-03
+445 1.3042939026560593e-03 4.0092703850876836e-03 2.4709789437699671e-03
+63 9.3985886500808546e-04 1.2561527051891158e-03 -3.8099816139451730e-03
+461 2.1046765105754164e-03 3.4977611700625143e-03 -2.5572181475640220e-04
+452 2.4316859870358946e-04 -2.4852743113368461e-03 -2.8225446224390191e-04
+347 -2.0162278519939942e-03 -2.3918159752620450e-04 3.8075728927829977e-03
+448 1.4778371225585877e-03 -7.5596346604065313e-05 6.7974417404953003e-04
+450 1.6526009426983338e-03 -1.5313150547308228e-03 -2.7504536012914246e-03
+456 3.8906640930924072e-04 1.2721171635567269e-03 -1.0437743405158906e-03
+472 1.3161037028212007e-03 -3.6366302996133812e-04 1.6297315761591273e-03
+89 3.8237284049835855e-03 -2.1438408474240148e-03 -1.8053832551305539e-04
+58 2.0633262162627437e-03 -1.9813043472985429e-03 1.7611635902571835e-03
+449 1.5081011263861957e-04 -2.7975987899400774e-03 2.1149733867427615e-04
+473 -4.0903980120451187e-03 2.8854729159154659e-03 -2.6816214154493724e-04
+490 -1.7000118857428902e-03 2.4587122006863057e-03 -8.6647812309339936e-04
+497 -3.0518411897025776e-04 3.6021640546924429e-04 8.8155209890060729e-04
+46 1.1759693645517078e-03 -1.7475588624162061e-03 1.4152930222825425e-03
+465 1.5982365504264655e-03 2.0492717972485394e-03 2.3607839882423274e-03
+468 5.7599807894716617e-04 -5.2836212629867355e-04 1.5118918929003396e-03
+54 -3.6456764358001507e-04 -3.3576336175927153e-03 1.3417946986619778e-03
+72 -7.3454068239885530e-04 -3.9573623220483847e-04 -1.5102474407635738e-03
+92 -8.6784020523483047e-04 -2.7324825303182257e-04 -3.2785583000877108e-04
+500 5.7475494971516905e-04 -1.8318592244835378e-03 -2.7287475177961208e-04
+74 -6.5790102585591736e-04 1.5416902504201649e-03 -3.1921990268296547e-04
+496 2.8276086384838263e-03 -5.3126279617589844e-04 -3.2787965369671939e-03
+476 2.1524719554374769e-03 -6.5704590545991655e-04 2.3543989458791690e-03
+97 -5.4032318502256703e-04 1.0199204948965880e-03 5.1338979520653913e-04
+178 -1.2913307853712494e-03 1.8212400413301813e-03 3.9975146131028938e-05
+463 -3.3402849677156201e-03 7.3697383388423524e-04 -4.9949806119802013e-03
+398 -1.4156459083885227e-03 -1.7574563648179882e-03 -1.2109968752758839e-03
+478 -1.0754306179375749e-03 -1.7886807766725032e-03 2.8619368440734854e-03
+98 -1.3312327829734880e-03 -3.6723638579421125e-04 -1.0880267494363495e-03
+7 2.0056956821862364e-03 -2.6279767109745051e-03 -1.6473116931900874e-03
+5 -1.5859338467845289e-03 -3.7276058809932312e-04 -1.2254183560461872e-04
+485 1.3527281501254688e-03 9.0149937614566361e-06 2.1367929786629187e-03
+405 -2.3553114271161052e-03 -6.6558570131137703e-05 -1.3520615409650476e-03
+13 -1.3002693898057380e-03 -1.8412347633973421e-03 -1.5518743161538177e-05
+10 -6.7406358871249588e-04 6.5704189855615616e-04 5.6055113769173537e-05
+395 3.6033799942983150e-04 -1.8500794712289752e-03 -5.2811741461472918e-03
+491 -8.8055314911673942e-04 -1.9932666916740497e-03 -5.8205592417231921e-03
+16 6.5640947847822801e-04 1.2318151485430937e-03 2.6354131849743788e-03
+1 3.6351650896334839e-03 -8.2569772847195346e-04 -1.9094184238128322e-03
+499 -4.1351483998750400e-04 -1.6831083708492437e-03 -2.8722890626567979e-04
+417 -8.4941836997492494e-04 -2.9044784542835603e-03 2.4500595246583828e-03
+481 -6.8443783339856769e-04 3.0510329264980498e-04 4.9324027741343450e-03
diff --git a/examples/USER/misc/grem/lj-single/log.gREM-npt.9Nov16.g++.1 b/examples/USER/misc/grem/lj-single/log.gREM-npt.9Nov16.g++.1
new file mode 100644
index 000000000..f18904bfd
--- /dev/null
+++ b/examples/USER/misc/grem/lj-single/log.gREM-npt.9Nov16.g++.1
@@ -0,0 +1,176 @@
+LAMMPS (9 Nov 2016)
+ using 1 OpenMP thread(s) per MPI task
+# LJ particles
+variable T0 equal 300.0
+variable press equal 0.0
+
+units real
+atom_style full
+pair_style lj/cut 5.0
+
+read_data "lj.data"
+ orthogonal box = (1.06874 1.06874 1.06874) to (23.9313 23.9313 23.9313)
+ 1 by 1 by 1 MPI processor grid
+ reading atoms ...
+ 500 atoms
+ reading velocities ...
+ 500 velocities
+ 0 = max # of 1-2 neighbors
+ 0 = max # of 1-3 neighbors
+ 0 = max # of 1-4 neighbors
+ 1 = max # of special neighbors
+
+thermo 10
+thermo_style custom step temp pe etotal press vol
+
+timestep 1.0
+
+fix fxnvt all npt temp ${T0} ${T0} 1000.0 iso ${press} ${press} 10000.0
+fix fxnvt all npt temp 300 ${T0} 1000.0 iso ${press} ${press} 10000.0
+fix fxnvt all npt temp 300 300 1000.0 iso ${press} ${press} 10000.0
+fix fxnvt all npt temp 300 300 1000.0 iso 0 ${press} 10000.0
+fix fxnvt all npt temp 300 300 1000.0 iso 0 0 10000.0
+fix fxgREM all grem 400 -.01 -30000 fxnvt
+thermo_modify press fxgREM_press
+run 1000
+Neighbor list info ...
+ 1 neighbor list requests
+ update every 1 steps, delay 10 steps, check yes
+ max neighbors/atom: 2000, page size: 100000
+ master list distance cutoff = 7
+ ghost atom cutoff = 7
+ binsize = 3.5 -> bins = 7 7 7
+Memory usage per processor = 5.37943 Mbytes
+Step Temp PotEng TotEng Press Volume
+ 0 305.69499 -3177.6423 -2722.9442 -91.741776 11950.115
+ 10 312.30124 -3182.2257 -2717.7013 -203.95075 11950.113
+ 20 314.94567 -3186.456 -2717.9982 -265.56737 11950.108
+ 30 312.229 -3183.7641 -2719.3472 -196.90499 11950.097
+ 40 305.94068 -3180.7085 -2725.6449 -92.562221 11950.083
+ 50 300.42281 -3176.5838 -2729.7277 10.896769 11950.066
+ 60 299.16747 -3174.1939 -2729.205 50.094171 11950.05
+ 70 301.65965 -3176.0918 -2727.396 0.096901939 11950.035
+ 80 304.77876 -3178.2699 -2724.9346 -64.001022 11950.019
+ 90 305.60598 -3178.9517 -2724.386 -93.672879 11950.003
+ 100 303.8005 -3177.5156 -2725.6354 -74.516709 11949.985
+ 110 300.86776 -3175.4773 -2727.9593 -34.22655 11949.965
+ 120 298.70177 -3175.6488 -2731.3526 -19.014898 11949.944
+ 130 298.39686 -3176.3792 -2732.5365 -21.293245 11949.923
+ 140 300.00669 -3177.7032 -2731.466 -40.992937 11949.902
+ 150 301.85665 -3178.1312 -2729.1423 -45.715505 11949.88
+ 160 301.20597 -3177.3218 -2729.3007 -10.104082 11949.857
+ 170 297.01134 -3172.7462 -2730.9643 99.298381 11949.833
+ 180 291.279 -3168.3513 -2735.0958 219.47549 11949.812
+ 190 287.13954 -3165.1287 -2738.0304 309.36947 11949.796
+ 200 286.57735 -3165.2951 -2739.033 323.96954 11949.786
+ 210 289.83941 -3167.8245 -2736.7103 271.77305 11949.783
+ 220 296.12858 -3171.8054 -2731.3366 172.4056 11949.785
+ 230 303.82424 -3176.3108 -2724.3952 56.711479 11949.791
+ 240 309.95738 -3180.9789 -2719.9408 -40.992898 11949.798
+ 250 312.0405 -3182.3473 -2718.2107 -57.591676 11949.805
+ 260 309.65444 -3181.0587 -2720.4712 3.3540332 11949.81
+ 270 304.40001 -3176.5798 -2723.8078 130.77028 11949.816
+ 280 298.65985 -3174.1505 -2729.9166 237.63562 11949.825
+ 290 294.78709 -3170.9701 -2732.4966 326.94924 11949.838
+ 300 294.03216 -3169.9567 -2732.6062 349.85486 11949.859
+ 310 296.44397 -3172.8519 -2731.914 284.80897 11949.886
+ 320 301.41027 -3175.9697 -2727.6447 179.4647 11949.92
+ 330 307.88911 -3181.2615 -2723.2998 24.702414 11949.957
+ 340 314.73138 -3186.0047 -2717.8656 -132.6263 11949.995
+ 350 320.55591 -3187.8509 -2711.0483 -245.88468 11950.031
+ 360 323.50274 -3188.9994 -2707.8136 -314.73676 11950.062
+ 370 321.61539 -3187.1233 -2708.7448 -293.17446 11950.086
+ 380 314.37275 -3181.484 -2713.8784 -169.00448 11950.104
+ 390 303.54884 -3174.1675 -2722.6616 12.923999 11950.119
+ 400 293.40432 -3167.0348 -2730.6181 187.6624 11950.135
+ 410 288.46351 -3165.273 -2736.2054 252.20051 11950.154
+ 420 290.31387 -3168.604 -2736.7841 193.73816 11950.178
+ 430 296.35519 -3173.09 -2732.2841 81.521847 11950.207
+ 440 301.92973 -3175.4344 -2726.3368 -1.8329439 11950.237
+ 450 303.76205 -3176.777 -2724.9539 -35.002096 11950.267
+ 460 301.71619 -3174.2731 -2725.4932 14.977875 11950.296
+ 470 298.92404 -3172.9921 -2728.3652 64.224747 11950.326
+ 480 298.80164 -3172.5329 -2728.0881 82.781347 11950.358
+ 490 302.71589 -3175.3703 -2725.1034 27.223049 11950.39
+ 500 309.10665 -3179.3013 -2719.5285 -65.460658 11950.424
+ 510 314.36408 -3183.2854 -2715.6927 -151.19245 11950.456
+ 520 315.71154 -3183.5328 -2713.9358 -163.19151 11950.485
+ 530 313.31886 -3182.2521 -2716.214 -125.5741 11950.511
+ 540 309.81847 -3178.9358 -2718.1043 -55.55841 11950.534
+ 550 308.29687 -3177.837 -2719.2688 -24.39371 11950.556
+ 560 308.75927 -3176.3265 -2717.0705 0.93689833 11950.578
+ 570 307.52811 -3175.8145 -2718.3897 35.502429 11950.6
+ 580 301.75074 -3173.1208 -2724.2894 136.29625 11950.622
+ 590 292.37743 -3165.5806 -2730.6913 319.75957 11950.648
+ 600 283.57627 -3159.8617 -2738.0635 471.28045 11950.68
+ 610 279.85172 -3157.4557 -2741.1975 530.72699 11950.722
+ 620 283.40879 -3160.5911 -2739.042 455.28104 11950.775
+ 630 292.53718 -3166.3125 -2731.1856 296.63465 11950.838
+ 640 302.81112 -3173.3096 -2722.901 113.80844 11950.907
+ 650 309.83321 -3179.3684 -2718.515 -26.499431 11950.978
+ 660 312.1283 -3182.7335 -2718.4663 -89.363745 11951.049
+ 670 311.16363 -3181.867 -2719.0347 -69.370989 11951.118
+ 680 308.51041 -3180.6869 -2721.801 -25.972987 11951.186
+ 690 304.64393 -3176.8751 -2723.7403 56.592367 11951.254
+ 700 300.24456 -3175.4797 -2728.8887 112.34442 11951.323
+ 710 296.35785 -3172.9705 -2732.1607 168.18009 11951.394
+ 720 293.78145 -3172.1065 -2735.1289 182.81082 11951.468
+ 730 293.25707 -3170.8715 -2734.6738 171.04236 11951.547
+ 740 295.33219 -3172.9109 -2733.6266 91.351362 11951.629
+ 750 299.69136 -3175.2574 -2729.4892 -16.266404 11951.713
+ 760 305.2281 -3177.9836 -2723.9799 -137.30615 11951.796
+ 770 310.59309 -3182.7053 -2720.7216 -272.72961 11951.877
+ 780 314.65573 -3183.4212 -2715.3947 -341.231 11951.952
+ 790 316.48606 -3185.44 -2714.691 -388.53602 11952.02
+ 800 315.15897 -3186.846 -2718.0709 -384.28316 11952.08
+ 810 310.43559 -3183.6648 -2721.9154 -282.61999 11952.133
+ 820 303.22265 -3178.464 -2727.4433 -121.47565 11952.179
+ 830 295.36843 -3175.4771 -2736.1389 33.066504 11952.223
+ 840 288.69698 -3169.5813 -2740.1664 216.10697 11952.268
+ 850 283.82649 -3165.7822 -2743.6118 359.56896 11952.317
+ 860 280.04102 -3162.8228 -2746.283 475.61942 11952.374
+ 870 277.10059 -3159.6212 -2747.4551 572.5432 11952.441
+ 880 275.76549 -3158.2545 -2748.0743 616.43304 11952.52
+ 890 276.82327 -3158.9703 -2747.2166 596.08147 11952.612
+ 900 280.72135 -3162.0637 -2744.5119 506.33695 11952.716
+ 910 287.1035 -3167.4388 -2740.3941 356.68688 11952.831
+ 920 294.28041 -3171.6218 -2733.902 206.06394 11952.953
+ 930 300.36009 -3173.9046 -2727.1418 88.047911 11953.08
+ 940 303.86761 -3175.5599 -2723.5798 7.6846808 11953.209
+ 950 304.42957 -3176.0831 -2723.2672 -25.15496 11953.339
+ 960 303.13982 -3176.0534 -2725.1559 -28.715178 11953.467
+ 970 302.30166 -3176.9758 -2727.325 -43.264668 11953.596
+ 980 303.93331 -3178.9891 -2726.9114 -88.434034 11953.723
+ 990 307.36223 -3180.7316 -2723.5535 -145.46208 11953.849
+ 1000 310.09574 -3181.101 -2719.8571 -180.39125 11953.972
+Loop time of 0.307225 on 1 procs for 1000 steps with 500 atoms
+
+Performance: 281.227 ns/day, 0.085 hours/ns, 3254.944 timesteps/s
+99.6% CPU use with 1 MPI tasks x 1 OpenMP threads
+
+MPI task timing breakdown:
+Section | min time | avg time | max time |%varavg| %total
+---------------------------------------------------------------
+Pair | 0.25351 | 0.25351 | 0.25351 | 0.0 | 82.52
+Bond | 7.1526e-05 | 7.1526e-05 | 7.1526e-05 | 0.0 | 0.02
+Neigh | 0.0042093 | 0.0042093 | 0.0042093 | 0.0 | 1.37
+Comm | 0.010211 | 0.010211 | 0.010211 | 0.0 | 3.32
+Output | 0.0013611 | 0.0013611 | 0.0013611 | 0.0 | 0.44
+Modify | 0.033891 | 0.033891 | 0.033891 | 0.0 | 11.03
+Other | | 0.003969 | | | 1.29
+
+Nlocal: 500 ave 500 max 500 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Nghost: 1610 ave 1610 max 1610 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Neighs: 14765 ave 14765 max 14765 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+
+Total # of neighbors = 14765
+Ave neighs/atom = 29.53
+Ave special neighs/atom = 0
+Neighbor list builds = 5
+Dangerous builds = 0
+
+#write_data lj-out.data
+Total wall time: 0:00:00
diff --git a/examples/USER/misc/grem/lj-single/log.gREM-npt.9Nov16.g++.4 b/examples/USER/misc/grem/lj-single/log.gREM-npt.9Nov16.g++.4
new file mode 100644
index 000000000..788234778
--- /dev/null
+++ b/examples/USER/misc/grem/lj-single/log.gREM-npt.9Nov16.g++.4
@@ -0,0 +1,176 @@
+LAMMPS (9 Nov 2016)
+ using 1 OpenMP thread(s) per MPI task
+# LJ particles
+variable T0 equal 300.0
+variable press equal 0.0
+
+units real
+atom_style full
+pair_style lj/cut 5.0
+
+read_data "lj.data"
+ orthogonal box = (1.06874 1.06874 1.06874) to (23.9313 23.9313 23.9313)
+ 1 by 2 by 2 MPI processor grid
+ reading atoms ...
+ 500 atoms
+ reading velocities ...
+ 500 velocities
+ 0 = max # of 1-2 neighbors
+ 0 = max # of 1-3 neighbors
+ 0 = max # of 1-4 neighbors
+ 1 = max # of special neighbors
+
+thermo 10
+thermo_style custom step temp pe etotal press vol
+
+timestep 1.0
+
+fix fxnvt all npt temp ${T0} ${T0} 1000.0 iso ${press} ${press} 10000.0
+fix fxnvt all npt temp 300 ${T0} 1000.0 iso ${press} ${press} 10000.0
+fix fxnvt all npt temp 300 300 1000.0 iso ${press} ${press} 10000.0
+fix fxnvt all npt temp 300 300 1000.0 iso 0 ${press} 10000.0
+fix fxnvt all npt temp 300 300 1000.0 iso 0 0 10000.0
+fix fxgREM all grem 400 -.01 -30000 fxnvt
+thermo_modify press fxgREM_press
+run 1000
+Neighbor list info ...
+ 1 neighbor list requests
+ update every 1 steps, delay 10 steps, check yes
+ max neighbors/atom: 2000, page size: 100000
+ master list distance cutoff = 7
+ ghost atom cutoff = 7
+ binsize = 3.5 -> bins = 7 7 7
+Memory usage per processor = 5.34276 Mbytes
+Step Temp PotEng TotEng Press Volume
+ 0 305.69499 -3177.6423 -2722.9442 -91.741776 11950.115
+ 10 312.30124 -3182.2257 -2717.7013 -203.95075 11950.113
+ 20 314.94567 -3186.456 -2717.9982 -265.56737 11950.108
+ 30 312.229 -3183.7641 -2719.3472 -196.90499 11950.097
+ 40 305.94068 -3180.7085 -2725.6449 -92.562221 11950.083
+ 50 300.42281 -3176.5838 -2729.7277 10.896769 11950.066
+ 60 299.16747 -3174.1939 -2729.205 50.094171 11950.05
+ 70 301.65965 -3176.0918 -2727.396 0.096901939 11950.035
+ 80 304.77876 -3178.2699 -2724.9346 -64.001022 11950.019
+ 90 305.60598 -3178.9517 -2724.386 -93.672879 11950.003
+ 100 303.8005 -3177.5156 -2725.6354 -74.516709 11949.985
+ 110 300.86776 -3175.4773 -2727.9593 -34.22655 11949.965
+ 120 298.70177 -3175.6488 -2731.3526 -19.014898 11949.944
+ 130 298.39686 -3176.3792 -2732.5365 -21.293245 11949.923
+ 140 300.00669 -3177.7032 -2731.466 -40.992937 11949.902
+ 150 301.85665 -3178.1312 -2729.1423 -45.715505 11949.88
+ 160 301.20597 -3177.3218 -2729.3007 -10.104082 11949.857
+ 170 297.01134 -3172.7462 -2730.9643 99.298381 11949.833
+ 180 291.279 -3168.3513 -2735.0958 219.47549 11949.812
+ 190 287.13954 -3165.1287 -2738.0304 309.36947 11949.796
+ 200 286.57735 -3165.2951 -2739.033 323.96954 11949.786
+ 210 289.83941 -3167.8245 -2736.7103 271.77305 11949.783
+ 220 296.12858 -3171.8054 -2731.3366 172.4056 11949.785
+ 230 303.82424 -3176.3108 -2724.3952 56.711479 11949.791
+ 240 309.95738 -3180.9789 -2719.9408 -40.992898 11949.798
+ 250 312.0405 -3182.3473 -2718.2107 -57.591676 11949.805
+ 260 309.65444 -3181.0587 -2720.4712 3.3540332 11949.81
+ 270 304.40001 -3176.5798 -2723.8078 130.77028 11949.816
+ 280 298.65985 -3174.1505 -2729.9166 237.63562 11949.825
+ 290 294.78709 -3170.9701 -2732.4966 326.94924 11949.838
+ 300 294.03216 -3169.9567 -2732.6062 349.85486 11949.859
+ 310 296.44397 -3172.8519 -2731.914 284.80897 11949.886
+ 320 301.41027 -3175.9697 -2727.6447 179.4647 11949.92
+ 330 307.88911 -3181.2615 -2723.2998 24.702414 11949.957
+ 340 314.73138 -3186.0047 -2717.8656 -132.6263 11949.995
+ 350 320.55591 -3187.8509 -2711.0483 -245.88468 11950.031
+ 360 323.50274 -3188.9994 -2707.8136 -314.73676 11950.062
+ 370 321.61539 -3187.1233 -2708.7448 -293.17446 11950.086
+ 380 314.37275 -3181.484 -2713.8784 -169.00448 11950.104
+ 390 303.54884 -3174.1675 -2722.6616 12.923999 11950.119
+ 400 293.40432 -3167.0348 -2730.6181 187.6624 11950.135
+ 410 288.46351 -3165.273 -2736.2054 252.20051 11950.154
+ 420 290.31387 -3168.604 -2736.7841 193.73816 11950.178
+ 430 296.35519 -3173.09 -2732.2841 81.521847 11950.207
+ 440 301.92973 -3175.4344 -2726.3368 -1.8329439 11950.237
+ 450 303.76205 -3176.777 -2724.9539 -35.002096 11950.267
+ 460 301.71619 -3174.2731 -2725.4932 14.977875 11950.296
+ 470 298.92404 -3172.9921 -2728.3652 64.224747 11950.326
+ 480 298.80164 -3172.5329 -2728.0881 82.781347 11950.358
+ 490 302.71589 -3175.3703 -2725.1034 27.223049 11950.39
+ 500 309.10665 -3179.3013 -2719.5285 -65.460658 11950.424
+ 510 314.36408 -3183.2854 -2715.6927 -151.19245 11950.456
+ 520 315.71154 -3183.5328 -2713.9358 -163.19151 11950.485
+ 530 313.31886 -3182.2521 -2716.214 -125.5741 11950.511
+ 540 309.81847 -3178.9358 -2718.1043 -55.55841 11950.534
+ 550 308.29687 -3177.837 -2719.2688 -24.39371 11950.556
+ 560 308.75927 -3176.3265 -2717.0705 0.93689833 11950.578
+ 570 307.52811 -3175.8145 -2718.3897 35.502429 11950.6
+ 580 301.75074 -3173.1208 -2724.2894 136.29625 11950.622
+ 590 292.37743 -3165.5806 -2730.6913 319.75957 11950.648
+ 600 283.57627 -3159.8617 -2738.0635 471.28045 11950.68
+ 610 279.85172 -3157.4557 -2741.1975 530.72699 11950.722
+ 620 283.40879 -3160.5911 -2739.042 455.28104 11950.775
+ 630 292.53718 -3166.3125 -2731.1856 296.63465 11950.838
+ 640 302.81112 -3173.3096 -2722.901 113.80844 11950.907
+ 650 309.83321 -3179.3684 -2718.515 -26.499431 11950.978
+ 660 312.1283 -3182.7335 -2718.4663 -89.363745 11951.049
+ 670 311.16363 -3181.867 -2719.0347 -69.370989 11951.118
+ 680 308.51041 -3180.6869 -2721.801 -25.972987 11951.186
+ 690 304.64393 -3176.8751 -2723.7403 56.592367 11951.254
+ 700 300.24456 -3175.4797 -2728.8887 112.34442 11951.323
+ 710 296.35785 -3172.9705 -2732.1607 168.18009 11951.394
+ 720 293.78145 -3172.1065 -2735.1289 182.81082 11951.468
+ 730 293.25707 -3170.8715 -2734.6738 171.04236 11951.547
+ 740 295.33219 -3172.9109 -2733.6266 91.351362 11951.629
+ 750 299.69136 -3175.2574 -2729.4892 -16.266404 11951.713
+ 760 305.2281 -3177.9836 -2723.9799 -137.30615 11951.796
+ 770 310.59309 -3182.7053 -2720.7216 -272.72961 11951.877
+ 780 314.65573 -3183.4212 -2715.3947 -341.231 11951.952
+ 790 316.48606 -3185.44 -2714.691 -388.53602 11952.02
+ 800 315.15897 -3186.846 -2718.0709 -384.28316 11952.08
+ 810 310.43559 -3183.6648 -2721.9154 -282.61999 11952.133
+ 820 303.22265 -3178.464 -2727.4433 -121.47565 11952.179
+ 830 295.36843 -3175.4771 -2736.1389 33.066504 11952.223
+ 840 288.69698 -3169.5813 -2740.1664 216.10697 11952.268
+ 850 283.82649 -3165.7822 -2743.6118 359.56896 11952.317
+ 860 280.04102 -3162.8228 -2746.283 475.61942 11952.374
+ 870 277.10059 -3159.6212 -2747.4551 572.5432 11952.441
+ 880 275.76549 -3158.2545 -2748.0743 616.43304 11952.52
+ 890 276.82327 -3158.9703 -2747.2166 596.08147 11952.612
+ 900 280.72135 -3162.0637 -2744.5119 506.33695 11952.716
+ 910 287.1035 -3167.4388 -2740.3941 356.68688 11952.831
+ 920 294.28041 -3171.6218 -2733.902 206.06394 11952.953
+ 930 300.36009 -3173.9046 -2727.1418 88.047911 11953.08
+ 940 303.86761 -3175.5599 -2723.5798 7.6846808 11953.209
+ 950 304.42957 -3176.0831 -2723.2672 -25.15496 11953.339
+ 960 303.13982 -3176.0534 -2725.1559 -28.715178 11953.467
+ 970 302.30166 -3176.9758 -2727.325 -43.264668 11953.596
+ 980 303.93331 -3178.9891 -2726.9114 -88.434034 11953.723
+ 990 307.36223 -3180.7316 -2723.5535 -145.46208 11953.849
+ 1000 310.09574 -3181.101 -2719.8571 -180.39125 11953.972
+Loop time of 0.154208 on 4 procs for 1000 steps with 500 atoms
+
+Performance: 560.281 ns/day, 0.043 hours/ns, 6484.730 timesteps/s
+98.1% CPU use with 4 MPI tasks x 1 OpenMP threads
+
+MPI task timing breakdown:
+Section | min time | avg time | max time |%varavg| %total
+---------------------------------------------------------------
+Pair | 0.072079 | 0.074846 | 0.079666 | 1.1 | 48.54
+Bond | 5.7936e-05 | 6.634e-05 | 8.1062e-05 | 0.1 | 0.04
+Neigh | 0.0010812 | 0.0012064 | 0.0012748 | 0.2 | 0.78
+Comm | 0.032452 | 0.037544 | 0.04076 | 1.6 | 24.35
+Output | 0.0018461 | 0.0020589 | 0.0026393 | 0.7 | 1.34
+Modify | 0.032085 | 0.032688 | 0.033361 | 0.3 | 21.20
+Other | | 0.005799 | | | 3.76
+
+Nlocal: 125 ave 127 max 123 min
+Histogram: 1 0 1 0 0 0 0 1 0 1
+Nghost: 870.5 ave 882 max 862 min
+Histogram: 1 1 0 0 0 0 1 0 0 1
+Neighs: 3691.25 ave 3807 max 3563 min
+Histogram: 1 0 0 0 1 0 1 0 0 1
+
+Total # of neighbors = 14765
+Ave neighs/atom = 29.53
+Ave special neighs/atom = 0
+Neighbor list builds = 5
+Dangerous builds = 0
+
+#write_data lj-out.data
+Total wall time: 0:00:00
diff --git a/examples/USER/misc/grem/lj-single/log.gREM-nvt.9Nov16.g++.1 b/examples/USER/misc/grem/lj-single/log.gREM-nvt.9Nov16.g++.1
new file mode 100644
index 000000000..128d46002
--- /dev/null
+++ b/examples/USER/misc/grem/lj-single/log.gREM-nvt.9Nov16.g++.1
@@ -0,0 +1,173 @@
+LAMMPS (9 Nov 2016)
+ using 1 OpenMP thread(s) per MPI task
+# LJ particles
+variable T0 equal 300.0
+variable press equal 0.0
+
+units real
+atom_style full
+pair_style lj/cut 5.0
+
+read_data "lj.data"
+ orthogonal box = (1.06874 1.06874 1.06874) to (23.9313 23.9313 23.9313)
+ 1 by 1 by 1 MPI processor grid
+ reading atoms ...
+ 500 atoms
+ reading velocities ...
+ 500 velocities
+ 0 = max # of 1-2 neighbors
+ 0 = max # of 1-3 neighbors
+ 0 = max # of 1-4 neighbors
+ 1 = max # of special neighbors
+
+thermo 10
+thermo_style custom step temp pe etotal press vol
+
+timestep 1.0
+
+fix fxnvt all nvt temp ${T0} ${T0} 1000.0
+fix fxnvt all nvt temp 300 ${T0} 1000.0
+fix fxnvt all nvt temp 300 300 1000.0
+fix fxgREM all grem 400 -.01 -30000 fxnvt
+run 1000
+Neighbor list info ...
+ 1 neighbor list requests
+ update every 1 steps, delay 10 steps, check yes
+ max neighbors/atom: 2000, page size: 100000
+ master list distance cutoff = 7
+ ghost atom cutoff = 7
+ binsize = 3.5 -> bins = 7 7 7
+Memory usage per processor = 5.37943 Mbytes
+Step Temp PotEng TotEng Press Volume
+ 0 305.69499 -3177.6423 -2722.9442 883.58369 11950.115
+ 10 312.30121 -3182.2257 -2717.7013 793.47811 11950.115
+ 20 314.94553 -3186.4559 -2717.9983 738.74091 11950.115
+ 30 312.22861 -3183.7638 -2719.3474 797.47978 11950.115
+ 40 305.93987 -3180.7079 -2725.6455 881.30806 11950.115
+ 50 300.42132 -3176.5828 -2729.7288 967.92042 11950.115
+ 60 299.16487 -3174.1921 -2729.2071 1004.247 11950.115
+ 70 301.65565 -3176.0891 -2727.3992 962.58134 11950.115
+ 80 304.77334 -3178.2663 -2724.939 907.8946 11950.115
+ 90 305.59929 -3178.9472 -2724.3914 879.91629 11950.115
+ 100 303.79263 -3177.5103 -2725.6418 892.67631 11950.115
+ 110 300.85863 -3175.4711 -2727.9667 923.44924 11950.115
+ 120 298.69083 -3175.6415 -2731.3615 931.87518 11950.115
+ 130 298.38415 -3176.3706 -2732.5468 928.88286 11950.115
+ 140 299.99129 -3177.6935 -2731.4792 914.36783 11950.115
+ 150 301.83869 -3178.121 -2729.1588 915.01407 11950.115
+ 160 301.18834 -3177.3117 -2729.3169 947.45228 11950.115
+ 170 296.99406 -3172.7363 -2730.9801 1042.6928 11950.115
+ 180 291.25952 -3168.3407 -2735.1142 1144.5436 11950.115
+ 190 287.1178 -3164.9847 -2737.9187 1223.4003 11950.115
+ 200 286.552 -3165.2799 -2739.0555 1235.6703 11950.115
+ 210 289.81033 -3167.8062 -2736.7353 1194.6672 11950.115
+ 220 296.09616 -3171.7847 -2731.3641 1115.8799 11950.115
+ 230 303.79176 -3176.2893 -2724.4221 1024.6471 11950.115
+ 240 309.9273 -3180.9591 -2719.9657 945.55045 11950.115
+ 250 312.0159 -3182.3307 -2718.2306 934.36956 11950.115
+ 260 309.63264 -3181.0452 -2720.4901 986.77385 11950.115
+ 270 304.38172 -3176.568 -2723.8233 1097.264 11950.115
+ 280 298.64188 -3174.1384 -2729.9313 1186.2239 11950.115
+ 290 294.76686 -3170.9562 -2732.5128 1264.247 11950.115
+ 300 294.00805 -3169.8091 -2732.4944 1287.4001 11950.115
+ 310 296.41801 -3172.834 -2731.9347 1229.5624 11950.115
+ 320 301.38477 -3175.9514 -2727.6644 1140.8664 11950.115
+ 330 307.86584 -3181.2442 -2723.3171 1007.1545 11950.115
+ 340 314.7103 -3185.9891 -2717.8814 871.74528 11950.115
+ 350 320.53954 -3187.8385 -2711.0602 776.85994 11950.115
+ 360 323.49505 -3188.9927 -2707.8184 716.58062 11950.115
+ 370 321.62077 -3187.1246 -2708.7381 731.01909 11950.115
+ 380 314.39049 -3181.4931 -2713.8611 831.21057 11950.115
+ 390 303.57079 -3174.1804 -2722.6419 978.62645 11950.115
+ 400 293.42165 -3167.0452 -2730.6027 1122.3558 11950.115
+ 410 288.46838 -3165.4071 -2736.3322 1171.8087 11950.115
+ 420 290.30766 -3168.5988 -2736.7882 1122.5413 11950.115
+ 430 296.34338 -3173.0824 -2732.2941 1030.2769 11950.115
+ 440 301.92394 -3175.4307 -2726.3417 964.25387 11950.115
+ 450 303.76745 -3176.9122 -2725.0811 934.49176 11950.115
+ 460 301.72985 -3174.2821 -2725.4818 979.07605 11950.115
+ 470 298.93736 -3173.0014 -2728.3548 1020.0482 11950.115
+ 480 298.80912 -3172.803 -2728.3471 1036.6531 11950.115
+ 490 302.72217 -3175.3764 -2725.1001 997.71146 11950.115
+ 500 309.11393 -3179.3088 -2719.5253 925.81108 11950.115
+ 510 314.37612 -3183.2961 -2715.6855 856.23748 11950.115
+ 520 315.72767 -3183.547 -2713.926 847.70543 11950.115
+ 530 313.34173 -3182.2695 -2716.1974 877.30842 11950.115
+ 540 309.84312 -3178.9553 -2718.0871 936.69244 11950.115
+ 550 308.3251 -3177.8582 -2719.248 963.93032 11950.115
+ 560 308.79192 -3176.4834 -2717.1788 989.67643 11950.115
+ 570 307.57194 -3175.8464 -2718.3565 1021.0494 11950.115
+ 580 301.8035 -3173.1582 -2724.2483 1102.4893 11950.115
+ 590 292.43425 -3165.751 -2730.7772 1254.7815 11950.115
+ 600 283.62905 -3159.8987 -2738.022 1381.0608 11950.115
+ 610 279.90122 -3157.49 -2741.1581 1431.0028 11950.115
+ 620 283.4582 -3160.756 -2739.1334 1367.7385 11950.115
+ 630 292.58866 -3166.3469 -2731.1435 1241.1194 11950.115
+ 640 302.86585 -3173.4778 -2722.9878 1089.7342 11950.115
+ 650 309.89252 -3179.4078 -2718.4662 972.6359 11950.115
+ 660 312.19165 -3182.7754 -2718.414 916.62037 11950.115
+ 670 311.2287 -3181.9102 -2718.9811 933.79804 11950.115
+ 680 308.57852 -3180.7312 -2721.7441 969.24936 11950.115
+ 690 304.71609 -3176.9196 -2723.6775 1040.2699 11950.115
+ 700 300.31995 -3175.5245 -2728.8213 1082.845 11950.115
+ 710 296.43537 -3173.0166 -2732.0915 1127.4487 11950.115
+ 720 293.86692 -3172.1582 -2735.0535 1135.0215 11950.115
+ 730 293.35611 -3170.9335 -2734.5885 1122.9143 11950.115
+ 740 295.44861 -3172.9862 -2733.5288 1050.995 11950.115
+ 750 299.82732 -3175.3467 -2729.3763 958.31462 11950.115
+ 760 305.37987 -3178.216 -2723.9866 854.1946 11950.115
+ 770 310.75394 -3182.8127 -2720.5898 737.72668 11950.115
+ 780 314.81395 -3183.7905 -2715.5286 679.74198 11950.115
+ 790 316.63339 -3185.8028 -2714.8346 638.48871 11950.115
+ 800 315.2894 -3186.9345 -2717.9654 641.53256 11950.115
+ 810 310.54289 -3183.7383 -2721.8293 728.51241 11950.115
+ 820 303.31439 -3178.7897 -2727.6326 864.45674 11950.115
+ 830 295.46125 -3175.5387 -2736.0625 997.72969 11950.115
+ 840 288.802 -3169.6502 -2740.0791 1160.6622 11950.115
+ 850 283.94785 -3165.8605 -2743.5096 1289.55 11950.115
+ 860 280.17501 -3163.0381 -2746.299 1392.8854 11950.115
+ 870 277.2456 -3159.8429 -2747.4611 1481.3899 11950.115
+ 880 275.93123 -3158.3584 -2747.9316 1523.5374 11950.115
+ 890 277.0215 -3159.2285 -2747.18 1506.1558 11950.115
+ 900 280.96237 -3162.483 -2744.5728 1428.4183 11950.115
+ 910 287.37962 -3167.6183 -2740.1628 1303.0268 11950.115
+ 920 294.56731 -3171.6765 -2733.5299 1177.748 11950.115
+ 930 300.63273 -3174.0842 -2726.9158 1078.7393 11950.115
+ 940 304.10943 -3175.9847 -2723.645 1007.7154 11950.115
+ 950 304.64845 -3176.6263 -2723.4848 976.37917 11950.115
+ 960 303.36343 -3176.4694 -2725.2393 971.40749 11950.115
+ 970 302.57138 -3177.5541 -2727.5021 954.01115 11950.115
+ 980 304.2593 -3179.2101 -2726.6475 919.74949 11950.115
+ 990 307.69959 -3180.9631 -2723.2833 874.9594 11950.115
+ 1000 310.3971 -3181.9675 -2720.2753 842.81184 11950.115
+Loop time of 0.279202 on 1 procs for 1000 steps with 500 atoms
+
+Performance: 309.453 ns/day, 0.078 hours/ns, 3581.633 timesteps/s
+99.1% CPU use with 1 MPI tasks x 1 OpenMP threads
+
+MPI task timing breakdown:
+Section | min time | avg time | max time |%varavg| %total
+---------------------------------------------------------------
+Pair | 0.24196 | 0.24196 | 0.24196 | 0.0 | 86.66
+Bond | 6.628e-05 | 6.628e-05 | 6.628e-05 | 0.0 | 0.02
+Neigh | 0.0043204 | 0.0043204 | 0.0043204 | 0.0 | 1.55
+Comm | 0.010242 | 0.010242 | 0.010242 | 0.0 | 3.67
+Output | 0.0012252 | 0.0012252 | 0.0012252 | 0.0 | 0.44
+Modify | 0.017572 | 0.017572 | 0.017572 | 0.0 | 6.29
+Other | | 0.003811 | | | 1.37
+
+Nlocal: 500 ave 500 max 500 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Nghost: 1610 ave 1610 max 1610 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Neighs: 14767 ave 14767 max 14767 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+
+Total # of neighbors = 14767
+Ave neighs/atom = 29.534
+Ave special neighs/atom = 0
+Neighbor list builds = 5
+Dangerous builds = 0
+
+#write_data lj-out.data
+Total wall time: 0:00:00
diff --git a/examples/USER/misc/grem/lj-single/log.gREM-nvt.9Nov16.g++.4 b/examples/USER/misc/grem/lj-single/log.gREM-nvt.9Nov16.g++.4
new file mode 100644
index 000000000..6b823ad37
--- /dev/null
+++ b/examples/USER/misc/grem/lj-single/log.gREM-nvt.9Nov16.g++.4
@@ -0,0 +1,173 @@
+LAMMPS (9 Nov 2016)
+ using 1 OpenMP thread(s) per MPI task
+# LJ particles
+variable T0 equal 300.0
+variable press equal 0.0
+
+units real
+atom_style full
+pair_style lj/cut 5.0
+
+read_data "lj.data"
+ orthogonal box = (1.06874 1.06874 1.06874) to (23.9313 23.9313 23.9313)
+ 1 by 2 by 2 MPI processor grid
+ reading atoms ...
+ 500 atoms
+ reading velocities ...
+ 500 velocities
+ 0 = max # of 1-2 neighbors
+ 0 = max # of 1-3 neighbors
+ 0 = max # of 1-4 neighbors
+ 1 = max # of special neighbors
+
+thermo 10
+thermo_style custom step temp pe etotal press vol
+
+timestep 1.0
+
+fix fxnvt all nvt temp ${T0} ${T0} 1000.0
+fix fxnvt all nvt temp 300 ${T0} 1000.0
+fix fxnvt all nvt temp 300 300 1000.0
+fix fxgREM all grem 400 -.01 -30000 fxnvt
+run 1000
+Neighbor list info ...
+ 1 neighbor list requests
+ update every 1 steps, delay 10 steps, check yes
+ max neighbors/atom: 2000, page size: 100000
+ master list distance cutoff = 7
+ ghost atom cutoff = 7
+ binsize = 3.5 -> bins = 7 7 7
+Memory usage per processor = 5.34276 Mbytes
+Step Temp PotEng TotEng Press Volume
+ 0 305.69499 -3177.6423 -2722.9442 883.58369 11950.115
+ 10 312.30121 -3182.2257 -2717.7013 793.47811 11950.115
+ 20 314.94553 -3186.4559 -2717.9983 738.74091 11950.115
+ 30 312.22861 -3183.7638 -2719.3474 797.47978 11950.115
+ 40 305.93987 -3180.7079 -2725.6455 881.30806 11950.115
+ 50 300.42132 -3176.5828 -2729.7288 967.92042 11950.115
+ 60 299.16487 -3174.1921 -2729.2071 1004.247 11950.115
+ 70 301.65565 -3176.0891 -2727.3992 962.58134 11950.115
+ 80 304.77334 -3178.2663 -2724.939 907.8946 11950.115
+ 90 305.59929 -3178.9472 -2724.3914 879.91629 11950.115
+ 100 303.79263 -3177.5103 -2725.6418 892.67631 11950.115
+ 110 300.85863 -3175.4711 -2727.9667 923.44924 11950.115
+ 120 298.69083 -3175.6415 -2731.3615 931.87518 11950.115
+ 130 298.38415 -3176.3706 -2732.5468 928.88286 11950.115
+ 140 299.99129 -3177.6935 -2731.4792 914.36783 11950.115
+ 150 301.83869 -3178.121 -2729.1588 915.01407 11950.115
+ 160 301.18834 -3177.3117 -2729.3169 947.45228 11950.115
+ 170 296.99406 -3172.7363 -2730.9801 1042.6928 11950.115
+ 180 291.25952 -3168.3407 -2735.1142 1144.5436 11950.115
+ 190 287.1178 -3164.9847 -2737.9187 1223.4003 11950.115
+ 200 286.552 -3165.2799 -2739.0555 1235.6703 11950.115
+ 210 289.81033 -3167.8062 -2736.7353 1194.6672 11950.115
+ 220 296.09616 -3171.7847 -2731.3641 1115.8799 11950.115
+ 230 303.79176 -3176.2893 -2724.4221 1024.6471 11950.115
+ 240 309.9273 -3180.9591 -2719.9657 945.55045 11950.115
+ 250 312.0159 -3182.3307 -2718.2306 934.36956 11950.115
+ 260 309.63264 -3181.0452 -2720.4901 986.77385 11950.115
+ 270 304.38172 -3176.568 -2723.8233 1097.264 11950.115
+ 280 298.64188 -3174.1384 -2729.9313 1186.2239 11950.115
+ 290 294.76686 -3170.9562 -2732.5128 1264.247 11950.115
+ 300 294.00805 -3169.8091 -2732.4944 1287.4001 11950.115
+ 310 296.41801 -3172.834 -2731.9347 1229.5624 11950.115
+ 320 301.38477 -3175.9514 -2727.6644 1140.8664 11950.115
+ 330 307.86584 -3181.2442 -2723.3171 1007.1545 11950.115
+ 340 314.7103 -3185.9891 -2717.8814 871.74528 11950.115
+ 350 320.53954 -3187.8385 -2711.0602 776.85994 11950.115
+ 360 323.49505 -3188.9927 -2707.8184 716.58062 11950.115
+ 370 321.62077 -3187.1246 -2708.7381 731.01909 11950.115
+ 380 314.39049 -3181.4931 -2713.8611 831.21057 11950.115
+ 390 303.57079 -3174.1804 -2722.6419 978.62645 11950.115
+ 400 293.42165 -3167.0452 -2730.6027 1122.3558 11950.115
+ 410 288.46838 -3165.4071 -2736.3322 1171.8087 11950.115
+ 420 290.30766 -3168.5988 -2736.7882 1122.5413 11950.115
+ 430 296.34338 -3173.0824 -2732.2941 1030.2769 11950.115
+ 440 301.92394 -3175.4307 -2726.3417 964.25387 11950.115
+ 450 303.76745 -3176.9122 -2725.0811 934.49176 11950.115
+ 460 301.72985 -3174.2821 -2725.4818 979.07605 11950.115
+ 470 298.93736 -3173.0014 -2728.3548 1020.0482 11950.115
+ 480 298.80912 -3172.803 -2728.3471 1036.6531 11950.115
+ 490 302.72217 -3175.3764 -2725.1001 997.71146 11950.115
+ 500 309.11393 -3179.3088 -2719.5253 925.81108 11950.115
+ 510 314.37612 -3183.2961 -2715.6855 856.23748 11950.115
+ 520 315.72767 -3183.547 -2713.926 847.70543 11950.115
+ 530 313.34173 -3182.2695 -2716.1974 877.30842 11950.115
+ 540 309.84312 -3178.9553 -2718.0871 936.69244 11950.115
+ 550 308.3251 -3177.8582 -2719.248 963.93032 11950.115
+ 560 308.79192 -3176.4834 -2717.1788 989.67643 11950.115
+ 570 307.57194 -3175.8464 -2718.3565 1021.0494 11950.115
+ 580 301.8035 -3173.1582 -2724.2483 1102.4893 11950.115
+ 590 292.43425 -3165.751 -2730.7772 1254.7815 11950.115
+ 600 283.62905 -3159.8987 -2738.022 1381.0608 11950.115
+ 610 279.90122 -3157.49 -2741.1581 1431.0028 11950.115
+ 620 283.4582 -3160.756 -2739.1334 1367.7385 11950.115
+ 630 292.58866 -3166.3469 -2731.1435 1241.1194 11950.115
+ 640 302.86585 -3173.4778 -2722.9878 1089.7342 11950.115
+ 650 309.89252 -3179.4078 -2718.4662 972.6359 11950.115
+ 660 312.19165 -3182.7754 -2718.414 916.62037 11950.115
+ 670 311.2287 -3181.9102 -2718.9811 933.79804 11950.115
+ 680 308.57852 -3180.7312 -2721.7441 969.24936 11950.115
+ 690 304.71609 -3176.9196 -2723.6775 1040.2699 11950.115
+ 700 300.31995 -3175.5245 -2728.8213 1082.845 11950.115
+ 710 296.43537 -3173.0166 -2732.0915 1127.4487 11950.115
+ 720 293.86692 -3172.1582 -2735.0535 1135.0215 11950.115
+ 730 293.35611 -3170.9335 -2734.5885 1122.9143 11950.115
+ 740 295.44861 -3172.9862 -2733.5288 1050.995 11950.115
+ 750 299.82732 -3175.3467 -2729.3763 958.31462 11950.115
+ 760 305.37987 -3178.216 -2723.9866 854.1946 11950.115
+ 770 310.75394 -3182.8127 -2720.5898 737.72668 11950.115
+ 780 314.81395 -3183.7905 -2715.5286 679.74198 11950.115
+ 790 316.63339 -3185.8028 -2714.8346 638.48871 11950.115
+ 800 315.2894 -3186.9345 -2717.9654 641.53256 11950.115
+ 810 310.54289 -3183.7383 -2721.8293 728.51241 11950.115
+ 820 303.31439 -3178.7897 -2727.6326 864.45674 11950.115
+ 830 295.46125 -3175.5387 -2736.0625 997.72969 11950.115
+ 840 288.802 -3169.6502 -2740.0791 1160.6622 11950.115
+ 850 283.94785 -3165.8605 -2743.5096 1289.55 11950.115
+ 860 280.17501 -3163.0381 -2746.299 1392.8854 11950.115
+ 870 277.2456 -3159.8429 -2747.4611 1481.3899 11950.115
+ 880 275.93123 -3158.3584 -2747.9316 1523.5374 11950.115
+ 890 277.0215 -3159.2285 -2747.18 1506.1558 11950.115
+ 900 280.96237 -3162.483 -2744.5728 1428.4183 11950.115
+ 910 287.37962 -3167.6183 -2740.1628 1303.0268 11950.115
+ 920 294.56731 -3171.6765 -2733.5299 1177.748 11950.115
+ 930 300.63273 -3174.0842 -2726.9158 1078.7393 11950.115
+ 940 304.10943 -3175.9847 -2723.645 1007.7154 11950.115
+ 950 304.64845 -3176.6263 -2723.4848 976.37917 11950.115
+ 960 303.36343 -3176.4694 -2725.2393 971.40749 11950.115
+ 970 302.57138 -3177.5541 -2727.5021 954.01115 11950.115
+ 980 304.2593 -3179.2101 -2726.6475 919.74949 11950.115
+ 990 307.69959 -3180.9631 -2723.2833 874.9594 11950.115
+ 1000 310.3971 -3181.9675 -2720.2753 842.81184 11950.115
+Loop time of 0.133894 on 4 procs for 1000 steps with 500 atoms
+
+Performance: 645.285 ns/day, 0.037 hours/ns, 7468.580 timesteps/s
+98.8% CPU use with 4 MPI tasks x 1 OpenMP threads
+
+MPI task timing breakdown:
+Section | min time | avg time | max time |%varavg| %total
+---------------------------------------------------------------
+Pair | 0.065271 | 0.071043 | 0.07818 | 1.9 | 53.06
+Bond | 5.6505e-05 | 6.5565e-05 | 7.7724e-05 | 0.1 | 0.05
+Neigh | 0.0011396 | 0.0012607 | 0.0013669 | 0.2 | 0.94
+Comm | 0.033866 | 0.040269 | 0.045386 | 2.6 | 30.08
+Output | 0.0019252 | 0.0020776 | 0.0023642 | 0.4 | 1.55
+Modify | 0.012141 | 0.013629 | 0.01486 | 0.9 | 10.18
+Other | | 0.005549 | | | 4.14
+
+Nlocal: 125 ave 127 max 123 min
+Histogram: 1 0 1 0 0 0 0 1 0 1
+Nghost: 871.25 ave 882 max 863 min
+Histogram: 2 0 0 0 0 0 1 0 0 1
+Neighs: 3691.75 ave 3808 max 3563 min
+Histogram: 1 0 0 0 1 0 1 0 0 1
+
+Total # of neighbors = 14767
+Ave neighs/atom = 29.534
+Ave special neighs/atom = 0
+Neighbor list builds = 5
+Dangerous builds = 0
+
+#write_data lj-out.data
+Total wall time: 0:00:00
diff --git a/examples/USER/misc/grem/lj-temper/0/lj.data b/examples/USER/misc/grem/lj-temper/0/lj.data
new file mode 100644
index 000000000..36b772dec
--- /dev/null
+++ b/examples/USER/misc/grem/lj-temper/0/lj.data
@@ -0,0 +1,1022 @@
+LAMMPS data file via write_data, version 9 Nov 2016, timestep = 100000
+
+500 atoms
+1 atom types
+
+1.2703356920800921e+00 2.3729664307913040e+01 xlo xhi
+1.2703356920800921e+00 2.3729664307913040e+01 ylo yhi
+1.2703356920800921e+00 2.3729664307913040e+01 zlo zhi
+
+Masses
+
+1 62.5
+
+Pair Coeffs # lj/cut
+
+1 1.1 2.8
+
+Atoms # full
+
+412 0 1 0.0000000000000000e+00 2.7487691030899351e+00 2.9555526296347545e+00 3.3982707479358045e+00 0 0 1
+9 0 1 0.0000000000000000e+00 7.2702991546995692e+00 3.0837465242203752e+00 3.4975129373520208e+00 0 0 0
+432 0 1 0.0000000000000000e+00 1.0323807166397390e+01 3.7127704850873759e+00 4.3304158893283891e+00 0 0 1
+105 0 1 0.0000000000000000e+00 1.2403028151620173e+01 1.2709972546488819e+00 4.0486981865797658e+00 0 0 0
+440 0 1 0.0000000000000000e+00 1.2482921634550580e+01 3.9876102015942401e+00 2.0949244235154092e+00 0 0 1
+139 0 1 0.0000000000000000e+00 1.4659493179032536e+01 3.6987946337914481e+00 4.1486107258054403e+00 0 0 0
+114 0 1 0.0000000000000000e+00 1.4635636527607845e+01 1.8043422027583322e+00 1.6511436501377039e+00 0 0 0
+35 0 1 0.0000000000000000e+00 1.6898995693691447e+01 4.2069406441086343e+00 2.1211828679224967e+00 0 0 0
+1 0 1 0.0000000000000000e+00 1.9060094884045213e+01 1.8938281329586868e+00 1.8094560849237822e+00 -1 0 0
+134 0 1 0.0000000000000000e+00 1.6807533383189373e+01 1.3933357013489116e+00 3.8405022950411332e+00 0 0 0
+200 0 1 0.0000000000000000e+00 2.0056059084935427e+01 2.0595825556986931e+00 4.6897217865240766e+00 0 1 0
+22 0 1 0.0000000000000000e+00 2.0056224715400486e+01 4.7362216079764572e+00 2.6985887077364450e+00 -1 0 0
+2 0 1 0.0000000000000000e+00 1.7688202715637324e+01 4.1203725155435293e+00 5.0768267194580110e+00 -1 0 0
+107 0 1 0.0000000000000000e+00 2.2203061960361879e+01 2.4796152817406800e+00 2.4641808681179000e+00 -1 0 0
+51 0 1 0.0000000000000000e+00 2.9982853002946879e+00 7.4752740106418285e+00 3.9047493976139398e+00 0 0 0
+423 0 1 0.0000000000000000e+00 2.9713752515429155e+00 5.6939428254858120e+00 1.3599681342919656e+00 0 0 1
+32 0 1 0.0000000000000000e+00 5.1002034927417057e+00 7.9530931869056003e+00 1.6443201147961317e+00 0 0 0
+427 0 1 0.0000000000000000e+00 5.1692494598148109e+00 5.2974269608411140e+00 3.5976830352238029e+00 0 0 1
+132 0 1 0.0000000000000000e+00 6.0511295689747717e+00 8.1772013044886034e+00 4.7556392464484301e+00 0 0 0
+429 0 1 0.0000000000000000e+00 8.3340024172423988e+00 6.1367777353011768e+00 4.4803379689296543e+00 0 0 1
+26 0 1 0.0000000000000000e+00 8.3164052739793100e+00 8.6140822257259746e+00 2.3639010639452813e+00 0 0 0
+30 0 1 0.0000000000000000e+00 7.4254467022349075e+00 5.7328754038674115e+00 1.5219372562944880e+00 0 0 0
+312 0 1 0.0000000000000000e+00 1.0362843010144982e+01 6.1765619932191749e+00 2.1580187448498207e+00 0 0 1
+232 0 1 0.0000000000000000e+00 1.0447944424201186e+01 8.1439137658273797e+00 4.6478988326338619e+00 0 0 0
+137 0 1 0.0000000000000000e+00 1.2529175308988975e+01 6.0605039768678006e+00 4.3005892901212279e+00 0 0 0
+460 0 1 0.0000000000000000e+00 1.4662127333800500e+01 6.4475443080016550e+00 2.2906321043333859e+00 0 0 1
+33 0 1 0.0000000000000000e+00 1.2592537985454817e+01 8.6206000861307572e+00 2.5462983829716559e+00 0 0 0
+21 0 1 0.0000000000000000e+00 1.8001466799141173e+01 7.0409248623460732e+00 3.1625937168491891e+00 -1 0 0
+8 0 1 0.0000000000000000e+00 2.3034634988144497e+01 5.2205159699087487e+00 3.5372853246350040e+00 -1 0 0
+61 0 1 0.0000000000000000e+00 2.1136175734598794e+01 7.6605813259259419e+00 3.8251134916424201e+00 -1 0 0
+39 0 1 0.0000000000000000e+00 2.3321428434926567e+01 7.8522188115103635e+00 1.7217634900332413e+00 0 0 0
+121 0 1 0.0000000000000000e+00 2.8808286037066879e+00 9.9973311189306884e+00 1.9984785985891980e+00 0 0 0
+48 0 1 0.0000000000000000e+00 5.9485341743162046e+00 1.0657260097160970e+01 2.8411766887648859e+00 0 0 0
+153 0 1 0.0000000000000000e+00 1.0656468233916485e+01 1.0930259715944214e+01 2.9273142100677525e+00 0 0 0
+226 0 1 0.0000000000000000e+00 1.3509872675510955e+01 1.1347211519116582e+01 3.8337788004889526e+00 0 0 0
+120 0 1 0.0000000000000000e+00 1.5849931111851014e+01 9.2203674352860823e+00 3.4087685553586375e+00 0 0 0
+113 0 1 0.0000000000000000e+00 1.5694124958354998e+01 1.1691207431388563e+01 1.4976118394480780e+00 0 0 0
+60 0 1 0.0000000000000000e+00 1.8665951696454908e+01 9.7841037923193959e+00 4.2160268188071246e+00 0 0 0
+44 0 1 0.0000000000000000e+00 1.8551078365007861e+01 1.2235581163285973e+01 2.6203427180492795e+00 -1 0 0
+196 0 1 0.0000000000000000e+00 1.5458000273744165e+01 1.5100364842247069e+00 8.8658097438293204e+00 0 1 0
+467 0 1 0.0000000000000000e+00 2.3225465942950272e+01 9.8799763518009520e+00 4.2436877920676324e+00 -1 0 1
+24 0 1 0.0000000000000000e+00 2.0877684443000870e+01 1.0127682566847071e+01 2.1275538703981116e+00 -1 0 0
+157 0 1 0.0000000000000000e+00 2.0940832854124064e+01 1.1982368000662403e+01 4.5099844083434100e+00 0 0 0
+28 0 1 0.0000000000000000e+00 2.6070508545531110e+00 2.3990872752811798e+00 7.7891969723895524e+00 0 0 0
+25 0 1 0.0000000000000000e+00 2.8120572586268606e+00 4.8450782241486987e+00 5.7712651972737437e+00 0 0 0
+108 0 1 0.0000000000000000e+00 5.0633063689605429e+00 2.5469771233992464e+00 5.6285230549248926e+00 0 0 0
+101 0 1 0.0000000000000000e+00 6.1247224474587298e+00 2.9971357447428408e+00 8.5127544032704137e+00 0 0 0
+103 0 1 0.0000000000000000e+00 8.0886524788551561e+00 3.4318981376130733e+00 6.2365140563413561e+00 0 0 0
+206 0 1 0.0000000000000000e+00 1.2489918772129290e+01 3.2059061617468823e+00 6.3714947495418262e+00 0 0 0
+112 0 1 0.0000000000000000e+00 1.0180041877875135e+01 2.9247280583758695e+00 8.5080536459564495e+00 0 0 0
+214 0 1 0.0000000000000000e+00 1.5477509033386648e+01 3.8433842015818978e+00 7.2319335022939946e+00 0 0 0
+17 0 1 0.0000000000000000e+00 1.8547609017244991e+01 4.3481575991748063e+00 7.9247817587213403e+00 0 0 0
+484 0 1 0.0000000000000000e+00 1.7815063819585841e+01 1.5398120733972107e+00 6.8248914302400694e+00 -1 1 1
+82 0 1 0.0000000000000000e+00 2.2884074211123114e+01 2.7210333550475116e+00 5.5742923538178335e+00 -1 1 0
+182 0 1 0.0000000000000000e+00 2.0893165336318884e+01 2.1768441315735876e+00 7.6931014436909821e+00 -1 1 0
+194 0 1 0.0000000000000000e+00 2.2895866723407835e+01 4.6901015093487004e+00 7.9498448819107725e+00 0 1 0
+19 0 1 0.0000000000000000e+00 2.0834458173092123e+01 5.0298331304366428e+00 5.6676765381803964e+00 0 0 0
+27 0 1 0.0000000000000000e+00 3.7132948657698872e+00 7.8386249085972102e+00 6.8067125563119584e+00 0 0 0
+126 0 1 0.0000000000000000e+00 3.8123705970269999e+00 5.2345438736884233e+00 8.6752790282613734e+00 0 0 0
+11 0 1 0.0000000000000000e+00 6.0269754141051557e+00 5.6872589230879189e+00 6.6273678856423581e+00 0 0 0
+127 0 1 0.0000000000000000e+00 8.3314762899526613e+00 7.7702277407311957e+00 7.0081878758554765e+00 0 0 0
+230 0 1 0.0000000000000000e+00 1.0521100573890047e+01 5.5393215930537574e+00 6.5491264500193340e+00 0 0 0
+118 0 1 0.0000000000000000e+00 1.1247965699221909e+01 8.4178152488956677e+00 7.9260535608212974e+00 0 0 0
+115 0 1 0.0000000000000000e+00 1.5758545846068930e+01 6.4731809160013523e+00 5.2205352462495505e+00 0 0 0
+355 0 1 0.0000000000000000e+00 1.3405844872866203e+01 6.0742836575335017e+00 7.4137122287400468e+00 0 0 0
+119 0 1 0.0000000000000000e+00 1.6397491648203825e+01 6.7674115590512454e+00 8.2818158554255916e+00 0 0 0
+57 0 1 0.0000000000000000e+00 1.8655744189774087e+01 7.2135499830299992e+00 6.0730060271695008e+00 0 0 0
+173 0 1 0.0000000000000000e+00 1.8710622718959513e+01 9.3117990359782716e+00 8.3711447678439193e+00 0 0 0
+37 0 1 0.0000000000000000e+00 2.3182092267939169e+01 7.1241994581181203e+00 6.2288373832289823e+00 0 0 0
+233 0 1 0.0000000000000000e+00 2.0658197731003867e+01 6.8926912301192331e+00 8.2373873693134314e+00 0 0 0
+99 0 1 0.0000000000000000e+00 3.7838130855175600e+00 1.0486636865344776e+01 4.9241318179528832e+00 1 0 0
+163 0 1 0.0000000000000000e+00 1.5391966021638461e+00 1.0093924696004743e+01 7.3469157525364812e+00 0 0 0
+143 0 1 0.0000000000000000e+00 8.1980651041049235e+00 1.0439054744568331e+01 4.9070832926272701e+00 0 0 0
+38 0 1 0.0000000000000000e+00 5.9828699273263934e+00 1.0058164294420262e+01 7.2685267726343152e+00 1 0 0
+145 0 1 0.0000000000000000e+00 8.8540955368761800e+00 1.0517897782699176e+01 7.9774842463251385e+00 0 0 0
+47 0 1 0.0000000000000000e+00 1.1131468616107519e+01 1.0879152045203428e+01 5.9057760362217628e+00 0 0 0
+136 0 1 0.0000000000000000e+00 1.3582660418668654e+01 8.7828328782245570e+00 5.4876203328883939e+00 0 0 0
+246 0 1 0.0000000000000000e+00 1.3779192951719182e+01 1.1315762522019075e+01 6.9517827547842641e+00 0 0 0
+326 0 1 0.0000000000000000e+00 1.6333314484419727e+01 1.1937377878430322e+01 4.8164843483698254e+00 0 0 0
+151 0 1 0.0000000000000000e+00 1.6285128392338699e+01 9.3586566497690349e+00 6.3981964040446249e+00 0 0 0
+234 0 1 0.0000000000000000e+00 1.8830047940978904e+01 1.1816737570225349e+01 6.5708795761882630e+00 0 0 0
+238 0 1 0.0000000000000000e+00 2.1200683573562582e+01 9.3968749227440771e+00 6.4444454870283012e+00 0 0 0
+140 0 1 0.0000000000000000e+00 2.1230877179128402e+01 1.1803816080631952e+01 8.1395284308089053e+00 0 0 0
+178 0 1 0.0000000000000000e+00 2.3196066917394141e+01 1.2421475371122639e+01 2.4403389306768224e+00 0 0 0
+353 0 1 0.0000000000000000e+00 1.6221798782159067e+00 4.7675332790135094e+00 1.0696041996358110e+01 1 0 0
+104 0 1 0.0000000000000000e+00 3.7188419221128699e+00 2.5306346529929016e+00 1.0400823393050981e+01 0 0 0
+225 0 1 0.0000000000000000e+00 7.9666238450745812e+00 2.3225729278092109e+00 1.0947925085269855e+01 0 0 0
+303 0 1 0.0000000000000000e+00 6.0486274313536184e+00 4.8898315303390500e+00 1.0869930763263673e+01 0 0 0
+211 0 1 0.0000000000000000e+00 1.1023146179750743e+01 2.9010479953939186e+00 1.1679223986722157e+01 0 0 0
+290 0 1 0.0000000000000000e+00 1.3267559900700739e+01 3.3520772459465218e+00 9.2447574272559478e+00 0 1 0
+216 0 1 0.0000000000000000e+00 1.4097987221792980e+01 3.5850198604297265e+00 1.2025006219648086e+01 0 0 0
+100 0 1 0.0000000000000000e+00 1.6420766675640223e+01 1.5490429720042678e+00 1.1787466943315074e+01 0 1 0
+334 0 1 0.0000000000000000e+00 1.6353426598028530e+01 4.1450859679692300e+00 1.0208787399754321e+01 0 0 0
+190 0 1 0.0000000000000000e+00 1.8677316706583149e+01 1.8941177559112352e+00 9.9069333304788767e+00 0 1 0
+318 0 1 0.0000000000000000e+00 1.8287599440937278e+01 3.7563970053225271e+00 1.2364348384566172e+01 0 0 0
+337 0 1 0.0000000000000000e+00 2.3237995944682694e+01 1.9142231458997294e+00 1.0011248279687905e+01 0 0 0
+124 0 1 0.0000000000000000e+00 2.0746020141300747e+01 3.9381220387218598e+00 1.0268264864728787e+01 -1 0 0
+239 0 1 0.0000000000000000e+00 2.0620743678128669e+01 1.3937883023741484e+00 1.2318468868791706e+01 0 0 0
+42 0 1 0.0000000000000000e+00 1.7639167382724248e+00 7.3634768753067110e+00 9.0042132809117703e+00 0 0 0
+321 0 1 0.0000000000000000e+00 3.7989440026778039e+00 7.0150244350323510e+00 1.1259149944477238e+01 0 0 0
+129 0 1 0.0000000000000000e+00 8.1896079366845669e+00 5.1169849604122835e+00 8.7383431111526058e+00 0 0 0
+224 0 1 0.0000000000000000e+00 6.0283776250439454e+00 7.3932995547656262e+00 9.0296179794281350e+00 0 0 0
+106 0 1 0.0000000000000000e+00 6.7760868472087967e+00 7.6398007337897251e+00 1.2033047989581226e+01 0 0 0
+204 0 1 0.0000000000000000e+00 8.9826399185685499e+00 7.9620374836752612e+00 1.0011061956192400e+01 0 0 0
+227 0 1 0.0000000000000000e+00 9.0129936451491908e+00 5.2494093615239859e+00 1.1636261703112467e+01 0 0 0
+240 0 1 0.0000000000000000e+00 1.1253902676503921e+01 5.5549244089750367e+00 9.6038175883426415e+00 0 0 0
+265 0 1 0.0000000000000000e+00 1.1720744058513157e+01 8.4360119909315152e+00 1.0881369050075786e+01 0 0 0
+373 0 1 0.0000000000000000e+00 1.2181356528842672e+01 5.7437349292802065e+00 1.2385898222631784e+01 0 0 0
+330 0 1 0.0000000000000000e+00 1.4223744784947401e+01 8.7991019483793433e+00 8.6005986092109179e+00 0 0 0
+332 0 1 0.0000000000000000e+00 1.4302879040161983e+01 6.3073217778257140e+00 1.0329666044951615e+01 0 0 0
+231 0 1 0.0000000000000000e+00 1.8526734403366081e+01 6.2646443583037454e+00 1.0686638835244571e+01 0 0 0
+250 0 1 0.0000000000000000e+00 2.1974224920259047e+01 6.6766219611981308e+00 1.1157713278911697e+01 0 0 0
+323 0 1 0.0000000000000000e+00 4.5194026846298367e+00 9.9255178975246494e+00 1.2246561707042522e+01 0 0 0
+221 0 1 0.0000000000000000e+00 1.5862550731035674e+00 9.3103803329485224e+00 1.1618446402552308e+01 0 0 0
+237 0 1 0.0000000000000000e+00 3.7111458837715903e+00 9.7273989630123339e+00 9.4016586217368090e+00 1 0 0
+261 0 1 0.0000000000000000e+00 1.5789534405839720e+00 1.2004563281069828e+01 9.6004742574438211e+00 0 0 0
+243 0 1 0.0000000000000000e+00 4.7008150433036384e+00 1.2405493793083997e+01 1.0419969437128513e+01 0 0 0
+122 0 1 0.0000000000000000e+00 6.8607642337170560e+00 1.0050330739822437e+01 1.0221072643653363e+01 0 0 0
+172 0 1 0.0000000000000000e+00 1.1413628754159850e+01 1.0942590767747069e+01 9.3243401944952531e+00 0 0 0
+144 0 1 0.0000000000000000e+00 9.0805785141517159e+00 1.0085122190724503e+01 1.2271985447659297e+01 0 0 0
+229 0 1 0.0000000000000000e+00 1.4330804188186958e+01 1.0870641831836425e+01 1.0790832126463375e+01 0 0 0
+171 0 1 0.0000000000000000e+00 1.6606137730020574e+01 1.1614288708836289e+01 8.5132846802541238e+00 0 0 0
+150 0 1 0.0000000000000000e+00 1.6633421920961418e+01 8.7705132877724523e+00 1.0532349741676727e+01 0 0 0
+40 0 1 0.0000000000000000e+00 1.9807800025352829e+01 8.7267116201697714e+00 1.1438845621407467e+01 0 0 0
+175 0 1 0.0000000000000000e+00 1.8752495054744063e+01 1.1317342297990656e+01 1.0557645834981045e+01 0 0 0
+4 0 1 0.0000000000000000e+00 2.1945826104948761e+01 9.2527631401487795e+00 9.5958167295762085e+00 -1 0 0
+155 0 1 0.0000000000000000e+00 2.1634381070376513e+01 1.1693490433946836e+01 1.1539816301259622e+01 0 0 0
+241 0 1 0.0000000000000000e+00 3.8172057351576947e+00 1.2306415681102003e+01 7.5584608733558580e+00 0 0 0
+488 0 1 0.0000000000000000e+00 3.7165858405958772e+00 4.3598315960394469e+00 1.2921434610455462e+01 0 1 0
+324 0 1 0.0000000000000000e+00 1.6988233316898214e+00 4.2328905860235748e+00 1.5173488876489573e+01 0 0 0
+125 0 1 0.0000000000000000e+00 1.8784988164078498e+00 2.0106709389514403e+00 1.2684757766029239e+01 0 0 0
+401 0 1 0.0000000000000000e+00 4.7067003716770603e+00 4.6644747845770889e+00 1.5889547845403248e+01 0 0 0
+202 0 1 0.0000000000000000e+00 5.4073809570513367e+00 1.9738352884350867e+00 1.2916730731667812e+01 0 0 0
+433 0 1 0.0000000000000000e+00 8.2631998864324583e+00 2.2250688273432511e+00 1.4153543806544567e+01 0 0 0
+305 0 1 0.0000000000000000e+00 6.8287691945333098e+00 4.8870970464579777e+00 1.3766778900669854e+01 0 0 0
+492 0 1 0.0000000000000000e+00 1.0472470442331373e+01 4.3051189798520912e+00 1.4360140791010554e+01 0 1 0
+331 0 1 0.0000000000000000e+00 1.0740366887519460e+01 1.8643220547537673e+00 1.6284144803213245e+01 0 0 0
+356 0 1 0.0000000000000000e+00 1.2764342419788589e+01 2.1078697606745593e+00 1.4139132187438223e+01 0 0 0
+314 0 1 0.0000000000000000e+00 1.6058410102734587e+01 3.1055663604416952e+00 1.4298848527161841e+01 0 0 0
+340 0 1 0.0000000000000000e+00 1.3718336987415624e+01 4.8547891306543995e+00 1.4684745728822955e+01 0 0 0
+311 0 1 0.0000000000000000e+00 1.9971379211194222e+01 3.4749910848331740e+00 1.5108414754110504e+01 0 0 0
+18 0 1 0.0000000000000000e+00 2.2172703799970108e+01 3.9630489609898589e+00 1.3134650102617821e+01 0 0 0
+300 0 1 0.0000000000000000e+00 2.2473571350849742e+01 1.6542086489984362e+00 1.5099233775817119e+01 0 1 0
+117 0 1 0.0000000000000000e+00 1.5089568053606999e+00 6.6067808247887756e+00 1.3227096031548284e+01 1 0 0
+188 0 1 0.0000000000000000e+00 4.7335279168869207e+00 7.1629284047758448e+00 1.4073356429470516e+01 0 1 0
+302 0 1 0.0000000000000000e+00 6.8257048276279573e+00 6.8142413860146638e+00 1.6269436076452781e+01 0 0 0
+228 0 1 0.0000000000000000e+00 9.2472188857977731e+00 7.2647710855199765e+00 1.4126591295320118e+01 0 0 0
+167 0 1 0.0000000000000000e+00 1.2323111147243207e+01 7.8766667953244491e+00 1.4870897286106114e+01 0 0 0
+455 0 1 0.0000000000000000e+00 1.5438946640865559e+01 7.5891561801228269e+00 1.5403063012231740e+01 0 0 0
+333 0 1 0.0000000000000000e+00 1.4307769153462228e+01 8.2355515799801076e+00 1.2678554339440163e+01 0 0 0
+336 0 1 0.0000000000000000e+00 1.6119121199452422e+01 5.9009253128513617e+00 1.2682435868283017e+01 0 0 0
+458 0 1 0.0000000000000000e+00 1.7874267032829295e+01 5.7512150564645799e+00 1.5359896697240329e+01 0 0 0
+179 0 1 0.0000000000000000e+00 1.7810412050455774e+01 8.2132044085714124e+00 1.3583674858998156e+01 0 0 0
+349 0 1 0.0000000000000000e+00 1.9431685977398939e+01 8.2872091738288809e+00 1.6077607757106108e+01 0 0 0
+20 0 1 0.0000000000000000e+00 1.9879968314704740e+01 6.1793086984338528e+00 1.3262270843901982e+01 0 0 0
+212 0 1 0.0000000000000000e+00 2.1796281117526878e+01 6.0569466966177616e+00 1.5716842678470099e+01 0 0 0
+244 0 1 0.0000000000000000e+00 2.1750603303119501e+01 8.7381456927786871e+00 1.3625585883707327e+01 -1 0 0
+123 0 1 0.0000000000000000e+00 2.4697012087014105e+00 9.4840350149818988e+00 1.4520571766441462e+01 0 0 0
+242 0 1 0.0000000000000000e+00 4.6829715770945679e+00 1.1574104919429400e+01 1.4795508987101814e+01 0 0 0
+257 0 1 0.0000000000000000e+00 2.3053635905758689e+00 1.2073006000559811e+01 1.2695365797648815e+01 1 0 0
+222 0 1 0.0000000000000000e+00 6.9299585207103060e+00 9.4290311248107859e+00 1.4504682118231141e+01 0 0 0
+343 0 1 0.0000000000000000e+00 7.6093976202518316e+00 1.2218598451854879e+01 1.5698788925426717e+01 0 0 0
+445 0 1 0.0000000000000000e+00 2.0209705085993701e+01 9.9371471584157796e+00 2.1482148118128094e+01 -1 0 0
+306 0 1 0.0000000000000000e+00 9.7826431575651753e+00 9.9345944719352115e+00 1.5368589522057718e+01 0 0 0
+251 0 1 0.0000000000000000e+00 1.1912624215815171e+01 1.0618201611903649e+01 1.3076379598643440e+01 0 0 0
+345 0 1 0.0000000000000000e+00 1.1959236609865679e+01 1.2054788117685478e+01 1.5892469311732746e+01 0 0 0
+253 0 1 0.0000000000000000e+00 1.4310776855970573e+01 1.0154666691550290e+01 1.5137717774321306e+01 0 0 0
+256 0 1 0.0000000000000000e+00 1.9542755623436076e+01 1.0683042769312580e+01 1.3845723707401422e+01 0 0 0
+254 0 1 0.0000000000000000e+00 1.7119834223492042e+01 1.0254261826890128e+01 1.5957490613191768e+01 0 0 0
+260 0 1 0.0000000000000000e+00 1.6593601969222703e+01 1.0717046576536752e+01 1.2824320893523289e+01 0 0 0
+236 0 1 0.0000000000000000e+00 2.2326205479789500e+01 1.1860908890634581e+01 1.4728020218588622e+01 0 0 0
+383 0 1 0.0000000000000000e+00 3.0095856554017937e+00 3.0958940633970804e+00 1.7838483295258079e+01 0 1 0
+85 0 1 0.0000000000000000e+00 1.3063825271481910e+00 2.7280581610638803e+00 2.0087325899929741e+01 0 1 -1
+388 0 1 0.0000000000000000e+00 6.2321363782931449e+00 1.8359275554489276e+00 1.6406775450035518e+01 0 1 0
+400 0 1 0.0000000000000000e+00 6.5519203297333455e+00 3.9077336044683428e+00 1.8714084280528859e+01 0 1 0
+90 0 1 0.0000000000000000e+00 8.3564074594193727e+00 4.0446732281907636e+00 1.6536472084851766e+01 0 1 -1
+23 0 1 0.0000000000000000e+00 2.3149901038885780e+01 1.0532601754493628e+01 2.2521106653592923e+01 -1 0 -1
+316 0 1 0.0000000000000000e+00 1.1855510783986885e+01 2.1005601552578268e+00 1.9161675614420179e+01 0 0 0
+434 0 1 0.0000000000000000e+00 9.5740058250371760e+00 4.3045017005792454e+00 1.9328305936938690e+01 0 0 0
+375 0 1 0.0000000000000000e+00 1.2003498156307417e+01 4.5615199738434562e+00 1.7147746246949310e+01 0 0 0
+410 0 1 0.0000000000000000e+00 1.4043452095134418e+01 2.2600493505110713e+00 1.6759022718922893e+01 0 0 0
+53 0 1 0.0000000000000000e+00 1.3778773062431965e+01 4.5512048140409735e+00 1.9516174249579024e+01 0 0 -1
+338 0 1 0.0000000000000000e+00 1.5869272697063964e+01 2.3386874088116487e+00 1.9066937225050296e+01 0 0 0
+357 0 1 0.0000000000000000e+00 1.5463243992366548e+01 4.9017292811203399e+00 1.7118683592339607e+01 0 0 0
+296 0 1 0.0000000000000000e+00 1.7744829746354725e+01 2.8158469626540916e+00 1.6890281257407999e+01 0 1 0
+34 0 1 0.0000000000000000e+00 1.9118609458144583e+01 2.7117957242144861e+00 1.9888676791193028e+01 0 0 -1
+320 0 1 0.0000000000000000e+00 2.1536722529407868e+01 3.2614605337612601e+00 1.7590933265343871e+01 0 0 0
+322 0 1 0.0000000000000000e+00 2.3412950340734464e+00 7.0009194210600958e+00 1.5928490688957005e+01 0 0 0
+384 0 1 0.0000000000000000e+00 4.5012910760413156e+00 6.1827548098438374e+00 1.8566017471420381e+01 0 1 0
+259 0 1 0.0000000000000000e+00 2.0636112699243809e+00 8.3105769330065922e+00 1.8803438220864649e+01 1 0 0
+402 0 1 0.0000000000000000e+00 7.6312653148662521e+00 6.6923017505158846e+00 1.9269215240894074e+01 0 0 0
+208 0 1 0.0000000000000000e+00 9.9464863005492248e+00 6.8186282695679150e+00 1.7168632098487819e+01 0 0 0
+351 0 1 0.0000000000000000e+00 1.1486771741875604e+01 6.5790274479849664e+00 1.9780961191797442e+01 0 0 0
+271 0 1 0.0000000000000000e+00 1.3618173727708825e+01 7.1747282929093235e+00 1.7702062706105327e+01 0 0 0
+335 0 1 0.0000000000000000e+00 1.9273713485919739e+01 5.1978777128364078e+00 1.7900794917034027e+01 0 0 0
+379 0 1 0.0000000000000000e+00 1.6995402949981752e+01 7.4935768169981838e+00 1.8082607081107216e+01 0 0 0
+315 0 1 0.0000000000000000e+00 1.6957586494088510e+01 4.8401435530571213e+00 2.0224204422756895e+01 0 0 0
+219 0 1 0.0000000000000000e+00 2.3604730284771126e+01 5.4789998486149250e+00 1.8233869732059940e+01 0 0 0
+304 0 1 0.0000000000000000e+00 2.1420918607180344e+01 7.5109055734691053e+00 1.8388791409265174e+01 -1 0 0
+441 0 1 0.0000000000000000e+00 4.6511197824891966e+00 8.8799323572572018e+00 1.6677263697583747e+01 0 0 0
+342 0 1 0.0000000000000000e+00 2.3124164044072710e+00 1.1147134874897560e+01 1.7147658852378996e+01 0 0 0
+308 0 1 0.0000000000000000e+00 5.4443943060946145e+00 8.9260593568026287e+00 1.9600689853542875e+01 0 0 0
+428 0 1 0.0000000000000000e+00 5.3440074452548423e+00 1.1849601422480788e+01 1.7851768473455397e+01 0 0 0
+325 0 1 0.0000000000000000e+00 7.5945386382489009e+00 9.6048220645041873e+00 1.7553431104839174e+01 0 0 0
+328 0 1 0.0000000000000000e+00 9.6272621143478574e+00 8.8649657860933573e+00 1.9680590655706446e+01 0 0 0
+327 0 1 0.0000000000000000e+00 9.8254436888289245e+00 1.1779423923674706e+01 1.7994214796265826e+01 0 0 0
+350 0 1 0.0000000000000000e+00 1.1840090221517531e+01 9.4514913257818591e+00 1.7308402612382153e+01 0 0 0
+453 0 1 0.0000000000000000e+00 1.2856009847892830e+01 1.2072918444867010e+01 1.8799665098536263e+01 0 0 0
+374 0 1 0.0000000000000000e+00 1.5137857574795502e+01 9.9267959872822225e+00 1.8073653954045085e+01 0 0 0
+444 0 1 0.0000000000000000e+00 1.9982286432036460e+01 1.1729259747206175e+01 1.6663852311803595e+01 -1 0 0
+280 0 1 0.0000000000000000e+00 1.7300507439024280e+01 1.2307126008788456e+01 1.8808899184640158e+01 0 0 0
+354 0 1 0.0000000000000000e+00 1.9153840109613981e+01 9.5901303749552032e+00 1.8643447833527567e+01 0 0 0
+437 0 1 0.0000000000000000e+00 2.2660451396408675e+01 9.3850524271147222e+00 1.6465773567730480e+01 0 0 0
+422 0 1 0.0000000000000000e+00 2.2480200252317953e+01 1.0567929813607218e+01 1.9327116214809575e+01 -1 0 0
+421 0 1 0.0000000000000000e+00 4.1771030216034530e+00 3.3956663196639854e+00 2.0587400989972334e+01 0 0 0
+88 0 1 0.0000000000000000e+00 2.0346681738055930e+00 2.8943782089800223e+00 2.2996193533846942e+01 0 1 -1
+431 0 1 0.0000000000000000e+00 7.5111451398175779e+00 3.7523620155275084e+00 2.1541430714325895e+01 0 0 0
+466 0 1 0.0000000000000000e+00 5.1814832875944692e+00 3.5389102266713262e+00 2.3423651264933692e+01 0 1 0
+31 0 1 0.0000000000000000e+00 9.4358527123876410e+00 1.4238194293843689e+00 2.1252993807606885e+01 0 0 -1
+12 0 1 0.0000000000000000e+00 1.1672932502213381e+01 3.7758742405710470e+00 2.1750283729918308e+01 0 0 -1
+457 0 1 0.0000000000000000e+00 2.0170940860323618e+01 1.2472859153349519e+01 1.9676731376006458e+01 0 0 0
+443 0 1 0.0000000000000000e+00 1.8088215034043859e+01 9.6772072486433292e+00 2.3584339423111302e+01 -1 0 0
+435 0 1 0.0000000000000000e+00 1.3797835836513732e+01 1.5781677489676680e+00 2.1262547273813340e+01 0 0 0
+279 0 1 0.0000000000000000e+00 1.4728312303127202e+01 4.6506941650538121e+00 2.2329707079977506e+01 0 0 0
+414 0 1 0.0000000000000000e+00 1.6838998070092874e+01 2.3931119226660491e+00 2.2120597711645992e+01 0 0 0
+459 0 1 0.0000000000000000e+00 1.9026811414504056e+01 4.5946677440359345e+00 2.2494364512532982e+01 0 0 0
+359 0 1 0.0000000000000000e+00 2.1410742427063877e+01 2.5356440830738878e+00 2.1995811871811906e+01 0 0 0
+419 0 1 0.0000000000000000e+00 2.1442059865875887e+01 4.9820540388461154e+00 2.0187300341656155e+01 0 0 0
+483 0 1 0.0000000000000000e+00 2.0952674685986556e+00 5.5415634915538750e+00 2.1032710126394473e+01 0 1 0
+403 0 1 0.0000000000000000e+00 3.0823182891556860e+00 8.3296025236940014e+00 2.1796024645064328e+01 0 0 0
+329 0 1 0.0000000000000000e+00 5.3270342643676463e+00 6.0824777474074470e+00 2.1593571601116626e+01 0 0 0
+52 0 1 0.0000000000000000e+00 7.4130787702102623e+00 8.5750885956550569e+00 2.1897885859780519e+01 0 0 -1
+425 0 1 0.0000000000000000e+00 9.3527422835921676e+00 6.0862128501040420e+00 2.1846854959125817e+01 0 0 0
+133 0 1 0.0000000000000000e+00 1.2533672660116183e+01 6.8033367093902042e+00 2.2584253881590833e+01 0 0 -1
+360 0 1 0.0000000000000000e+00 1.4914320365590362e+01 7.1754724401233752e+00 2.0272562624353757e+01 0 0 0
+438 0 1 0.0000000000000000e+00 1.9262873175529297e+01 7.0429221463306222e+00 2.0368792260561264e+01 0 0 0
+454 0 1 0.0000000000000000e+00 1.7094722267676246e+01 6.7517025083238487e+00 2.2711975790015810e+01 0 0 0
+424 0 1 0.0000000000000000e+00 2.0260831872444307e+01 7.3061054768925580e+00 2.3334720020981315e+01 -1 0 0
+86 0 1 0.0000000000000000e+00 2.2269995422902664e+01 5.1476964692156395e+00 2.3122375663824265e+01 -1 1 -1
+6 0 1 0.0000000000000000e+00 2.2448581164211372e+01 7.8437317318799353e+00 2.1210812800704336e+01 -1 0 -1
+447 0 1 0.0000000000000000e+00 3.1806953650738867e+00 1.1142594503806224e+01 2.0097359512154277e+01 0 0 0
+49 0 1 0.0000000000000000e+00 7.3148002469549489e+00 1.1309678952477070e+01 2.0245068626979204e+01 0 0 -1
+83 0 1 0.0000000000000000e+00 5.1843589822634124e+00 1.0735976039310234e+01 2.2362632909717661e+01 0 0 -1
+41 0 1 0.0000000000000000e+00 8.2640443651008262e+00 1.1333127642083207e+01 2.3120759041129780e+01 0 0 -1
+55 0 1 0.0000000000000000e+00 1.0320017666233548e+01 1.1695464508422196e+01 2.0888749727726136e+01 0 0 -1
+45 0 1 0.0000000000000000e+00 1.0539115071336100e+01 8.9919354255207615e+00 2.2684984304908870e+01 0 0 -1
+436 0 1 0.0000000000000000e+00 1.2849152635109705e+01 9.4437009117057116e+00 2.0418168152606320e+01 0 0 0
+77 0 1 0.0000000000000000e+00 1.2603959739057283e+01 1.1182747732107805e+01 2.2962552687847428e+01 0 0 -1
+477 0 1 0.0000000000000000e+00 1.4792035136508630e+01 8.9540985756004510e+00 2.2918803178300447e+01 0 0 0
+442 0 1 0.0000000000000000e+00 1.5013583137107085e+01 1.1645967985639512e+01 2.0880078735053551e+01 -1 0 0
+59 0 1 0.0000000000000000e+00 1.7894368733915087e+01 1.2300972734904827e+01 2.2042148524624029e+01 0 0 -1
+339 0 1 0.0000000000000000e+00 1.7053828897475718e+01 9.3249257638653518e+00 2.0597422479170884e+01 0 0 0
+391 0 1 0.0000000000000000e+00 8.5296052206164905e+00 1.4422039366832451e+00 1.8334583401211617e+01 0 1 0
+382 0 1 0.0000000000000000e+00 3.1403236296990800e+00 1.3783961094663919e+00 1.5492890577935844e+01 0 1 0
+247 0 1 0.0000000000000000e+00 6.8695640787491294e+00 1.2145869865112424e+01 1.2565773481401775e+01 0 0 0
+116 0 1 0.0000000000000000e+00 9.5107559246257516e+00 3.4673975727176427e+00 2.3723235863521044e+01 0 0 -1
+43 0 1 0.0000000000000000e+00 3.7169572131461219e+00 1.2851215927701306e+01 3.1862796747775115e+00 0 0 0
+165 0 1 0.0000000000000000e+00 3.6617196676955404e+00 1.5350916799363336e+01 1.6071143410009427e+00 0 0 0
+79 0 1 0.0000000000000000e+00 8.2995326513944292e+00 1.2943308399108874e+01 3.0119625986141179e+00 1 0 0
+288 0 1 0.0000000000000000e+00 6.2826692852662704e+00 1.5369834390284709e+01 3.5096788537845627e+00 0 0 0
+285 0 1 0.0000000000000000e+00 8.9612559628548887e+00 1.2563822705702913e+01 1.0367889782324411e+01 0 0 0
+146 0 1 0.0000000000000000e+00 1.1278652916704882e+01 1.3752596144610193e+01 3.9637449073166375e+00 0 0 0
+148 0 1 0.0000000000000000e+00 9.1692389142152280e+00 1.5915799035379585e+01 4.2960135786548896e+00 0 0 0
+135 0 1 0.0000000000000000e+00 1.3459425414350775e+01 1.3819440592200609e+01 2.0398096933482828e+00 0 0 0
+156 0 1 0.0000000000000000e+00 1.6364017909170613e+01 1.4405205712121454e+01 3.1020292395088527e+00 0 0 0
+293 0 1 0.0000000000000000e+00 1.8864434764208411e+01 1.4559003117069961e+01 4.5561361435767482e+00 0 0 0
+161 0 1 0.0000000000000000e+00 1.3772816832000943e+00 1.4893102522065025e+01 3.9656163934551123e+00 0 0 0
+75 0 1 0.0000000000000000e+00 2.1027977849108645e+01 1.4703762899664380e+01 2.7054562418322785e+00 0 0 0
+210 0 1 0.0000000000000000e+00 9.9901141053480877e+00 1.9866696443658661e+01 1.2370799914198653e+01 0 -1 0
+87 0 1 0.0000000000000000e+00 4.2184710536259029e+00 1.7764159318870338e+01 3.7877636245384965e+00 0 0 0
+184 0 1 0.0000000000000000e+00 7.1248993582763420e+00 1.8218675677968299e+01 4.8298849524466476e+00 0 0 0
+469 0 1 0.0000000000000000e+00 6.5414354763601592e+00 1.8314756017901658e+01 1.8074046381140882e+00 0 0 1
+142 0 1 0.0000000000000000e+00 1.1472750010838293e+01 1.6431829991792078e+01 2.3150508870766799e+00 0 0 0
+13 0 1 0.0000000000000000e+00 9.5050118097641043e+00 1.8678008731763391e+01 2.6195554143593176e+00 0 -1 0
+70 0 1 0.0000000000000000e+00 1.1868870237627196e+01 1.8524181916362398e+01 4.5898800692102286e+00 0 0 0
+71 0 1 0.0000000000000000e+00 1.4012931574943174e+01 1.6382762605350877e+01 3.7733477602351342e+00 0 0 0
+76 0 1 0.0000000000000000e+00 1.4199145240734717e+01 1.9110900789477263e+01 2.2625482425200150e+00 0 0 0
+480 0 1 0.0000000000000000e+00 1.6338728144079219e+01 1.7011383686708065e+01 1.6994528239192925e+00 0 0 1
+81 0 1 0.0000000000000000e+00 1.9083269816996754e+01 1.7281380221995008e+01 2.8974933032140759e+00 -1 0 0
+93 0 1 0.0000000000000000e+00 1.7014633025914861e+01 1.9595559622315655e+01 3.1451420441964095e+00 0 0 0
+3 0 1 0.0000000000000000e+00 1.5389295300131620e+00 1.7648544851057288e+01 2.7329023892693067e+00 0 -1 0
+197 0 1 0.0000000000000000e+00 2.1587286351212491e+01 1.9611333774367569e+01 3.2747926023703560e+00 0 0 0
+154 0 1 0.0000000000000000e+00 2.1536240605565233e+01 1.6951170395699481e+01 4.7922106493806496e+00 0 0 0
+223 0 1 0.0000000000000000e+00 2.1082617258189211e+00 2.0182908968788269e+01 4.1753511119009499e+00 0 -1 0
+102 0 1 0.0000000000000000e+00 4.3871113516449034e+00 2.0516186049749667e+01 1.9804074447470679e+00 0 -1 0
+98 0 1 0.0000000000000000e+00 1.9685751170427459e+00 2.2799020013347452e+01 2.3070247036610834e+00 1 0 0
+406 0 1 0.0000000000000000e+00 5.1067679696971160e+00 2.3294968119613078e+01 3.1069262158610211e+00 0 -1 1
+67 0 1 0.0000000000000000e+00 7.2435189762543608e+00 2.0913584758236635e+01 3.0005648807099079e+00 0 0 0
+166 0 1 0.0000000000000000e+00 5.1209742330487007e+00 2.0615436761141101e+01 5.0800780302265274e+00 0 0 0
+169 0 1 0.0000000000000000e+00 1.1614073203954673e+01 2.0943502245413047e+01 2.9423722730005784e+00 0 0 0
+111 0 1 0.0000000000000000e+00 9.4229230134276722e+00 2.3279560573632128e+01 3.2863952119734257e+00 0 -1 0
+193 0 1 0.0000000000000000e+00 9.5327238494297770e+00 2.0520072131207499e+01 5.0206841540330664e+00 0 0 0
+110 0 1 0.0000000000000000e+00 1.4749257625867095e+01 2.1639180020239198e+01 3.6846562456036382e+00 0 -1 0
+97 0 1 0.0000000000000000e+00 1.9126256467166307e+01 2.1839403286871296e+01 3.6550405441138243e+00 0 0 0
+16 0 1 0.0000000000000000e+00 1.6775918614037057e+01 2.2101771937617499e+01 1.4994136012575754e+00 0 -1 0
+64 0 1 0.0000000000000000e+00 2.2337273020759600e+01 2.2366984843659843e+01 4.3057286632942748e+00 -1 0 0
+138 0 1 0.0000000000000000e+00 1.4670177970093248e+00 1.2572402571127300e+01 5.7146545361904364e+00 1 0 0
+381 0 1 0.0000000000000000e+00 2.0850772845872562e+01 2.2082892349998630e+01 9.6243052321620688e+00 -1 0 0
+159 0 1 0.0000000000000000e+00 3.9676694260279270e+00 1.5012367134559973e+01 5.5705093592321244e+00 1 0 0
+141 0 1 0.0000000000000000e+00 1.7309631798930050e+00 1.4634466332615856e+01 7.7929269249173689e+00 0 0 0
+344 0 1 0.0000000000000000e+00 4.7383278099631152e+00 1.5107440009613601e+01 8.6276717861048446e+00 0 0 0
+128 0 1 0.0000000000000000e+00 6.0707467311074410e+00 1.2749054312108225e+01 5.1802543426495911e+00 0 0 0
+264 0 1 0.0000000000000000e+00 6.9000930346363525e+00 1.5636663825666387e+01 6.4454695057176963e+00 0 0 0
+248 0 1 0.0000000000000000e+00 6.8808014330041400e+00 1.2920466140147139e+01 8.1297252404138476e+00 0 0 0
+168 0 1 0.0000000000000000e+00 9.0917170901740114e+00 1.3261469970461579e+01 5.9291174315137711e+00 0 0 0
+147 0 1 0.0000000000000000e+00 1.1732545721521358e+01 1.3489674481550724e+01 7.5828185833012691e+00 0 0 0
+149 0 1 0.0000000000000000e+00 1.1883832628742988e+01 1.5938392474496926e+01 5.9094446972057320e+00 0 0 0
+269 0 1 0.0000000000000000e+00 9.0673507837442742e+00 1.5237569199504893e+01 8.7466421671956116e+00 0 0 0
+131 0 1 0.0000000000000000e+00 1.4063617900064280e+01 1.3902733401382214e+01 5.4190195705157844e+00 0 0 0
+277 0 1 0.0000000000000000e+00 1.6793633052838359e+01 1.4335622320186955e+01 6.9364434300217965e+00 0 0 0
+183 0 1 0.0000000000000000e+00 2.1514550977051265e+01 1.4349425506003671e+01 6.5550251915784612e+00 -1 0 0
+158 0 1 0.0000000000000000e+00 1.8277285024522483e+00 1.7070904189441055e+01 5.8682314477198316e+00 1 0 0
+263 0 1 0.0000000000000000e+00 4.8932437913522673e+00 1.7854293626602910e+01 6.9315816957314738e+00 0 0 0
+301 0 1 0.0000000000000000e+00 6.9969792065532026e+00 1.7423689242517664e+01 8.8749145811472907e+00 0 -1 0
+56 0 1 0.0000000000000000e+00 9.5343141108677329e+00 1.7735428007367474e+01 6.7058394394992380e+00 0 0 0
+152 0 1 0.0000000000000000e+00 1.2561796219713404e+01 1.8685869412629543e+01 7.5440512067572030e+00 0 0 0
+189 0 1 0.0000000000000000e+00 1.4532570282341013e+01 1.6456954768526138e+01 7.1275580284590241e+00 0 0 0
+191 0 1 0.0000000000000000e+00 1.4633118488391547e+01 1.9114670038802160e+01 5.4409746749289933e+00 0 0 0
+94 0 1 0.0000000000000000e+00 1.6809791587718266e+01 1.7056656664286553e+01 4.9152056536846889e+00 0 0 0
+91 0 1 0.0000000000000000e+00 1.9117136957946851e+01 1.6328583105612815e+01 7.2228118209269265e+00 0 0 0
+174 0 1 0.0000000000000000e+00 1.9174181314667447e+01 1.8935255939953670e+01 5.5206485167792367e+00 0 0 0
+14 0 1 0.0000000000000000e+00 1.6820996079656098e+01 1.8578646319429797e+01 7.6412106536887592e+00 0 -1 0
+201 0 1 0.0000000000000000e+00 1.9954649406158762e+01 1.9237576261669386e+01 8.5149641054417486e+00 -1 -1 0
+475 0 1 0.0000000000000000e+00 2.1928263676344539e+01 1.6954306638429156e+01 8.0052864787255302e+00 0 0 1
+162 0 1 0.0000000000000000e+00 2.2465737319215428e+01 1.9519724176991406e+01 6.1990581095168231e+00 -1 0 0
+164 0 1 0.0000000000000000e+00 2.9481903582067583e+00 2.0125944178710636e+01 7.1062252307811367e+00 0 0 0
+181 0 1 0.0000000000000000e+00 2.7285864722683777e+00 2.2883979699535633e+01 5.3135750030558251e+00 0 0 0
+186 0 1 0.0000000000000000e+00 4.9411676340952280e+00 2.2608984721313366e+01 7.5288779735959199e+00 0 0 0
+109 0 1 0.0000000000000000e+00 7.3849689646785661e+00 2.0185082601159330e+01 7.3515098162995054e+00 0 -1 0
+286 0 1 0.0000000000000000e+00 7.1178238850837481e+00 2.2744989768519737e+01 5.5777080466559168e+00 0 0 0
+268 0 1 0.0000000000000000e+00 8.1721085585668405e+00 2.3159474488465822e+01 8.5290590053205619e+00 0 0 0
+185 0 1 0.0000000000000000e+00 1.0106446054049824e+01 2.3351999146829325e+01 6.1568016484519408e+00 0 0 0
+392 0 1 0.0000000000000000e+00 1.0243412590449358e+01 2.0878017553928448e+01 8.0010693379528348e+00 0 0 0
+291 0 1 0.0000000000000000e+00 1.2448075391981289e+01 2.3097276080007578e+01 8.2642489947790132e+00 0 0 0
+235 0 1 0.0000000000000000e+00 1.2501423148663156e+01 2.1409590871772831e+01 5.8351431355847589e+00 0 -1 0
+95 0 1 0.0000000000000000e+00 1.4798252891506550e+01 2.3509095433957523e+01 6.1445146401009261e+00 0 0 0
+471 0 1 0.0000000000000000e+00 1.4822312049527614e+01 2.1027009936097762e+01 8.1350535608483625e+00 0 0 1
+420 0 1 0.0000000000000000e+00 1.7051463352660370e+01 2.1141804664481775e+01 5.7776240919369508e+00 0 -1 1
+84 0 1 0.0000000000000000e+00 2.0155854755127827e+01 2.1881476306509402e+01 6.4430810042694322e+00 -1 0 0
+282 0 1 0.0000000000000000e+00 2.3182279529238610e+01 2.2339128712316985e+01 7.3859260929203510e+00 -1 0 0
+377 0 1 0.0000000000000000e+00 2.3975996961911470e+00 1.4556652892905126e+01 1.0939311027815512e+01 1 0 0
+364 0 1 0.0000000000000000e+00 6.7727958383298237e+00 1.4738729840399191e+01 1.0874347264726447e+01 0 0 0
+68 0 1 0.0000000000000000e+00 2.2616048526539402e+01 2.1213314835665241e+01 1.1893848964481927e+01 -1 0 0
+252 0 1 0.0000000000000000e+00 1.2240553536592286e+01 1.3276759586260823e+01 1.1133251299078102e+01 0 0 0
+365 0 1 0.0000000000000000e+00 9.7997838388975769e+00 1.5295907335509993e+01 1.1644919239064203e+01 0 0 0
+249 0 1 0.0000000000000000e+00 1.2111341628774298e+01 1.6141535296040630e+01 9.2583523105997578e+00 0 0 0
+73 0 1 0.0000000000000000e+00 1.4539923115680834e+01 1.3886560418596330e+01 8.8074447778454061e+00 0 0 0
+292 0 1 0.0000000000000000e+00 1.4442132882993208e+01 1.5410244856286395e+01 1.1424794897732136e+01 0 0 0
+378 0 1 0.0000000000000000e+00 1.9083935189197472e+01 1.3914115647271107e+01 8.8796341388511273e+00 0 0 0
+272 0 1 0.0000000000000000e+00 1.6650003132824878e+01 1.3302384127490340e+01 1.1084816047887930e+01 0 0 0
+274 0 1 0.0000000000000000e+00 1.9711471708680641e+01 1.3944600429397145e+01 1.2183673079698009e+01 0 0 0
+199 0 1 0.0000000000000000e+00 1.6773030863668687e+01 1.6072140018073572e+01 9.4684628498991525e+00 0 0 0
+177 0 1 0.0000000000000000e+00 1.7375323364283037e+01 1.5944080475736225e+01 1.2477642553004033e+01 0 0 0
+273 0 1 0.0000000000000000e+00 2.2088878176042648e+01 1.4343709366258560e+01 9.7523866388857670e+00 0 0 0
+283 0 1 0.0000000000000000e+00 2.6292554702111599e+00 1.7520161611141901e+01 8.8033803450613597e+00 0 0 0
+258 0 1 0.0000000000000000e+00 2.4554812462863098e+00 1.9122483921268138e+01 1.1651733935360522e+01 1 0 0
+399 0 1 0.0000000000000000e+00 4.5120028854258400e+00 1.7095208006740201e+01 1.1028150688908225e+01 1 0 0
+266 0 1 0.0000000000000000e+00 4.8599348732381307e+00 1.9766536869065085e+01 9.4510875429399146e+00 0 0 0
+262 0 1 0.0000000000000000e+00 7.7406395693797219e+00 1.7661277386961750e+01 1.1772771587396067e+01 0 0 0
+281 0 1 0.0000000000000000e+00 1.8462399946816948e+01 2.1807550833290652e+01 1.1585791919440741e+01 -1 0 0
+170 0 1 0.0000000000000000e+00 9.9901241229459981e+00 1.8263905909195426e+01 9.5727425293444153e+00 0 0 0
+370 0 1 0.0000000000000000e+00 1.2068500562657727e+01 1.7600127733425918e+01 1.2015393297807060e+01 0 0 0
+176 0 1 0.0000000000000000e+00 1.4613772964504689e+01 1.8044887207252057e+01 9.8325505935275785e+00 0 0 0
+294 0 1 0.0000000000000000e+00 1.7647207281881293e+01 1.8653850440337244e+01 1.0732206273767295e+01 0 0 0
+198 0 1 0.0000000000000000e+00 1.9868174812609332e+01 1.6381334601174750e+01 1.0354910998639825e+01 0 0 0
+80 0 1 0.0000000000000000e+00 2.2872405286664250e+01 1.9704520468018956e+01 9.3403120911412998e+00 0 0 0
+180 0 1 0.0000000000000000e+00 2.2705895628643820e+01 1.7127061749947700e+01 1.0973384309521533e+01 0 0 0
+278 0 1 0.0000000000000000e+00 2.0396172364077305e+01 1.9407541613753128e+01 1.1451215360689096e+01 0 0 0
+218 0 1 0.0000000000000000e+00 2.7824894710258681e+00 2.1999634535345816e+01 9.6707228770824223e+00 1 -1 0
+289 0 1 0.0000000000000000e+00 7.8060310572143896e+00 2.0414636598004048e+01 1.0254849666824535e+01 0 0 0
+270 0 1 0.0000000000000000e+00 5.6003813363580388e+00 2.2732599866062639e+01 1.0491174689300845e+01 0 0 0
+393 0 1 0.0000000000000000e+00 1.2349721332155202e+01 2.0323782044237657e+01 1.0367173295824948e+01 0 0 0
+187 0 1 0.0000000000000000e+00 1.0283295781700131e+01 2.2474630470011949e+01 1.0608428755668239e+01 0 0 0
+209 0 1 0.0000000000000000e+00 1.3327559193094050e+01 2.3199746187730909e+01 1.1330997044528521e+01 0 -1 0
+192 0 1 0.0000000000000000e+00 1.5529973269766087e+01 2.0936616323426559e+01 1.1181610840735607e+01 0 0 0
+217 0 1 0.0000000000000000e+00 1.7693120354920119e+01 2.1402422683970588e+01 8.7352080299574109e+00 0 -1 0
+203 0 1 0.0000000000000000e+00 5.4696920331901691e+00 1.9698501588124788e+01 1.2323037866060856e+01 0 -1 0
+407 0 1 0.0000000000000000e+00 2.1389424904795288e+01 2.2310550781684398e+01 1.3472678509159941e+00 -1 -1 1
+358 0 1 0.0000000000000000e+00 2.3392985371601842e+00 1.3651074132160780e+01 1.5195164150672554e+01 1 0 0
+341 0 1 0.0000000000000000e+00 4.7009555848755928e+00 1.4262123084476212e+01 1.2875934527684771e+01 0 0 0
+346 0 1 0.0000000000000000e+00 7.6382746045995811e+00 1.4829396820604391e+01 1.3870786898484468e+01 0 0 0
+347 0 1 0.0000000000000000e+00 5.3211388430894617e+00 1.4514273991045005e+01 1.5975004191151339e+01 0 0 0
+376 0 1 0.0000000000000000e+00 1.2131251384227465e+01 1.4746103381709709e+01 1.3910836466692928e+01 0 0 0
+50 0 1 0.0000000000000000e+00 9.9375775602276342e+00 1.4229509823189627e+01 1.6187259651365984e+01 0 0 -1
+245 0 1 0.0000000000000000e+00 9.8291067984413125e+00 1.2832553735205002e+01 1.3494041708050249e+01 0 0 0
+371 0 1 0.0000000000000000e+00 1.4992499610066186e+01 1.5351444729554217e+01 1.4624923208204493e+01 0 0 0
+366 0 1 0.0000000000000000e+00 1.4430262846280520e+01 1.2628953082896773e+01 1.3468673799738907e+01 0 0 0
+389 0 1 0.0000000000000000e+00 1.7563394379537215e+01 1.2930225465599847e+01 1.4670913113409503e+01 0 0 0
+255 0 1 0.0000000000000000e+00 2.0250854548587849e+01 1.4355909287849693e+01 1.5154014636186766e+01 0 0 0
+160 0 1 0.0000000000000000e+00 2.2508029047907652e+01 1.4292453584156455e+01 1.2903684671558068e+01 0 0 0
+397 0 1 0.0000000000000000e+00 2.2750611569822830e+01 1.5890730643889173e+01 1.5684537436105337e+01 0 0 0
+220 0 1 0.0000000000000000e+00 2.4952817037510258e+00 1.6463613661733881e+01 1.3558641591759622e+01 1 -1 0
+385 0 1 0.0000000000000000e+00 3.2721887864330337e+00 1.9192865106793093e+01 1.4534353946775592e+01 0 0 0
+361 0 1 0.0000000000000000e+00 5.5331587813323715e+00 1.6990420707194751e+01 1.3909885926891326e+01 0 0 0
+470 0 1 0.0000000000000000e+00 7.4821090218640185e+00 1.9231342230207204e+01 1.4482632208085752e+01 0 0 0
+267 0 1 0.0000000000000000e+00 9.7987150113127406e+00 1.7140962499074575e+01 1.4140280463446906e+01 0 0 0
+372 0 1 0.0000000000000000e+00 1.0595755975691771e+01 1.9806231294510443e+01 1.5464122903894191e+01 0 0 0
+415 0 1 0.0000000000000000e+00 1.1588405331726568e+01 2.3678797538809693e+01 2.3360425037524884e+01 0 -1 0
+482 0 1 0.0000000000000000e+00 1.2785131436686131e+01 1.7618040705716570e+01 1.5131978355925391e+01 0 0 0
+390 0 1 0.0000000000000000e+00 1.5011087648026169e+01 1.9756935669182624e+01 1.5570510291586249e+01 0 0 0
+295 0 1 0.0000000000000000e+00 1.5077413554590986e+01 1.8266807770694800e+01 1.3019834116887205e+01 0 0 0
+276 0 1 0.0000000000000000e+00 1.7533415602507702e+01 1.7424301238020167e+01 1.5152206075248642e+01 0 0 0
+299 0 1 0.0000000000000000e+00 1.7480574760870834e+01 1.9922907962131696e+01 1.3624611440190623e+01 0 0 0
+493 0 1 0.0000000000000000e+00 2.0428209427007147e+01 1.6747550495872382e+01 1.3301663026996193e+01 0 0 0
+362 0 1 0.0000000000000000e+00 2.2774419757343015e+01 1.8562851236848893e+01 1.3922715626677222e+01 -1 0 0
+317 0 1 0.0000000000000000e+00 2.0545529443031544e+01 1.7697191846160329e+01 1.6165558557270678e+01 0 -1 0
+284 0 1 0.0000000000000000e+00 3.6697525688442441e+00 2.2016414138400435e+01 1.2820695985506458e+01 0 0 0
+481 0 1 0.0000000000000000e+00 2.3631581353032363e+01 2.2676038694952762e+01 2.1716056510379413e+01 -1 0 0
+387 0 1 0.0000000000000000e+00 7.5350617288842034e+00 2.2177614591473080e+01 1.2690654101846555e+01 0 0 0
+386 0 1 0.0000000000000000e+00 5.4733502575985300e+00 2.1613292463803329e+01 1.5026210391962389e+01 0 0 0
+205 0 1 0.0000000000000000e+00 8.2816001519750717e+00 2.2102530651519221e+01 1.5700753925679292e+01 0 -1 0
+307 0 1 0.0000000000000000e+00 1.0629493725635625e+01 2.2615981180555472e+01 1.3641499500535232e+01 0 -1 0
+462 0 1 0.0000000000000000e+00 1.2786334893785758e+01 2.0702168155384999e+01 1.3276633091645412e+01 0 0 0
+213 0 1 0.0000000000000000e+00 1.2811933844356879e+01 2.2026745328599993e+01 1.5947768179008014e+01 0 -1 0
+313 0 1 0.0000000000000000e+00 1.5246823304889640e+01 2.2331199330036078e+01 1.3827025699787843e+01 0 -1 0
+195 0 1 0.0000000000000000e+00 1.8167985119404250e+01 2.3414903380502199e+01 1.4308829131868970e+01 0 0 0
+396 0 1 0.0000000000000000e+00 2.3650130722154891e+01 2.1365667447375618e+01 1.4856691218834115e+01 0 0 0
+394 0 1 0.0000000000000000e+00 2.0511694686876879e+01 2.1338993156431734e+01 1.4127035805482967e+01 0 0 0
+63 0 1 0.0000000000000000e+00 3.1135213551516712e+00 1.4000313101639284e+01 1.8203159945128636e+01 0 0 -1
+426 0 1 0.0000000000000000e+00 7.6835173181976373e+00 1.3963982058537880e+01 1.8357863518025436e+01 0 0 0
+369 0 1 0.0000000000000000e+00 5.4228822490831918e+00 1.6347518898479031e+01 1.8668707243711193e+01 0 0 0
+450 0 1 0.0000000000000000e+00 1.0715732240518481e+01 1.4428075943709047e+01 1.9195703627110003e+01 0 0 0
+494 0 1 0.0000000000000000e+00 1.2942302546370248e+01 1.4865758589074776e+01 1.6918784234941647e+01 0 0 0
+474 0 1 0.0000000000000000e+00 1.4979977339501293e+01 1.4243740924780903e+01 1.9375699863190729e+01 0 0 0
+451 0 1 0.0000000000000000e+00 1.5093451237346278e+01 1.2694463845974870e+01 1.6446296004882861e+01 0 0 0
+275 0 1 0.0000000000000000e+00 1.7280968468816788e+01 1.4893905948178709e+01 1.6926648940501096e+01 0 0 0
+449 0 1 0.0000000000000000e+00 1.8123011657275974e+01 1.4763684811767947e+01 2.0164408444206977e+01 0 0 0
+478 0 1 0.0000000000000000e+00 1.3172635068627103e+00 2.0209346286595327e+01 2.3432086075254603e+01 1 0 0
+348 0 1 0.0000000000000000e+00 2.3297147651631882e+01 1.6056938691491190e+01 1.8741045928232428e+01 -1 0 0
+297 0 1 0.0000000000000000e+00 2.2489098112204051e+01 1.3303713988696295e+01 1.7314140355632517e+01 0 0 0
+58 0 1 0.0000000000000000e+00 2.0324109940220119e+01 1.5218758354250623e+01 1.8031493569922752e+01 0 0 -1
+446 0 1 0.0000000000000000e+00 3.2332445069373432e+00 1.6668829805730297e+01 1.6619187530214376e+01 0 0 0
+498 0 1 0.0000000000000000e+00 3.3334638570993644e+00 1.8334895141016730e+01 1.9326679157020248e+01 1 0 0
+367 0 1 0.0000000000000000e+00 7.7214437493124057e+00 1.6663693950640216e+01 1.6355458931438786e+01 0 0 0
+368 0 1 0.0000000000000000e+00 5.3645401278781719e+00 1.8755958451361067e+01 1.6754908481705368e+01 0 0 0
+54 0 1 0.0000000000000000e+00 8.5784834118081044e+00 1.6697455464942841e+01 1.9518972895200505e+01 0 0 -1
+207 0 1 0.0000000000000000e+00 8.2024734860147124e+00 1.9383326220488616e+01 1.7518448176667238e+01 0 -1 0
+352 0 1 0.0000000000000000e+00 1.0605952119432978e+01 1.7098047294065051e+01 1.7172099926396282e+01 0 0 0
+89 0 1 0.0000000000000000e+00 1.3082751336516923e+01 1.6594285919409948e+01 1.9591766052753105e+01 0 0 -1
+486 0 1 0.0000000000000000e+00 1.5266814396177619e+01 1.7000970146796451e+01 1.7354790042667485e+01 0 0 0
+309 0 1 0.0000000000000000e+00 1.2844203241391057e+01 1.9433305012811399e+01 1.7684996598582632e+01 0 -1 0
+215 0 1 0.0000000000000000e+00 1.5857516651258967e+01 1.9969787320881082e+01 1.8573723786008610e+01 0 -1 0
+413 0 1 0.0000000000000000e+00 1.8184394239787302e+01 1.7581785971743773e+01 1.8507986076193696e+01 0 -1 0
+464 0 1 0.0000000000000000e+00 2.3617594579002144e+01 1.8767045437216613e+01 1.6882290710634187e+01 -1 0 0
+479 0 1 0.0000000000000000e+00 2.1074696319515503e+01 1.8030476302182240e+01 1.9423088322845597e+01 0 0 0
+363 0 1 0.0000000000000000e+00 3.0822133488232897e+00 2.0970423977912695e+01 1.7052965921355046e+01 0 0 0
+408 0 1 0.0000000000000000e+00 3.5965776166152437e+00 2.3113359461439554e+01 1.9478004246713184e+01 0 -1 0
+287 0 1 0.0000000000000000e+00 6.1140510752476400e+00 2.1366717907986583e+01 1.8173746430805462e+01 0 0 0
+411 0 1 0.0000000000000000e+00 1.0556890852422741e+01 2.1678722695698646e+01 1.7984725106460530e+01 0 -1 0
+395 0 1 0.0000000000000000e+00 1.3882454107482742e+01 2.2032846534702159e+01 1.8773363810707860e+01 0 0 0
+430 0 1 0.0000000000000000e+00 1.6106448328920415e+01 2.2362975540472878e+01 1.6793325343712073e+01 0 -1 0
+15 0 1 0.0000000000000000e+00 1.8319479466489202e+01 2.0036606564863291e+01 1.6636527521303940e+01 0 -1 -1
+495 0 1 0.0000000000000000e+00 1.8218054932960406e+01 2.2415332156880385e+01 1.8837554203656538e+01 0 0 0
+418 0 1 0.0000000000000000e+00 2.3564351759904579e+01 2.0515231733463345e+01 1.9510078158698711e+01 0 -1 0
+404 0 1 0.0000000000000000e+00 1.9933340919156404e+01 2.3201955699477960e+01 1.6656658995751961e+01 -1 -1 0
+398 0 1 0.0000000000000000e+00 2.1352426952262839e+01 2.0514180105111041e+01 1.7315573241149647e+01 0 0 0
+319 0 1 0.0000000000000000e+00 2.3422135743929548e+01 2.3196349845698379e+01 1.7699575233940774e+01 0 -1 0
+439 0 1 0.0000000000000000e+00 2.1151491248513086e+01 2.2909749459319151e+01 1.9582750353272043e+01 0 -1 0
+65 0 1 0.0000000000000000e+00 2.8825545847706278e+00 1.2632402466801746e+01 2.2738453246370234e+01 0 0 -1
+465 0 1 0.0000000000000000e+00 3.1792835673865953e+00 1.5634191271101583e+01 2.1005581773856672e+01 0 0 0
+448 0 1 0.0000000000000000e+00 5.0523656110561772e+00 1.3568854090617377e+01 2.0301489972757803e+01 0 0 0
+452 0 1 0.0000000000000000e+00 8.5579151448370379e+00 1.3946885722709048e+01 2.1183232256374495e+01 0 0 0
+487 0 1 0.0000000000000000e+00 6.0271102568509676e+00 1.3348387524729500e+01 2.3368066210739482e+01 0 0 0
+456 0 1 0.0000000000000000e+00 1.0532300279483430e+01 1.3590955776050116e+01 2.3567737988188608e+01 0 0 0
+380 0 1 0.0000000000000000e+00 1.2692642003583503e+01 1.3835287510783516e+01 2.1419247457326762e+01 0 0 0
+36 0 1 0.0000000000000000e+00 1.5724955131519700e+01 1.4296967077101215e+01 2.2328522416725960e+01 0 0 -1
+78 0 1 0.0000000000000000e+00 1.8537292638951950e+01 1.4964274587508481e+01 2.3392147834421753e+01 0 0 -1
+461 0 1 0.0000000000000000e+00 2.3293400830741813e+01 1.5148299137995718e+01 2.3135438373088775e+01 -1 0 0
+490 0 1 0.0000000000000000e+00 2.1044269513573720e+01 1.5432050341885093e+01 2.1033271885384650e+01 0 0 0
+497 0 1 0.0000000000000000e+00 2.3208349894911194e+01 1.3313795957437726e+01 2.0324359268826885e+01 0 0 0
+62 0 1 0.0000000000000000e+00 2.0916198013477278e+01 1.2676271552526597e+01 2.2577024959400187e+01 -1 0 -1
+298 0 1 0.0000000000000000e+00 4.0138584582104677e+00 1.7999099264029919e+01 2.2653513510470717e+01 1 0 -1
+468 0 1 0.0000000000000000e+00 6.2412880041339518e+00 1.8845130529752169e+01 2.0092852789648088e+01 0 0 0
+485 0 1 0.0000000000000000e+00 6.4508026674535692e+00 1.6262470534216042e+01 2.1517961344444700e+01 0 0 0
+66 0 1 0.0000000000000000e+00 8.5548693125931443e+00 1.8604815119692539e+01 2.2047773396805955e+01 0 0 -1
+489 0 1 0.0000000000000000e+00 1.0796436202866799e+01 1.8939859924954643e+01 1.9895947932010660e+01 0 0 0
+92 0 1 0.0000000000000000e+00 1.0717173405671335e+01 1.6281340138586835e+01 2.1586630506732963e+01 0 0 -1
+72 0 1 0.0000000000000000e+00 1.1742424152212354e+01 1.8955701998580345e+01 2.2822304516179546e+01 0 0 -1
+472 0 1 0.0000000000000000e+00 1.5925451947770439e+01 1.6945070897812325e+01 2.0306306063691295e+01 0 0 0
+130 0 1 0.0000000000000000e+00 1.3720382475399239e+01 1.6737169122654578e+01 2.2654954519658460e+01 0 0 -1
+500 0 1 0.0000000000000000e+00 1.3824909633138569e+01 1.9511396785524873e+01 2.0707742557108613e+01 0 0 0
+496 0 1 0.0000000000000000e+00 1.6333536328815953e+01 1.9626209063635677e+01 2.2391805591971742e+01 0 0 0
+310 0 1 0.0000000000000000e+00 1.8658475249610483e+01 1.9897817795870822e+01 2.0375918602691179e+01 0 -1 0
+473 0 1 0.0000000000000000e+00 1.8768337677772433e+01 1.7446787390570201e+01 2.1728021417116924e+01 0 0 0
+46 0 1 0.0000000000000000e+00 2.3501806529182225e+01 1.7929306537223269e+01 2.1369441447505736e+01 -1 0 -1
+463 0 1 0.0000000000000000e+00 2.1528375250765848e+01 1.7654887233582819e+01 2.3369375351525505e+01 -1 0 0
+7 0 1 0.0000000000000000e+00 3.5465881332272762e+00 2.0858600860240848e+01 2.1480860820681261e+01 0 -1 -1
+5 0 1 0.0000000000000000e+00 4.2632495583821219e+00 2.3300065815647478e+01 2.2737929109917498e+01 0 -1 -1
+416 0 1 0.0000000000000000e+00 8.6463441975599391e+00 2.1069138355081996e+01 2.0165520337736648e+01 0 -1 0
+405 0 1 0.0000000000000000e+00 6.4966723529103083e+00 2.0928934282782723e+01 2.2506430101023067e+01 0 -1 0
+409 0 1 0.0000000000000000e+00 6.3605682380754685e+00 2.3359181573626657e+01 2.0412535369788564e+01 0 -1 0
+29 0 1 0.0000000000000000e+00 7.3787504174111449e+00 2.3497476080174437e+01 2.3508925729530755e+01 0 -1 -1
+10 0 1 0.0000000000000000e+00 9.7257934899094955e+00 2.1223490568807708e+01 2.2964911182415914e+01 0 -1 -1
+491 0 1 0.0000000000000000e+00 1.1784096139701155e+01 2.1787902946567446e+01 2.0755206645878776e+01 0 0 0
+74 0 1 0.0000000000000000e+00 1.6036090650641910e+01 2.2160595110915271e+01 2.0934739074069835e+01 0 0 -1
+96 0 1 0.0000000000000000e+00 1.3809301772078783e+01 2.1537978154123937e+01 2.2999782885573289e+01 0 0 -1
+476 0 1 0.0000000000000000e+00 1.9270098423816769e+01 2.0015588388997280e+01 2.3495137449580174e+01 0 0 0
+499 0 1 0.0000000000000000e+00 1.9103362111423053e+01 2.2784897469408822e+01 2.1713413410324605e+01 0 0 0
+417 0 1 0.0000000000000000e+00 2.1318603300064773e+01 2.0414771113874156e+01 2.1388920988107564e+01 0 -1 0
+69 0 1 0.0000000000000000e+00 8.5131475385229169e+00 1.5820959657225286e+01 2.3659036694438086e+01 0 0 -1
+
+Velocities
+
+412 -2.4048912635605802e-03 4.3429746913953152e-04 -3.2269335499093978e-04
+9 1.4054105218047033e-03 -9.9752007294709715e-04 1.3114650147025828e-03
+432 -4.9041588211402804e-03 -2.9385461250940612e-03 -1.7298587450887664e-03
+105 -2.1178714174213834e-03 -3.6734648251017140e-05 -1.5789777215230755e-03
+440 -8.5580612030132400e-04 2.2870980755534363e-03 -2.9841572913488308e-03
+139 -1.5783501443083177e-03 3.0732644792709619e-03 -5.3826558875251073e-04
+114 2.7085727010980392e-03 -1.2932617154978428e-03 -5.3924166100155968e-04
+35 1.4004941399892970e-03 -1.2058217927967917e-03 -1.9996229807281267e-03
+1 2.0440114715767181e-04 3.3964443378897472e-03 -9.1838867053335325e-04
+134 -1.6100864284042081e-03 -1.5733543981811206e-03 5.1723401231112626e-03
+200 -1.6453388975509503e-03 4.0093941805939438e-03 2.5874652436384506e-04
+22 1.6946954934807380e-03 1.6583336067800053e-03 -4.4443115752544685e-03
+2 -3.1125984052914144e-03 2.8558512322801413e-03 4.5819836305822188e-04
+107 -1.9873386476659269e-03 -7.2979814475102598e-06 1.9618105840004071e-03
+51 -1.3064021369092568e-03 -2.7325122309222705e-04 3.5362180876119718e-03
+423 5.5208004721080022e-03 -7.0801443660203033e-04 -3.8164431240790921e-03
+32 1.0880608175321612e-03 -9.2461199745322244e-04 -1.8953455631121477e-03
+427 3.2200628219757402e-03 2.2471101422135331e-03 1.3483496266797589e-03
+132 -1.3572891687749860e-03 7.8079840895653419e-04 3.6459972859229132e-03
+429 2.8809878377913014e-03 -2.9218174460397370e-03 4.4226197864472510e-04
+26 -3.0038554297826628e-05 4.6070379037989276e-03 2.4147406262117876e-04
+30 7.6513781145283520e-04 2.2912007271379750e-04 7.5764909874800456e-04
+312 -1.3667152795417099e-04 -2.0562286019419956e-03 1.3754909848922975e-03
+232 -1.4886936067382904e-03 9.7012228650039298e-04 1.7150894092634002e-03
+137 1.3704491964835874e-03 1.7236896360151789e-03 6.8197392597326930e-04
+460 1.1649693432152848e-03 -9.4087045784752119e-04 -6.4104497705103286e-04
+33 -5.0848269557223641e-04 -4.7866757398712127e-03 -4.3381794653932101e-04
+21 5.7810928383875972e-04 1.7023106269073061e-03 -1.6861702834861558e-03
+8 2.4861877048672669e-03 -1.1165137451585744e-03 2.2095488978142483e-03
+61 -3.3984654891907593e-03 5.4695167512635169e-04 -3.2085339276394036e-04
+39 -2.1086012555414373e-03 1.4940149146992583e-03 8.4542277267871504e-04
+121 -2.6957122282992830e-03 -3.5626155971910317e-03 -2.0405347655334149e-04
+48 -2.2622270061920338e-03 3.1519149247659223e-03 2.1074603800692177e-03
+153 1.3173048813876912e-03 -2.0967925774013916e-03 -4.8881715400899963e-03
+226 7.1992202740326868e-04 -7.7948735031170826e-06 4.4248689096068666e-03
+120 1.8669383289646574e-03 -1.3368408965206615e-03 3.3732184008061898e-03
+113 -7.3001205965068298e-04 -1.4055368837840281e-03 2.1140802430680288e-03
+60 -8.4491135702434211e-04 -1.4706879638151326e-03 3.3701569648746124e-05
+44 -6.7542377405207848e-04 7.3308722903326848e-04 1.6902003086409873e-03
+196 1.2649704734255510e-03 -1.9003870208456864e-04 2.1170172794512882e-03
+467 3.4707982567863649e-03 2.5784387374214266e-03 3.1165655781677042e-03
+24 2.9036254590960693e-03 -7.0455604421160634e-04 7.3354715951607296e-04
+157 3.6492272544325592e-04 1.2480452434293682e-03 1.2650298430671675e-03
+28 -1.3782686542101236e-03 -2.2829809128789369e-03 3.5246937511765751e-03
+25 -2.1678202505038334e-04 -1.8365881384294594e-03 2.2790065538998294e-04
+108 3.1678660362133809e-03 1.9099054383237004e-03 1.4248724288266948e-03
+101 -6.7327695678462169e-04 -1.0261343842366956e-03 6.0563361234978606e-04
+103 4.6944021529430439e-03 2.8587610595225675e-03 -2.5059403941965989e-03
+206 -5.4039324644214427e-04 8.4913748541689562e-04 -4.3637312304672476e-04
+112 -3.0968822998238803e-04 -1.0130994326543561e-03 1.5587570402990022e-04
+214 -1.2832098946410815e-03 -1.2406076588719246e-03 -1.6968410926596058e-03
+17 2.3275293127847977e-03 -2.4698911057755455e-03 -3.1242664369718681e-03
+484 -3.0481269219714865e-03 -3.6329304461039512e-04 -7.8339738585240517e-04
+82 -1.5217813788483501e-03 -3.8445821318082293e-03 -1.0177676827338800e-03
+182 3.4885288042935433e-05 -3.1594679773918389e-03 -4.4095655142115250e-04
+194 3.1051131210098736e-03 6.3882424455884547e-04 3.2034355346356853e-03
+19 2.2131466208589563e-03 3.4499576997038595e-03 3.1901995551871158e-03
+27 -3.5393519914894232e-03 1.4051681344905494e-03 -5.9088236957679998e-04
+126 -9.7439209601619069e-04 1.2820061831206827e-03 1.0564669180850585e-03
+11 8.8237272558515151e-04 -3.7913781067803213e-03 -2.6822392897080214e-03
+127 -3.5459900581080524e-03 -6.5186621374874393e-04 9.2104248212744751e-04
+230 8.0230332699015043e-04 4.1558237690045054e-03 -3.7138845615531857e-03
+118 8.2108961570747068e-04 -6.5277028740027112e-04 -8.7990376650989952e-04
+115 1.4164541278754309e-03 -6.6842874210505264e-04 -7.0832409355958735e-04
+355 -2.1685465245098352e-03 1.3711610074611737e-04 9.7025522143270732e-05
+119 -2.6780816333406163e-04 1.2857941395153490e-03 -1.5691916288909132e-03
+57 -1.3668601706985578e-03 -1.8761921920864460e-03 7.6248188624496031e-04
+173 -2.4977298901811811e-03 1.2856987944188539e-03 -4.3953033859262338e-04
+37 6.6502324904350223e-04 -3.3697971351831404e-04 1.8941318522402231e-03
+233 8.5090077792382630e-04 2.9821914125883358e-03 1.1344046411831659e-03
+99 -9.7936163059743884e-04 2.0310752680592885e-03 1.8882738883194631e-03
+163 1.6361033922745933e-03 6.3647794466524055e-04 -6.1263986329246280e-04
+143 -2.6657800981194075e-03 -2.7151819150772641e-03 -1.5965392831508080e-03
+38 -1.4621398654761399e-03 4.2956571532216586e-05 -3.4783483695751077e-04
+145 -1.7599981109511923e-03 4.6642408680732583e-03 -2.4770664895620129e-03
+47 7.8385829693258921e-04 2.6251213061576585e-03 -2.0750256675524169e-03
+136 -9.7745087382456204e-05 -2.0686096547028513e-03 2.8330958764085827e-03
+246 2.4554446988779241e-03 4.5588128425589491e-04 2.2241135886345736e-03
+326 1.0598777630971105e-03 -7.1339394232003352e-04 -1.7841659846487095e-03
+151 -1.0443209693696115e-03 -2.2670002597852111e-03 -8.6773811770519418e-04
+234 -1.3777974594216219e-04 -4.0334236562186024e-03 5.5640934550098444e-05
+238 5.9871173911133879e-04 -7.4027601538208905e-04 5.4155437512908413e-04
+140 1.0872194151855929e-03 7.3828228498967806e-04 1.0784890181474176e-03
+178 -1.8318740248563841e-03 7.8567997916197466e-04 -2.9035048703889206e-03
+353 -2.4328415645482742e-04 -7.8014077498721375e-04 6.6749002025414772e-04
+104 -3.3878578660483533e-04 1.0302094081824319e-03 -1.7641986201369869e-03
+225 6.2471479182133382e-04 -3.7036240701373413e-04 3.0309480446561524e-03
+303 1.2161203472872883e-03 -4.2674514819563154e-03 -5.8203361922179791e-03
+211 -1.6667457172810987e-03 1.1068737847904758e-03 2.9104721732429881e-04
+290 2.9745169676509342e-03 -1.4731387907017239e-03 7.6482093304030836e-04
+216 -2.9209557198115531e-03 8.6950633440080927e-04 5.7523862198577251e-04
+100 -3.8798875369281806e-03 5.4192955388351676e-04 -4.3832413979162611e-03
+334 -4.1809036957588027e-03 -1.8205658235381922e-03 -1.9423437146252316e-03
+190 2.4519844216091802e-03 6.8717040817162527e-04 2.0896719207808049e-03
+318 4.0624873485673460e-03 2.4332562771908874e-03 -1.4993575205868965e-03
+337 1.6438470373491608e-03 -2.2406779842251670e-03 1.9582227916130619e-03
+124 1.1491699291923695e-03 9.5342922476282965e-04 -1.7131404382489111e-03
+239 4.1036887123860081e-03 1.2932222035013611e-03 -3.8722671509641861e-04
+42 3.3482573858428762e-03 -6.3305797534977883e-04 -1.4344955291571088e-03
+321 1.2144251607900901e-03 -2.2061110730081846e-04 -2.9785711906336844e-04
+129 -1.7540582827840442e-03 -1.7796111007158794e-03 5.1350229070451911e-03
+224 3.7608333733736538e-04 6.1999572925706470e-05 3.5579537392151452e-03
+106 1.2502496504880811e-03 -2.1424384329804171e-03 -8.8581658340696498e-04
+204 1.1476368271379149e-03 -1.0609940080649213e-03 1.9480179711138766e-03
+227 -2.6974847824311086e-03 -1.5517897862671810e-03 9.4435417542916534e-04
+240 1.5165019925348011e-03 6.8616195776301258e-04 3.1052285360162426e-04
+265 -2.8491427073321033e-03 3.0641448617960468e-04 1.4602088895858704e-03
+373 4.8693488962657055e-04 1.8308841746255747e-03 -1.9940372868370170e-03
+330 4.9399245084636692e-04 -3.1349321865474939e-04 2.4589421977627081e-03
+332 3.2400599373410030e-03 -7.9516167840227930e-04 8.2082686589976907e-04
+231 -2.2152850571971572e-04 5.7910285099315405e-04 2.8867576447030195e-03
+250 -2.3302033856123536e-03 -1.3034311976723185e-03 2.3002716121770400e-03
+323 1.4006921920136674e-03 1.3663040557304114e-03 -4.2770232365604167e-03
+221 -1.2065510929231684e-03 4.1473816310621018e-04 9.5610777194478152e-04
+237 8.2816606070632221e-04 -4.1452943406037929e-04 -3.5939398088541321e-04
+261 -3.1492109652363192e-03 4.2307545526166917e-05 4.1937526791543025e-03
+243 3.3371180463411263e-03 -1.0333819375900266e-03 -2.1622855515062841e-03
+122 1.9552707773568723e-03 5.1675252496368416e-03 -3.7961008490864875e-04
+172 -1.3560503040668400e-03 -4.3017274452119647e-04 3.8669236442858087e-03
+144 1.1819745647192620e-04 -1.8090970129049574e-03 -2.5985141177679869e-03
+229 -1.6559482047222464e-04 -2.2955506698817471e-04 6.7333935633137861e-05
+171 -6.4490380733388719e-04 1.1501705359919464e-03 1.1053578726772464e-03
+150 5.9878929575217846e-04 -1.3306360962573435e-03 -5.1199664147858412e-03
+40 -2.0598916906450146e-03 -1.7134044981352479e-03 -4.6765867069196505e-04
+175 4.9857053191317002e-04 1.5671418649018025e-03 -2.1341571412737833e-03
+4 4.1962300305665740e-03 -7.2493059335251408e-04 1.8567743383092090e-03
+155 -1.4841263365932098e-03 -7.5138644708064068e-04 -2.2771573815499055e-03
+241 -2.0627693226697988e-03 1.3430537382863139e-03 1.0178795614461111e-03
+488 1.6977518575056105e-03 2.3260274186466231e-03 3.4594094603784317e-03
+324 3.7133737190142404e-03 -2.3344550181720342e-03 -1.3714851946380791e-03
+125 -2.1701118027572583e-05 2.6602698429241715e-04 9.2034982753544565e-04
+401 1.1551737601233952e-03 2.6053648970009897e-03 -2.0578888257154123e-04
+202 -1.0499501720401068e-03 -1.8561077614620916e-03 1.0998827999862074e-03
+433 -1.9113411717135915e-04 4.4077621472581215e-03 -7.4126738262619743e-04
+305 -2.3049084757392267e-03 -2.1065944541959611e-03 -5.8294951125536815e-04
+492 -7.1361624758189263e-04 -3.9339889930026942e-03 -2.6405601545472853e-03
+331 -3.8354267181193731e-04 3.1331847660505765e-03 -1.8158004923942493e-03
+356 -2.0900666297079203e-04 -9.9499733459625962e-04 -2.5272206500502451e-03
+314 1.9709357543239479e-04 1.0897837117483059e-03 1.0266171451087059e-03
+340 4.5748086283086539e-03 1.5098375830612301e-03 8.6964178945465789e-05
+311 2.5276693967265554e-03 1.4372363300530196e-03 -6.4513888517714172e-04
+18 -2.9934555257128844e-04 2.5192114104175527e-03 1.7960976013072279e-03
+300 4.3132098211812149e-04 4.1243462077739049e-03 2.5963215839443259e-04
+117 2.0393971528627364e-03 -1.6163396525249651e-03 -1.4776638730794555e-03
+188 6.7424850302509338e-04 2.0084388900904002e-03 -6.1082019088700497e-04
+302 1.7754782125237792e-03 -3.0192008039585643e-04 -1.6974683826435162e-03
+228 2.1590670411859685e-04 1.7446885318718832e-03 5.1215571920913759e-04
+167 -4.7204231467691559e-04 -8.2534402917607452e-04 -2.0575116060382206e-03
+455 -8.9470765699646126e-04 2.4347464865667663e-03 -2.0894612918170803e-04
+333 -1.3645400748730902e-03 -1.1043658904525751e-03 1.1871989273289165e-04
+336 -6.2200165976506534e-04 -3.2473776476161223e-03 -5.1613320634510745e-04
+458 2.1555448147343253e-03 2.2007094459796949e-03 -1.9743066459580487e-03
+179 -1.4116922215052111e-03 1.5034328699694995e-03 3.3524558575889216e-03
+349 1.7727702476841797e-03 -2.5116147402073018e-03 6.2099527280632923e-05
+20 2.8958994571426930e-03 -1.0655794769279104e-04 3.5259946009001597e-03
+212 1.5085064243136881e-03 -9.2570714722982957e-04 -7.4332273803813759e-04
+244 -3.3876556396864013e-03 -1.0216083085498599e-03 6.9632677792702227e-05
+123 -2.8703350890849820e-04 6.9118501897992999e-05 6.3236179440331886e-04
+242 8.8692294591078183e-04 -3.3017821389261649e-04 4.6865275886586951e-04
+257 9.9669929440974052e-05 1.1517460101391939e-03 1.2409778699047534e-03
+222 3.7247299267900155e-04 -1.3001337150734262e-03 -2.5938935229191441e-03
+343 2.1588465199808486e-03 7.2017984120148644e-04 1.9303204873443553e-03
+445 2.9030518199496254e-03 -2.4010745473302279e-04 1.5120296365010301e-03
+306 -2.5233130437197567e-03 -3.0012026862471465e-03 -4.5478069650503622e-04
+251 1.0585540776245767e-03 1.5773862038877132e-03 3.6624620143271846e-04
+345 1.4867356345302587e-03 -3.0205264070968455e-04 7.6871911405114251e-04
+253 -3.5909546007029125e-04 1.2122940422472984e-03 3.5036757955867427e-03
+256 -2.2580605644774445e-03 -4.6211214601477405e-05 -1.3731606441579273e-03
+254 1.2440755702159770e-03 3.7427370127925710e-04 -2.7746646415612148e-03
+260 -1.5452729301308442e-04 -2.0349482866094818e-03 -1.7522523512919351e-03
+236 2.6433724876903861e-03 -7.6266513418966832e-04 3.4860647056290570e-03
+383 -9.8856222917670421e-04 -7.5978441576474967e-05 3.4193721274013329e-04
+85 1.6136896160051783e-03 7.1404476104154873e-04 -3.0321684334424070e-03
+388 9.3688397435054546e-04 5.9614932422071584e-04 1.1021730849721759e-03
+400 -8.8892054007534815e-05 -1.7354754368810274e-03 7.8829241337882001e-04
+90 2.2430195025580462e-04 1.2706346610022040e-03 6.6579107822394273e-04
+23 3.7105453392673065e-03 -2.0625514184762009e-03 -1.4417577176512482e-03
+316 7.1092784073181487e-04 -2.6590921575263471e-03 -3.6473787520189538e-03
+434 -4.2233997677876972e-03 -2.2435516902872365e-03 -4.6759876206853263e-04
+375 1.3140900659965144e-03 3.7172173028515895e-05 -7.8884207704064426e-04
+410 -1.7948073249965204e-03 -1.8442949949935858e-03 1.1208079358158340e-03
+53 2.0126668693785346e-03 -5.5983620602747773e-03 3.2953482291987711e-03
+338 -5.0898383886222888e-04 -1.2875657105761468e-03 8.6204723332931768e-04
+357 -5.8417017458625210e-04 1.8748787026883630e-03 -1.2607589123126909e-03
+296 1.2599632243393388e-03 3.0831647033788875e-03 -1.0794081620104650e-03
+34 5.2487214880288875e-04 1.1061702654969455e-03 3.1249726752312678e-03
+320 1.0045686419786941e-03 -2.1551561309417571e-03 1.7402065791709530e-03
+322 -1.4387663005685841e-03 2.1526787208058359e-03 -3.1577709698581819e-03
+384 -3.9079544039965358e-03 -5.2764018578038870e-04 1.7842732503562126e-03
+259 -2.9796819700018307e-03 -4.0529986887399847e-03 1.2825868412213841e-03
+402 -3.4599103773625648e-04 1.4400223740124087e-04 -1.5832273513443713e-03
+208 -1.8313743610889062e-03 1.3773026176955193e-03 -3.4640950465283462e-03
+351 -1.7528672890945833e-03 -1.1622536758062944e-03 -3.3050097338349028e-03
+271 1.0690610998158429e-03 1.6642038762069425e-03 6.5325765136551575e-04
+335 -8.5029533214229115e-04 1.9264254004728437e-03 -3.1281769323397300e-04
+379 -1.5122146737277979e-03 -2.5604288333615282e-03 7.9242926875886432e-04
+315 1.1184742215822861e-03 2.6196212099516615e-03 5.4461004901021034e-04
+219 3.3869722442477949e-04 -2.2993583781672797e-03 1.5608324711270910e-03
+304 -1.4360446477159972e-03 1.9638405408690658e-03 -1.3437472443387775e-03
+441 -7.1322574432443933e-05 -3.2965576122279223e-03 4.5019246296131490e-03
+342 1.9823762602086421e-03 -3.0284691800409533e-03 1.4588434639458145e-03
+308 3.2642888580598399e-03 -1.3265482033459706e-03 1.2735051683790303e-05
+428 -5.9523493123835492e-04 -1.1542549472719993e-03 -1.4581554087022281e-04
+325 -9.2151286224447231e-04 1.4297298119601630e-03 -5.9454666093736446e-04
+328 1.7542632137739357e-04 1.6589768616543901e-03 -1.9067487303284622e-03
+327 2.5799563282359402e-03 -9.9925717944776603e-04 1.6834449427152918e-03
+350 -1.8513695968543113e-03 1.5748762267495521e-03 -8.2318731376933882e-04
+453 2.6380053621672863e-03 -2.6529821013518032e-03 1.1560173948812174e-03
+374 -2.5108756087795442e-03 1.8948274861321434e-03 6.1481404838513345e-04
+444 -1.1844374344338413e-03 -2.0669537683132609e-03 -2.9719682740098740e-03
+280 1.2534431874276538e-03 -1.8749302683257888e-03 -1.1685717051818916e-03
+354 2.5162363334153516e-03 8.7770727414936521e-05 1.8530336025207221e-03
+437 4.9471461214655827e-03 -4.2380870605157860e-04 -2.2346009598803773e-04
+422 -5.6837335597870675e-04 7.5766270685006132e-04 -1.4567174172667610e-03
+421 6.3508336759133643e-04 -2.7806204333035603e-03 -9.4479475908011853e-04
+88 -2.7460985619458130e-03 1.3932061028910589e-04 3.6222957736997265e-03
+431 -1.1082386822250439e-03 -1.4265017237795989e-03 -3.4868152041721001e-03
+466 7.2432487957057765e-04 -3.5807796167943800e-03 -1.1437143004628691e-03
+31 2.5580148436211599e-03 7.6398964289554016e-04 1.9060233251521255e-03
+12 -1.9926243478563008e-03 -3.7899135512279268e-04 1.4738516208013456e-03
+457 3.9669630347609125e-03 2.2971576340136826e-04 -2.5622964648179297e-03
+443 -1.7484064358254954e-03 -4.3663506156338037e-04 1.2123819107815110e-03
+435 2.2688362326973941e-03 2.9286234650811715e-03 8.0614709822971376e-04
+279 -1.4588585236472566e-03 -2.7536178640986046e-03 1.6618374174517637e-03
+414 -1.2194806153381331e-03 -1.0640421418573640e-03 9.7737529706592489e-05
+459 -9.3189358410898182e-04 -3.2614620117075769e-03 -2.2328997160832097e-03
+359 -3.6919520063763119e-03 -6.8525912681833125e-04 -1.3223503330220784e-03
+419 -7.9749533926157625e-04 2.2800979192699774e-03 1.0738354039018549e-03
+483 -1.0508411575743063e-03 1.4361253857702733e-03 1.8702798995381953e-03
+403 -4.6435218464787209e-04 4.0883906914395253e-03 4.3736505746839998e-03
+329 4.8031671281779003e-03 1.6742403497308532e-03 1.0195596507241054e-04
+52 -8.4227242950367606e-05 3.4688050100019014e-03 7.5046835858583009e-04
+425 -4.5801857014553281e-04 4.1804020443611187e-04 8.9216648620088436e-04
+133 3.0238999467746591e-03 -1.0914627338959490e-04 -1.2277801597531278e-03
+360 2.3740696856447783e-03 -5.3201800251148970e-04 -5.4372111395941671e-04
+438 -6.5101908278903211e-04 -1.9285409298902384e-03 7.1169841785098231e-04
+454 7.3808425316521629e-04 -2.5768646160516939e-03 9.4255673621603268e-04
+424 -1.2063031011775218e-03 1.9529881015606097e-03 -3.1653519134408228e-03
+86 2.0493455301316623e-03 -1.0963716051687190e-03 -3.0622195051909253e-03
+6 -1.3163422127907090e-03 -1.5559147952845488e-03 -6.7709133539878980e-04
+447 2.6924347024205745e-03 -8.3802532126904853e-04 -1.8064795494401168e-04
+49 6.1773399579498768e-04 -1.1229639899140646e-03 3.1336484503345224e-03
+83 6.2236123589893785e-04 3.3972433348552540e-04 4.4711233492454422e-05
+41 -7.9296695123312578e-04 2.2797622689859106e-03 -3.8106521070674533e-03
+55 1.8614529388512940e-03 -2.2999616832708033e-03 1.7115622070324242e-03
+45 2.7261043193131372e-03 -2.4660181400396205e-03 -3.5779619889598538e-03
+436 2.7321067974329016e-03 -3.2020652447953112e-03 1.1410351402152380e-03
+77 -1.5442864137780977e-03 2.3696190865946584e-03 1.9314690550697906e-03
+477 8.7190577225308111e-04 -1.2288969164464022e-03 -2.7342979434296956e-03
+442 -5.8027972799611670e-05 1.8872440169348925e-03 1.8081377378020267e-03
+59 -2.7556122552691944e-03 9.0616618841051974e-04 1.0004131536226941e-03
+339 -1.7962375057744770e-03 -4.1806277764626964e-03 -1.9067954316628196e-03
+391 1.8512753469429699e-03 3.3538449897007970e-04 2.2114707549206925e-03
+382 -7.3645129707308938e-04 3.2892669421424100e-04 1.1743865088010910e-03
+247 -1.1126707534863591e-03 -5.4130867777826169e-04 2.5033188267853069e-03
+116 3.0048835926334799e-03 1.2934441791590708e-03 5.7507225424137040e-04
+43 -3.3940304323706446e-03 -1.8153446171550456e-03 4.6430432824217700e-04
+165 4.3618879050508224e-04 7.9800063333535995e-04 -1.7755498467166800e-03
+79 2.7726806761077163e-03 2.4551398583098202e-03 8.1378554690162992e-04
+288 2.6459450777648027e-03 -1.0551546215112320e-03 2.9715464264768055e-03
+285 1.5858387140498074e-04 -1.8588142228158921e-03 8.6463313547315999e-04
+146 -2.9197355364505607e-03 6.9988360188649658e-04 -3.5076597418321185e-03
+148 -3.6998103776171624e-03 -5.4257460889065208e-04 1.8236448857787649e-03
+135 8.8249282147295131e-04 1.8629212800151211e-03 1.9031807313503795e-03
+156 -6.3746392174489060e-04 -4.0242963098571094e-04 9.4524606041843714e-04
+293 -1.6289020143684292e-03 -5.9326661728350736e-04 -7.6906908695040721e-04
+161 2.5253952863773877e-03 -3.1681152464258850e-04 -6.2776741709850569e-04
+75 -1.2987421049331250e-03 -3.6440788181285101e-03 -8.9835529390260569e-04
+210 3.8562110672251252e-03 1.3738976719483698e-03 9.6927622964703135e-04
+87 7.2869676395997626e-04 -1.9484235786918968e-03 -2.3641579830582567e-03
+184 -1.5054550196904671e-03 4.4731344973726640e-03 -1.4322373354901715e-03
+469 -9.6327645237098106e-04 4.0970286771472967e-04 7.8133489627942563e-04
+142 -1.5618983195023976e-04 1.6721017186949387e-03 4.1673784268400187e-04
+13 -1.8060874092420557e-03 5.5581024317085596e-04 -2.9068816989301118e-03
+70 7.7621395882115210e-05 1.9806560922376853e-03 1.1395691893150703e-05
+71 -1.1229000170546329e-03 1.9298116019058674e-03 8.9524215711570324e-04
+76 -7.4422743547098900e-04 -2.8415867213220369e-03 1.3483709745075719e-04
+480 -9.9905924769841761e-04 4.2357632689817839e-03 -1.9484039368701062e-04
+81 -1.4201206253160260e-04 -2.1760262602109103e-03 1.7874708968390477e-03
+93 -2.0380240351153562e-03 3.1793099518882107e-04 -1.6005139207804751e-03
+3 -1.5088977020868829e-03 2.1308489811133870e-03 1.9812254793226476e-03
+197 4.4900259481163709e-03 2.4771366882429769e-03 4.7875389027771082e-04
+154 -9.7752752866628128e-04 -8.4600678901477653e-04 -1.8634865941743364e-03
+223 -1.3545174531632931e-03 -2.1009801615203636e-03 -1.2549230559904339e-03
+102 -5.7414367894503674e-04 3.4384741525343800e-03 -2.0966921436231657e-03
+98 -2.3844719937076027e-03 -7.3587806805087356e-04 2.7645061161820964e-03
+406 2.4661286404231101e-03 7.9365328267788887e-04 2.6589809656195288e-03
+67 -1.2713728135132578e-03 8.3071454299817158e-04 -1.7436997513299234e-03
+166 1.8467245302705471e-04 5.8757359668023081e-04 2.2034540169979639e-03
+169 -2.5771594933069607e-03 -4.9801381262561178e-03 -1.2753787965954526e-03
+111 -9.6820745129641127e-04 -2.5618399206218437e-03 1.0553367810648903e-03
+193 -1.3235555673023712e-03 -1.6017470347988970e-03 9.9510004692331014e-04
+110 1.8876353464107138e-03 1.6890832625562774e-03 5.6449000293337984e-04
+97 -1.3292664062858220e-04 -2.5459860163704290e-03 -2.1483427067685384e-03
+16 9.0010701787434299e-04 1.3122785096601889e-03 1.5659466308521957e-03
+64 3.5262711219534813e-03 -1.4024020951775248e-03 -4.2414166597052900e-03
+138 -3.0407997125871051e-03 4.2416061600910232e-04 1.4078955957052778e-03
+381 -1.3726461520751564e-03 -1.9032014715097217e-03 -1.5279335226431221e-03
+159 1.2442147029126575e-03 3.2942932395198798e-03 -8.2892712412193119e-04
+141 -1.0736249103678805e-03 -8.1980482863435247e-04 -8.5759884133039359e-04
+344 -1.1346569209860992e-03 -2.9364380176106794e-03 4.1131044191480299e-03
+128 2.8970622322583938e-04 -6.8812793677672029e-04 2.6125140696504766e-03
+264 -1.0258228942302712e-03 -1.1308741875455232e-03 1.4558552199137331e-03
+248 5.3478310585524847e-05 -1.5028967364677393e-03 3.0869539842737492e-03
+168 -2.1626402215758635e-03 1.0581892209771532e-03 -3.0309569693224675e-04
+147 4.3313415508472610e-04 2.4989233140059546e-03 1.7708643031685341e-03
+149 -5.2548295414516963e-04 1.5514092021217832e-03 2.6920018733215994e-03
+269 -3.6750708709232562e-03 -8.4690014057901624e-04 3.5488686174766390e-04
+131 2.2302385945674489e-03 -1.2088835558743931e-04 -9.8586546957386530e-04
+277 -2.1606257439552553e-03 -4.0549692159429795e-05 -2.0248145651490740e-03
+183 -8.3169252413868740e-04 -7.7111126751156259e-04 6.5131313688555686e-04
+158 3.7696872328030658e-03 1.7600833408165924e-03 -8.5399737202414359e-04
+263 1.2776701731643811e-03 -5.7144110409195309e-05 1.3836769880479702e-03
+301 -3.8872866653538746e-03 -2.2566736111175663e-04 2.2238545057273124e-03
+56 2.4768754887272600e-03 -4.2543446262428798e-03 -3.6443780206883792e-03
+152 -5.3533669468452895e-04 3.7678854667835078e-04 2.9105163658171770e-03
+189 -1.3346321646969406e-03 -2.7725548500761948e-03 1.8697457144897830e-03
+191 -2.9431670501462478e-04 -1.8619749127237008e-03 -7.8763737316289338e-04
+94 -1.0009083459186166e-04 -3.3936284282494092e-05 2.4250720760377220e-03
+91 1.0846286710049036e-03 -6.3944019352654797e-06 5.0649929835056061e-04
+174 3.7858662585196585e-03 -3.5029186882718708e-03 -3.7437325309727623e-03
+14 -4.0684115148162062e-03 5.5686771601785379e-04 -6.6964255878620147e-04
+201 5.6271061457660999e-04 1.7185463579166878e-05 -4.6230796577503286e-03
+475 2.1876221730227373e-04 -6.4651389324349033e-05 -1.2550365248963401e-03
+162 8.4283577075139836e-04 -2.4332128096705634e-03 -1.0641182327352559e-03
+164 -1.3426107184135411e-03 2.3696641938123551e-03 -9.4131231688351945e-04
+181 -1.4001049386876878e-03 5.6214429370674847e-04 -1.4554051497347594e-03
+186 -5.8059621890528372e-04 -2.3240975098448385e-03 2.2450840081875627e-03
+109 -8.1473574953826557e-04 2.6879181829098176e-03 1.4812695244362996e-04
+286 1.9691033863981611e-03 2.1211656651113943e-03 1.7771092351915989e-03
+268 2.0373530444753808e-03 -3.8729758629051326e-03 -2.3376252178026998e-03
+185 4.1802364587625032e-03 1.9413402815579613e-04 -2.3311016543111733e-03
+392 -1.6094901808910165e-03 -4.4561699031843210e-04 1.8037489194617142e-03
+291 -2.3599963455840137e-03 2.8890046620483577e-03 -3.4448729311949257e-03
+235 -2.8720714422398770e-03 1.3228962362241633e-03 6.5044733340424970e-04
+95 -1.1372667497515283e-03 -3.0388002195549406e-03 -2.7876653544191168e-03
+471 -2.2684415526506188e-03 3.0871281751858906e-04 4.0694197131484650e-04
+420 3.1651306165824265e-03 -7.1427882361431753e-04 8.6316100281700150e-04
+84 1.0454190258646454e-03 2.8233817892174494e-03 1.2213078279666285e-03
+282 -1.6679141049078514e-03 -1.6185973074041619e-03 -8.0869953632564315e-04
+377 -6.8697371231648727e-04 1.9413183152846222e-03 6.6367387198968807e-05
+364 -8.0750580584598480e-04 -1.2079685762050548e-03 9.4600988739104589e-04
+68 -7.4882464446583805e-04 1.9499713161655542e-03 -2.7396340617520851e-03
+252 -1.3928244770753944e-03 2.6681192494357729e-04 4.2834725532634572e-04
+365 1.5683670805946134e-03 -4.6689146991368150e-03 -4.8759463769041316e-04
+249 5.0047295747540914e-04 -1.6292414966698134e-03 -1.7800143674138694e-03
+73 1.9793457886199189e-03 -1.0834783179079533e-03 -1.9745373603282552e-03
+292 2.2739963607875091e-04 1.3547464815060861e-03 1.9186063335176347e-03
+378 -4.2431943325943119e-04 1.6486475038300927e-03 1.2892730096042829e-03
+272 1.0381198702962247e-03 -6.7271308592350466e-04 -1.2988168460893595e-03
+274 -2.9261991044605448e-03 -1.8674508397375806e-03 8.2783662810488547e-04
+199 3.8067946539950583e-03 3.2173492379050815e-03 -1.8851194147689705e-03
+177 4.6484123773908063e-03 2.6394676169181605e-04 8.0807125575073412e-04
+273 -2.2634101313589814e-03 1.9851262457366362e-03 2.0185095308932217e-03
+283 3.3267450107474822e-03 4.6903972806935684e-04 -2.7583481015752706e-03
+258 -3.3264796044065129e-03 -2.7939907212505329e-03 -6.6498484855600790e-05
+399 -3.4043840396759798e-05 2.4317269372336400e-03 2.4310394170373612e-04
+266 -2.8080579796262075e-03 -1.3237109814578996e-03 -3.1054881300758962e-03
+262 -5.9703230540798194e-04 -3.6440944259268919e-03 -1.5418275464258644e-03
+281 -5.0814140003951349e-05 -2.0345846687287220e-03 3.2605420988535733e-03
+170 -1.1740344255551048e-03 1.3612383896654736e-03 -1.6690824325321927e-03
+370 1.8035663139241616e-03 3.0284622204389024e-03 4.6130640898780806e-04
+176 -2.8892419721056041e-04 2.1809009647000741e-03 -3.8157904074682909e-04
+294 -1.2597553208500863e-03 7.7472433975577957e-04 -2.5496175135726489e-03
+198 1.7547745458888792e-03 -1.3087089159815055e-03 2.8806525557070069e-03
+80 2.0518053776180686e-03 1.4323388041275374e-03 2.5837315663284840e-04
+180 -2.0993554855791951e-03 -7.5867551275926191e-04 3.4518537836939088e-03
+278 -4.4429700576891573e-03 1.1621913118040313e-03 -2.7497818206354309e-03
+218 1.4247099685632447e-03 2.6286814745098245e-04 1.3330660504611758e-03
+289 3.7131529489192539e-03 -7.4314501860469077e-04 1.4876889924639808e-03
+270 3.1295503971806573e-03 -1.3591550552548065e-04 -2.1070264496085281e-03
+393 8.4931821507430052e-05 8.5253629597232115e-05 1.1871642714657265e-03
+187 -1.6161131204407606e-03 -3.6849542458773448e-03 2.1063189545886796e-03
+209 1.1970982399921953e-03 -9.3835265888100029e-05 9.3487778384153896e-04
+192 1.4837460494365943e-03 2.5369096692038842e-04 -5.2827781854948423e-04
+217 -3.8801238709204240e-03 6.0133433487871474e-04 3.8569629910932637e-03
+203 -1.2115576856730225e-03 1.5727278529804158e-03 -3.3798057001815499e-03
+407 2.3696516076696177e-03 2.5764310000634867e-03 4.5497799523107375e-03
+358 3.0605583376198974e-03 2.3445517863340654e-03 2.3714100167199687e-03
+341 1.8050207319143870e-04 -1.9664412955148944e-03 1.8235083644721961e-03
+346 -6.6426591138165703e-04 -1.7451733288932996e-04 1.5912108418585005e-03
+347 1.2897430839452968e-03 1.8517703295998440e-05 3.2979299057035848e-03
+376 9.0709896379753349e-04 -2.4074351481517039e-03 -1.9724371443571425e-04
+50 -1.6474071713477479e-03 -1.5195799104255116e-05 -1.8884225931420007e-04
+245 6.4653778417104828e-04 -2.3086603863629849e-04 2.4701237274025283e-03
+371 -1.7735878181510359e-04 -3.0754946863176740e-04 7.7049973903400295e-04
+366 2.4073556578751591e-04 1.9020865095438385e-04 -1.5292806166058057e-04
+389 -3.0393508938784137e-03 -1.2685875117071585e-03 -1.5904935839336524e-03
+255 -1.2910198033378784e-03 -7.4760335714398475e-04 -1.8612390922791296e-03
+160 5.3907971135738341e-04 1.2191080424622981e-04 9.1287553667094038e-04
+397 1.6318364417577370e-03 -3.3657297050726672e-04 -6.9394344226135572e-04
+220 1.3762507904347592e-03 -2.2306662044715804e-03 -2.1270829979983568e-04
+385 1.2191211584352060e-04 2.3183109542893672e-03 -8.7804915281914720e-04
+361 8.6698609583678222e-06 -2.6978900492038577e-03 -7.3933499624647108e-04
+470 -1.7756007060699692e-03 -1.9283999328231023e-03 1.2400811979341106e-03
+267 3.0660115463249012e-04 3.4816606308968881e-04 6.3762024217043918e-04
+372 1.7503154617450668e-03 -3.1511951501850559e-04 -4.6120404270171104e-03
+415 -2.2220146536513366e-03 1.2763706680255977e-03 -4.7884228885343514e-04
+482 2.2982029078763414e-03 2.2134870998224098e-04 3.7957199289215949e-03
+390 -3.0588459730432544e-04 -3.0713260622257388e-04 -2.5014273098450655e-03
+295 1.0405149229052531e-03 1.5565637450030958e-03 -1.2864246802417629e-03
+276 8.2838911613260203e-04 2.2711996608446427e-03 -9.5236512028208588e-04
+299 -1.1427104296348226e-03 2.8364857625385828e-04 3.5486220357932360e-04
+493 9.4403873955638685e-04 1.1529169750430332e-03 1.1189302643375384e-03
+362 -2.3961378246706105e-03 -1.3059979074363674e-04 -4.4131112299470899e-04
+317 -3.2763926636428984e-03 1.7014456995577886e-03 -2.4291911576623257e-03
+284 4.1450350887374818e-05 4.2550175162001042e-03 -2.2402703327436594e-03
+481 5.3799803571543672e-04 -1.3085370243650146e-03 3.6332340802551792e-04
+387 4.3021702847804363e-03 -6.2320147510587791e-04 -1.5704441876109663e-03
+386 -1.5086720404333751e-04 -1.4041636926112975e-03 -2.3331573102912252e-03
+205 -3.9054209535610850e-04 1.8655108232427046e-03 -2.5703541140581677e-04
+307 6.2427712118121720e-04 5.9142071581011154e-04 -1.7265217984722557e-03
+462 -3.6314961379561826e-03 -1.5185721202612336e-03 8.5056780161322208e-04
+213 5.1089515555199536e-05 6.3473104351367696e-04 -9.1416750973676063e-04
+313 -2.5691378748067266e-03 -1.8699019737531265e-03 -5.5683054982235141e-04
+195 -8.7331318410165484e-04 6.5043396043228086e-05 -9.7489281786660408e-04
+396 3.2928894434099452e-04 1.8059171946444626e-03 -1.8143038388428055e-05
+394 2.2602984252724058e-03 1.5289461435153494e-04 7.1969945297111740e-04
+63 2.8780365952785795e-03 5.1864190074398121e-03 5.9391140382563019e-04
+426 -1.1559960255935833e-03 1.4145548459231121e-03 1.6338106304258602e-03
+369 -4.5165826644526485e-04 -8.4836223949419018e-04 1.0037201866471286e-03
+450 1.0689448456194535e-04 5.0226877026576513e-03 9.3065652167333656e-04
+494 -8.2650587824833219e-04 2.4152380837089990e-03 -8.4366919098150060e-04
+474 -7.8516392741485906e-04 -6.9989090526734231e-04 2.1241054965762400e-03
+451 -2.2412869638439980e-03 -1.4965311178717477e-03 1.9062185303180771e-03
+275 -2.1384651952270407e-03 -2.7652407527206820e-04 -6.9549833137926157e-03
+449 -3.1250432304275088e-03 2.2323073788651044e-03 1.1948574030465344e-03
+478 -2.3366252443437641e-03 -3.5303723827525310e-03 1.4677181978606751e-03
+348 2.7361909571874848e-04 -4.1311800821754261e-04 -2.3344177887937296e-03
+297 2.1505950957439296e-03 7.2031635414277883e-04 -1.2745376678132783e-04
+58 -8.4608571216411005e-05 -1.7098738644828539e-04 -2.3526366981521840e-03
+446 -2.1165381166357989e-03 3.5391894493561732e-04 -1.2715915370785985e-03
+498 4.1421794940652524e-03 -1.5292814928628601e-03 1.4400444391305890e-03
+367 -3.3419204792190839e-04 -2.6915448659204804e-03 3.6922466902239662e-03
+368 -2.4925607894655108e-03 1.3927070198642686e-03 -2.1528580593730517e-03
+54 2.0132028033324314e-03 1.4238043624376515e-04 -4.5249415721923276e-03
+207 1.1958651570771609e-03 1.6069330396575336e-03 -7.1391683242505606e-04
+352 -2.1933334150990094e-03 1.0454910412275203e-03 -1.3557127572420870e-03
+89 -4.9965315781304588e-05 2.6193162057090410e-03 -3.2077966342786376e-03
+486 -5.2793874797962262e-04 1.2632027090810174e-03 -5.2670193309017649e-04
+309 2.1474886504386529e-03 -4.8548650306078501e-04 9.9370956110234033e-04
+215 -1.6762324872679889e-03 -6.0516971993939816e-04 -2.0480483829050660e-03
+413 -2.0771686378737685e-03 2.5689846050944796e-03 -9.9094854254094597e-05
+464 -1.4397499765206650e-03 2.0842149316618523e-03 -2.3816744503390775e-03
+479 -2.7809541815060359e-03 2.8171360879579868e-03 -7.5843907641614576e-05
+363 -2.1019589007778413e-03 4.9251116417057365e-03 2.8989551870465639e-03
+408 5.6324627416396550e-04 -5.1614058583241459e-05 5.4220619724682016e-04
+287 -3.3058728097303119e-03 1.4426318922348316e-03 5.2126735497751641e-04
+411 8.6228218011119172e-04 -2.0788543561765962e-03 1.5878662426913883e-03
+395 1.6521687356991308e-03 -1.4621430498514855e-04 -2.3889011191950862e-03
+430 -3.0735242067399578e-03 2.2072789093379231e-03 -1.6361987771465717e-03
+15 6.8795205850017761e-04 2.1430332026093342e-03 -1.8154414256550231e-03
+495 -2.3975907551337882e-03 -1.0735680397086062e-03 7.6049024316386204e-04
+418 3.4375495806006455e-03 -6.3447923531425676e-04 -1.3205521825515973e-03
+404 1.6209425362553000e-04 3.8723504044482133e-03 2.9047707915386364e-03
+398 5.9362400185333601e-04 -4.0577276761462151e-03 -4.6998062150740384e-03
+319 -2.4982380159449531e-03 -2.9155514512792257e-04 3.6198533458524988e-05
+439 4.1954738815614160e-04 2.7118445358295011e-03 -2.7578623991633949e-03
+65 -2.4705421836168905e-04 1.6025291548496493e-03 1.9857457294921630e-03
+465 9.5754451738322064e-04 -3.5605828041897415e-04 3.0445000402642210e-04
+448 1.1095699504872216e-03 -2.0242973231276002e-03 6.1449242117641526e-03
+452 -3.3839034048915115e-03 3.1203846107313270e-03 -9.6923115899036621e-04
+487 3.2135758092648186e-03 1.7577597311132676e-03 -1.0190500039022074e-03
+456 -3.9344288736381490e-03 2.0855820906822524e-03 6.4925021175674447e-05
+380 -9.9093104101561323e-04 5.0348345243423633e-04 1.8881591333749406e-03
+36 1.1098957938757851e-03 -1.2949941802730550e-03 -5.1767477007752570e-04
+78 1.1155322485108556e-06 -7.7901877627629165e-04 5.1268381167029770e-04
+461 -2.5286600267771424e-03 -2.8953229038817586e-03 3.1895345600419169e-03
+490 1.6151790576024491e-03 1.2902024406276529e-03 -1.8946987245297469e-04
+497 -2.4154204982115039e-03 -2.7211731880633755e-04 -1.5952751318386302e-03
+62 -5.0661394282863683e-04 3.4959179371347694e-03 6.2433088774105291e-03
+298 -1.5835893779557960e-03 3.1587616025159361e-04 -3.1770028869156468e-03
+468 -3.1766745417607417e-03 4.2166248817202250e-04 8.8996920185754967e-04
+485 -2.4432178860046743e-03 2.4027508898705986e-03 -5.1781453402489192e-04
+66 -3.0445439261459140e-04 3.1151410398728967e-03 3.3586673408608795e-03
+489 3.1672293078801000e-03 -4.3234354733252258e-04 8.4111086027439247e-04
+92 -5.9978835881225043e-05 -2.8349728796646426e-03 -1.2089448343577001e-03
+72 2.1196720463542173e-03 2.7503537549807954e-04 -4.0513218905213737e-03
+472 -7.8263431152640750e-05 -2.0335072290890259e-03 2.2643397688541555e-03
+130 -1.3452472649441922e-03 -1.4069797009075824e-03 -1.4719000714087385e-03
+500 2.9538766467869233e-03 -7.2731987084020716e-04 6.6651934077421643e-04
+496 3.0358788523690517e-03 1.2464509876843782e-03 -2.6062172277601567e-03
+310 1.1881848621398037e-03 4.8836753462433609e-04 -7.1341027443038818e-04
+473 1.9296045221430828e-03 -2.0364765278372667e-03 1.9284968817221285e-03
+46 1.4850833543379239e-03 -5.9028055094090801e-04 -2.1070953042144243e-03
+463 -3.3119809633984898e-03 4.3186082531176901e-04 -2.3971779054908836e-03
+7 3.2709854273646143e-03 -1.6169594898741055e-03 2.0240536112198587e-04
+5 -1.6655437065509022e-04 -2.9812436973121968e-05 -1.9534911897970304e-03
+416 1.0329080152595644e-03 1.0404304852661634e-03 3.2884619870491055e-03
+405 6.9659785965160996e-04 -3.6828343621526454e-03 -1.4805437953352896e-04
+409 -6.3017731494669177e-04 -8.1468347370681343e-04 2.6181409371445470e-03
+29 9.4937337221378800e-04 -5.5329464296536223e-04 -1.8778488207943673e-03
+10 -2.1231209762438496e-04 3.4770885772881085e-03 -3.8850889648629557e-03
+491 1.8712439315764836e-03 1.9638362483428919e-03 2.6835265708303993e-03
+74 -8.9054823608998796e-04 9.7777316939908626e-04 -1.1759772470766444e-03
+96 -1.8774822947599959e-03 2.4084803775863855e-03 -1.5311084742079075e-03
+476 -3.3860761993105364e-03 -3.6264583582721020e-03 9.0375430019349896e-04
+499 -1.3903036190032524e-03 -2.5461865974418497e-03 6.2465369383480436e-04
+417 -1.2359086120731306e-03 1.2061142995625476e-03 -3.8765152543129763e-04
+69 8.0398153576496836e-04 -2.9320181992538354e-03 -1.5010834274714526e-03
diff --git a/examples/USER/misc/grem/lj-temper/0/log.lammps.0 b/examples/USER/misc/grem/lj-temper/0/log.lammps.0
new file mode 100644
index 000000000..d2058eb28
--- /dev/null
+++ b/examples/USER/misc/grem/lj-temper/0/log.lammps.0
@@ -0,0 +1,1074 @@
+print "This is replica: ${rep}"
+This is replica: 0
+
+read_data ${rep}/lj.data
+read_data 0/lj.data
+ orthogonal box = (1.27034 1.27034 1.27034) to (23.7297 23.7297 23.7297)
+ 1 by 1 by 1 MPI processor grid
+ reading atoms ...
+ 500 atoms
+ reading velocities ...
+ 500 velocities
+ 0 = max # of 1-2 neighbors
+ 0 = max # of 1-3 neighbors
+ 0 = max # of 1-4 neighbors
+ 1 = max # of special neighbors
+
+#dump dump all xyz 1000 ${rep}/dump.xyz
+
+thermo 10
+thermo_style custom step temp pe etotal press vol
+timestep 1.0
+
+fix fxnpt all npt temp ${T0} ${T0} 1000.0 iso ${press} ${press} 10000.0
+fix fxnpt all npt temp 300 ${T0} 1000.0 iso ${press} ${press} 10000.0
+fix fxnpt all npt temp 300 300 1000.0 iso ${press} ${press} 10000.0
+fix fxnpt all npt temp 300 300 1000.0 iso 0 ${press} 10000.0
+fix fxnpt all npt temp 300 300 1000.0 iso 0 0 10000.0
+fix fxgREM all grem ${lambda} -.03 -30000 fxnpt
+fix fxgREM all grem 900 -.03 -30000 fxnpt
+thermo_modify press fxgREM_press
+
+temper/grem 10000 100 ${lambda} fxgREM fxnpt 10294 98392 #${walker}
+temper/grem 10000 100 900 fxgREM fxnpt 10294 98392
+Neighbor list info ...
+ 1 neighbor list requests
+ update every 1 steps, delay 10 steps, check yes
+ max neighbors/atom: 2000, page size: 100000
+ master list distance cutoff = 7
+ ghost atom cutoff = 7
+ binsize = 3.5 -> bins = 7 7 7
+Memory usage per processor = 5.38195 Mbytes
+Step Temp PotEng TotEng Press Volume
+ 0 299.42262 -3416.9 -2971.5315 134.01052 11328.967
+ 10 305.01315 -3419.0863 -2965.4023 52.103984 11328.968
+ 20 309.92197 -3421.585 -2960.5996 -26.370593 11328.97
+ 30 311.99962 -3423.9618 -2959.886 -76.248163 11328.972
+ 40 310.18839 -3423.1727 -2961.791 -52.274449 11328.972
+ 50 305.15121 -3421.0067 -2967.1174 16.259045 11328.972
+ 60 299.39836 -3419.7932 -2974.4609 80.723613 11328.972
+ 70 295.2947 -3418.3682 -2979.1397 134.53808 11328.974
+ 80 293.51832 -3416.8126 -2980.2263 170.69406 11328.978
+ 90 293.4313 -3417.1659 -2980.7091 170.93297 11328.985
+ 100 294.63941 -3417.2566 -2979.0028 164.62038 11328.996
+ 110 297.25348 -3418.8518 -2976.7098 131.78524 11329.01
+ 120 300.50388 -3420.1147 -2973.138 98.057487 11329.026
+ 130 302.95328 -3421.3632 -2970.7432 69.182017 11329.044
+ 140 304.05933 -3423.5076 -2971.2424 38.480693 11329.064
+ 150 304.21872 -3423.9853 -2971.483 33.117628 11329.084
+ 160 304.38371 -3423.5475 -2970.7998 39.859883 11329.105
+ 170 304.80117 -3423.3687 -2970.0001 43.810288 11329.127
+ 180 305.13983 -3423.6759 -2969.8035 46.007676 11329.15
+ 190 304.94578 -3422.9246 -2969.3408 69.449779 11329.173
+ 200 302.86941 -3421.7405 -2971.2452 116.35909 11329.199
+ 210 297.662 -3418.57 -2975.8203 210.54052 11329.226
+ 220 290.84972 -3416.2934 -2983.6765 300.40584 11329.257
+ 230 286.66935 -3413.5161 -2987.1171 365.46428 11329.294
+ 240 288.43119 -3414.2821 -2985.2626 333.78695 11329.338
+ 250 295.9831 -3417.8591 -2977.6067 218.31479 11329.388
+ 260 305.50936 -3422.3128 -2967.8908 75.635176 11329.443
+ 270 311.52891 -3425.6438 -2962.2682 -26.093631 11329.498
+ 280 311.04895 -3425.0078 -2962.346 -28.116138 11329.554
+ 290 305.15136 -3421.6115 -2967.722 47.657742 11329.609
+ 300 297.43413 -3417.6882 -2975.2774 143.60143 11329.666
+ 310 292.00918 -3415.3303 -2980.9888 202.75098 11329.725
+ 320 291.38867 -3415.1495 -2981.731 200.97437 11329.788
+ 330 294.86583 -3417.316 -2978.7254 144.54327 11329.854
+ 340 299.07345 -3420.9058 -2976.0567 71.367848 11329.924
+ 350 301.19767 -3421.4636 -2973.4549 53.019075 11329.994
+ 360 301.40218 -3421.5686 -2973.2557 57.550459 11330.066
+ 370 301.60343 -3421.1465 -2972.5342 71.264067 11330.139
+ 380 302.3767 -3422.2013 -2972.4389 65.704342 11330.213
+ 390 302.18634 -3422.1079 -2972.6286 79.588346 11330.289
+ 400 300.1465 -3421.466 -2975.0208 108.02406 11330.366
+ 410 297.66938 -3418.4992 -2975.7385 159.37689 11330.446
+ 420 296.70991 -3417.6203 -2976.2868 170.02926 11330.528
+ 430 297.60515 -3417.4218 -2974.7567 154.72136 11330.614
+ 440 299.48021 -3419.166 -2973.7119 108.67344 11330.703
+ 450 301.07427 -3420.2418 -2972.4166 73.295179 11330.793
+ 460 302.09454 -3419.8407 -2970.498 61.278464 11330.886
+ 470 302.70993 -3420.5493 -2970.2912 41.512266 11330.979
+ 480 302.81262 -3420.9993 -2970.5885 29.560402 11331.073
+ 490 302.14786 -3420.5338 -2971.1117 34.608836 11331.168
+ 500 300.2847 -3419.7205 -2973.0698 51.93802 11331.264
+ 510 297.96748 -3418.545 -2975.3409 76.76076 11331.361
+ 520 296.76806 -3417.8075 -2976.3875 89.385785 11331.459
+ 530 296.70055 -3417.2493 -2975.9297 92.386458 11331.559
+ 540 296.45476 -3416.8648 -2975.9109 92.522412 11331.661
+ 550 296.25617 -3416.6349 -2975.9763 88.090319 11331.765
+ 560 297.43141 -3416.0497 -2973.643 77.975047 11331.87
+ 570 299.89275 -3417.4354 -2971.3677 40.26193 11331.977
+ 580 301.71033 -3418.492 -2969.7207 18.941485 11332.085
+ 590 301.0837 -3418.833 -2970.9938 31.38825 11332.194
+ 600 297.98642 -3416.0758 -2972.8436 102.67264 11332.303
+ 610 293.64246 -3415.1849 -2978.414 160.19415 11332.414
+ 620 290.00186 -3412.9426 -2981.5869 218.76366 11332.528
+ 630 289.94928 -3413.9664 -2982.6888 200.08217 11332.646
+ 640 295.74572 -3416.2545 -2976.3551 112.68119 11332.768
+ 650 306.46178 -3421.9655 -2966.1269 -54.544301 11332.892
+ 660 317.10206 -3428.5703 -2956.905 -227.40954 11333.015
+ 670 322.23923 -3430.6661 -2951.3597 -299.41158 11333.135
+ 680 320.5723 -3431.1325 -2954.3055 -291.13842 11333.248
+ 690 314.82311 -3427.6765 -2959.401 -196.15735 11333.357
+ 700 308.88819 -3423.7386 -2964.2908 -84.991092 11333.461
+ 710 304.9868 -3422.1526 -2968.5078 -11.177461 11333.565
+ 720 303.01004 -3420.6298 -2969.9253 49.289549 11333.668
+ 730 300.99168 -3420.0074 -2972.3051 98.740194 11333.772
+ 740 296.94374 -3418.2214 -2976.5401 171.9416 11333.877
+ 750 291.19139 -3414.7802 -2981.6551 269.15521 11333.987
+ 760 285.41566 -3412.3799 -2987.8457 343.50487 11334.101
+ 770 281.59912 -3410.3161 -2991.4588 384.62499 11334.222
+ 780 282.54974 -3410.6705 -2990.3991 347.61696 11334.35
+ 790 289.63184 -3414.2713 -2983.4659 218.95403 11334.485
+ 800 300.03002 -3418.2447 -2971.9728 61.530839 11334.623
+ 810 308.28446 -3421.2641 -2962.7143 -61.683906 11334.763
+ 820 310.71517 -3422.3726 -2960.2073 -105.82674 11334.902
+ 830 307.51937 -3421.5347 -2964.1229 -72.21706 11335.04
+ 840 302.15103 -3417.4936 -2968.0669 22.7566 11335.176
+ 850 298.13259 -3415.5869 -2972.1373 83.701724 11335.312
+ 860 296.67204 -3414.9826 -2973.7055 105.71932 11335.45
+ 870 296.58815 -3416.3914 -2975.239 86.7842 11335.59
+ 880 296.07017 -3416.0022 -2975.6203 85.129741 11335.731
+ 890 294.71487 -3416.6313 -2978.2652 73.985492 11335.875
+ 900 294.38296 -3416.7286 -2978.8563 59.4512 11336.02
+ 910 297.14646 -3417.0839 -2975.1011 20.162699 11336.166
+ 920 302.00677 -3420.216 -2971.0038 -63.001904 11336.312
+ 930 305.93557 -3421.8253 -2966.7693 -118.84051 11336.457
+ 940 307.40744 -3421.9192 -2964.6739 -136.4053 11336.601
+ 950 306.77038 -3421.3363 -2965.0386 -128.88393 11336.742
+ 960 305.29301 -3420.0641 -2965.9639 -105.70523 11336.88
+ 970 304.01625 -3420.7347 -2968.5336 -106.83536 11337.017
+ 980 303.31176 -3420.3825 -2969.2293 -99.75059 11337.151
+ 990 302.52222 -3420.1179 -2970.139 -91.350072 11337.284
+ 1000 301.55478 -3419.3685 -2970.8287 -70.828164 11337.415
+ 1010 300.80872 -3419.1273 -2971.6971 -51.456861 11337.545
+ 1020 300.39394 -3419.1869 -2972.3737 -30.06259 11337.674
+ 1030 299.3407 -3418.7917 -2973.5451 8.5095011 11337.802
+ 1040 296.64408 -3417.0339 -2975.7983 76.942673 11337.931
+ 1050 292.71654 -3415.0454 -2979.6518 150.13917 11338.061
+ 1060 290.03112 -3413.9503 -2982.551 191.32381 11338.195
+ 1070 291.18322 -3413.4876 -2980.3746 184.12677 11338.331
+ 1080 295.92737 -3415.6386 -2975.4691 109.66058 11338.472
+ 1090 301.38195 -3418.4174 -2970.1346 17.470646 11338.614
+ 1100 304.76191 -3420.01 -2966.6997 -46.02246 11338.757
+ 1110 305.67145 -3421.0035 -2966.3404 -77.688687 11338.899
+ 1120 304.63891 -3419.6947 -2966.5674 -58.912495 11339.04
+ 1130 302.03115 -3418.5064 -2969.258 -22.869742 11339.18
+ 1140 298.58726 -3417.0257 -2972.8997 25.472397 11339.319
+ 1150 295.27588 -3415.3487 -2976.1482 73.241528 11339.459
+ 1160 292.9158 -3415.0775 -2979.3875 92.346457 11339.6
+ 1170 292.32496 -3415.4399 -2980.6287 85.260271 11339.743
+ 1180 294.10212 -3416.085 -2978.6304 55.687553 11339.888
+ 1190 297.62415 -3417.2237 -2974.5303 10.398915 11340.033
+ 1200 300.87935 -3418.357 -2970.8218 -27.557375 11340.179
+ 1210 302.10425 -3419.2477 -2969.8905 -43.340394 11340.325
+ 1220 301.30073 -3418.7116 -2970.5496 -24.958889 11340.469
+ 1230 299.19878 -3417.6477 -2972.6122 9.1129556 11340.614
+ 1240 296.57738 -3416.582 -2975.4456 44.677497 11340.759
+ 1250 294.7463 -3415.5249 -2977.1121 71.138297 11340.904
+ 1260 295.03023 -3415.1473 -2976.3122 71.685459 11341.051
+ 1270 297.27714 -3416.95 -2974.7728 32.147349 11341.2
+ 1280 299.58047 -3418.5205 -2972.9172 -3.9755183 11341.349
+ 1290 299.93811 -3418.7063 -2972.5711 -9.1750938 11341.498
+ 1300 297.90925 -3416.7586 -2973.6412 27.202549 11341.647
+ 1310 294.65437 -3414.3209 -2976.0448 75.461621 11341.797
+ 1320 292.32951 -3413.8001 -2978.9821 92.928442 11341.948
+ 1330 291.73106 -3413.4999 -2979.5721 91.541739 11342.101
+ 1340 292.46822 -3412.9545 -2977.9302 79.39213 11342.255
+ 1350 294.51754 -3415.0485 -2976.9759 25.453397 11342.412
+ 1360 298.37904 -3417.0121 -2973.1958 -39.401903 11342.568
+ 1370 303.20597 -3420.2573 -2969.2614 -123.63065 11342.725
+ 1380 306.63864 -3421.4786 -2965.3768 -170.50872 11342.878
+ 1390 306.88908 -3422.1346 -2965.6603 -183.28528 11343.029
+ 1400 304.0426 -3421.0828 -2968.8425 -150.93733 11343.177
+ 1410 299.66949 -3418.9914 -2973.2558 -94.9749 11343.322
+ 1420 295.75762 -3417.9258 -2978.0088 -56.871182 11343.465
+ 1430 294.21861 -3416.4882 -2978.8603 -36.38455 11343.607
+ 1440 296.29159 -3417.4116 -2976.7003 -73.334676 11343.749
+ 1450 301.43074 -3419.369 -2971.0136 -145.05567 11343.889
+ 1460 306.46756 -3422.067 -2966.2197 -219.74649 11344.026
+ 1470 307.07703 -3424.0867 -2967.3329 -247.49745 11344.159
+ 1480 302.2323 -3420.8317 -2971.284 -168.81147 11344.288
+ 1490 295.91077 -3416.961 -2976.8162 -69.501498 11344.414
+ 1500 293.50425 -3416.0019 -2979.4366 -32.703088 11344.538
+ 1510 296.38451 -3416.9434 -2976.0939 -58.867745 11344.662
+ 1520 300.86865 -3418.8323 -2971.313 -111.47355 11344.785
+ 1530 302.55532 -3421.141 -2971.1129 -151.60859 11344.905
+ 1540 300.12591 -3419.9051 -2973.4905 -123.34016 11345.023
+ 1550 295.72707 -3416.6169 -2976.7453 -60.531918 11345.139
+ 1560 293.2099 -3414.2866 -2978.1591 -24.591334 11345.254
+ 1570 294.28758 -3415.2297 -2977.4993 -53.252019 11345.368
+ 1580 297.21835 -3417.3791 -2975.2893 -106.9868 11345.481
+ 1590 298.97978 -3417.2215 -2972.5118 -122.34188 11345.592
+ 1600 298.70817 -3416.4247 -2972.1189 -111.16189 11345.702
+ 1610 297.71642 -3416.7078 -2973.8772 -103.17121 11345.809
+ 1620 297.11447 -3416.6639 -2974.7287 -92.752723 11345.914
+ 1630 297.30695 -3415.7074 -2973.4858 -77.698896 11346.018
+ 1640 298.78349 -3416.9822 -2972.5644 -98.097519 11346.12
+ 1650 301.16284 -3418.193 -2970.2361 -122.32653 11346.22
+ 1660 302.06844 -3419.0456 -2969.7417 -128.70176 11346.319
+ 1670 299.50439 -3416.69 -2971.1999 -72.217359 11346.415
+ 1680 294.73969 -3414.2685 -2975.8655 -2.7377727 11346.51
+ 1690 291.74851 -3412.8781 -2978.9243 34.143745 11346.605
+ 1700 293.12426 -3415.1528 -2979.1527 -12.438698 11346.701
+ 1710 297.66889 -3416.8012 -2974.0413 -84.291158 11346.796
+ 1720 303.18954 -3420.7905 -2969.819 -194.16156 11346.89
+ 1730 307.99174 -3423.4945 -2965.3802 -281.31997 11346.98
+ 1740 310.44287 -3424.8708 -2963.1106 -328.29545 11347.066
+ 1750 309.0034 -3422.4258 -2962.8067 -292.43283 11347.145
+ 1760 303.32174 -3419.9269 -2968.7588 -216.31399 11347.219
+ 1770 295.38441 -3414.8376 -2975.4757 -89.076671 11347.289
+ 1780 288.58524 -3411.9108 -2982.6621 3.0132998 11347.357
+ 1790 286.12 -3410.7894 -2985.2076 35.206418 11347.425
+ 1800 289.23529 -3413.4211 -2983.2055 -27.234713 11347.494
+ 1810 297.14401 -3417.0419 -2975.0627 -143.73517 11347.563
+ 1820 306.76876 -3423.1173 -2966.822 -303.83015 11347.628
+ 1830 313.74855 -3426.5388 -2959.8616 -411.15416 11347.689
+ 1840 315.46423 -3428.4633 -2959.2341 -457.59523 11347.741
+ 1850 313.12768 -3426.6133 -2960.8595 -424.12945 11347.785
+ 1860 309.05655 -3425.1952 -2965.497 -376.68901 11347.822
+ 1870 304.34244 -3420.9558 -2968.2695 -287.77517 11347.851
+ 1880 299.24405 -3418.3655 -2973.2627 -213.86081 11347.875
+ 1890 294.61776 -3416.411 -2978.1894 -151.41806 11347.894
+ 1900 292.62679 -3415.5324 -2980.2722 -121.80014 11347.911
+ 1910 294.72445 -3415.1512 -2976.7709 -126.45908 11347.926
+ 1920 298.52848 -3416.955 -2972.9165 -166.49847 11347.938
+ 1930 300.00062 -3417.8341 -2971.6059 -176.48502 11347.948
+ 1940 297.49521 -3415.7692 -2973.2676 -123.76195 11347.954
+ 1950 292.71263 -3413.4715 -2978.0837 -54.263616 11347.958
+ 1960 288.44322 -3411.96 -2982.9226 -3.4208938 11347.96
+ 1970 287.06595 -3411.5212 -2984.5323 8.2328493 11347.963
+ 1980 289.12422 -3412.2988 -2982.2484 -22.331306 11347.966
+ 1990 292.66135 -3414.7468 -2979.4352 -83.979412 11347.969
+ 2000 295.3705 -3415.4594 -2976.1182 -118.35918 11347.97
+ 2010 296.19204 -3416.5306 -2975.9674 -139.92814 11347.969
+ 2020 294.90329 -3415.3424 -2976.6961 -117.84509 11347.965
+ 2030 292.6706 -3414.068 -2978.7427 -85.454237 11347.96
+ 2040 291.1965 -3413.4421 -2980.3094 -65.359696 11347.953
+ 2050 291.49792 -3414.5074 -2980.9263 -74.906718 11347.944
+ 2060 292.19872 -3414.5905 -2979.9671 -72.703722 11347.934
+ 2070 291.30976 -3414.6532 -2981.352 -57.588834 11347.923
+ 2080 289.10508 -3413.39 -2983.3681 -18.360635 11347.911
+ 2090 287.50207 -3411.9051 -2984.2676 16.153245 11347.899
+ 2100 288.3131 -3411.9071 -2983.0632 11.471141 11347.887
+ 2110 292.7849 -3412.9764 -2977.481 -35.718949 11347.876
+ 2120 300.57092 -3418.0984 -2971.022 -153.11266 11347.863
+ 2130 308.35058 -3421.907 -2963.2588 -250.25017 11347.848
+ 2140 311.5324 -3423.2455 -2959.8647 -278.53274 11347.828
+ 2150 307.94447 -3422.1891 -2964.145 -226.03646 11347.803
+ 2160 300.34725 -3418.3064 -2971.5626 -113.33777 11347.774
+ 2170 294.74346 -3414.2591 -2975.8505 -21.9587 11347.743
+ 2180 295.93182 -3414.4537 -2974.2776 -40.912863 11347.712
+ 2190 303.44883 -3417.7303 -2966.3732 -151.31949 11347.679
+ 2200 312.55009 -3422.4761 -2957.5815 -294.72858 11347.644
+ 2210 318.70677 -3425.8585 -2951.8063 -399.95463 11347.603
+ 2220 320.41031 -3427.2357 -2950.6497 -442.80939 11347.555
+ 2230 317.89639 -3425.9407 -2953.0939 -415.74038 11347.499
+ 2240 311.79167 -3423.3458 -2959.5794 -339.24833 11347.434
+ 2250 302.71984 -3419.1129 -2968.84 -217.78603 11347.364
+ 2260 292.68143 -3414.7896 -2979.4482 -88.707316 11347.289
+ 2270 285.16359 -3411.4881 -2987.3289 8.1302473 11347.213
+ 2280 282.20047 -3411.4188 -2991.667 31.275399 11347.137
+ 2290 282.97286 -3412.5859 -2991.6852 8.3448595 11347.061
+ 2300 285.92437 -3414.5956 -2989.3047 -43.986075 11346.986
+ 2310 290.33396 -3416.2907 -2984.441 -102.13915 11346.91
+ 2320 295.06958 -3419.206 -2980.3124 -171.55177 11346.832
+ 2330 298.20563 -3419.9941 -2976.4358 -196.58253 11346.751
+ 2340 298.24805 -3420.126 -2976.5046 -183.81627 11346.666
+ 2350 295.73298 -3418.6941 -2978.8137 -130.56758 11346.578
+ 2360 292.97371 -3416.3488 -2980.5726 -65.991294 11346.487
+ 2370 292.09981 -3414.8303 -2980.3539 -30.554608 11346.395
+ 2380 293.80369 -3415.9363 -2978.9256 -51.800628 11346.303
+ 2390 297.03927 -3418.346 -2976.5226 -106.6691 11346.209
+ 2400 300.19294 -3419.6619 -2973.1476 -153.30034 11346.114
+ 2410 302.52849 -3420.5618 -2970.5736 -190.20449 11346.016
+ 2420 304.2705 -3421.2905 -2968.7112 -218.07039 11345.914
+ 2430 305.85619 -3422.0724 -2967.1345 -239.56699 11345.808
+ 2440 307.32492 -3421.8749 -2964.7524 -241.23506 11345.698
+ 2450 308.04007 -3421.6876 -2963.5014 -229.18194 11345.583
+ 2460 307.04877 -3421.4201 -2964.7084 -197.70237 11345.464
+ 2470 304.24305 -3420.3614 -2967.8229 -141.79187 11345.341
+ 2480 300.73751 -3418.8189 -2971.4947 -77.902376 11345.216
+ 2490 297.83991 -3416.796 -2973.7818 -19.331564 11345.089
+ 2500 295.61459 -3415.1159 -2975.4116 20.33969 11344.962
+ 2510 293.90955 -3414.2261 -2977.0579 37.36597 11344.835
+ 2520 293.2758 -3413.4831 -2977.2576 38.441637 11344.709
+ 2530 294.10044 -3414.2709 -2976.8188 8.2781685 11344.583
+ 2540 295.79126 -3415.4982 -2975.5312 -32.653729 11344.458
+ 2550 297.46851 -3415.6663 -2973.2045 -58.295967 11344.332
+ 2560 299.11686 -3416.6084 -2971.6947 -88.286189 11344.205
+ 2570 301.18226 -3416.5779 -2968.5922 -103.49957 11344.077
+ 2580 302.63024 -3417.5501 -2967.4106 -120.78148 11343.946
+ 2590 301.58639 -3417.9123 -2969.3254 -110.85339 11343.813
+ 2600 297.71268 -3415.7827 -2972.9577 -52.926913 11343.679
+ 2610 293.37251 -3411.9709 -2975.6016 24.038394 11343.543
+ 2620 291.57318 -3411.2903 -2977.5973 39.974952 11343.408
+ 2630 293.60911 -3413.4781 -2976.7568 -11.291017 11343.273
+ 2640 298.03205 -3417.1404 -2973.8403 -99.838219 11343.138
+ 2650 301.82817 -3420.3519 -2971.4054 -177.26862 11343.002
+ 2660 303.05948 -3420.1562 -2969.3782 -192.61408 11342.862
+ 2670 302.00375 -3418.4021 -2969.1944 -169.04976 11342.719
+ 2680 300.12539 -3417.6761 -2971.2624 -146.9902 11342.572
+ 2690 298.69819 -3418.6273 -2974.3363 -144.09982 11342.423
+ 2700 298.56462 -3417.9995 -2973.9072 -131.29953 11342.271
+ 2710 300.36177 -3418.8813 -2972.1159 -148.75542 11342.116
+ 2720 303.05628 -3419.297 -2968.5237 -166.08469 11341.959
+ 2730 304.31746 -3420.825 -2968.1758 -184.53772 11341.798
+ 2740 303.30231 -3419.615 -2968.4758 -152.58699 11341.634
+ 2750 300.88876 -3418.4847 -2970.9355 -107.57012 11341.467
+ 2760 297.47918 -3417.7708 -2975.2931 -56.252079 11341.298
+ 2770 293.03307 -3414.295 -2978.4305 36.263572 11341.129
+ 2780 288.40268 -3412.0408 -2983.0636 114.05528 11340.96
+ 2790 285.56689 -3410.1707 -2985.4116 168.78308 11340.793
+ 2800 286.03931 -3410.6373 -2985.1754 164.72078 11340.629
+ 2810 289.36719 -3412.5499 -2982.1381 114.49221 11340.468
+ 2820 294.12351 -3415.0553 -2977.5689 38.242625 11340.309
+ 2830 299.93982 -3417.1795 -2971.0417 -47.538089 11340.151
+ 2840 306.52231 -3420.6155 -2964.6868 -154.04342 11339.993
+ 2850 311.8299 -3423.6674 -2959.8441 -239.35759 11339.831
+ 2860 313.16451 -3423.3826 -2957.5742 -245.17137 11339.665
+ 2870 309.66773 -3422.8725 -2962.2653 -200.14279 11339.495
+ 2880 303.04179 -3418.537 -2967.7853 -78.388837 11339.32
+ 2890 296.09023 -3415.7518 -2975.34 31.562303 11339.145
+ 2900 290.70577 -3411.5311 -2979.1283 143.13209 11338.97
+ 2910 287.87699 -3409.2646 -2981.0694 205.23091 11338.797
+ 2920 288.5156 -3408.0979 -2978.9528 218.49033 11338.628
+ 2930 293.42282 -3410.5423 -2974.0981 149.60588 11338.464
+ 2940 301.23155 -3414.8559 -2966.7968 31.452595 11338.302
+ 2950 308.28679 -3417.9998 -2959.4465 -71.450294 11338.14
+ 2960 311.90297 -3419.7925 -2955.8604 -133.20873 11337.978
+ 2970 311.90753 -3420.4055 -2956.4667 -152.07015 11337.812
+ 2980 309.52021 -3418.3552 -2957.9674 -119.36033 11337.645
+ 2990 306.24786 -3417.6973 -2962.1769 -91.93941 11337.475
+ 3000 303.332 -3415.7792 -2964.5958 -49.330701 11337.303
+ 3010 301.77545 -3415.0762 -2966.208 -28.857235 11337.13
+ 3020 302.30004 -3417.0085 -2967.3601 -51.534897 11336.957
+ 3030 304.17544 -3417.9189 -2965.4809 -68.897987 11336.783
+ 3040 304.91398 -3419.1732 -2965.6367 -78.661065 11336.607
+ 3050 302.17194 -3418.7863 -2969.3285 -40.479311 11336.43
+ 3060 295.33808 -3414.8741 -2975.5811 67.550001 11336.253
+ 3070 287.67745 -3410.281 -2982.3826 183.72816 11336.076
+ 3080 285.34182 -3408.5278 -2984.1035 220.67815 11335.903
+ 3090 291.27355 -3410.5705 -2977.3232 147.76789 11335.735
+ 3100 301.73339 -3417.0188 -2968.2132 -8.5041565 11335.568
+ 3110 309.85683 -3421.6282 -2960.7396 -120.10423 11335.402
+ 3120 311.55409 -3422.3115 -2958.8984 -128.86291 11335.233
+ 3130 307.3327 -3419.9817 -2962.8476 -47.617285 11335.063
+ 3140 299.92758 -3416.1675 -2970.0479 80.605277 11334.891
+ 3150 292.93367 -3412.3066 -2976.59 204.67622 11334.721
+ 3160 289.72621 -3411.4191 -2980.4733 256.81694 11334.555
+ 3170 291.67069 -3411.9647 -2978.1267 239.1892 11334.393
+ 3180 297.52865 -3415.5491 -2972.9978 140.31814 11334.236
+ 3190 305.25157 -3419.9503 -2965.9117 4.6483503 11334.081
+ 3200 313.04988 -3423.077 -2957.439 -122.70098 11333.927
+ 3210 318.97432 -3426.0455 -2951.5954 -229.92268 11333.77
+ 3220 321.20355 -3426.9992 -2949.2333 -274.19805 11333.609
+ 3230 319.32049 -3425.4647 -2950.4997 -244.22576 11333.443
+ 3240 314.68691 -3423.1889 -2955.116 -170.83257 11333.273
+ 3250 309.49262 -3420.3684 -2960.0216 -76.170797 11333.1
+ 3260 304.59025 -3417.569 -2964.5141 23.655499 11332.925
+ 3270 298.17868 -3413.6123 -2970.0941 150.0034 11332.75
+ 3280 289.89012 -3409.6275 -2978.4379 284.14697 11332.579
+ 3290 284.30126 -3407.5368 -2984.6603 366.95736 11332.413
+ 3300 286.09745 -3408.4061 -2982.8579 353.68123 11332.253
+ 3310 293.33392 -3412.5576 -2976.2457 256.19547 11332.1
+ 3320 301.0149 -3416.4103 -2968.6735 155.09674 11331.952
+ 3330 307.30122 -3420.3444 -2963.2571 62.440701 11331.807
+ 3340 312.53092 -3421.9037 -2957.0377 9.2485959 11331.663
+ 3350 315.64491 -3422.2553 -2952.7574 -8.9635528 11331.519
+ 3360 315.15776 -3421.4338 -2952.6605 16.901657 11331.376
+ 3370 311.24667 -3419.5292 -2956.5734 81.827464 11331.232
+ 3380 305.99482 -3418.2579 -2963.1138 145.93822 11331.09
+ 3390 302.75439 -3415.3836 -2965.0594 209.37224 11330.951
+ 3400 303.00349 -3413.2328 -2962.5381 231.93254 11330.816
+ 3410 305.5257 -3414.7334 -2960.2871 190.476 11330.685
+ 3420 307.81516 -3415.4565 -2957.6048 157.58587 11330.558
+ 3430 308.4995 -3416.0229 -2957.1533 141.19165 11330.434
+ 3440 307.28043 -3415.8866 -2958.8302 153.55063 11330.313
+ 3450 304.08687 -3413.8274 -2961.5213 207.93895 11330.194
+ 3460 299.65439 -3411.1403 -2965.4271 277.2275 11330.08
+ 3470 296.32907 -3409.2782 -2968.5112 322.25086 11329.97
+ 3480 296.47373 -3411.2843 -2970.3021 287.42311 11329.867
+ 3490 301.11216 -3413.9916 -2966.1101 205.21241 11329.769
+ 3500 308.79241 -3417.4556 -2958.1503 91.741468 11329.674
+ 3510 315.80392 -3421.5058 -2951.7714 -17.4656 11329.582
+ 3520 318.11947 -3422.7735 -2949.5948 -50.056055 11329.489
+ 3530 314.50141 -3422.2028 -2954.4058 -5.7844915 11329.396
+ 3540 307.15403 -3418.8175 -2961.9491 108.00372 11329.302
+ 3550 299.80449 -3414.913 -2968.9766 232.90665 11329.211
+ 3560 294.87569 -3411.7167 -2973.1115 330.87963 11329.124
+ 3570 292.86658 -3409.7389 -2974.122 384.19326 11329.043
+ 3580 293.70946 -3410.391 -2973.5204 373.19534 11328.97
+ 3590 297.41045 -3412.7535 -2970.378 310.55411 11328.903
+ 3600 303.09817 -3415.8648 -2965.0292 218.98875 11328.843
+ 3610 308.51967 -3417.9225 -2959.0228 140.15826 11328.787
+ 3620 312.38937 -3419.5846 -2954.9291 80.224593 11328.733
+ 3630 314.97532 -3420.0713 -2951.5694 48.715141 11328.681
+ 3640 316.48737 -3420.6715 -2949.9205 30.230937 11328.63
+ 3650 316.40384 -3420.3288 -2949.7021 37.008396 11328.58
+ 3660 315.11784 -3418.7159 -2950.002 67.942141 11328.53
+ 3670 313.16754 -3418.7394 -2952.9265 83.925168 11328.482
+ 3680 310.34539 -3418.1926 -2956.5774 111.93574 11328.435
+ 3690 306.77507 -3415.1632 -2958.8585 173.95262 11328.391
+ 3700 303.56193 -3413.7633 -2962.2379 216.46236 11328.35
+ 3710 301.20261 -3412.0072 -2963.9911 259.5516 11328.313
+ 3720 299.4093 -3411.5927 -2966.2441 285.36131 11328.281
+ 3730 298.71093 -3411.2058 -2966.8959 304.10485 11328.254
+ 3740 300.02371 -3412.4976 -2966.235 290.48382 11328.233
+ 3750 302.38844 -3412.3532 -2962.5733 286.90741 11328.218
+ 3760 303.67204 -3413.7638 -2962.0747 274.61026 11328.208
+ 3770 302.72818 -3413.384 -2963.0987 297.48984 11328.203
+ 3780 301.19966 -3412.8388 -2964.8272 321.38479 11328.204
+ 3790 301.9004 -3413.1622 -2964.1083 312.33786 11328.211
+ 3800 305.6573 -3414.6452 -2960.0031 262.33682 11328.224
+ 3810 310.88552 -3416.7433 -2954.3246 195.42011 11328.242
+ 3820 314.53691 -3419.226 -2951.3761 141.44841 11328.264
+ 3830 314.34084 -3420.0154 -2952.4573 142.50192 11328.289
+ 3840 310.4278 -3417.339 -2955.6012 215.56638 11328.317
+ 3850 304.96651 -3414.4033 -2960.7887 299.59413 11328.349
+ 3860 301.36662 -3412.8107 -2964.5507 343.95023 11328.387
+ 3870 301.61341 -3411.5933 -2962.9662 340.70469 11328.431
+ 3880 305.29084 -3414.7508 -2960.6538 249.77061 11328.482
+ 3890 310.3105 -3417.9348 -2956.3715 145.67741 11328.537
+ 3900 313.97192 -3419.2462 -2952.2368 80.812855 11328.595
+ 3910 313.6961 -3420.0002 -2953.401 64.622545 11328.655
+ 3920 309.20751 -3415.853 -2955.9302 149.31662 11328.717
+ 3930 303.40118 -3414.0656 -2962.7794 226.6013 11328.781
+ 3940 299.08563 -3411.7233 -2966.8561 303.79973 11328.849
+ 3950 296.64882 -3410.8603 -2969.6177 348.19665 11328.924
+ 3960 295.54083 -3411.1974 -2971.6029 363.07145 11329.005
+ 3970 295.98897 -3410.2204 -2969.9593 374.24368 11329.093
+ 3980 298.84373 -3411.1198 -2966.6124 339.88519 11329.187
+ 3990 303.83292 -3414.0247 -2962.0962 261.24167 11329.289
+ 4000 309.26013 -3417.1557 -2957.1547 175.68298 11329.395
+ 4010 312.39478 -3418.3313 -2953.6677 132.71524 11329.505
+ 4020 311.35557 -3416.7292 -2953.6114 156.83102 11329.618
+ 4030 307.08752 -3414.6715 -2957.902 213.5036 11329.733
+ 4040 302.47599 -3412.3094 -2962.3992 280.17191 11329.853
+ 4050 299.50017 -3410.78 -2965.2962 326.0538 11329.978
+ 4060 299.12264 -3410.8322 -2965.9099 335.0717 11330.11
+ 4070 300.6055 -3411.0389 -2963.911 328.94427 11330.248
+ 4080 301.75282 -3412.524 -2963.6896 308.22246 11330.392
+ 4090 301.71475 -3412.7464 -2963.9686 306.91844 11330.542
+ 4100 301.88601 -3413.34 -2964.3075 294.94569 11330.697
+ 4110 303.61049 -3414.5902 -2962.9926 258.59927 11330.859
+ 4120 306.46229 -3414.8357 -2958.9962 221.20366 11331.025
+ 4130 308.72436 -3417.4125 -2958.2084 159.20359 11331.196
+ 4140 309.19869 -3416.9768 -2957.0672 145.79404 11331.37
+ 4150 308.46121 -3417.6355 -2958.8228 131.88993 11331.547
+ 4160 307.74842 -3417.5201 -2959.7677 131.18099 11331.726
+ 4170 307.21457 -3418.5481 -2961.5897 118.78252 11331.908
+ 4180 306.30265 -3417.6743 -2962.0723 133.17751 11332.093
+ 4190 304.76722 -3416.4848 -2963.1667 156.15319 11332.28
+ 4200 303.86275 -3416.4053 -2964.4325 163.5837 11332.47
+ 4210 304.22126 -3415.5219 -2963.0158 175.27401 11332.663
+ 4220 303.9641 -3414.9806 -2962.857 193.13931 11332.86
+ 4230 301.85951 -3414.0292 -2965.0361 232.62589 11333.061
+ 4240 299.73269 -3412.0177 -2966.1881 286.03008 11333.266
+ 4250 299.42015 -3412.2406 -2966.8758 299.22472 11333.477
+ 4260 300.69512 -3413.2707 -2966.0095 286.07183 11333.693
+ 4270 302.37146 -3415.4242 -2965.6696 248.81168 11333.915
+ 4280 303.52831 -3415.9973 -2964.522 224.65032 11334.142
+ 4290 304.28242 -3415.1828 -2962.5857 211.08133 11334.373
+ 4300 305.44892 -3415.6311 -2961.299 174.30318 11334.608
+ 4310 306.84013 -3416.589 -2960.1876 128.90268 11334.847
+ 4320 307.28587 -3416.1471 -2959.0826 108.27147 11335.089
+ 4330 306.59051 -3416.0445 -2960.0143 95.552758 11335.332
+ 4340 305.97749 -3415.4564 -2960.3381 93.144842 11335.578
+ 4350 306.38268 -3415.521 -2959.8 79.334977 11335.826
+ 4360 307.64059 -3417.0709 -2959.4788 43.12502 11336.075
+ 4370 308.97479 -3416.8205 -2957.244 27.651317 11336.326
+ 4380 309.61774 -3417.4034 -2956.8704 7.476666 11336.577
+ 4390 309.77161 -3417.9971 -2957.2353 -7.93312 11336.828
+ 4400 309.92843 -3418.5966 -2957.6015 -19.835049 11337.08
+ 4410 309.62777 -3417.2552 -2956.7073 -1.9182285 11337.331
+ 4420 308.15546 -3415.4502 -2957.0923 32.342418 11337.582
+ 4430 304.94789 -3413.9495 -2960.3627 74.303222 11337.835
+ 4440 300.92777 -3413.0888 -2965.4815 109.04869 11338.089
+ 4450 299.21657 -3413.6641 -2968.6022 103.45283 11338.345
+ 4460 301.85126 -3415.1303 -2966.1494 53.963843 11338.603
+ 4470 306.15076 -3417.1813 -2961.8053 -12.622967 11338.862
+ 4480 307.75962 -3417.0762 -2959.3071 -27.573024 11339.122
+ 4490 305.22365 -3416.5748 -2962.5777 2.5587939 11339.381
+ 4500 300.04955 -3414.341 -2968.0401 79.854737 11339.64
+ 4510 295.27571 -3411.5217 -2972.3215 162.50211 11339.901
+ 4520 293.40153 -3409.9118 -2973.4992 205.79903 11340.166
+ 4530 294.60044 -3410.9121 -2972.7162 189.20454 11340.434
+ 4540 298.12712 -3412.4374 -2968.9959 143.16014 11340.706
+ 4550 302.9988 -3413.5939 -2962.9061 88.891357 11340.981
+ 4560 307.82326 -3415.7798 -2957.916 26.057002 11341.258
+ 4570 311.48437 -3416.3208 -2953.0115 -3.8684974 11341.535
+ 4580 313.97287 -3417.7165 -2950.7057 -31.227422 11341.813
+ 4590 315.95218 -3417.9339 -2947.979 -40.055056 11342.091
+ 4600 317.42238 -3418.288 -2946.1463 -48.675625 11342.367
+ 4610 317.34918 -3418.1226 -2946.0897 -44.92496 11342.643
+ 4620 314.95931 -3417.5707 -2949.0926 -26.299603 11342.919
+ 4630 311.57049 -3416.1202 -2952.6827 7.2720866 11343.194
+ 4640 309.04266 -3415.3708 -2955.6933 27.074238 11343.47
+ 4650 307.72339 -3415.1061 -2957.3908 35.816159 11343.746
+ 4660 306.85508 -3415.0684 -2958.6447 40.57985 11344.023
+ 4670 306.64419 -3414.7107 -2958.6007 44.593885 11344.301
+ 4680 306.98704 -3414.7665 -2958.1465 37.642787 11344.58
+ 4690 307.38394 -3414.456 -2957.2457 33.361339 11344.86
+ 4700 307.02742 -3414.1587 -2957.4786 35.175955 11345.141
+ 4710 304.76429 -3411.9734 -2958.6596 76.086836 11345.423
+ 4720 300.41525 -3409.3859 -2962.541 139.91048 11345.707
+ 4730 296.09749 -3406.2891 -2965.8665 209.20249 11345.993
+ 4740 294.8073 -3405.7819 -2967.2784 220.88541 11346.283
+ 4750 298.28952 -3407.693 -2964.0099 161.00372 11346.578
+ 4760 305.06989 -3411.5421 -2957.7738 48.634535 11346.876
+ 4770 310.885 -3415.8254 -2953.4076 -62.866182 11347.175
+ 4780 312.78219 -3417.8581 -2952.6183 -113.03798 11347.473
+ 4790 310.68385 -3417.8622 -2955.7435 -99.411213 11347.769
+ 4800 306.14111 -3414.3911 -2959.0294 -17.308739 11348.064
+ 4810 300.72797 -3411.9251 -2964.615 63.080076 11348.359
+ 4820 296.24064 -3409.2744 -2968.6389 134.73641 11348.655
+ 4830 294.71088 -3407.5969 -2969.2368 162.5542 11348.954
+ 4840 297.88899 -3408.1767 -2965.0894 117.93723 11349.256
+ 4850 304.81456 -3412.3711 -2958.9826 -5.4430956 11349.56
+ 4860 311.52974 -3415.8045 -2952.4276 -120.16856 11349.865
+ 4870 313.8988 -3417.0319 -2950.1313 -172.37579 11350.167
+ 4880 311.46979 -3417.7931 -2954.5054 -173.25432 11350.467
+ 4890 306.50415 -3417.0021 -2961.1004 -125.92562 11350.764
+ 4900 301.60649 -3414.7998 -2966.183 -57.129823 11351.059
+ 4910 299.20365 -3414.7888 -2969.7461 -31.555274 11351.352
+ 4920 299.64241 -3414.644 -2968.9486 -26.232653 11351.646
+ 4930 300.37094 -3414.7779 -2967.9989 -30.906272 11351.939
+ 4940 299.77226 -3414.3706 -2968.4821 -26.774268 11352.232
+ 4950 299.68933 -3412.776 -2967.0109 -19.657533 11352.524
+ 4960 302.84896 -3413.7511 -2963.2862 -69.913792 11352.817
+ 4970 309.05063 -3416.6651 -2956.9757 -162.87234 11353.108
+ 4980 314.82234 -3419.2344 -2950.96 -242.88562 11353.396
+ 4990 316.29543 -3419.6203 -2949.1548 -258.24081 11353.68
+ 5000 312.6692 -3417.0175 -2951.9458 -194.62683 11353.96
+ 5010 306.96552 -3414.4164 -2957.8285 -111.92621 11354.236
+ 5020 303.11156 -3413.4133 -2962.5578 -62.172695 11354.51
+ 5030 302.6671 -3414.9341 -2964.7398 -69.214188 11354.784
+ 5040 303.64765 -3415.7333 -2964.0804 -83.878164 11355.056
+ 5050 303.31441 -3414.4169 -2963.2597 -71.974397 11355.326
+ 5060 301.06884 -3413.4485 -2965.6314 -56.128119 11355.596
+ 5070 298.55722 -3411.9501 -2967.8688 -35.868537 11355.865
+ 5080 297.52408 -3411.8591 -2969.3146 -42.62705 11356.133
+ 5090 297.95417 -3411.9853 -2968.8011 -60.995315 11356.401
+ 5100 299.57566 -3412.7157 -2967.1196 -92.455896 11356.668
+ 5110 302.56705 -3414.4073 -2964.3618 -140.92751 11356.933
+ 5120 305.72689 -3415.658 -2960.9125 -181.94464 11357.196
+ 5130 306.68766 -3414.6117 -2958.4371 -180.39328 11357.455
+ 5140 304.85315 -3413.7223 -2960.2764 -163.00172 11357.712
+ 5150 301.81509 -3412.2229 -2963.2958 -134.84423 11357.965
+ 5160 299.56415 -3411.7814 -2966.2025 -129.13995 11358.217
+ 5170 298.75496 -3412.203 -2967.8276 -147.54655 11358.466
+ 5180 299.43741 -3412.1994 -2966.809 -172.45981 11358.712
+ 5190 301.98377 -3414.8534 -2965.6755 -236.74254 11358.956
+ 5200 305.99934 -3416.9413 -2961.7905 -293.24376 11359.195
+ 5210 308.65157 -3417.1542 -2958.0583 -304.80232 11359.429
+ 5220 307.02497 -3415.9826 -2959.3063 -258.72631 11359.657
+ 5230 300.89254 -3413.3104 -2965.7555 -160.52157 11359.881
+ 5240 293.77199 -3410.9283 -2973.9647 -65.46284 11360.102
+ 5250 290.79626 -3408.5451 -2976.0077 -13.935096 11360.322
+ 5260 294.78607 -3408.3813 -2969.9094 -52.412014 11360.541
+ 5270 303.7391 -3411.7873 -2959.9984 -176.10562 11360.76
+ 5280 312.22168 -3416.0137 -2951.6076 -307.53063 11360.976
+ 5290 315.67057 -3418.3477 -2948.8116 -376.35171 11361.186
+ 5300 313.36589 -3416.8358 -2950.7278 -352.84977 11361.389
+ 5310 308.16985 -3414.3825 -2956.0032 -291.57704 11361.586
+ 5320 303.395 -3412.1469 -2960.8698 -233.96846 11361.778
+ 5330 301.08861 -3411.4307 -2963.5842 -213.15408 11361.965
+ 5340 301.46361 -3412.6021 -2964.1979 -237.3301 11362.149
+ 5350 303.64853 -3413.5065 -2961.8523 -274.69668 11362.328
+ 5360 306.22549 -3414.0854 -2958.5982 -310.46498 11362.502
+ 5370 307.71053 -3414.2447 -2956.5486 -329.99761 11362.67
+ 5380 307.61162 -3414.3897 -2956.8407 -330.68455 11362.832
+ 5390 305.85885 -3413.1711 -2958.2292 -294.56745 11362.988
+ 5400 302.25654 -3411.802 -2962.2183 -235.11179 11363.139
+ 5410 296.80959 -3410.5526 -2969.0709 -160.11076 11363.285
+ 5420 291.25949 -3407.0128 -2973.7864 -60.647564 11363.429
+ 5430 289.00527 -3406.4613 -2976.5879 -29.379949 11363.571
+ 5440 292.60342 -3407.561 -2972.3356 -71.464127 11363.713
+ 5450 300.40318 -3411.8455 -2965.0186 -190.87083 11363.854
+ 5460 307.73404 -3414.5854 -2956.8543 -291.3804 11363.991
+ 5470 310.47691 -3417.6288 -2955.8179 -357.68368 11364.123
+ 5480 307.70868 -3416.1615 -2958.4682 -322.35085 11364.249
+ 5490 300.93304 -3412.9226 -2965.3075 -228.13152 11364.368
+ 5500 293.25135 -3409.0958 -2972.9066 -117.98453 11364.484
+ 5510 288.60017 -3407.9903 -2978.7194 -67.039191 11364.597
+ 5520 289.75249 -3408.2478 -2977.263 -85.392412 11364.708
+ 5530 296.36261 -3411.8038 -2970.9869 -194.3933 11364.819
+ 5540 305.32286 -3416.1644 -2962.0198 -337.72712 11364.925
+ 5550 312.41103 -3419.5794 -2954.8917 -455.29148 11365.026
+ 5560 314.12213 -3421.0542 -2953.8213 -502.00098 11365.118
+ 5570 310.04686 -3418.5346 -2957.3634 -446.96854 11365.201
+ 5580 303.16694 -3415.5117 -2964.5739 -353.04152 11365.275
+ 5590 297.10245 -3412.9069 -2970.9895 -261.77745 11365.343
+ 5600 293.53773 -3411.8359 -2975.2207 -203.61435 11365.406
+ 5610 292.15495 -3410.6864 -2976.1281 -161.98306 11365.465
+ 5620 291.84779 -3410.3454 -2976.2439 -142.34151 11365.521
+ 5630 291.56677 -3408.5708 -2974.8873 -112.77245 11365.574
+ 5640 290.83811 -3407.7528 -2975.1531 -98.292993 11365.626
+ 5650 290.4906 -3408.5725 -2976.4897 -113.20971 11365.675
+ 5660 291.88667 -3410.4102 -2976.2509 -158.51067 11365.723
+ 5670 294.82768 -3412.112 -2973.5781 -213.98917 11365.767
+ 5680 297.05547 -3412.664 -2970.8165 -248.90573 11365.808
+ 5690 296.97117 -3412.3069 -2970.5848 -251.63967 11365.844
+ 5700 295.61021 -3412.3519 -2972.6542 -245.57812 11365.875
+ 5710 296.337 -3412.6687 -2971.8898 -253.98271 11365.902
+ 5720 300.16895 -3415.2226 -2968.744 -307.76735 11365.923
+ 5730 304.16005 -3417.0709 -2964.6559 -354.61774 11365.94
+ 5740 305.82358 -3416.6839 -2961.7945 -360.33605 11365.949
+ 5750 305.53139 -3416.0936 -2961.6388 -351.61979 11365.952
+ 5760 304.58996 -3416.6214 -2963.5669 -354.21217 11365.948
+ 5770 303.41604 -3415.7157 -2964.4074 -343.32071 11365.938
+ 5780 302.76257 -3414.2878 -2963.9514 -334.09422 11365.921
+ 5790 304.19458 -3415.6297 -2963.1634 -369.1176 11365.898
+ 5800 306.57878 -3417.8544 -2961.8417 -413.80665 11365.867
+ 5810 306.12533 -3416.1387 -2960.8004 -384.19447 11365.829
+ 5820 301.02416 -3414.1666 -2966.4159 -311.998 11365.784
+ 5830 293.84957 -3411.4036 -2974.3247 -214.76231 11365.733
+ 5840 289.00319 -3409.1682 -2979.2979 -143.15962 11365.678
+ 5850 288.67941 -3409.4862 -2980.0975 -138.98627 11365.62
+ 5860 291.72555 -3410.8572 -2976.9376 -176.39704 11365.56
+ 5870 295.18252 -3413.0955 -2974.0339 -228.42802 11365.496
+ 5880 296.54546 -3413.6144 -2972.5255 -245.81789 11365.428
+ 5890 295.97622 -3413.9421 -2973.6999 -244.65685 11365.355
+ 5900 294.77706 -3413.5565 -2975.0979 -230.69796 11365.278
+ 5910 294.04803 -3413.0145 -2975.6403 -219.33088 11365.196
+ 5920 293.49315 -3414.4023 -2977.8535 -233.45516 11365.11
+ 5930 291.86343 -3414.4548 -2980.33 -228.93565 11365.019
+ 5940 289.23498 -3413.7377 -2983.5226 -213.09407 11364.925
+ 5950 287.77271 -3412.1632 -2984.1231 -200.86315 11364.826
+ 5960 290.09943 -3413.5622 -2982.0613 -252.18229 11364.723
+ 5970 295.32791 -3416.0434 -2976.7655 -333.6136 11364.615
+ 5980 299.08963 -3417.2569 -2972.3837 -383.27189 11364.501
+ 5990 298.88671 -3417.1113 -2972.5399 -383.30284 11364.38
+ 6000 297.12127 -3416.4347 -2974.4893 -362.83746 11364.252
+ 6010 297.77997 -3416.862 -2973.9369 -372.80116 11364.117
+ 6020 302.62202 -3419.1563 -2969.0289 -436.42551 11363.974
+ 6030 309.71003 -3422.9928 -2962.3226 -534.31371 11363.823
+ 6040 314.99112 -3425.7829 -2957.2574 -603.27861 11363.662
+ 6050 315.52171 -3425.8946 -2956.58 -599.31648 11363.49
+ 6060 310.69337 -3424.4587 -2962.3258 -531.38371 11363.306
+ 6070 301.86489 -3419.6726 -2970.6715 -392.86542 11363.112
+ 6080 291.81033 -3414.9249 -2980.8792 -248.68234 11362.911
+ 6090 283.93746 -3411.552 -2989.2166 -144.40788 11362.705
+ 6100 280.53451 -3410.1835 -2992.9097 -104.19098 11362.496
+ 6110 280.65418 -3410.3375 -2992.8857 -114.63063 11362.285
+ 6120 281.89405 -3411.4536 -2992.1576 -149.5991 11362.072
+ 6130 283.35013 -3412.6762 -2991.2143 -188.13946 11361.855
+ 6140 285.82871 -3413.7618 -2988.6133 -226.66288 11361.636
+ 6150 289.04957 -3414.7005 -2984.7611 -260.8979 11361.411
+ 6160 291.21884 -3414.8418 -2981.6758 -271.57461 11361.182
+ 6170 291.06662 -3414.7238 -2981.7843 -260.10327 11360.948
+ 6180 289.74382 -3414.6669 -2983.6949 -242.2011 11360.708
+ 6190 289.43697 -3414.8639 -2984.3484 -239.76229 11360.464
+ 6200 291.28882 -3416.6842 -2983.4141 -277.81169 11360.215
+ 6210 294.38789 -3416.2444 -2978.3647 -304.22105 11359.961
+ 6220 296.77762 -3417.4195 -2975.9853 -346.66321 11359.701
+ 6230 296.8651 -3418.2124 -2976.648 -366.66534 11359.435
+ 6240 294.36261 -3417.6885 -2979.8464 -349.93072 11359.161
+ 6250 291.00355 -3416.7265 -2983.8807 -317.06156 11358.881
+ 6260 289.10698 -3415.852 -2985.8273 -290.42254 11358.594
+ 6270 289.70718 -3416.508 -2985.5906 -296.42279 11358.302
+ 6280 292.31973 -3417.2658 -2982.4623 -317.19064 11358.005
+ 6290 295.39495 -3418.2601 -2978.8825 -343.70314 11357.701
+ 6300 296.86122 -3419.3586 -2977.8 -360.67537 11357.39
+ 6310 295.39334 -3419.4911 -2980.1159 -348.05897 11357.073
+ 6320 291.82514 -3417.896 -2983.8282 -304.71167 11356.749
+ 6330 288.82688 -3416.063 -2986.4549 -267.73812 11356.419
+ 6340 288.42767 -3415.2895 -2986.2752 -265.3748 11356.084
+ 6350 290.46357 -3417.0683 -2985.0257 -311.69572 11355.744
+ 6360 293.31547 -3418.9966 -2982.7121 -364.23093 11355.397
+ 6370 295.34651 -3419.9837 -2980.6782 -394.42715 11355.044
+ 6380 295.80141 -3419.9049 -2979.9227 -395.44521 11354.683
+ 6390 295.69523 -3421.3836 -2981.5594 -404.85662 11354.314
+ 6400 296.14083 -3421.1699 -2980.6828 -396.51659 11353.937
+ 6410 297.42025 -3421.6436 -2979.2535 -400.39693 11353.553
+ 6420 298.7728 -3421.7601 -2977.3582 -400.92808 11353.161
+ 6430 299.61763 -3421.8837 -2976.2251 -400.21455 11352.761
+ 6440 299.68528 -3421.7421 -2975.9829 -392.81935 11352.353
+ 6450 298.52391 -3420.9757 -2976.944 -372.63659 11351.938
+ 6460 296.60117 -3419.8225 -2978.6507 -346.09685 11351.515
+ 6470 295.40582 -3418.5122 -2979.1184 -323.90652 11351.086
+ 6480 295.78619 -3419.4496 -2979.4901 -337.64151 11350.65
+ 6490 297.57341 -3420.8397 -2978.2218 -363.35831 11350.207
+ 6500 300.01848 -3421.6448 -2975.3901 -381.1591 11349.758
+ 6510 301.70992 -3422.3327 -2973.562 -386.10414 11349.3
+ 6520 300.95891 -3422.5684 -2974.9148 -362.6558 11348.836
+ 6530 296.27465 -3420.406 -2979.7199 -281.10318 11348.364
+ 6540 287.97511 -3416.1398 -2987.7987 -152.23028 11347.887
+ 6550 278.94583 -3412.031 -2997.1202 -28.68352 11347.406
+ 6560 273.5981 -3410.5779 -3003.6215 28.748301 11346.924
+ 6570 274.27251 -3410.7307 -3002.7711 14.447363 11346.443
+ 6580 280.6124 -3414.4181 -2997.0284 -87.361991 11345.961
+ 6590 289.86552 -3420.1198 -2988.9668 -232.6794 11345.478
+ 6600 297.88722 -3424.8074 -2981.7228 -349.39242 11344.99
+ 6610 301.28417 -3426.356 -2978.2186 -384.07585 11344.495
+ 6620 299.26463 -3425.0128 -2979.8794 -335.02439 11343.993
+ 6630 293.62681 -3423.1419 -2986.3943 -247.55249 11343.485
+ 6640 287.59746 -3419.3603 -2991.5809 -134.87799 11342.971
+ 6650 283.96033 -3417.3209 -2994.9515 -64.319243 11342.455
+ 6660 283.52451 -3417.4357 -2995.7145 -46.359794 11341.937
+ 6670 284.48627 -3418.389 -2995.2373 -52.674978 11341.418
+ 6680 285.32636 -3418.2298 -2993.8285 -47.040832 11340.897
+ 6690 286.19365 -3417.4246 -2991.7332 -34.396231 11340.376
+ 6700 287.67201 -3417.9802 -2990.0898 -40.915412 11339.853
+ 6710 289.15074 -3419.3252 -2989.2354 -58.506922 11339.329
+ 6720 290.51527 -3420.6117 -2988.4923 -79.593355 11338.804
+ 6730 292.89201 -3422.0198 -2986.3651 -115.25473 11338.277
+ 6740 296.68288 -3421.5193 -2980.226 -143.57147 11337.747
+ 6750 300.46989 -3423.5152 -2976.589 -201.5613 11337.215
+ 6760 302.1202 -3424.2936 -2974.9127 -226.91398 11336.678
+ 6770 300.73106 -3425.234 -2977.9194 -224.99882 11336.137
+ 6780 297.24018 -3424.5771 -2982.4548 -182.69877 11335.591
+ 6790 294.03096 -3424.457 -2987.1083 -143.25411 11335.042
+ 6800 292.48519 -3423.8676 -2988.8181 -107.40644 11334.489
+ 6810 291.96621 -3424.0632 -2989.7856 -88.847897 11333.934
+ 6820 291.71151 -3422.9485 -2989.0497 -59.326875 11333.377
+ 6830 291.53161 -3424.5 -2990.8688 -64.196719 11332.818
+ 6840 291.52072 -3423.5083 -2989.8933 -43.916793 11332.259
+ 6850 292.11609 -3424.0053 -2989.5047 -49.270602 11331.697
+ 6860 293.90261 -3423.2682 -2986.1103 -51.700976 11331.135
+ 6870 295.76499 -3423.888 -2983.96 -73.232789 11330.571
+ 6880 295.91503 -3424.5568 -2984.4056 -85.178499 11330.006
+ 6890 294.24898 -3422.8496 -2985.1766 -55.813123 11329.439
+ 6900 292.0421 -3421.92 -2987.5295 -28.069876 11328.87
+ 6910 290.30025 -3421.3608 -2989.5612 -3.8548608 11328.301
+ 6920 289.09461 -3421.3341 -2991.3278 12.959217 11327.731
+ 6930 287.89574 -3420.3901 -2992.167 40.424563 11327.161
+ 6940 286.53635 -3421.0699 -2994.8688 48.27005 11326.591
+ 6950 285.67169 -3419.3706 -2994.4557 76.126855 11326.022
+ 6960 287.11653 -3420.6868 -2993.6227 48.272468 11325.454
+ 6970 292.18538 -3423.1932 -2988.5896 -20.735545 11324.887
+ 6980 298.39508 -3426.1523 -2982.3122 -103.06044 11324.318
+ 6990 301.91088 -3428.6614 -2979.5919 -159.29459 11323.748
+ 7000 301.36193 -3428.4391 -2980.1861 -150.61285 11323.174
+ 7010 298.20871 -3426.6254 -2983.0625 -101.6302 11322.597
+ 7020 294.8097 -3426.0045 -2987.4974 -64.364234 11322.018
+ 7030 292.37608 -3423.9008 -2989.0135 -18.59073 11321.438
+ 7040 291.45927 -3424.8045 -2991.2809 -20.796875 11320.856
+ 7050 292.29759 -3425.0245 -2990.254 -28.434169 11320.274
+ 7060 293.8746 -3424.0443 -2986.9281 -25.425973 11319.691
+ 7070 294.20148 -3422.8198 -2985.2174 -7.3859328 11319.107
+ 7080 292.30506 -3421.7769 -2986.9952 28.357367 11318.523
+ 7090 289.14746 -3420.0901 -2990.0052 83.68206 11317.938
+ 7100 286.54279 -3418.0275 -2991.8168 140.67447 11317.355
+ 7110 285.7616 -3417.6831 -2992.6344 165.5534 11316.774
+ 7120 286.53344 -3419.7043 -2993.5075 150.4046 11316.196
+ 7130 287.88635 -3420.8366 -2992.6275 140.68303 11315.62
+ 7140 288.28237 -3422.6638 -2993.8657 129.07254 11315.047
+ 7150 286.79471 -3422.3495 -2995.7641 154.21497 11314.475
+ 7160 284.07779 -3421.1432 -2998.5991 194.1665 11313.906
+ 7170 282.30142 -3420.414 -3000.512 217.03523 11313.341
+ 7180 283.30658 -3421.3613 -2999.9643 196.96412 11312.779
+ 7190 287.22579 -3423.3988 -2996.1722 141.91176 11312.221
+ 7200 292.54768 -3425.363 -2990.2205 78.023004 11311.665
+ 7210 297.39629 -3427.3506 -2984.9962 20.828086 11311.11
+ 7220 300.02528 -3427.5477 -2981.2828 5.9767951 11310.555
+ 7230 299.92604 -3427.8012 -2981.684 14.866143 11310
+ 7240 298.56795 -3427.2834 -2983.1862 43.184181 11309.445
+ 7250 298.1932 -3426.2135 -2982.6737 67.348131 11308.89
+ 7260 300.41609 -3426.6012 -2979.7551 53.139168 11308.337
+ 7270 303.83863 -3428.5225 -2976.5855 12.848641 11307.783
+ 7280 305.09654 -3428.551 -2974.743 15.60531 11307.23
+ 7290 301.73765 -3428.0682 -2979.2564 67.245252 11306.677
+ 7300 293.20441 -3424.2897 -2988.1703 202.9694 11306.125
+ 7310 280.99842 -3419.5633 -3001.5995 377.68385 11305.577
+ 7320 269.71381 -3413.4675 -3012.2886 552.96787 11305.035
+ 7330 264.97275 -3412.276 -3018.1491 608.09094 11304.503
+ 7340 268.83858 -3414.9268 -3015.0498 538.4717 11303.981
+ 7350 278.95918 -3420.1026 -3005.1719 379.69064 11303.47
+ 7360 290.55515 -3425.9088 -2993.73 196.70011 11302.965
+ 7370 299.05872 -3429.7513 -2984.9242 63.450617 11302.463
+ 7380 302.78899 -3431.9507 -2981.575 -3.8081301 11301.963
+ 7390 303.36018 -3432.144 -2980.9187 -10.758285 11301.462
+ 7400 303.06399 -3432.4217 -2981.637 -1.7819177 11300.961
+ 7410 302.40688 -3431.332 -2981.5247 29.537689 11300.459
+ 7420 300.78587 -3429.7525 -2982.3563 72.631746 11299.958
+ 7430 298.51882 -3428.7613 -2984.7371 109.21815 11299.458
+ 7440 297.25593 -3428.0205 -2985.8749 134.19644 11298.959
+ 7450 296.89439 -3427.7436 -2986.1357 151.35147 11298.463
+ 7460 294.74631 -3427.3411 -2988.9283 189.77757 11297.969
+ 7470 289.00373 -3426.5528 -2996.6816 264.21295 11297.478
+ 7480 281.06773 -3422.9339 -3004.867 389.17312 11296.993
+ 7490 274.37496 -3417.5831 -3009.4711 518.87093 11296.514
+ 7500 272.85213 -3416.9658 -3011.1189 545.70019 11296.044
+ 7510 277.69605 -3419.9805 -3006.9287 475.26624 11295.585
+ 7520 285.63217 -3423.1232 -2998.267 377.78533 11295.133
+ 7530 291.61198 -3426.5877 -2992.8369 292.9389 11294.689
+ 7540 293.34825 -3428.5467 -2992.2134 262.01992 11294.25
+ 7550 291.92668 -3428.1063 -2993.8875 287.11823 11293.816
+ 7560 289.70676 -3426.0758 -2995.1589 338.25352 11293.387
+ 7570 288.75765 -3425.3504 -2995.8453 362.43985 11292.964
+ 7580 289.97828 -3425.7303 -2994.4095 355.73684 11292.547
+ 7590 292.05946 -3424.8388 -2990.4225 356.43027 11292.137
+ 7600 293.45683 -3426.3586 -2989.8638 334.16993 11291.733
+ 7610 294.25112 -3427.967 -2990.2908 315.11914 11291.335
+ 7620 294.75727 -3428.9023 -2990.4732 307.32571 11290.943
+ 7630 293.43197 -3427.9814 -2991.5236 332.9256 11290.556
+ 7640 289.60398 -3426.3131 -2995.5491 382.97681 11290.176
+ 7650 284.90875 -3422.4904 -2998.7103 464.08095 11289.802
+ 7660 281.06165 -3420.4159 -3002.358 519.17967 11289.437
+ 7670 278.97953 -3420.0267 -3005.0658 542.74568 11289.081
+ 7680 279.64311 -3420.5047 -3004.5568 539.47517 11288.735
+ 7690 283.0552 -3422.1182 -3001.0951 508.07117 11288.398
+ 7700 287.33092 -3423.776 -2996.3931 474.93648 11288.071
+ 7710 290.39229 -3426.2653 -2994.3287 444.16492 11287.753
+ 7720 291.91976 -3425.6052 -2991.3967 461.0225 11287.443
+ 7730 292.90817 -3426.2471 -2990.5684 462.35089 11287.141
+ 7740 294.69741 -3427.6903 -2989.3503 442.2762 11286.848
+ 7750 297.35834 -3429.3156 -2987.0176 407.48458 11286.562
+ 7760 299.42132 -3430.3723 -2985.0058 379.57726 11286.285
+ 7770 299.51252 -3429.3709 -2983.8687 389.90759 11286.014
+ 7780 297.30412 -3427.8563 -2985.639 424.44593 11285.75
+ 7790 293.87445 -3427.296 -2990.18 458.54377 11285.494
+ 7800 290.98221 -3426.3527 -2993.5387 494.8472 11285.246
+ 7810 289.55973 -3425.8938 -2995.1956 517.41398 11285.008
+ 7820 288.76371 -3424.3077 -2994.7936 549.71191 11284.779
+ 7830 287.55946 -3423.6971 -2995.9742 572.52481 11284.56
+ 7840 285.90844 -3423.5139 -2998.2467 590.00201 11284.352
+ 7850 284.7871 -3423.467 -2999.8677 597.07369 11284.154
+ 7860 285.61318 -3424.0195 -2999.1915 579.65317 11283.968
+ 7870 288.70454 -3425.3297 -2995.9036 536.63797 11283.792
+ 7880 292.61298 -3427.9754 -2992.7358 475.22276 11283.626
+ 7890 295.43832 -3428.7526 -2989.3105 446.96205 11283.469
+ 7900 296.8326 -3428.6685 -2987.1525 443.15359 11283.32
+ 7910 296.81751 -3428.2596 -2986.766 454.24401 11283.18
+ 7920 295.37346 -3427.778 -2988.4324 473.31464 11283.047
+ 7930 293.65426 -3427.1561 -2990.3676 489.4321 11282.924
+ 7940 293.64657 -3427.4073 -2990.6302 475.72434 11282.81
+ 7950 296.1174 -3427.2123 -2986.7601 445.52973 11282.704
+ 7960 299.28393 -3430.1356 -2984.9734 375.01745 11282.607
+ 7970 300.5723 -3430.6496 -2983.5711 352.06508 11282.517
+ 7980 299.2474 -3431.0175 -2985.9096 358.99408 11282.433
+ 7990 296.73667 -3429.5955 -2988.2222 402.58817 11282.356
+ 8000 294.81768 -3428.8717 -2990.3528 437.494 11282.287
+ 8010 293.59041 -3428.3669 -2991.6734 464.25873 11282.225
+ 8020 292.00046 -3427.5432 -2993.2147 491.31064 11282.173
+ 8030 290.30651 -3426.0095 -2994.2006 521.45857 11282.13
+ 8040 289.55601 -3426.7975 -2996.1049 516.44436 11282.096
+ 8050 289.77671 -3427.5515 -2996.5306 510.2388 11282.072
+ 8060 289.48918 -3427.3897 -2996.7965 527.04971 11282.058
+ 8070 287.26355 -3426.6332 -2999.3505 574.71106 11282.054
+ 8080 282.47459 -3423.6479 -3003.4884 673.69403 11282.06
+ 8090 276.13194 -3418.6908 -3007.9654 806.15991 11282.08
+ 8100 271.57451 -3415.5622 -3011.6157 895.60328 11282.114
+ 8110 272.27177 -3415.7638 -3010.7802 895.73438 11282.166
+ 8120 278.33087 -3418.4241 -3004.428 815.85092 11282.234
+ 8130 286.63837 -3422.4913 -2996.1384 694.39734 11282.317
+ 8140 293.45608 -3425.6684 -2989.1747 590.47427 11282.413
+ 8150 297.15953 -3427.7827 -2985.7804 524.06717 11282.521
+ 8160 298.70193 -3429.3223 -2985.0258 485.92607 11282.639
+ 8170 300.054 -3431.4225 -2985.1149 447.8404 11282.766
+ 8180 302.24887 -3431.583 -2982.0107 428.76032 11282.902
+ 8190 304.50701 -3431.9095 -2978.9784 405.6857 11283.046
+ 8200 306.05822 -3433.0563 -2977.8179 373.61225 11283.198
+ 8210 307.32458 -3433.5323 -2976.4102 348.46047 11283.357
+ 8220 307.90025 -3433.6555 -2975.6772 333.22105 11283.523
+ 8230 306.49097 -3432.2373 -2976.3552 355.02074 11283.696
+ 8240 302.75529 -3430.2898 -2979.9642 407.00244 11283.875
+ 8250 297.96689 -3426.7547 -2983.5515 493.91679 11284.062
+ 8260 293.45872 -3425.6021 -2989.1045 557.9576 11284.258
+ 8270 289.8701 -3423.7354 -2992.5756 626.77908 11284.465
+ 8280 286.90652 -3422.0552 -2995.3035 685.47532 11284.685
+ 8290 284.79158 -3421.1984 -2997.5925 720.02968 11284.917
+ 8300 285.07874 -3419.8547 -2995.8217 731.64129 11285.163
+ 8310 288.80146 -3422.3612 -2992.7909 663.8748 11285.422
+ 8320 294.43367 -3425.5762 -2987.6284 570.14609 11285.695
+ 8330 298.51541 -3427.8686 -2983.8496 501.58366 11285.978
+ 8340 298.28493 -3428.4859 -2984.8096 494.6078 11286.272
+ 8350 293.48784 -3426.5098 -2989.9689 564.45748 11286.575
+ 8360 285.96676 -3420.9138 -2995.5599 704.16208 11286.889
+ 8370 278.92604 -3416.3578 -3001.4765 826.2316 11287.216
+ 8380 276.33394 -3415.1152 -3004.0894 866.29455 11287.56
+ 8390 280.20386 -3416.7611 -2999.9791 808.94435 11287.92
+ 8400 288.93442 -3421.4006 -2991.6325 666.97644 11288.295
+ 8410 298.63666 -3427.0646 -2982.8652 498.14804 11288.683
+ 8420 305.92311 -3430.7073 -2975.6698 370.94338 11289.081
+ 8430 308.85543 -3430.2889 -2970.8899 331.56735 11289.486
+ 8440 306.72102 -3430.8321 -2974.6079 331.41968 11289.899
+ 8450 300.24072 -3426.6626 -2980.0773 429.03777 11290.318
+ 8460 291.94914 -3424.0735 -2989.8213 528.31122 11290.745
+ 8470 284.71828 -3420.057 -2996.5602 635.95586 11291.183
+ 8480 280.3389 -3418.018 -3001.0352 691.56587 11291.634
+ 8490 280.16347 -3418.2482 -3001.5262 678.18803 11292.097
+ 8500 285.02268 -3420.6428 -2996.6932 592.86277 11292.574
+ 8510 293.48997 -3424.7363 -2988.1922 458.52531 11293.062
+ 8520 301.93246 -3428.947 -2979.8454 325.9403 11293.56
+ 8530 307.0874 -3429.7708 -2973.0016 266.27939 11294.064
+ 8540 307.22233 -3429.7422 -2972.7722 263.77874 11294.574
+ 8550 303.4199 -3428.6242 -2977.3101 309.75736 11295.09
+ 8560 298.48932 -3425.2237 -2981.2435 391.21386 11295.612
+ 8570 294.72967 -3423.0798 -2984.6918 445.66757 11296.142
+ 8580 292.61418 -3423.0894 -2987.848 458.85993 11296.68
+ 8590 291.15761 -3422.5128 -2989.438 467.54571 11297.228
+ 8600 290.46271 -3422.4537 -2990.4124 457.65683 11297.786
+ 8610 291.48833 -3422.7409 -2989.1741 426.77096 11298.352
+ 8620 293.63284 -3423.8604 -2987.1038 376.15147 11298.927
+ 8630 295.0347 -3423.6761 -2984.8344 346.04773 11299.51
+ 8640 294.80386 -3423.5784 -2985.08 330.58372 11300.1
+ 8650 293.01006 -3422.8162 -2986.9859 339.64394 11300.698
+ 8660 290.14027 -3421.7682 -2990.2066 365.20134 11301.302
+ 8670 287.17208 -3421.0621 -2993.9154 390.13854 11301.914
+ 8680 285.60338 -3419.6216 -2994.8082 413.38068 11302.533
+ 8690 285.89581 -3420.7056 -2995.4572 393.12391 11303.161
+ 8700 286.89882 -3420.1739 -2993.4337 384.62715 11303.798
+ 8710 288.2563 -3420.6093 -2991.8499 360.62059 11304.442
+ 8720 290.20845 -3421.211 -2989.548 331.95195 11305.094
+ 8730 291.65046 -3422.0791 -2988.2711 305.87268 11305.753
+ 8740 291.85985 -3420.9977 -2986.8783 311.06459 11306.418
+ 8750 292.06507 -3420.1768 -2985.7521 310.61059 11307.09
+ 8760 294.63913 -3421.2163 -2982.9629 268.1368 11307.769
+ 8770 300.56483 -3423.3019 -2976.2345 186.86226 11308.453
+ 8780 308.02563 -3427.6128 -2969.448 71.180605 11309.141
+ 8790 312.71509 -3430.9042 -2965.7642 -7.0953975 11309.832
+ 8800 311.60772 -3430.5787 -2967.0858 6.8024709 11310.524
+ 8810 305.00682 -3428.109 -2974.4345 90.847267 11311.217
+ 8820 296.5019 -3422.8371 -2981.813 221.36212 11311.913
+ 8830 290.68244 -3420.1246 -2987.7565 298.99842 11312.613
+ 8840 289.29344 -3418.4844 -2988.1824 325.98305 11313.32
+ 8850 290.55306 -3419.7688 -2987.5932 294.70518 11314.033
+ 8860 291.44666 -3420.4714 -2986.9666 268.34023 11314.754
+ 8870 291.16866 -3420.7043 -2987.613 252.12065 11315.48
+ 8880 292.10476 -3421.0271 -2986.5434 223.67745 11316.212
+ 8890 295.49352 -3421.6755 -2982.1513 174.35547 11316.948
+ 8900 299.14414 -3422.8499 -2977.8957 121.20406 11317.689
+ 8910 300.41706 -3422.2838 -2975.4362 110.66761 11318.433
+ 8920 299.31205 -3422.0854 -2976.8814 119.2091 11319.181
+ 8930 297.66454 -3422.9267 -2980.1732 123.44397 11319.931
+ 8940 296.80678 -3422.3301 -2980.8525 139.62468 11320.684
+ 8950 295.98855 -3420.1736 -2979.913 171.67696 11321.442
+ 8960 293.56524 -3419.8331 -2983.1771 190.45929 11322.203
+ 8970 289.04706 -3418.5582 -2988.6226 229.30342 11322.969
+ 8980 284.3664 -3415.8908 -2992.9174 278.26877 11323.74
+ 8990 282.73106 -3415.299 -2994.758 274.75542 11324.517
+ 9000 285.18117 -3414.806 -2990.6206 237.74744 11325.301
+ 9010 288.95106 -3417.0867 -2987.2939 159.95706 11326.089
+ 9020 290.82008 -3417.6081 -2985.0353 119.11664 11326.882
+ 9030 291.0227 -3417.2804 -2984.4062 104.07466 11327.678
+ 9040 292.07667 -3417.6453 -2983.2033 77.743333 11328.477
+ 9050 295.62001 -3419.2749 -2979.5625 20.796478 11329.278
+ 9060 300.87574 -3422.5637 -2975.0338 -67.69107 11330.081
+ 9070 306.1094 -3424.9177 -2969.6031 -145.54897 11330.884
+ 9080 310.28326 -3426.4663 -2964.9435 -203.16359 11331.684
+ 9090 312.07129 -3426.278 -2962.0956 -217.20312 11332.482
+ 9100 309.99533 -3423.8553 -2962.7608 -170.96672 11333.278
+ 9110 304.7102 -3422.1712 -2968.9379 -105.3252 11334.07
+ 9120 298.91873 -3417.3453 -2972.7263 1.9166122 11334.862
+ 9130 294.65313 -3416.0648 -2977.7906 52.882242 11335.655
+ 9140 293.28763 -3415.3372 -2979.0941 69.514453 11336.45
+ 9150 295.09055 -3417.9325 -2979.0076 16.459038 11337.247
+ 9160 299.01595 -3420.1576 -2975.394 -52.860206 11338.045
+ 9170 302.98986 -3421.2221 -2970.5476 -111.10921 11338.843
+ 9180 305.83891 -3423.5556 -2968.6434 -172.15514 11339.64
+ 9190 307.49151 -3423.7017 -2966.3314 -191.2227 11340.435
+ 9200 307.35054 -3423.4617 -2966.301 -183.58445 11341.227
+ 9210 303.75058 -3421.4633 -2969.6573 -127.06029 11342.017
+ 9220 297.49277 -3417.2013 -2974.7034 -29.185958 11342.805
+ 9230 293.29491 -3414.7807 -2978.5268 24.8518 11343.594
+ 9240 294.95411 -3415.3393 -2976.6174 -5.0155484 11344.384
+ 9250 301.12347 -3419.2404 -2971.3421 -109.58143 11345.175
+ 9260 307.56243 -3421.1759 -2963.7001 -190.13258 11345.965
+ 9270 310.83525 -3421.63 -2959.2861 -223.33489 11346.752
+ 9280 310.19015 -3420.2216 -2958.8373 -197.35187 11347.536
+ 9290 306.56054 -3417.8263 -2961.8408 -133.66934 11348.317
+ 9300 302.22487 -3414.5545 -2965.0179 -56.580447 11349.097
+ 9310 299.24042 -3412.2365 -2967.1391 -8.8260966 11349.877
+ 9320 298.10066 -3411.3846 -2967.9824 -1.9507866 11350.657
+ 9330 298.13282 -3413.2305 -2969.7806 -44.012796 11351.439
+ 9340 298.93117 -3412.8373 -2968.1998 -69.385733 11352.22
+ 9350 299.85262 -3412.6391 -2966.631 -93.62576 11353.001
+ 9360 299.29406 -3412.0847 -2966.9075 -95.404151 11353.781
+ 9370 296.98144 -3410.1146 -2968.3773 -60.836513 11354.561
+ 9380 294.94134 -3408.5495 -2969.8466 -27.94635 11355.34
+ 9390 295.32042 -3408.4769 -2969.2101 -27.8225 11356.12
+ 9400 298.35653 -3408.4359 -2964.6532 -49.004761 11356.9
+ 9410 303.08618 -3411.6225 -2960.8048 -124.02173 11357.681
+ 9420 308.23017 -3414.8865 -2956.4175 -209.06916 11358.459
+ 9430 312.50572 -3416.3956 -2951.567 -273.03973 11359.235
+ 9440 314.86944 -3417.3306 -2948.9862 -320.84876 11360.007
+ 9450 315.68961 -3418.0074 -2948.4431 -358.14563 11360.773
+ 9460 316.40991 -3417.5862 -2946.9504 -380.94148 11361.534
+ 9470 316.3435 -3417.6876 -2947.1507 -400.36198 11362.288
+ 9480 313.56037 -3416.673 -2950.2757 -380.93453 11363.036
+ 9490 307.48271 -3415.1735 -2957.8162 -324.17186 11363.778
+ 9500 299.64899 -3411.3431 -2965.6379 -222.89991 11364.514
+ 9510 292.69589 -3407.9714 -2972.6084 -131.25301 11365.248
+ 9520 288.12755 -3406.2072 -2977.6393 -77.946343 11365.979
+ 9530 286.81087 -3406.3571 -2979.7476 -76.077006 11366.71
+ 9540 288.56493 -3408.1936 -2978.9751 -120.67329 11367.44
+ 9550 291.05876 -3408.168 -2975.2401 -154.35769 11368.169
+ 9560 292.94791 -3408.3589 -2972.6211 -189.97396 11368.897
+ 9570 294.94463 -3409.6578 -2970.95 -241.0342 11369.621
+ 9580 297.67393 -3411.8553 -2969.0879 -307.27951 11370.341
+ 9590 300.57621 -3412.5607 -2965.4764 -356.45208 11371.057
+ 9600 302.98735 -3413.8045 -2963.1337 -406.47383 11371.767
+ 9610 304.89884 -3414.0066 -2960.4927 -440.52553 11372.47
+ 9620 307.15871 -3414.1222 -2957.2469 -473.22343 11373.166
+ 9630 309.46417 -3415.4454 -2955.1409 -516.41882 11373.854
+ 9640 310.47586 -3413.8766 -2952.0673 -513.76397 11374.532
+ 9650 309.34846 -3414.251 -2954.1186 -514.67086 11375.202
+ 9660 306.45383 -3413.9937 -2958.1668 -491.7282 11375.863
+ 9670 302.90441 -3412.487 -2961.9396 -446.01859 11376.516
+ 9680 299.58026 -3410.7023 -2965.0994 -398.32387 11377.16
+ 9690 297.50139 -3409.5536 -2967.0428 -369.31778 11377.799
+ 9700 297.54966 -3410.2739 -2967.6913 -381.2778 11378.43
+ 9710 299.8608 -3412.5354 -2966.5151 -430.44772 11379.056
+ 9720 303.24871 -3412.583 -2961.5235 -460.57971 11379.674
+ 9730 305.27402 -3413.6505 -2959.5785 -488.48309 11380.284
+ 9740 304.32203 -3412.8102 -2960.1543 -467.82544 11380.885
+ 9750 301.59736 -3409.366 -2960.7627 -400.72247 11381.479
+ 9760 300.39741 -3409.196 -2962.3776 -381.54138 11382.066
+ 9770 302.42615 -3409.4798 -2959.6438 -393.01279 11382.646
+ 9780 306.09633 -3411.2557 -2955.9606 -437.56834 11383.219
+ 9790 308.7164 -3411.4496 -2952.2573 -460.33668 11383.785
+ 9800 308.91216 -3413.8331 -2954.3497 -493.50316 11384.343
+ 9810 306.96758 -3412.6317 -2956.0407 -471.38186 11384.893
+ 9820 303.74099 -3410.2538 -2958.4621 -428.99687 11385.434
+ 9830 300.32782 -3408.9718 -2962.257 -401.59599 11385.967
+ 9840 297.84164 -3408.6845 -2965.6676 -396.66884 11386.494
+ 9850 297.13169 -3407.9847 -2966.0238 -404.69992 11387.014
+ 9860 299.05765 -3408.6229 -2963.7974 -449.87536 11387.527
+ 9870 303.31092 -3409.6531 -2958.5011 -513.13615 11388.032
+ 9880 306.75242 -3412.5069 -2956.236 -585.95419 11388.527
+ 9890 306.49365 -3412.5613 -2956.6752 -595.48092 11389.013
+ 9900 303.3467 -3410.7563 -2959.5511 -561.09031 11389.488
+ 9910 301.00273 -3410.1514 -2962.4327 -547.17673 11389.952
+ 9920 302.2765 -3410.726 -2961.1126 -576.84989 11390.407
+ 9930 307.05873 -3412.4242 -2955.6976 -647.83454 11390.851
+ 9940 312.60866 -3414.3825 -2949.4008 -724.91715 11391.284
+ 9950 315.25818 -3414.6014 -2945.6787 -753.98374 11391.703
+ 9960 313.36811 -3413.1774 -2947.0661 -721.71811 11392.109
+ 9970 308.31033 -3410.6748 -2952.0866 -645.50482 11392.502
+ 9980 302.70858 -3410.1395 -2959.8834 -582.25009 11392.882
+ 9990 298.46268 -3407.7945 -2963.8539 -505.54852 11393.252
+ 10000 295.87993 -3406.2931 -2966.1941 -451.8508 11393.613
+Loop time of 3.44537 on 1 procs for 10000 steps with 500 atoms
+
+Performance: 250.772 ns/day, 0.096 hours/ns, 2902.449 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 | 2.8727 | 2.8727 | 2.8727 | 0.0 | 83.38
+Bond | 0.00074196 | 0.00074196 | 0.00074196 | 0.0 | 0.02
+Neigh | 0.021616 | 0.021616 | 0.021616 | 0.0 | 0.63
+Comm | 0.098863 | 0.098863 | 0.098863 | 0.0 | 2.87
+Output | 0.010255 | 0.010255 | 0.010255 | 0.0 | 0.30
+Modify | 0.38274 | 0.38274 | 0.38274 | 0.0 | 11.11
+Other | | 0.05841 | | | 1.70
+
+Nlocal: 500 ave 500 max 500 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Nghost: 1656 ave 1656 max 1656 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Neighs: 14917 ave 14917 max 14917 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+
+Total # of neighbors = 14917
+Ave neighs/atom = 29.834
+Ave special neighs/atom = 0
+Neighbor list builds = 20
+Dangerous builds = 0
+
+#write_data ${rep}/lj-out.data
+Total wall time: 0:00:03
diff --git a/examples/USER/misc/grem/lj-temper/1/lj.data b/examples/USER/misc/grem/lj-temper/1/lj.data
new file mode 100644
index 000000000..0eabc5256
--- /dev/null
+++ b/examples/USER/misc/grem/lj-temper/1/lj.data
@@ -0,0 +1,1022 @@
+LAMMPS data file via write_data, version 9 Nov 2016, timestep = 100000
+
+500 atoms
+1 atom types
+
+1.2618102269765483e+00 2.3738189773016579e+01 xlo xhi
+1.2618102269765483e+00 2.3738189773016579e+01 ylo yhi
+1.2618102269765483e+00 2.3738189773016579e+01 zlo zhi
+
+Masses
+
+1 62.5
+
+Pair Coeffs # lj/cut
+
+1 1.1 2.8
+
+Atoms # full
+
+412 0 1 0.0000000000000000e+00 2.7277648185994146e+00 2.8751953420989818e+00 3.4590000642753935e+00 0 0 1
+9 0 1 0.0000000000000000e+00 7.1308171794577513e+00 3.1257324742341193e+00 3.3375475541172737e+00 0 0 0
+432 0 1 0.0000000000000000e+00 1.0380652568035966e+01 3.5004011859499458e+00 4.1501356070222011e+00 0 0 1
+105 0 1 0.0000000000000000e+00 1.2411435003560246e+01 1.3060050470273878e+00 3.8537701964848052e+00 0 0 0
+440 0 1 0.0000000000000000e+00 1.2558580466620265e+01 3.8488465854409921e+00 1.9458295423138101e+00 0 0 1
+139 0 1 0.0000000000000000e+00 1.4650113611473330e+01 3.8733050721854441e+00 4.1142992786265982e+00 0 0 0
+114 0 1 0.0000000000000000e+00 1.4446174527378249e+01 1.6759778807132217e+00 1.6789140674710612e+00 0 0 0
+35 0 1 0.0000000000000000e+00 1.6955966154868541e+01 4.0716344544017824e+00 1.9612750983285290e+00 0 0 0
+1 0 1 0.0000000000000000e+00 1.9190889095921079e+01 1.9569253607715185e+00 1.6152947871769525e+00 -1 0 0
+134 0 1 0.0000000000000000e+00 1.7099695664810895e+01 1.3058478663110293e+00 4.0701428287834309e+00 0 0 0
+22 0 1 0.0000000000000000e+00 1.9959847871708135e+01 4.8232340055758467e+00 2.8478075166034640e+00 -1 0 0
+200 0 1 0.0000000000000000e+00 2.0013173084221982e+01 1.9681948089052574e+00 4.6122082119411694e+00 0 1 0
+107 0 1 0.0000000000000000e+00 2.2234870676334268e+01 2.6719120007508708e+00 2.6561219145612274e+00 -1 0 0
+51 0 1 0.0000000000000000e+00 2.8298016383849163e+00 7.6704198145018516e+00 3.8354384569454067e+00 0 0 0
+423 0 1 0.0000000000000000e+00 2.9302622291789211e+00 5.8152852435633218e+00 1.3294921253576051e+00 0 0 1
+427 0 1 0.0000000000000000e+00 4.9619014193582949e+00 5.4228647849314831e+00 3.7640670700168242e+00 0 0 1
+32 0 1 0.0000000000000000e+00 5.1754931597682381e+00 8.0123086155158596e+00 1.7471094484022900e+00 0 0 0
+132 0 1 0.0000000000000000e+00 5.8798664624537826e+00 8.1086554489454077e+00 4.7416327372593798e+00 0 0 0
+429 0 1 0.0000000000000000e+00 8.1310143402759678e+00 5.8981345891748242e+00 4.4551198462965029e+00 0 0 1
+30 0 1 0.0000000000000000e+00 7.2936057210933001e+00 5.7727394096760021e+00 1.5082513695683915e+00 0 0 0
+26 0 1 0.0000000000000000e+00 7.9644761242572315e+00 8.8306851781423816e+00 2.6243837815805806e+00 0 0 0
+312 0 1 0.0000000000000000e+00 1.0405639204476623e+01 6.3288421181110914e+00 2.1025209105846301e+00 0 0 1
+232 0 1 0.0000000000000000e+00 1.0270149232799639e+01 8.2009151073768454e+00 4.8445715338176463e+00 0 0 0
+137 0 1 0.0000000000000000e+00 1.2408803265469215e+01 6.0501470050178368e+00 4.2814272341014892e+00 0 0 0
+33 0 1 0.0000000000000000e+00 1.2463096359379261e+01 8.4373829466841528e+00 2.5227351613069784e+00 0 0 0
+460 0 1 0.0000000000000000e+00 1.4847201283675084e+01 6.2856081171234939e+00 2.2017615028572166e+00 0 0 1
+21 0 1 0.0000000000000000e+00 1.7939330059572775e+01 6.9727316491935181e+00 3.1845134574691474e+00 -1 0 0
+100 0 1 0.0000000000000000e+00 1.6122497352938080e+01 1.4379498563354494e+00 1.2060186219258739e+01 0 1 0
+8 0 1 0.0000000000000000e+00 2.3164569416223301e+01 5.3930678202572278e+00 3.7430073608174781e+00 -1 0 0
+61 0 1 0.0000000000000000e+00 2.1007136650409713e+01 7.7467257081547318e+00 3.7952069668605630e+00 -1 0 0
+39 0 1 0.0000000000000000e+00 2.3283354323316622e+01 8.1612569823506504e+00 1.7457972189830520e+00 0 0 0
+121 0 1 0.0000000000000000e+00 2.8202679743731620e+00 1.0198242798343053e+01 2.0341994637831782e+00 0 0 0
+99 0 1 0.0000000000000000e+00 3.6661803677292792e+00 1.0366335745891840e+01 5.1719604152680834e+00 1 0 0
+48 0 1 0.0000000000000000e+00 5.7031887426215464e+00 1.1131172561320165e+01 2.7897815814661975e+00 0 0 0
+143 0 1 0.0000000000000000e+00 8.0445859371002406e+00 1.0624984146610277e+01 4.9829184921104028e+00 0 0 0
+153 0 1 0.0000000000000000e+00 1.0502122433056254e+01 1.0731079775889713e+01 3.0595963061518789e+00 0 0 0
+226 0 1 0.0000000000000000e+00 1.3480914490832975e+01 1.1262896238296889e+01 3.7779200324340403e+00 0 0 0
+120 0 1 0.0000000000000000e+00 1.5499134782271341e+01 9.0537722536308110e+00 3.4368232650891106e+00 0 0 0
+113 0 1 0.0000000000000000e+00 1.5560307948258719e+01 1.1596822036694631e+01 1.6653506938465066e+00 0 0 0
+44 0 1 0.0000000000000000e+00 1.8505600394875479e+01 1.2374221222668776e+01 2.6789526942007567e+00 -1 0 0
+443 0 1 0.0000000000000000e+00 1.7928273429923095e+01 9.4514399523906505e+00 1.4018524418643512e+00 -1 0 1
+60 0 1 0.0000000000000000e+00 1.8719374066355776e+01 9.6144151069132775e+00 4.4777142039446076e+00 0 0 0
+24 0 1 0.0000000000000000e+00 2.0889860048520859e+01 1.0439988220603626e+01 1.9864920636265322e+00 -1 0 0
+467 0 1 0.0000000000000000e+00 2.3191711083485572e+01 9.9811073032834301e+00 4.2176452715509551e+00 -1 0 1
+28 0 1 0.0000000000000000e+00 2.4226730410462869e+00 2.3253067905575335e+00 7.8565992359241807e+00 0 0 0
+108 0 1 0.0000000000000000e+00 5.0062757917623886e+00 2.5867564445424032e+00 5.4623204404007151e+00 0 0 0
+126 0 1 0.0000000000000000e+00 3.8952092043892055e+00 4.9497030266222612e+00 8.7755595575769298e+00 0 0 0
+101 0 1 0.0000000000000000e+00 6.1995333817256233e+00 2.8316463339589477e+00 8.4185574206629212e+00 0 0 0
+103 0 1 0.0000000000000000e+00 8.2896714919569998e+00 3.2355626162852036e+00 6.2938451046715249e+00 0 0 0
+112 0 1 0.0000000000000000e+00 1.0069138627077251e+01 2.7109705198572791e+00 8.7411754995213471e+00 0 0 0
+206 0 1 0.0000000000000000e+00 1.2384827062449871e+01 3.0614440740438429e+00 6.6220189181590055e+00 0 0 0
+214 0 1 0.0000000000000000e+00 1.5734178070721791e+01 3.6942214992631732e+00 7.1122375378750720e+00 0 0 0
+2 0 1 0.0000000000000000e+00 1.7768309344634687e+01 4.0741980655746239e+00 4.8906578279237856e+00 -1 0 0
+17 0 1 0.0000000000000000e+00 1.8649249769923486e+01 4.2127353033784418e+00 8.1151010274548945e+00 0 0 0
+484 0 1 0.0000000000000000e+00 1.7803553821773413e+01 1.4509154962087931e+00 6.9346723468313787e+00 -1 1 1
+82 0 1 0.0000000000000000e+00 2.2921999816887862e+01 2.6816811058228787e+00 5.4983998128884481e+00 -1 1 0
+182 0 1 0.0000000000000000e+00 2.0901682395813410e+01 2.0262890879669615e+00 7.6066484412115214e+00 -1 1 0
+194 0 1 0.0000000000000000e+00 2.2874562224488344e+01 4.5681252624468449e+00 8.0855987135680536e+00 0 1 0
+19 0 1 0.0000000000000000e+00 2.0956682430528993e+01 4.8418094112038323e+00 5.7953859405523369e+00 0 0 0
+25 0 1 0.0000000000000000e+00 2.9310737457407896e+00 5.1436830607952659e+00 5.9044303237622264e+00 0 0 0
+27 0 1 0.0000000000000000e+00 3.9690246562955998e+00 7.8273630610837817e+00 6.9789757165019530e+00 0 0 0
+11 0 1 0.0000000000000000e+00 5.9456729520332434e+00 5.5146920154718728e+00 6.5862614232207388e+00 0 0 0
+127 0 1 0.0000000000000000e+00 8.1274387096597245e+00 7.7807519264293239e+00 6.7393627553537030e+00 0 0 0
+230 0 1 0.0000000000000000e+00 1.0373802052165816e+01 5.4322725553137898e+00 6.6519670742392689e+00 0 0 0
+118 0 1 0.0000000000000000e+00 1.1180862731847871e+01 8.1075565115837129e+00 7.6779146904955784e+00 0 0 0
+115 0 1 0.0000000000000000e+00 1.5713706535995806e+01 6.4105985464370274e+00 5.3142720831583175e+00 0 0 0
+355 0 1 0.0000000000000000e+00 1.3354076893777322e+01 5.6556943704658389e+00 7.5592940069173657e+00 0 0 0
+119 0 1 0.0000000000000000e+00 1.6471526149202923e+01 6.6538718090286864e+00 8.4352803898505258e+00 0 0 0
+136 0 1 0.0000000000000000e+00 1.3463863768983167e+01 8.4566019207584340e+00 5.6624979221712959e+00 0 0 0
+57 0 1 0.0000000000000000e+00 1.8700151663268450e+01 6.7761584109438902e+00 6.1267908993606861e+00 0 0 0
+37 0 1 0.0000000000000000e+00 2.2970126561730773e+01 7.1350720018187568e+00 6.0842243287701576e+00 0 0 0
+233 0 1 0.0000000000000000e+00 2.0627959941310458e+01 6.7929968917927113e+00 8.2553561085459073e+00 0 0 0
+163 0 1 0.0000000000000000e+00 1.6120950610380056e+00 9.7092319580990463e+00 7.3189972062400326e+00 0 0 0
+38 0 1 0.0000000000000000e+00 5.9800240993708673e+00 9.9939998842352118e+00 7.0704712893601593e+00 1 0 0
+145 0 1 0.0000000000000000e+00 8.9081992862870987e+00 1.0472521123206928e+01 8.0249484441925141e+00 0 0 0
+47 0 1 0.0000000000000000e+00 1.1037113791960891e+01 1.1038979953329992e+01 5.9327308102885823e+00 0 0 0
+326 0 1 0.0000000000000000e+00 1.6114836706772213e+01 1.1848636419584127e+01 5.1067308684826802e+00 0 0 0
+246 0 1 0.0000000000000000e+00 1.3796462740809719e+01 1.1108260672390371e+01 7.1050480511485272e+00 0 0 0
+151 0 1 0.0000000000000000e+00 1.6339414215057445e+01 9.0836680830015801e+00 6.4059511620679341e+00 0 0 0
+234 0 1 0.0000000000000000e+00 1.8765004186222399e+01 1.1719085003879611e+01 6.6459876801150211e+00 0 0 0
+173 0 1 0.0000000000000000e+00 1.8759248644771915e+01 9.1540596881936978e+00 8.5083839095325509e+00 0 0 0
+171 0 1 0.0000000000000000e+00 1.6511658570505759e+01 1.1797506189376467e+01 8.3897073078391600e+00 0 0 0
+138 0 1 0.0000000000000000e+00 2.3517565158686331e+01 1.2269126600430921e+01 6.1573968779844916e+00 0 0 0
+238 0 1 0.0000000000000000e+00 2.0860839396920632e+01 9.4955838875341652e+00 6.4545414776764849e+00 0 0 0
+140 0 1 0.0000000000000000e+00 2.1154406562713035e+01 1.1792302972773468e+01 8.5429597887408431e+00 0 0 0
+353 0 1 0.0000000000000000e+00 1.6725547354491428e+00 4.4491268713988985e+00 1.0844257150937569e+01 1 0 0
+104 0 1 0.0000000000000000e+00 3.9354687118952123e+00 2.3608770034201880e+00 1.0745073343106302e+01 0 0 0
+225 0 1 0.0000000000000000e+00 7.8417287889720502e+00 2.4682935667114583e+00 1.0909191767002632e+01 0 0 0
+303 0 1 0.0000000000000000e+00 5.9019137791204592e+00 4.7411111313041987e+00 1.0955432919608354e+01 0 0 0
+129 0 1 0.0000000000000000e+00 8.0638257570119052e+00 4.9833134883769157e+00 8.8834908534589125e+00 0 0 0
+211 0 1 0.0000000000000000e+00 1.0974984121507836e+01 2.9460892852544673e+00 1.1602682747782156e+01 0 0 0
+290 0 1 0.0000000000000000e+00 1.3169630540328026e+01 3.2197550996653312e+00 9.4869460651665314e+00 0 1 0
+216 0 1 0.0000000000000000e+00 1.3902800232734041e+01 3.6478787854842452e+00 1.2373257209450358e+01 0 0 0
+334 0 1 0.0000000000000000e+00 1.6217162811325576e+01 4.0425981348430424e+00 1.0195811584901836e+01 0 0 0
+40 0 1 0.0000000000000000e+00 1.9861001147467363e+01 8.7685599270855388e+00 1.1527971143125763e+01 0 0 0
+190 0 1 0.0000000000000000e+00 1.8411092085713769e+01 1.6800746843012631e+00 9.9847904515108272e+00 0 1 0
+239 0 1 0.0000000000000000e+00 2.0535987187032241e+01 1.4971103723091379e+00 1.2199610457654209e+01 0 0 0
+337 0 1 0.0000000000000000e+00 2.2877267648697327e+01 1.8373032494571575e+00 1.0050127026842294e+01 0 0 0
+124 0 1 0.0000000000000000e+00 2.0513321891524036e+01 3.8187530639658807e+00 1.0343583773423836e+01 -1 0 0
+42 0 1 0.0000000000000000e+00 1.8404417326696980e+00 6.9316481426300900e+00 8.8685359158587254e+00 0 0 0
+321 0 1 0.0000000000000000e+00 3.8666785027323680e+00 6.9915607088581604e+00 1.1318582053065658e+01 0 0 0
+224 0 1 0.0000000000000000e+00 6.0137843142530789e+00 7.2605237501118003e+00 8.9261644275069436e+00 0 0 0
+106 0 1 0.0000000000000000e+00 6.8117767151686825e+00 7.8196269205827722e+00 1.1930279512548609e+01 0 0 0
+227 0 1 0.0000000000000000e+00 8.6149203150607541e+00 5.2826317121087767e+00 1.1773092531455211e+01 0 0 0
+204 0 1 0.0000000000000000e+00 8.9617401050845089e+00 7.8816676861225439e+00 9.5947391509553004e+00 0 0 0
+240 0 1 0.0000000000000000e+00 1.0984962398327825e+01 5.4695864655575441e+00 9.5922488177885512e+00 0 0 0
+265 0 1 0.0000000000000000e+00 1.1567225842227780e+01 8.3372394143737907e+00 1.1066067505872420e+01 0 0 0
+332 0 1 0.0000000000000000e+00 1.3864005696879754e+01 6.1603302745764426e+00 1.0620035828314149e+01 0 0 0
+330 0 1 0.0000000000000000e+00 1.4210500779723917e+01 8.6659761787058702e+00 8.6641987564062219e+00 0 0 0
+231 0 1 0.0000000000000000e+00 1.8534519655237929e+01 6.2015859308074521e+00 1.0593595481677189e+01 0 0 0
+250 0 1 0.0000000000000000e+00 2.1932031953006963e+01 6.5843175166188699e+00 1.1045192838759665e+01 0 0 0
+323 0 1 0.0000000000000000e+00 4.6544736566926881e+00 9.8730021130773089e+00 1.2161274662994002e+01 0 0 0
+221 0 1 0.0000000000000000e+00 1.5820602304350511e+00 9.0883021241310971e+00 1.1487258325469423e+01 0 0 0
+237 0 1 0.0000000000000000e+00 3.8416330478402476e+00 9.6132729752923503e+00 9.3450986561918157e+00 1 0 0
+261 0 1 0.0000000000000000e+00 1.8042060383000407e+00 1.2052671226441579e+01 9.4130947829580229e+00 0 0 0
+4 0 1 0.0000000000000000e+00 2.2067639237565814e+01 9.1073102485709594e+00 9.2285099026090798e+00 -1 0 0
+155 0 1 0.0000000000000000e+00 2.1785583969802325e+01 1.1506651489442008e+01 1.1540075372015121e+01 0 0 0
+122 0 1 0.0000000000000000e+00 6.8262769314405274e+00 1.0011681007159023e+01 9.9577336527432134e+00 0 0 0
+172 0 1 0.0000000000000000e+00 1.1510854983276863e+01 1.0879406854350995e+01 9.4708860275657489e+00 0 0 0
+144 0 1 0.0000000000000000e+00 9.1438013269801903e+00 9.9394201494032508e+00 1.1874817417120973e+01 0 0 0
+229 0 1 0.0000000000000000e+00 1.4327292530819085e+01 1.0962371175019449e+01 1.0726991973867912e+01 0 0 0
+175 0 1 0.0000000000000000e+00 1.8604579494933184e+01 1.1364091496632252e+01 1.0616580291178057e+01 0 0 0
+150 0 1 0.0000000000000000e+00 1.6703034036053101e+01 8.9367227531374063e+00 1.0659442169667694e+01 0 0 0
+241 0 1 0.0000000000000000e+00 4.1743163581935292e+00 1.2226607622758626e+01 7.3143698409169442e+00 0 0 0
+116 0 1 0.0000000000000000e+00 9.4088330119600805e+00 3.4669178496420532e+00 1.3213735306978063e+00 0 0 0
+157 0 1 0.0000000000000000e+00 2.0923910469320653e+01 1.2237756195383700e+01 4.5289933904177753e+00 0 0 0
+196 0 1 0.0000000000000000e+00 1.5201164516429666e+01 1.3195175662864145e+00 9.0376853789423173e+00 0 1 0
+243 0 1 0.0000000000000000e+00 4.7926907266612915e+00 1.2403807043064885e+01 1.0361422710841065e+01 0 0 0
+318 0 1 0.0000000000000000e+00 1.8406597319959161e+01 3.8197409155006619e+00 1.2484165991887819e+01 0 0 0
+247 0 1 0.0000000000000000e+00 6.8538946858940646e+00 1.1973602341659252e+01 1.2494233724547071e+01 0 0 0
+466 0 1 0.0000000000000000e+00 4.9397919314521896e+00 3.5512530591427316e+00 1.4053595300665833e+00 0 1 1
+488 0 1 0.0000000000000000e+00 3.7057757070212918e+00 4.5786290039276372e+00 1.3121032996323878e+01 0 1 0
+324 0 1 0.0000000000000000e+00 1.6010552012692090e+00 3.7276779345201647e+00 1.5519952436078359e+01 0 0 0
+125 0 1 0.0000000000000000e+00 1.8558402122685418e+00 2.1033889935301868e+00 1.2739328368276087e+01 0 0 0
+401 0 1 0.0000000000000000e+00 4.4149548979819677e+00 4.6270809709375200e+00 1.6009982480979254e+01 0 0 0
+202 0 1 0.0000000000000000e+00 5.6243705826562840e+00 1.9314704731202068e+00 1.3330889304031992e+01 0 0 0
+433 0 1 0.0000000000000000e+00 8.7457105891931342e+00 2.3066020295514256e+00 1.3931309009603995e+01 0 0 0
+305 0 1 0.0000000000000000e+00 6.6647241165996762e+00 4.7677120856716213e+00 1.3993716382336604e+01 0 0 0
+492 0 1 0.0000000000000000e+00 1.1479953675056006e+01 3.3115674828449380e+00 1.4559899378536572e+01 0 1 0
+314 0 1 0.0000000000000000e+00 1.6066506543096835e+01 3.2633938591736475e+00 1.4820202850970295e+01 0 0 0
+409 0 1 0.0000000000000000e+00 6.3775254652181106e+00 1.3179862981862485e+00 2.0196930212729775e+01 0 0 0
+311 0 1 0.0000000000000000e+00 2.0138830485501643e+01 3.6094141506039050e+00 1.5199024240009786e+01 0 0 0
+300 0 1 0.0000000000000000e+00 2.2334340917378107e+01 1.4734263087040569e+00 1.4812564476049198e+01 0 1 0
+18 0 1 0.0000000000000000e+00 2.2196666711441971e+01 4.2158766390634117e+00 1.3078460827113268e+01 0 0 0
+117 0 1 0.0000000000000000e+00 1.5319428249676716e+00 6.7114256845199041e+00 1.3265488649581945e+01 1 0 0
+188 0 1 0.0000000000000000e+00 4.7900473705249382e+00 7.2546914225891230e+00 1.4138800001821275e+01 0 1 0
+228 0 1 0.0000000000000000e+00 9.2196517996409586e+00 7.0418631073370044e+00 1.4130320243424773e+01 0 0 0
+373 0 1 0.0000000000000000e+00 1.1645262632648569e+01 5.8050529299312821e+00 1.2693000310087822e+01 0 0 0
+167 0 1 0.0000000000000000e+00 1.2095444399420565e+01 8.0271412499817316e+00 1.4625194222690611e+01 0 0 0
+340 0 1 0.0000000000000000e+00 1.3598647184980923e+01 5.3191534532673206e+00 1.4938463270608549e+01 0 0 0
+455 0 1 0.0000000000000000e+00 1.5476648756969638e+01 7.7175813670731905e+00 1.5504477168911844e+01 0 0 0
+336 0 1 0.0000000000000000e+00 1.6136745945315553e+01 5.8604582483728160e+00 1.2734647239503211e+01 0 0 0
+333 0 1 0.0000000000000000e+00 1.4393184875182119e+01 8.3985981354164014e+00 1.2743312029136534e+01 0 0 0
+458 0 1 0.0000000000000000e+00 1.7831044364278092e+01 5.6661464356503588e+00 1.5388693948623892e+01 0 0 0
+179 0 1 0.0000000000000000e+00 1.7786592219848494e+01 8.2800628092752397e+00 1.3468922298857754e+01 0 0 0
+349 0 1 0.0000000000000000e+00 1.9710145627303810e+01 8.1542893281170148e+00 1.6107554899430305e+01 0 0 0
+20 0 1 0.0000000000000000e+00 2.0056056399858186e+01 6.2408935833917525e+00 1.3295922331325748e+01 0 0 0
+212 0 1 0.0000000000000000e+00 2.1966712032180801e+01 6.2647365841837104e+00 1.5664108346815599e+01 0 0 0
+123 0 1 0.0000000000000000e+00 2.5871309534786375e+00 9.4080994018436321e+00 1.4185620753070108e+01 0 0 0
+242 0 1 0.0000000000000000e+00 4.5468386473881042e+00 1.1711444547251384e+01 1.4695209257419130e+01 0 0 0
+343 0 1 0.0000000000000000e+00 7.8065923379666238e+00 1.2223453981257485e+01 1.5494852339019454e+01 0 0 0
+222 0 1 0.0000000000000000e+00 6.8027559793530905e+00 9.5877439896508836e+00 1.4604030859026174e+01 0 0 0
+195 0 1 0.0000000000000000e+00 1.8358964193189330e+01 1.2691087177281659e+00 1.4165500613280686e+01 0 1 0
+306 0 1 0.0000000000000000e+00 9.7602713494964970e+00 9.8866367184180408e+00 1.5139540953834523e+01 0 0 0
+251 0 1 0.0000000000000000e+00 1.2179854405051900e+01 1.0633900354160366e+01 1.2904490192815507e+01 0 0 0
+345 0 1 0.0000000000000000e+00 1.1983077559294600e+01 1.2345048992420624e+01 1.5443984320743537e+01 0 0 0
+253 0 1 0.0000000000000000e+00 1.4017016345375968e+01 1.0356917348435463e+01 1.5542816738105040e+01 0 0 0
+260 0 1 0.0000000000000000e+00 1.6389421945706566e+01 1.0781769694183497e+01 1.3163664987544713e+01 0 0 0
+256 0 1 0.0000000000000000e+00 1.9545350748349534e+01 1.1139842364945876e+01 1.3588183679791934e+01 0 0 0
+244 0 1 0.0000000000000000e+00 2.1909580115879209e+01 8.8252369719827861e+00 1.3687573413495533e+01 -1 0 0
+236 0 1 0.0000000000000000e+00 2.2631539359252372e+01 1.1893364278799874e+01 1.4564269591663997e+01 0 0 0
+383 0 1 0.0000000000000000e+00 3.6456095694385819e+00 2.8250350573954295e+00 1.8157599927906702e+01 0 1 0
+388 0 1 0.0000000000000000e+00 6.3669688555299144e+00 2.0037886926804203e+00 1.6281364066496941e+01 0 1 0
+400 0 1 0.0000000000000000e+00 6.6467683125442791e+00 4.0499456201263078e+00 1.8506768543233271e+01 0 1 0
+391 0 1 0.0000000000000000e+00 8.8732474656209526e+00 1.3522047924890139e+00 1.8097157072974269e+01 0 1 0
+90 0 1 0.0000000000000000e+00 8.7600141609330819e+00 4.2673433345477418e+00 1.6120109668854752e+01 0 1 -1
+316 0 1 0.0000000000000000e+00 1.1638970175607675e+01 2.0077226671432613e+00 1.9169833517192110e+01 0 0 0
+434 0 1 0.0000000000000000e+00 9.5792062664815472e+00 4.2297507043672802e+00 1.9420476577920368e+01 0 0 0
+375 0 1 0.0000000000000000e+00 1.1631661670110260e+01 4.5649331240449946e+00 1.7169219147956831e+01 0 0 0
+410 0 1 0.0000000000000000e+00 1.3813777729080917e+01 2.4497876347391818e+00 1.6822812351327570e+01 0 0 0
+53 0 1 0.0000000000000000e+00 1.3567743517625370e+01 4.4631619137739005e+00 1.9503426752586307e+01 0 0 -1
+338 0 1 0.0000000000000000e+00 1.5802432229136848e+01 2.0502575408776886e+00 1.9245473127842665e+01 0 0 0
+357 0 1 0.0000000000000000e+00 1.5676387593013567e+01 4.8670138291747556e+00 1.7256377666685090e+01 0 0 0
+296 0 1 0.0000000000000000e+00 1.7899638780280497e+01 2.8580735191599076e+00 1.7117601549394195e+01 0 1 0
+34 0 1 0.0000000000000000e+00 1.9605869330982728e+01 2.5796833225070697e+00 1.9700980301053093e+01 0 0 -1
+320 0 1 0.0000000000000000e+00 2.1817191576890018e+01 3.1792868115876978e+00 1.7760737096218122e+01 0 0 0
+322 0 1 0.0000000000000000e+00 2.4580298762589745e+00 7.0490657656302860e+00 1.6148083804951796e+01 0 0 0
+384 0 1 0.0000000000000000e+00 4.3937319514482773e+00 6.3654268426722513e+00 1.8569271321854380e+01 0 1 0
+259 0 1 0.0000000000000000e+00 2.1309238049875496e+00 8.6503452283869606e+00 1.8705577893490528e+01 1 0 0
+219 0 1 0.0000000000000000e+00 1.5464105878819594e+00 5.2447588255264268e+00 1.8236384767701686e+01 1 0 0
+302 0 1 0.0000000000000000e+00 6.8923732482121016e+00 6.7695824152137671e+00 1.6252485295372079e+01 0 0 0
+402 0 1 0.0000000000000000e+00 7.5057094752074152e+00 6.8176091462734423e+00 1.9375100870935974e+01 0 0 0
+208 0 1 0.0000000000000000e+00 9.7327401601723817e+00 7.1097017554867028e+00 1.7298109217330968e+01 0 0 0
+351 0 1 0.0000000000000000e+00 1.1501518215944291e+01 6.7762515950997662e+00 1.9656576100704207e+01 0 0 0
+271 0 1 0.0000000000000000e+00 1.3680328546813612e+01 6.9292773395574887e+00 1.7572160131419103e+01 0 0 0
+335 0 1 0.0000000000000000e+00 1.9569534082887266e+01 5.2206291101766444e+00 1.7937698030308404e+01 0 0 0
+379 0 1 0.0000000000000000e+00 1.7186845406368292e+01 7.5047882905419012e+00 1.7964523888979947e+01 0 0 0
+304 0 1 0.0000000000000000e+00 2.1668844132342727e+01 7.5683345009612726e+00 1.8613606426949453e+01 -1 0 0
+441 0 1 0.0000000000000000e+00 4.5776556907018069e+00 9.1436810080502635e+00 1.6687971664474532e+01 0 0 0
+342 0 1 0.0000000000000000e+00 2.4510939692459641e+00 1.1400974538850368e+01 1.6875364072638014e+01 0 0 0
+308 0 1 0.0000000000000000e+00 5.3828106416504964e+00 9.1103078107144349e+00 1.9731825164041489e+01 0 0 0
+428 0 1 0.0000000000000000e+00 5.4913063135214637e+00 1.1829919900185226e+01 1.7801169044088127e+01 0 0 0
+325 0 1 0.0000000000000000e+00 7.6364749375860201e+00 9.4769316438241926e+00 1.7401488999633919e+01 0 0 0
+328 0 1 0.0000000000000000e+00 9.6197198291363328e+00 9.0913131550374455e+00 1.9783244011784625e+01 0 0 0
+327 0 1 0.0000000000000000e+00 9.8625973986178721e+00 1.1834557841542150e+01 1.7891927540088723e+01 0 0 0
+350 0 1 0.0000000000000000e+00 1.1896541914171438e+01 9.5111455720054465e+00 1.7548540032025237e+01 0 0 0
+453 0 1 0.0000000000000000e+00 1.2849334922023589e+01 1.2180557123781439e+01 1.8606685490703427e+01 0 0 0
+374 0 1 0.0000000000000000e+00 1.4884104513345934e+01 9.7739159689370823e+00 1.8556204700850621e+01 0 0 0
+254 0 1 0.0000000000000000e+00 1.7206564365821379e+01 1.0748176524941956e+01 1.6342891854519415e+01 0 0 0
+280 0 1 0.0000000000000000e+00 1.7216576733087848e+01 1.1829093906707048e+01 1.9008203982027041e+01 0 0 0
+354 0 1 0.0000000000000000e+00 1.9501750054858370e+01 9.8157548306951927e+00 1.8525594282271825e+01 0 0 0
+437 0 1 0.0000000000000000e+00 2.2720176231256900e+01 9.2874184437504859e+00 1.6523959165010965e+01 0 0 0
+444 0 1 0.0000000000000000e+00 2.0114341228052488e+01 1.1692721792335400e+01 1.6509236044376102e+01 -1 0 0
+422 0 1 0.0000000000000000e+00 2.2388249703278944e+01 1.0822482486145965e+01 1.9192444864088444e+01 -1 0 0
+85 0 1 0.0000000000000000e+00 2.3649235440276556e+01 2.6469608477035176e+00 2.0101722859236936e+01 -1 1 -1
+421 0 1 0.0000000000000000e+00 4.3727977194031729e+00 3.6437373530223729e+00 2.0887897039971001e+01 0 0 0
+88 0 1 0.0000000000000000e+00 1.9096532308933356e+00 3.0354947442650801e+00 2.3030626611114329e+01 0 1 -1
+382 0 1 0.0000000000000000e+00 3.4309328119868803e+00 1.2694088090080058e+00 1.5489360849538651e+01 0 1 0
+431 0 1 0.0000000000000000e+00 7.3633163803807111e+00 3.9243490465138406e+00 2.1645436210085570e+01 0 0 0
+31 0 1 0.0000000000000000e+00 9.2402525568146050e+00 1.7621427538005481e+00 2.1102210302356845e+01 0 0 -1
+12 0 1 0.0000000000000000e+00 1.1485864944802556e+01 3.7772431545975937e+00 2.1641732458297611e+01 0 0 -1
+424 0 1 0.0000000000000000e+00 2.0231996642276471e+01 7.5902049259533477e+00 2.3459400536108220e+01 -1 0 0
+435 0 1 0.0000000000000000e+00 1.3818277655375121e+01 1.5301374925443545e+00 2.1284388374614160e+01 0 0 0
+279 0 1 0.0000000000000000e+00 1.4885938299296820e+01 4.3911169039880011e+00 2.2270134012233292e+01 0 0 0
+315 0 1 0.0000000000000000e+00 1.7377422535315468e+01 4.8420241111118525e+00 2.0059935510271565e+01 0 0 0
+414 0 1 0.0000000000000000e+00 1.7162345368376780e+01 2.4363161428076325e+00 2.1961885760389443e+01 0 0 0
+459 0 1 0.0000000000000000e+00 1.9324819257669972e+01 4.6053969547475191e+00 2.2336077877620433e+01 0 0 0
+359 0 1 0.0000000000000000e+00 2.1385502923227058e+01 2.2445306061000720e+00 2.2048736536716774e+01 0 0 0
+419 0 1 0.0000000000000000e+00 2.1608045138627730e+01 4.9667037578243063e+00 2.0497273208147867e+01 0 0 0
+483 0 1 0.0000000000000000e+00 2.0936487770126009e+00 5.7646783331584697e+00 2.0920880423069221e+01 0 1 0
+403 0 1 0.0000000000000000e+00 3.2412718444320703e+00 8.5848473083367125e+00 2.1791469630941769e+01 0 0 0
+329 0 1 0.0000000000000000e+00 5.3119875263693439e+00 6.3991806579449406e+00 2.1595333125638597e+01 0 0 0
+52 0 1 0.0000000000000000e+00 7.5917731286865004e+00 8.5637850667051598e+00 2.2102584145280254e+01 0 0 -1
+425 0 1 0.0000000000000000e+00 9.4682808387295729e+00 6.2157451211677310e+00 2.1667900995377245e+01 0 0 0
+133 0 1 0.0000000000000000e+00 1.2637719147485981e+01 6.5349643939074307e+00 2.2403146729940104e+01 0 0 -1
+360 0 1 0.0000000000000000e+00 1.5131641452961164e+01 6.9532876621717508e+00 2.0291757815748511e+01 0 0 0
+438 0 1 0.0000000000000000e+00 1.9377388251990652e+01 7.0609686968498711e+00 2.0425290041843645e+01 0 0 0
+454 0 1 0.0000000000000000e+00 1.7149816035870288e+01 6.5739359531728452e+00 2.2591084192283759e+01 0 0 0
+86 0 1 0.0000000000000000e+00 2.2405172329421127e+01 5.3170563641391677e+00 2.3283743325325233e+01 -1 1 -1
+6 0 1 0.0000000000000000e+00 2.2695116380221059e+01 8.3541328021512236e+00 2.1175061434800604e+01 -1 0 -1
+447 0 1 0.0000000000000000e+00 3.0652575199894967e+00 1.1139674145430060e+01 1.9856524849371823e+01 0 0 0
+49 0 1 0.0000000000000000e+00 7.6553744560571557e+00 1.1289288439165883e+01 1.9837365726722794e+01 0 0 -1
+83 0 1 0.0000000000000000e+00 5.3303305113734547e+00 1.0730211822318482e+01 2.2280944508195553e+01 0 0 -1
+41 0 1 0.0000000000000000e+00 8.4994706199438319e+00 1.1343572147666800e+01 2.3193652952129128e+01 0 0 -1
+45 0 1 0.0000000000000000e+00 1.0467994734120206e+01 8.9966141091091512e+00 2.2953529444254499e+01 0 0 -1
+55 0 1 0.0000000000000000e+00 1.0548297027513458e+01 1.1722657719116391e+01 2.1159416331537656e+01 0 0 -1
+477 0 1 0.0000000000000000e+00 1.4896328609624891e+01 8.8335921158858373e+00 2.2778180537309318e+01 0 0 0
+436 0 1 0.0000000000000000e+00 1.2500052385952813e+01 9.3720193047700793e+00 2.0757623473598997e+01 0 0 0
+442 0 1 0.0000000000000000e+00 1.4913275668851849e+01 1.1640054041253368e+01 2.1215872022144936e+01 -1 0 0
+77 0 1 0.0000000000000000e+00 1.2511432783431685e+01 1.1130962882512810e+01 2.3363233850102347e+01 0 0 -1
+339 0 1 0.0000000000000000e+00 1.7214232533038938e+01 9.2272753342234228e+00 2.0677571824442744e+01 0 0 0
+445 0 1 0.0000000000000000e+00 2.0024794404407594e+01 1.0074293416873189e+01 2.1598243303955421e+01 -1 0 0
+59 0 1 0.0000000000000000e+00 1.7806130484888328e+01 1.2202512360556035e+01 2.1911783080589501e+01 0 0 -1
+23 0 1 0.0000000000000000e+00 2.3035016099064130e+01 1.1102588433063552e+01 2.2329112654297035e+01 -1 0 -1
+257 0 1 0.0000000000000000e+00 2.2987078209942293e+00 1.1991048577015473e+01 1.2695537771009651e+01 1 0 0
+165 0 1 0.0000000000000000e+00 3.6877698914960657e+00 1.5423487296314265e+01 2.0473907054928602e+00 0 0 0
+43 0 1 0.0000000000000000e+00 3.4661367860390473e+00 1.2782015139345233e+01 3.4511242165012028e+00 0 0 0
+79 0 1 0.0000000000000000e+00 8.2632499144114036e+00 1.3258631413763272e+01 3.2391998492615146e+00 1 0 0
+288 0 1 0.0000000000000000e+00 6.3941864402782471e+00 1.5863713749732243e+01 3.3580198278140756e+00 0 0 0
+192 0 1 0.0000000000000000e+00 1.5352961380703315e+01 2.1357186314142375e+01 1.0813225581044989e+01 0 0 0
+146 0 1 0.0000000000000000e+00 1.1313909837181084e+01 1.3603623728254334e+01 3.9821500474706393e+00 0 0 0
+148 0 1 0.0000000000000000e+00 9.0969563252587378e+00 1.6188086352000809e+01 4.2942070853487291e+00 0 0 0
+135 0 1 0.0000000000000000e+00 1.3571071908869456e+01 1.3989456245243494e+01 1.8500299393285398e+00 0 0 0
+156 0 1 0.0000000000000000e+00 1.6172485982514530e+01 1.4152980037525243e+01 3.5360665993664959e+00 0 0 0
+293 0 1 0.0000000000000000e+00 1.9119416441362524e+01 1.4951074376142021e+01 4.6362354333513442e+00 0 0 0
+217 0 1 0.0000000000000000e+00 1.7726452765889860e+01 2.1568228505814858e+01 8.8732901211771456e+00 0 -1 0
+161 0 1 0.0000000000000000e+00 2.3374993480778620e+01 1.4760910697371632e+01 4.4875662013484288e+00 -1 0 0
+75 0 1 0.0000000000000000e+00 2.1303815326365232e+01 1.5248714896683550e+01 2.4142434700747266e+00 0 0 0
+178 0 1 0.0000000000000000e+00 2.3270945047225780e+01 1.2744869646965636e+01 2.2596110415179731e+00 0 0 0
+68 0 1 0.0000000000000000e+00 2.3073809801285478e+01 2.1591814699360455e+01 1.2057567541654285e+01 -1 0 0
+87 0 1 0.0000000000000000e+00 4.0699482518485208e+00 1.7952442794309519e+01 3.7457933565861237e+00 0 0 0
+184 0 1 0.0000000000000000e+00 6.8996820389790301e+00 1.8602510541522783e+01 4.6308039446560336e+00 0 0 0
+469 0 1 0.0000000000000000e+00 6.4672878159278193e+00 1.8353107746110616e+01 1.5663143441056082e+00 0 0 1
+142 0 1 0.0000000000000000e+00 1.1443007475094058e+01 1.6515137615884800e+01 2.1418851064419311e+00 0 0 0
+13 0 1 0.0000000000000000e+00 9.2455428553667254e+00 1.8713241133524903e+01 2.6069904810188156e+00 0 -1 0
+70 0 1 0.0000000000000000e+00 1.1445056864522957e+01 1.8319453283045142e+01 4.6213837331783925e+00 0 0 0
+71 0 1 0.0000000000000000e+00 1.3671386392849397e+01 1.6261920322742618e+01 4.3024504639662098e+00 0 0 0
+76 0 1 0.0000000000000000e+00 1.3953718724026176e+01 1.8653087167355764e+01 2.2927631579294316e+00 0 0 0
+480 0 1 0.0000000000000000e+00 1.6094439055417880e+01 1.6680659186675328e+01 1.9493222721818770e+00 0 0 1
+81 0 1 0.0000000000000000e+00 1.9162827011278168e+01 1.7273315724637676e+01 2.7452677665216791e+00 -1 0 0
+93 0 1 0.0000000000000000e+00 1.6846598857501295e+01 1.9494255425376650e+01 3.3332537098154913e+00 0 0 0
+3 0 1 0.0000000000000000e+00 2.3737741224552302e+01 1.7182672910006460e+01 2.6485182080076695e+00 -1 -1 0
+197 0 1 0.0000000000000000e+00 2.1456492025457372e+01 1.9447466066687603e+01 3.3469955757560470e+00 0 0 0
+154 0 1 0.0000000000000000e+00 2.1263152658287026e+01 1.6962167930830155e+01 5.0432014599033455e+00 0 0 0
+223 0 1 0.0000000000000000e+00 1.8881638379877084e+00 1.9994250460660297e+01 4.0443697829911534e+00 0 -1 0
+102 0 1 0.0000000000000000e+00 4.3401043066464799e+00 2.0508057977489862e+01 1.9210298819109193e+00 0 -1 0
+98 0 1 0.0000000000000000e+00 1.8631485670333259e+00 2.2619915316612428e+01 2.4207662092140918e+00 1 0 0
+166 0 1 0.0000000000000000e+00 4.7806049246245674e+00 2.0748051508520568e+01 5.0371239318521637e+00 0 0 0
+406 0 1 0.0000000000000000e+00 4.8970416528234963e+00 2.3323692423912590e+01 3.0354331601324063e+00 0 -1 1
+67 0 1 0.0000000000000000e+00 7.1772258679245224e+00 2.1056128725899882e+01 3.0651712124223049e+00 0 0 0
+169 0 1 0.0000000000000000e+00 1.1541600082310802e+01 2.0950255616321620e+01 2.8579637195059648e+00 0 0 0
+111 0 1 0.0000000000000000e+00 9.3432645459605901e+00 2.3119706753402781e+01 3.2891645188072021e+00 0 -1 0
+110 0 1 0.0000000000000000e+00 1.4652509868275066e+01 2.1675197950858930e+01 3.4949252040612944e+00 0 -1 0
+97 0 1 0.0000000000000000e+00 1.9236797338155540e+01 2.1643536637057949e+01 3.5901392293745378e+00 0 0 0
+16 0 1 0.0000000000000000e+00 1.6747728166733303e+01 2.2259002279224838e+01 1.4099636661135515e+00 0 -1 0
+64 0 1 0.0000000000000000e+00 2.2147977016976910e+01 2.2283064170067469e+01 4.4841165094641937e+00 -1 0 0
+407 0 1 0.0000000000000000e+00 2.1376281842988476e+01 2.2100789976635390e+01 1.4276868873869393e+00 -1 -1 1
+159 0 1 0.0000000000000000e+00 3.9370850063343656e+00 1.5311203480861115e+01 5.3282093484283086e+00 1 0 0
+141 0 1 0.0000000000000000e+00 1.8060485531597628e+00 1.4840559925297432e+01 7.6100561131954985e+00 0 0 0
+344 0 1 0.0000000000000000e+00 4.7282161047945799e+00 1.5248732712541667e+01 8.4095336283293438e+00 0 0 0
+381 0 1 0.0000000000000000e+00 2.0697972576837394e+01 2.1931975446280489e+01 9.7708190238987331e+00 -1 0 0
+128 0 1 0.0000000000000000e+00 6.0783715454725655e+00 1.3014514975188343e+01 5.3006475864806877e+00 0 0 0
+264 0 1 0.0000000000000000e+00 7.0150159788456623e+00 1.5857381112776265e+01 6.4928331839823379e+00 0 0 0
+248 0 1 0.0000000000000000e+00 6.9752014730509826e+00 1.2983682159584625e+01 8.1742441469710005e+00 0 0 0
+168 0 1 0.0000000000000000e+00 9.1272021060607109e+00 1.3485879726978720e+01 6.2661673077089484e+00 0 0 0
+147 0 1 0.0000000000000000e+00 1.1773827195050359e+01 1.3432334648366515e+01 7.9092214674587913e+00 0 0 0
+149 0 1 0.0000000000000000e+00 1.1343994658528912e+01 1.5897509504710772e+01 6.3633963363385035e+00 0 0 0
+269 0 1 0.0000000000000000e+00 9.2138009260110465e+00 1.5307641179375171e+01 8.7758347562460894e+00 0 0 0
+131 0 1 0.0000000000000000e+00 1.3946909874190448e+01 1.3729452855888898e+01 5.7735659185257306e+00 0 0 0
+277 0 1 0.0000000000000000e+00 1.6924767659153652e+01 1.4312395531708644e+01 6.8010758551696711e+00 0 0 0
+183 0 1 0.0000000000000000e+00 2.1108627199025094e+01 1.4362276637543227e+01 6.8529704259460757e+00 -1 0 0
+158 0 1 0.0000000000000000e+00 1.9524033702953625e+00 1.7489640100621529e+01 5.7134028599056466e+00 1 0 0
+263 0 1 0.0000000000000000e+00 4.8122876288184058e+00 1.7941782094822088e+01 6.7323068140803946e+00 0 0 0
+56 0 1 0.0000000000000000e+00 9.3652947857288940e+00 1.7994871491647977e+01 6.9120685752665612e+00 0 0 0
+152 0 1 0.0000000000000000e+00 1.2350123940747320e+01 1.8842438690247306e+01 7.6327618822566130e+00 0 0 0
+189 0 1 0.0000000000000000e+00 1.4741339954451526e+01 1.6410323835640394e+01 7.4267529236308025e+00 0 0 0
+191 0 1 0.0000000000000000e+00 1.4525047634637808e+01 1.8998035122257036e+01 5.3795067871738809e+00 0 0 0
+94 0 1 0.0000000000000000e+00 1.6835868528083836e+01 1.6977444484186666e+01 5.0556633043949732e+00 0 0 0
+91 0 1 0.0000000000000000e+00 1.9042645235717771e+01 1.6556447202434200e+01 7.1984597684302170e+00 0 0 0
+174 0 1 0.0000000000000000e+00 1.8986854435180575e+01 1.9037456203691981e+01 5.4323871092691043e+00 0 0 0
+14 0 1 0.0000000000000000e+00 1.6832196648846306e+01 1.8587815999933497e+01 7.7050277169028671e+00 0 -1 0
+201 0 1 0.0000000000000000e+00 1.9854215654770471e+01 1.9210730649696153e+01 8.4613133594193286e+00 -1 -1 0
+475 0 1 0.0000000000000000e+00 2.1947608438415330e+01 1.7136242579655942e+01 8.2203754301544567e+00 0 0 1
+162 0 1 0.0000000000000000e+00 2.2238290135325713e+01 1.9892772531308623e+01 6.1067150507799823e+00 -1 0 0
+164 0 1 0.0000000000000000e+00 2.6369069222557839e+00 2.0259065083161275e+01 7.1889614193669509e+00 0 0 0
+181 0 1 0.0000000000000000e+00 2.7505820167614461e+00 2.2803789525479267e+01 5.3906615724520810e+00 0 0 0
+186 0 1 0.0000000000000000e+00 4.8574501989315921e+00 2.2510907125760134e+01 7.5041714399994675e+00 0 0 0
+286 0 1 0.0000000000000000e+00 7.2322852809561740e+00 2.2878189922011494e+01 5.4816287252448310e+00 0 0 0
+109 0 1 0.0000000000000000e+00 7.0725739121551028e+00 2.0189707685478325e+01 7.1892965182861888e+00 0 -1 0
+268 0 1 0.0000000000000000e+00 7.9229385053301131e+00 2.2940349249064788e+01 8.5080041776806112e+00 0 0 0
+193 0 1 0.0000000000000000e+00 9.4264786683340613e+00 2.0615372027590887e+01 5.0185761294553384e+00 0 0 0
+185 0 1 0.0000000000000000e+00 1.0175362070678725e+01 2.3455337539864296e+01 6.2552468742206235e+00 0 0 0
+392 0 1 0.0000000000000000e+00 9.9954756501897446e+00 2.0709227018563894e+01 8.0785536488977296e+00 0 0 0
+291 0 1 0.0000000000000000e+00 1.2232012325191560e+01 2.2911437195362005e+01 8.4287048687742825e+00 0 0 0
+235 0 1 0.0000000000000000e+00 1.2394479116679735e+01 2.1153655185136216e+01 5.7686941817128616e+00 0 -1 0
+471 0 1 0.0000000000000000e+00 1.4543749403257790e+01 2.1040535129726621e+01 7.8476469842514573e+00 0 0 1
+95 0 1 0.0000000000000000e+00 1.4557072825956427e+01 2.3552918723323806e+01 5.9428399061985155e+00 0 0 0
+420 0 1 0.0000000000000000e+00 1.6902609164819459e+01 2.1339297001035305e+01 5.8744098548178814e+00 0 -1 1
+84 0 1 0.0000000000000000e+00 1.9940015957580513e+01 2.1774339652466054e+01 6.7321929999650667e+00 -1 0 0
+282 0 1 0.0000000000000000e+00 2.2995957429578844e+01 2.2434184066702130e+01 7.4466579337546248e+00 -1 0 0
+377 0 1 0.0000000000000000e+00 2.3986613919217348e+00 1.4761223833495350e+01 1.0717622276453788e+01 1 0 0
+364 0 1 0.0000000000000000e+00 6.8532570935285628e+00 1.4741879220466313e+01 1.0608541591159790e+01 0 0 0
+365 0 1 0.0000000000000000e+00 9.8556736155451752e+00 1.5433312003756267e+01 1.1644489712443937e+01 0 0 0
+252 0 1 0.0000000000000000e+00 1.1969183789720441e+01 1.3280885830121401e+01 1.1061708387690983e+01 0 0 0
+249 0 1 0.0000000000000000e+00 1.2190308151264944e+01 1.6192453407438244e+01 9.3074141305492333e+00 0 0 0
+285 0 1 0.0000000000000000e+00 9.0459174166927419e+00 1.2748073766896935e+01 1.0270766193680599e+01 0 0 0
+73 0 1 0.0000000000000000e+00 1.4372148213694379e+01 1.3882481511007224e+01 9.0423385400169316e+00 0 0 0
+292 0 1 0.0000000000000000e+00 1.4296774093527295e+01 1.5707104193437715e+01 1.1495457297697724e+01 0 0 0
+378 0 1 0.0000000000000000e+00 1.8952103454333503e+01 1.3977672458911417e+01 8.8307926204714065e+00 0 0 0
+272 0 1 0.0000000000000000e+00 1.6377268922581528e+01 1.3449421664212975e+01 1.1343183191967702e+01 0 0 0
+274 0 1 0.0000000000000000e+00 1.9681716296431922e+01 1.3852662072970402e+01 1.1897361087531014e+01 0 0 0
+199 0 1 0.0000000000000000e+00 1.6702288501658746e+01 1.5895553902353521e+01 9.5500911676961326e+00 0 0 0
+177 0 1 0.0000000000000000e+00 1.7383907586368387e+01 1.6343076750965434e+01 1.2418471860167019e+01 0 0 0
+273 0 1 0.0000000000000000e+00 2.1953766718768534e+01 1.4303936645029115e+01 9.8749614096473639e+00 0 0 0
+283 0 1 0.0000000000000000e+00 2.5041041213495738e+00 1.7502826006719062e+01 8.8299787253606290e+00 0 0 0
+258 0 1 0.0000000000000000e+00 2.5272000963177801e+00 1.9245297726688591e+01 1.1504694122641073e+01 1 0 0
+266 0 1 0.0000000000000000e+00 4.8640185050236990e+00 1.9755819695368515e+01 9.3131675477022462e+00 0 0 0
+399 0 1 0.0000000000000000e+00 4.6654676458078335e+00 1.6923481644197473e+01 1.1184973330044402e+01 1 0 0
+301 0 1 0.0000000000000000e+00 6.9836042506313767e+00 1.7578270627617336e+01 9.0504591955969680e+00 0 -1 0
+262 0 1 0.0000000000000000e+00 7.7455154055134994e+00 1.7524282527543747e+01 1.1886319926138622e+01 0 0 0
+203 0 1 0.0000000000000000e+00 5.5296801766233505e+00 1.9828714900925384e+01 1.2167238989699095e+01 0 -1 0
+170 0 1 0.0000000000000000e+00 9.9578004909665676e+00 1.8245005194500983e+01 9.8412840882449668e+00 0 0 0
+370 0 1 0.0000000000000000e+00 1.2135472226659299e+01 1.7861454273559850e+01 1.1856396788797092e+01 0 0 0
+210 0 1 0.0000000000000000e+00 9.9176156426540913e+00 1.9876171116530735e+01 1.2328685860954067e+01 0 -1 0
+176 0 1 0.0000000000000000e+00 1.4579350956179340e+01 1.8309244662279951e+01 9.7248429438054949e+00 0 0 0
+294 0 1 0.0000000000000000e+00 1.7661009410731083e+01 1.8877850435170103e+01 1.0698059053306986e+01 0 0 0
+198 0 1 0.0000000000000000e+00 1.9844276442184530e+01 1.6762626493032656e+01 1.0326532353946007e+01 0 0 0
+180 0 1 0.0000000000000000e+00 2.2793946591122477e+01 1.7136123148806313e+01 1.1150602508962734e+01 0 0 0
+278 0 1 0.0000000000000000e+00 2.0576863136830518e+01 1.9446099097307112e+01 1.1747534388183695e+01 0 0 0
+80 0 1 0.0000000000000000e+00 2.2800642290962671e+01 1.9790178800108521e+01 9.3263569788217264e+00 0 0 0
+218 0 1 0.0000000000000000e+00 2.6730949128490189e+00 2.2255298862732701e+01 9.8079489434315263e+00 1 -1 0
+289 0 1 0.0000000000000000e+00 7.7787386305112429e+00 2.0128207788216699e+01 1.0246593520984762e+01 0 0 0
+270 0 1 0.0000000000000000e+00 5.6250105256677738e+00 2.2435781082213204e+01 1.0433095129909235e+01 0 0 0
+187 0 1 0.0000000000000000e+00 1.0037522155393821e+01 2.2440197540916067e+01 1.0607784239286858e+01 0 0 0
+393 0 1 0.0000000000000000e+00 1.2293954633615295e+01 2.0374265358980068e+01 1.0120510204353840e+01 0 0 0
+281 0 1 0.0000000000000000e+00 1.8446409253150364e+01 2.1711191358970311e+01 1.1882299211451278e+01 -1 0 0
+209 0 1 0.0000000000000000e+00 1.3046869167919946e+01 2.3129717730295830e+01 1.1414512685485857e+01 0 -1 0
+69 0 1 0.0000000000000000e+00 8.3397533033868783e+00 1.5648427318504570e+01 1.2625275105448424e+00 0 0 0
+358 0 1 0.0000000000000000e+00 2.4108024189610484e+00 1.3978026948234758e+01 1.5105567620787511e+01 1 0 0
+341 0 1 0.0000000000000000e+00 4.5804882370056701e+00 1.4141682022569956e+01 1.2893700702599157e+01 0 0 0
+346 0 1 0.0000000000000000e+00 7.5616514116569400e+00 1.4766102936633745e+01 1.3667392084283264e+01 0 0 0
+347 0 1 0.0000000000000000e+00 5.4997991992081481e+00 1.4277079919570211e+01 1.5891193327937842e+01 0 0 0
+376 0 1 0.0000000000000000e+00 1.2129937453667972e+01 1.5168035431552646e+01 1.3602141500498382e+01 0 0 0
+245 0 1 0.0000000000000000e+00 9.8901270006981843e+00 1.2788799945771231e+01 1.3207549869337065e+01 0 0 0
+50 0 1 0.0000000000000000e+00 9.7413179751712491e+00 1.4497962306118726e+01 1.5919160142341839e+01 0 0 -1
+371 0 1 0.0000000000000000e+00 1.5163935319317698e+01 1.5467735953937193e+01 1.4274015745789168e+01 0 0 0
+366 0 1 0.0000000000000000e+00 1.4183628043623004e+01 1.2934926472308785e+01 1.3244053554749359e+01 0 0 0
+389 0 1 0.0000000000000000e+00 1.7600640842849657e+01 1.3368187026371816e+01 1.4327594491739326e+01 0 0 0
+255 0 1 0.0000000000000000e+00 2.0437540151467282e+01 1.4360021443552268e+01 1.5113832655763165e+01 0 0 0
+160 0 1 0.0000000000000000e+00 2.2644065189063198e+01 1.4536899954840175e+01 1.2958421406636811e+01 0 0 0
+397 0 1 0.0000000000000000e+00 2.2788650720379778e+01 1.6227669032910669e+01 1.5481758749520942e+01 0 0 0
+220 0 1 0.0000000000000000e+00 2.4645353628897380e+00 1.6589616133645318e+01 1.3274735892663317e+01 1 -1 0
+385 0 1 0.0000000000000000e+00 3.6092547751776127e+00 1.9389896500976207e+01 1.4513186655030649e+01 0 0 0
+361 0 1 0.0000000000000000e+00 5.5104888624603783e+00 1.7046451567435817e+01 1.4127410972800110e+01 0 0 0
+470 0 1 0.0000000000000000e+00 7.5048650389679947e+00 1.9289250296269827e+01 1.4431199212067520e+01 0 0 0
+267 0 1 0.0000000000000000e+00 9.7253797784984144e+00 1.7096338922853537e+01 1.4137121556204324e+01 0 0 0
+372 0 1 0.0000000000000000e+00 1.0766657752152932e+01 1.9799560605365315e+01 1.5115248824821004e+01 0 0 0
+482 0 1 0.0000000000000000e+00 1.3093553755381608e+01 1.7772111416254965e+01 1.4699064785249078e+01 0 0 0
+390 0 1 0.0000000000000000e+00 1.6006840312679309e+01 1.8617387901286435e+01 1.5714280748400400e+01 0 0 0
+295 0 1 0.0000000000000000e+00 1.5272517294184121e+01 1.8577657094336040e+01 1.2608725611929524e+01 0 0 0
+276 0 1 0.0000000000000000e+00 1.8008056734467822e+01 1.6330068414214203e+01 1.5458306239774251e+01 0 0 0
+299 0 1 0.0000000000000000e+00 1.8392355572478266e+01 1.8898733075394887e+01 1.3881971054356313e+01 0 0 0
+493 0 1 0.0000000000000000e+00 2.0517328845133264e+01 1.6771222240122981e+01 1.3281022099164279e+01 0 0 0
+362 0 1 0.0000000000000000e+00 2.2602370390924186e+01 1.8900069749448164e+01 1.3832410216849276e+01 -1 0 0
+317 0 1 0.0000000000000000e+00 2.0279963869861788e+01 1.8154031404920552e+01 1.5990965881751636e+01 0 -1 0
+284 0 1 0.0000000000000000e+00 3.4604862715825417e+00 2.1966434594231465e+01 1.2687178140285853e+01 0 0 0
+457 0 1 0.0000000000000000e+00 2.0230920207125592e+01 1.3118843962689112e+01 1.9523601986329055e+01 0 0 0
+396 0 1 0.0000000000000000e+00 1.4453506998385153e+00 2.1501565543837195e+01 1.4968061652592551e+01 1 0 0
+386 0 1 0.0000000000000000e+00 5.5514440068049975e+00 2.1732550918989972e+01 1.4895895202703253e+01 0 0 0
+205 0 1 0.0000000000000000e+00 8.6892510750455401e+00 2.1963503152538763e+01 1.5662011634028833e+01 0 -1 0
+387 0 1 0.0000000000000000e+00 7.7141844868411820e+00 2.2142170742356953e+01 1.2709729889505482e+01 0 0 0
+307 0 1 0.0000000000000000e+00 1.0781017409272446e+01 2.2612068654870370e+01 1.3495501747898603e+01 0 -1 0
+356 0 1 0.0000000000000000e+00 1.3881051074438075e+01 2.3642627990012826e+01 1.4152343767474433e+01 0 -1 0
+462 0 1 0.0000000000000000e+00 1.3075497904417533e+01 2.0597500497762852e+01 1.3049754861963004e+01 0 0 0
+213 0 1 0.0000000000000000e+00 1.3921258194522633e+01 2.0878605023571865e+01 1.5828984242194256e+01 0 -1 0
+313 0 1 0.0000000000000000e+00 1.6130368306398069e+01 2.1343944134612613e+01 1.3830129302680032e+01 0 -1 0
+499 0 1 0.0000000000000000e+00 1.9077541580090049e+01 2.2590671711118411e+01 2.1702808483790058e+01 0 0 0
+394 0 1 0.0000000000000000e+00 2.0657458937883490e+01 2.1270499754514091e+01 1.4053518799614674e+01 0 0 0
+63 0 1 0.0000000000000000e+00 3.2877993137565826e+00 1.4007333443900841e+01 1.8363803418197513e+01 0 0 -1
+426 0 1 0.0000000000000000e+00 7.6437091657805345e+00 1.3872035968309513e+01 1.8136038805829806e+01 0 0 0
+369 0 1 0.0000000000000000e+00 5.5832327726252986e+00 1.6056066643295758e+01 1.8592104397078252e+01 0 0 0
+450 0 1 0.0000000000000000e+00 1.0698153497742926e+01 1.4355698225387284e+01 1.9243056964316494e+01 0 0 0
+451 0 1 0.0000000000000000e+00 1.5160679748447672e+01 1.2967495875207085e+01 1.6448727532766760e+01 0 0 0
+494 0 1 0.0000000000000000e+00 1.2842216289921094e+01 1.5015009229600976e+01 1.6613895939105532e+01 0 0 0
+474 0 1 0.0000000000000000e+00 1.5123913157345680e+01 1.4030470098052149e+01 1.9184875785388044e+01 0 0 0
+486 0 1 0.0000000000000000e+00 1.5492763650495164e+01 1.6290003411113144e+01 1.7383877705591907e+01 0 0 0
+275 0 1 0.0000000000000000e+00 1.7758724617875330e+01 1.4082698556733295e+01 1.7232879065428090e+01 0 0 0
+449 0 1 0.0000000000000000e+00 1.8003913924615560e+01 1.5021145306137294e+01 2.0075892351909339e+01 0 0 0
+29 0 1 0.0000000000000000e+00 7.3835070932950932e+00 2.3718241689748695e+01 2.3514501677652298e+01 0 -1 -1
+297 0 1 0.0000000000000000e+00 2.2531591869289826e+01 1.3485312466480318e+01 1.7212467495121338e+01 0 0 0
+58 0 1 0.0000000000000000e+00 2.0489556555912657e+01 1.5628185006295459e+01 1.7694007107325874e+01 0 0 -1
+348 0 1 0.0000000000000000e+00 2.3416416163187201e+01 1.6258465202043038e+01 1.8724728193764747e+01 -1 0 0
+446 0 1 0.0000000000000000e+00 3.3785826858160921e+00 1.6594578941789422e+01 1.6347743778986342e+01 0 0 0
+498 0 1 0.0000000000000000e+00 3.2841366270632744e+00 1.8200442745036597e+01 1.8993841993950227e+01 1 0 0
+464 0 1 0.0000000000000000e+00 2.3686567657137836e+01 1.8766614985089319e+01 1.6663197007879791e+01 -1 0 0
+367 0 1 0.0000000000000000e+00 7.5639397808946303e+00 1.6651565606696700e+01 1.6351404737412523e+01 0 0 0
+368 0 1 0.0000000000000000e+00 5.4417053536905238e+00 1.8692317329268569e+01 1.6897278688703814e+01 0 0 0
+54 0 1 0.0000000000000000e+00 8.4475641512710133e+00 1.6550164924022045e+01 1.9329375663830888e+01 0 0 -1
+468 0 1 0.0000000000000000e+00 6.2076164315544915e+00 1.9000500364987687e+01 1.9854148846036303e+01 0 0 0
+207 0 1 0.0000000000000000e+00 8.5355660353459868e+00 1.9523159348544617e+01 1.7561601650171738e+01 0 -1 0
+352 0 1 0.0000000000000000e+00 1.0692826303882450e+01 1.7208729109011770e+01 1.7031991997097354e+01 0 0 0
+89 0 1 0.0000000000000000e+00 1.2741366136101812e+01 1.6306095268968527e+01 1.9378987388243161e+01 0 0 -1
+309 0 1 0.0000000000000000e+00 1.3380645522492030e+01 1.8576929215532331e+01 1.7523346364467592e+01 0 -1 0
+413 0 1 0.0000000000000000e+00 1.8058595848082639e+01 1.7683054126959433e+01 1.8264891030440502e+01 0 -1 0
+479 0 1 0.0000000000000000e+00 2.1094002450644496e+01 1.8440168263148607e+01 1.8954017945295270e+01 0 0 0
+363 0 1 0.0000000000000000e+00 3.5145407163587468e+00 2.1015165315499488e+01 1.7068689024833645e+01 0 0 0
+408 0 1 0.0000000000000000e+00 3.2754701871872469e+00 2.2832827468446460e+01 1.9746546014059426e+01 0 -1 0
+287 0 1 0.0000000000000000e+00 6.4630506568742163e+00 2.1738039402636410e+01 1.7779687385803861e+01 0 0 0
+416 0 1 0.0000000000000000e+00 8.6979328595372696e+00 2.0989443289542869e+01 2.0078028996743875e+01 0 -1 0
+331 0 1 0.0000000000000000e+00 1.1541781497618908e+01 2.3386472958384722e+01 1.6222978358772334e+01 0 -1 0
+411 0 1 0.0000000000000000e+00 1.1109329116670795e+01 2.0958227385686804e+01 1.7971551869210430e+01 0 -1 0
+395 0 1 0.0000000000000000e+00 1.3727238483533233e+01 2.2279575208489341e+01 1.8444331657980428e+01 0 0 0
+215 0 1 0.0000000000000000e+00 1.5866766753598359e+01 1.9986352426440398e+01 1.8305857213534011e+01 0 -1 0
+430 0 1 0.0000000000000000e+00 1.6113464426015472e+01 2.3067148233558747e+01 1.6498842054081848e+01 0 -1 0
+15 0 1 0.0000000000000000e+00 1.8440898177456475e+01 2.0551709920437546e+01 1.6628965837167975e+01 0 -1 -1
+495 0 1 0.0000000000000000e+00 1.8053895036283969e+01 2.2516469420388447e+01 1.8888802221271249e+01 0 0 0
+319 0 1 0.0000000000000000e+00 2.3598993174162100e+01 2.3149392195188128e+01 1.7733502998213275e+01 0 -1 0
+418 0 1 0.0000000000000000e+00 2.3578999707108750e+01 2.0509265008278859e+01 1.9276153096349177e+01 0 -1 0
+398 0 1 0.0000000000000000e+00 2.1378545143242555e+01 2.0711731992519191e+01 1.7042510357168290e+01 0 0 0
+404 0 1 0.0000000000000000e+00 2.0078216337938706e+01 2.3430219528725090e+01 1.6583176753223061e+01 -1 -1 0
+439 0 1 0.0000000000000000e+00 2.1369670809408355e+01 2.2787054133826544e+01 1.9624869909115120e+01 0 -1 0
+65 0 1 0.0000000000000000e+00 3.2788695970250665e+00 1.2897704746830060e+01 2.2592877631177537e+01 0 0 -1
+465 0 1 0.0000000000000000e+00 3.3162464876444862e+00 1.5680598760222820e+01 2.0859946600767856e+01 0 0 0
+448 0 1 0.0000000000000000e+00 5.3820324067234990e+00 1.3428506646809538e+01 2.0482367878819126e+01 0 0 0
+452 0 1 0.0000000000000000e+00 8.4002435047821002e+00 1.3964074317803027e+01 2.1287380573371287e+01 0 0 0
+487 0 1 0.0000000000000000e+00 6.0633482845494315e+00 1.3626138882955933e+01 2.3560570027211028e+01 0 0 0
+456 0 1 0.0000000000000000e+00 1.0426932776746566e+01 1.3562305445496186e+01 2.3562018873520181e+01 0 0 0
+92 0 1 0.0000000000000000e+00 1.0509508068608625e+01 1.6217284258016932e+01 2.1587745365826876e+01 0 0 -1
+380 0 1 0.0000000000000000e+00 1.2751027656167404e+01 1.3823054146807362e+01 2.1274273699718975e+01 0 0 0
+36 0 1 0.0000000000000000e+00 1.5746081619341416e+01 1.4533675726988104e+01 2.2001574262039682e+01 0 0 -1
+62 0 1 0.0000000000000000e+00 2.0811008123679144e+01 1.2931565786034344e+01 2.2493192599728431e+01 -1 0 -1
+461 0 1 0.0000000000000000e+00 2.3604559776834876e+01 1.5139206513557424e+01 2.2813582266239926e+01 -1 0 0
+490 0 1 0.0000000000000000e+00 2.1150819279108326e+01 1.5828021457551889e+01 2.0791717725775598e+01 0 0 0
+497 0 1 0.0000000000000000e+00 2.3615424690882932e+01 1.3463124009617117e+01 2.0362167493853981e+01 0 0 0
+298 0 1 0.0000000000000000e+00 3.5138911020497976e+00 1.7970791504569320e+01 2.3034300155528456e+01 1 0 -1
+485 0 1 0.0000000000000000e+00 6.1951082801336614e+00 1.6227683630254287e+01 2.1634053436388108e+01 0 0 0
+66 0 1 0.0000000000000000e+00 8.5911841467020515e+00 1.8388504108005073e+01 2.1857785495097787e+01 0 0 -1
+489 0 1 0.0000000000000000e+00 1.0897739844921885e+01 1.8593507664281553e+01 1.9928002904369819e+01 0 0 0
+72 0 1 0.0000000000000000e+00 1.1444371742583273e+01 1.9294621754783243e+01 2.2799950961579512e+01 0 0 -1
+472 0 1 0.0000000000000000e+00 1.5717693697411166e+01 1.7080846708664470e+01 2.0270174972184520e+01 0 0 0
+130 0 1 0.0000000000000000e+00 1.3468868139816600e+01 1.6775029420844302e+01 2.2330107860206255e+01 0 0 -1
+500 0 1 0.0000000000000000e+00 1.3809034798237176e+01 1.9261501882102557e+01 2.0445363285196450e+01 0 0 0
+496 0 1 0.0000000000000000e+00 1.6275498406475112e+01 1.9461872277491395e+01 2.2873273714885357e+01 0 0 0
+473 0 1 0.0000000000000000e+00 1.8137730721219292e+01 1.7282587978021510e+01 2.2004042540695245e+01 0 0 0
+476 0 1 0.0000000000000000e+00 1.9191724816950959e+01 2.0082522233861354e+01 2.3617294984466476e+01 0 0 0
+310 0 1 0.0000000000000000e+00 1.8219679053220332e+01 1.9871094956542407e+01 2.0420499549239047e+01 0 -1 0
+46 0 1 0.0000000000000000e+00 2.3555715415488052e+01 1.7943280081917052e+01 2.1109150005826059e+01 -1 0 -1
+463 0 1 0.0000000000000000e+00 2.1364521001695294e+01 1.7666693350157146e+01 2.3191391520794319e+01 -1 0 0
+478 0 1 0.0000000000000000e+00 2.3608815447733598e+01 1.9970266134696459e+01 2.3501346498312301e+01 0 0 0
+7 0 1 0.0000000000000000e+00 3.4811954255640249e+00 2.0417588368425420e+01 2.1306552609984628e+01 0 -1 -1
+5 0 1 0.0000000000000000e+00 3.9181007499909639e+00 2.3309724926169942e+01 2.2594350258679718e+01 0 -1 -1
+96 0 1 0.0000000000000000e+00 1.3756458825283168e+01 2.1234868780934775e+01 2.3021345935870762e+01 0 0 -1
+417 0 1 0.0000000000000000e+00 2.1229154913724685e+01 2.0165754633351526e+01 2.1494645287465438e+01 0 -1 0
+405 0 1 0.0000000000000000e+00 6.3308582333443910e+00 2.1207721987077150e+01 2.2062528320066313e+01 0 -1 0
+481 0 1 0.0000000000000000e+00 2.3552517265417180e+01 2.2569073340153366e+01 2.1709283519918500e+01 -1 0 0
+491 0 1 0.0000000000000000e+00 1.1646756592565435e+01 2.1880846338154612e+01 2.0956230140482951e+01 0 0 0
+10 0 1 0.0000000000000000e+00 9.1835097081030597e+00 2.1268613487173170e+01 2.3020622871447792e+01 0 -1 -1
+74 0 1 0.0000000000000000e+00 1.5860810979289163e+01 2.1780155535945546e+01 2.0898813767675712e+01 0 0 -1
+415 0 1 0.0000000000000000e+00 1.1492938675350384e+01 2.3635130756517754e+01 2.3441569926774832e+01 0 -1 0
+78 0 1 0.0000000000000000e+00 1.8574110711936086e+01 1.4938217134743180e+01 2.3653923415825858e+01 0 0 -1
+
+Velocities
+
+412 -3.8097448749852213e-03 1.4325766325021302e-03 -4.5474811173924498e-03
+9 -3.0683238074103570e-04 -3.4519647834779857e-03 6.9871379494526381e-04
+432 -1.7193637462530648e-03 -3.4476461799460233e-04 1.9988992504324263e-03
+105 -1.1243170664928771e-03 -1.9881191342085293e-03 -6.2821693367750620e-04
+440 2.3458680854815772e-03 1.0325048709878992e-04 2.3218515807551516e-03
+139 2.0627899142985060e-03 4.4729695411477256e-04 8.2303629603961163e-04
+114 5.4950687064604068e-04 6.3839628819764669e-04 3.3400657981757552e-03
+35 -8.5116530334194507e-04 1.5577632950500608e-03 -1.7137224129183614e-03
+1 2.9071951914189974e-03 -1.5743546698306396e-03 -2.2779454289251701e-03
+134 -9.7089139556894575e-04 -1.2919955033373729e-03 5.8634657840191486e-04
+22 -2.1401508752373075e-03 3.2181598303402752e-03 6.6813258784431922e-04
+200 -1.7646580193658138e-03 1.5569191168853346e-04 -3.0208236636809505e-04
+107 -3.7741987030578388e-03 1.1367720724999616e-03 1.9347085839047610e-03
+51 2.9127469108430198e-04 -2.6236272617851213e-03 3.1533999727935110e-03
+423 -1.0622056993607190e-03 1.0669696853771668e-03 8.6670415666362883e-04
+427 -2.1891648975759818e-03 1.1544875545635054e-03 -1.8495357377065244e-03
+32 3.0365841993775624e-03 -1.4727885341859254e-03 1.0325723612682775e-03
+132 8.7807636065057623e-04 -1.3592721883920894e-03 3.4472735090018263e-04
+429 3.5494301554511980e-04 -1.4769671533232680e-03 -1.8905545925152944e-03
+30 -1.1269070814851948e-03 -4.9181327706253265e-04 -9.6715613764035045e-04
+26 1.3026321469732081e-03 4.7615764990832461e-03 1.4141403943216560e-03
+312 6.5591559338986651e-04 -1.9449420618160638e-03 1.5250962558475637e-03
+232 2.2981341378344234e-03 -4.0497045379133166e-03 -1.5104782922545988e-03
+137 3.0213149716520494e-03 -2.0013470293905251e-04 -3.8102427413922737e-04
+33 -3.6770649786952564e-04 2.9361882488921154e-03 9.9674844685673520e-04
+460 1.2435963332516383e-03 -2.2988061892487952e-04 -1.5231368369095497e-03
+21 1.6748999377797780e-03 1.8906975138184617e-03 -4.7655501891611465e-05
+100 -8.8631480282280593e-05 4.8167924500509326e-03 -4.2031077956673239e-03
+8 8.0616681368229687e-04 -3.1377036260240515e-03 -1.5342042307804474e-03
+61 1.5855489308581441e-04 -2.9099179750806310e-03 -2.9579156824996984e-03
+39 -4.3100771650461611e-05 3.0892843721702806e-03 -4.2887411823171332e-03
+121 -1.9265323097082464e-03 2.9654350693347732e-04 -2.2843599292228520e-03
+99 2.3033154349797339e-03 2.9841771786840009e-03 -1.5025033372287700e-03
+48 -2.7722905238798659e-03 -1.6012020540547719e-03 -2.7814976040173591e-03
+143 -2.1303346410176775e-03 8.3435875328274499e-04 -4.2585153864422567e-04
+153 2.6953941485515624e-03 8.0868812771579118e-04 -3.1112502470326169e-03
+226 1.4585684129326257e-03 -5.2971429954712216e-04 4.4444519938762985e-04
+120 6.8144296543783340e-04 -8.0300799119901491e-04 2.4295610615571407e-03
+113 -1.9673646360346851e-03 1.1587420853403868e-03 -8.1266708957100902e-04
+44 -1.4707381541596370e-03 2.2014925962687113e-03 -7.0030799948882390e-04
+443 -7.1383814840100487e-04 -2.1988076745238796e-03 -1.5723373330779364e-03
+60 1.2870789323617701e-03 -2.2839527152040585e-04 1.3656536408785740e-03
+24 -1.8121930735738785e-03 -4.4654483875371936e-04 1.7376101810717198e-03
+467 -9.4104900470254175e-04 -2.1361378806359650e-03 -6.9749494978719225e-04
+28 -3.4412477593395211e-03 1.2183883639333042e-03 9.5007461518006528e-04
+108 -7.5728426861124869e-04 -3.9737681821463630e-03 -1.1755971327619642e-03
+126 -4.5641199938766070e-03 -1.4752414220794629e-03 9.8594896292867601e-05
+101 1.2406849367030633e-03 5.5678865083236306e-04 1.0674455954443052e-04
+103 2.6106111651533928e-03 -7.7402335889204736e-04 -1.2003033255568634e-03
+112 -5.3949833756403111e-04 -7.4475242980988842e-04 -1.9330955771021889e-03
+206 2.0532593693954114e-03 6.8141380498947955e-04 3.5387039799810078e-04
+214 -1.1016861002842171e-03 2.0654276970781729e-03 -2.6892683712615301e-03
+2 -8.3625022358787280e-04 -4.2369412796792121e-04 2.2612605291078971e-04
+17 -2.0654716558061574e-03 6.6023150147092528e-04 1.2894317523706698e-03
+484 -1.3445600266467788e-03 -6.5961245410651830e-04 3.9615943769406312e-03
+82 7.5643129739121247e-04 -6.5028019116793927e-04 -8.7675224791883830e-04
+182 3.0839723404705822e-03 3.0253265726686555e-04 -1.9549306258972651e-03
+194 1.0970321437417606e-03 -3.8912242976775814e-03 5.4302131627960984e-03
+19 -7.4111712913075807e-04 9.7794476784063690e-04 -3.5022635435343524e-04
+25 -2.9505790462890655e-04 -3.0989287104900325e-04 5.4030696315785518e-04
+27 3.0459580232749138e-03 2.8464752633643722e-03 -2.6181174300713588e-03
+11 -1.9573168524257812e-03 1.0287288089610601e-03 -5.0298421074144971e-03
+127 2.0446644058423911e-04 1.0098647598148160e-03 1.1421821999596819e-03
+230 -5.4343693947082536e-04 -2.6802950985690783e-03 1.7807230699041993e-03
+118 2.8364217316342176e-03 -8.5421019389053123e-04 8.6767341578606835e-04
+115 1.5594469501148726e-03 -1.9477771656002101e-03 -8.4435023299876883e-04
+355 7.3975297246616976e-06 2.0128331280468556e-03 4.9178679747264892e-04
+119 2.5703510839121782e-03 4.3288659754497083e-03 2.6145423393045138e-03
+136 -2.0230141453793540e-03 1.6737938469497096e-03 9.5238953667283919e-04
+57 -8.9860116253738791e-04 9.8801990801547935e-04 -1.0200775340901489e-03
+37 2.7911394236890064e-03 7.3283053394006151e-04 1.5604109794324888e-03
+233 -9.3293496093059308e-04 -6.5101941752307283e-04 2.0000721825213445e-04
+163 -9.7282698535324592e-04 1.8383177048568327e-03 -1.3730543544170208e-03
+38 7.1612754847317193e-04 -9.6006817190216396e-04 -8.4426995327859888e-04
+145 7.5658142883220042e-04 3.6556043978740562e-04 1.3716311794073695e-03
+47 -7.7518688056288257e-04 -4.4823203231215570e-03 9.8372405844842888e-04
+326 1.1838785234995809e-04 8.2149837900248775e-04 -7.0043778585693610e-04
+246 1.6104412593256818e-03 -2.6015156103062187e-03 -2.7782154517843397e-03
+151 2.5338229681695439e-03 -4.9913715916081894e-04 5.9565845553755591e-04
+234 7.1285767148038639e-04 -1.5084682152876840e-03 2.7706694258890717e-03
+173 3.2118493958723811e-04 9.2877542564501940e-04 1.6645655430663547e-03
+171 -1.3214798554283464e-03 -8.0222522578852411e-04 1.8371433561114800e-03
+138 -1.5068154643143766e-03 -2.4755490249249580e-03 -3.6564635943303728e-04
+238 -1.8872379149758307e-04 -5.4360505643963992e-04 2.0372625794733532e-03
+140 4.5010063633105442e-05 -1.8660877050006338e-03 1.3271922873824026e-03
+353 3.5850144751163487e-03 4.1873852718988420e-03 -5.5532786181505399e-04
+104 2.2916607553207565e-03 -4.4867536915703762e-04 1.1707813690660998e-03
+225 1.2353090816400051e-03 -8.6114576233548793e-04 -1.9146536968054563e-03
+303 -3.4062332229335939e-04 1.0887535734103775e-04 3.5902945461054254e-04
+129 -1.1394587868751500e-03 3.7890518980059499e-03 2.1395091613666948e-04
+211 1.6748397593057433e-03 2.4977851385680485e-04 -5.1102890823066034e-04
+290 3.1431031853308348e-03 1.3594607919126208e-03 1.7957762872511339e-03
+216 -7.9363703546661481e-04 -9.2091238803880190e-04 -8.4399745671991696e-04
+334 1.1344184292630321e-03 2.4776752935254023e-03 2.6220709739787620e-04
+40 -2.4614060844774336e-04 -2.6204666525881363e-04 3.7420578506101068e-04
+190 1.2239511825540214e-03 3.5095664097134897e-03 3.2022234059153306e-03
+239 -4.8364527165769552e-04 1.2978595065979807e-03 -3.7248458030255112e-03
+337 1.7355614432890631e-04 2.4972054313855910e-03 -1.6027130200187885e-03
+124 -3.3938281261121158e-03 1.6571488822208762e-03 2.7106422095268552e-03
+42 -2.5583130037630546e-04 -8.5878795791628163e-04 7.0143043881066669e-04
+321 -3.6856412146062903e-04 -7.8142085047513987e-04 -1.8646548204977935e-03
+224 3.1739410369105289e-03 -1.6630215907348519e-03 -1.4326688258120791e-03
+106 3.5276476257733932e-03 -1.5193965055676458e-03 -9.5531614076474692e-05
+227 -1.0601911352580263e-04 7.4928007364849828e-04 1.1137503809788422e-03
+204 7.5789478852187025e-04 -2.5393488958093259e-03 4.2922167563626593e-04
+240 -2.3568776917524664e-03 3.4231754240962677e-03 -2.7293567508819506e-04
+265 -1.9961988919815418e-04 8.5175168633792842e-04 -2.1657943146420608e-04
+332 -1.8734831317815546e-03 -5.5876505685162369e-04 -9.5027781765387020e-04
+330 1.4837675446308025e-03 1.2722346494665861e-03 -1.6091183437221381e-03
+231 1.3466459565913776e-03 -9.9161515491305260e-04 -4.7724552002275976e-03
+250 -2.5879563832647730e-03 3.3128733427793774e-03 -7.7553264785346207e-04
+323 9.5896079830833211e-04 -8.0003994163417656e-04 -1.8647132131273655e-04
+221 -5.1981968700886198e-05 5.3934778818916652e-04 4.7877082809149821e-03
+237 -1.9673863652624316e-03 5.6686734728345653e-04 -1.2068492027941817e-03
+261 2.8907399861759827e-03 -6.9174433510532695e-04 3.8619304622428412e-04
+4 2.3685180045498523e-03 7.7457857440579024e-04 4.3421748950159900e-03
+155 4.4353410982245290e-03 4.2619835146211985e-03 1.5897246700517930e-03
+122 7.6421784441901527e-04 -1.7449079691701976e-03 2.7462051746068765e-03
+172 6.9693663050097760e-04 -1.4591559874793335e-03 -2.2541405980875890e-03
+144 2.9975275195335271e-03 1.3280016649993170e-03 -4.2338371204108695e-04
+229 -2.1751641718692582e-03 1.7279263861665273e-04 -1.2509745432437018e-04
+175 -1.9388184228185975e-03 4.0403531492124969e-04 2.3925584231863817e-03
+150 -2.8118122467411988e-06 -4.2687061548718937e-03 -1.0339679379585400e-03
+241 -1.9132783317891795e-03 1.3900387291961960e-03 2.8675732120237367e-03
+116 -2.7469385604062678e-03 2.4470879923319585e-03 1.0432665316777493e-03
+157 -9.4101557385539486e-04 5.4458606774040255e-03 1.3758533109063274e-03
+196 1.5874635110957956e-03 -1.7899071394190654e-03 2.2801581896798890e-03
+243 -4.7675994195067834e-03 1.1009808809379954e-03 -1.7339608178257204e-03
+318 9.1607463378804745e-04 2.0766433815044335e-03 2.6684874229034468e-03
+247 -2.1841406526714462e-03 3.3979217455017336e-03 -6.2884331711574315e-03
+466 1.8997118053214396e-03 -3.2813068219542736e-03 -1.8222341019797394e-03
+488 2.0353634672651039e-03 -1.5673737675181633e-03 -2.2152770016716800e-03
+324 2.6461933275449697e-03 1.8511173187846148e-03 -1.5012559953568702e-03
+125 6.6461179570282195e-04 -6.3610257290883532e-04 1.9607919241874066e-03
+401 1.7045764621186632e-03 2.9824432685514324e-03 2.2499354212713834e-03
+202 -2.2039704151154829e-04 -2.9489066843678548e-03 3.3914322399526248e-03
+433 -5.3750519206719437e-04 8.9532444467342392e-04 5.0540215893074385e-04
+305 -1.0013180711958708e-03 -6.5966753476387615e-04 1.3493389177364264e-03
+492 1.9021752093151794e-03 -9.2225791915248438e-04 -2.0320104258518450e-03
+314 2.0796443060985973e-03 -1.5356519996483126e-03 -2.6670845702955418e-03
+409 6.9104303646106300e-05 1.0793631822790960e-03 -1.0192174575589674e-04
+311 -2.4801711620505996e-04 -2.5574725593595842e-04 -5.0867486763914397e-03
+300 -5.8158481164443114e-04 3.9951173388842607e-04 -4.0054357610132957e-04
+18 -3.4366673958891302e-04 -1.4413974141892589e-03 -2.4186980310948302e-04
+117 3.3018234150065332e-03 2.6822114272537991e-03 1.4332159435743363e-03
+188 1.7774380221805164e-03 -4.1090981636865186e-03 -9.2332879499117573e-05
+228 4.6446883651368436e-03 4.6672696550684227e-04 1.8011365914107588e-05
+373 3.4971333475474578e-03 -1.9523098947902875e-04 1.0533233054250491e-03
+167 9.1153651346117029e-04 -7.2145123746515639e-04 -2.3960851857716650e-03
+340 2.1767968887485729e-03 -2.1179437841527446e-03 -1.8440183216052459e-03
+455 1.4140683358687105e-05 1.7310435817045353e-03 2.3173061429397911e-04
+336 2.2623443661342240e-03 1.0240711160660972e-03 1.3149300182064925e-03
+333 3.0254961216432134e-04 -2.0438957854449795e-03 -7.3489945216477070e-05
+458 6.9063764791665904e-04 1.7220395613745270e-03 -1.8123348089136514e-03
+179 1.1407581525759100e-03 1.6792560103331801e-03 -1.3986138153250325e-03
+349 -1.8637720459204043e-03 1.0681615249387860e-03 -8.9370765886496523e-05
+20 -3.3490056481863531e-03 7.7459222643717158e-04 1.5365066662190608e-03
+212 3.1736726883386200e-04 -8.7516234417376888e-04 8.1077983909033592e-04
+123 -1.5675730383559339e-03 3.0872839453456699e-03 3.0397792326941281e-03
+242 -2.0465890627639855e-03 4.8020213858627711e-04 5.6639302637839111e-04
+343 1.3103546081549438e-03 8.3289912283885162e-05 6.7844706376437149e-04
+222 -2.7475186873767939e-03 2.9870463953374818e-04 -9.4582561141046140e-04
+195 5.9951334673285974e-04 -2.5295682556235287e-03 1.5415974693983574e-03
+306 -3.5548718364509999e-03 3.6529169205635149e-05 -1.4961755170279124e-03
+251 -4.5458502390306125e-04 -1.8765378953738961e-03 2.6847560199710044e-03
+345 -1.6021751860018094e-03 -9.1376723941421811e-05 -2.0766263245993130e-03
+253 -5.7314490130840279e-05 -2.3069016748785100e-05 -2.3323368650601784e-03
+260 1.0818999940008288e-03 7.7366029015429183e-05 2.4174147715169828e-03
+256 -2.3895886505456371e-03 -2.4322354554817400e-03 -1.3619630041706162e-03
+244 -1.6351775964322185e-03 9.2540584033689926e-04 3.0782986336425483e-03
+236 -3.5372606115596861e-03 -1.5467042711934018e-03 -7.2117119178385740e-04
+383 -2.6385359091142019e-03 3.9489600362601854e-03 -1.8448149082932253e-03
+388 -5.8827663795350230e-04 -8.9890598603075973e-04 1.7917205249899637e-03
+400 1.1259334472487016e-03 1.3028071239554043e-03 -6.9536195336214772e-04
+391 -1.6489907655679948e-03 -2.4225979280526645e-03 -1.8283254475171260e-03
+90 -1.2833008734788659e-03 1.0144587753978750e-03 -7.9132272849544150e-04
+316 3.4239262816005917e-03 -1.9245453001767916e-03 -4.6494452590062222e-03
+434 9.8198981605092535e-04 -1.2783789871367232e-03 7.6819097566620058e-04
+375 -2.2683887320608057e-03 9.6644128220255639e-05 1.3049801089827446e-03
+410 -6.9362190582260503e-04 -6.0302670113980908e-04 8.4327962232485555e-04
+53 -2.4045573927675536e-03 -2.6075617769736920e-03 -5.7111410318384022e-04
+338 3.8991318655374688e-04 -2.8874486700141812e-03 -2.0959671847698819e-03
+357 -1.0489871150123500e-03 2.8147187289770254e-03 -2.5801886968592576e-03
+296 -5.6167092523724523e-04 -1.5997503722799463e-03 -3.9124085782755048e-03
+34 -2.3314888985334339e-03 -1.5933728084373814e-04 8.3571264802766892e-04
+320 -2.6077339432932544e-03 -3.6810335134593249e-04 -1.4514164506912849e-03
+322 -1.1453238253310825e-03 -1.5445308909928226e-03 3.1306136786027872e-03
+384 -3.2909722268031292e-04 9.3850244786579677e-04 1.2448037786022177e-03
+259 -7.8413665343151783e-04 2.9863792769227481e-03 3.0841496261965631e-04
+219 -9.8507107517645229e-05 -2.5184463809119761e-03 2.6203090360140497e-03
+302 3.0386013389715979e-03 4.7702737283096677e-04 4.7766278814101508e-04
+402 -2.0338739906101623e-03 3.1844654204232332e-03 -4.0446717606580775e-04
+208 -1.8072751725762813e-03 1.6082036185921240e-03 -5.6228265836792267e-04
+351 -1.0350041584929876e-03 7.6681429157624340e-04 -1.2008270281211465e-03
+271 -3.5225884441981601e-03 -2.5613452391272042e-03 2.8856989738629729e-04
+335 6.4167292897507322e-04 3.1811137115918060e-03 -5.8261667127375587e-04
+379 1.4709799388679594e-03 -1.7669850339486744e-04 -9.2274675263555219e-04
+304 5.1176820748987852e-03 -3.6808419980467001e-04 9.9750561885045643e-04
+441 -4.5903785744381585e-05 -1.4954415487784193e-03 3.4649490638805958e-03
+342 6.4165740018257763e-04 1.6391394880127873e-03 -8.5514919018491451e-04
+308 1.9408586018930814e-04 1.9010559801188422e-04 3.9412330106969378e-03
+428 -1.8421540978137017e-03 1.6322820100251082e-03 -1.8751612119832415e-03
+325 -2.3106092265723246e-03 -1.6866131355281356e-03 1.1510779842391031e-03
+328 8.4092150205553984e-04 2.6538952246875202e-03 -4.0366141957748842e-03
+327 2.6825593167693071e-04 -1.3673638873294160e-03 -2.2008581930206303e-03
+350 -2.7541887403281385e-03 4.3010778910778221e-03 -1.0490865434605876e-03
+453 -9.2105797538724360e-04 9.1413602662530858e-04 -2.1869980517526494e-03
+374 -9.2361485650690729e-04 1.6040315552354259e-03 -3.4934794627260140e-03
+254 -2.2390690781088213e-03 5.5998819714070782e-04 1.6703029102206840e-03
+280 2.5325098726240410e-04 -6.0903598506090932e-04 -1.1958583949282439e-03
+354 -3.3768385427400036e-04 1.9065214918601986e-03 1.0768714169165595e-04
+437 1.0614608046381291e-03 2.3559690661887371e-03 2.2829759833872358e-03
+444 -2.0101078664703283e-04 -4.2704357793368951e-04 3.3374452099849653e-03
+422 1.8718969818661882e-03 4.3105287083776700e-03 -1.8953735821164133e-03
+85 -5.1451004056817917e-04 -3.8393399059245686e-03 5.3757695369128708e-04
+421 1.5191868844819868e-03 2.5418351390980257e-03 -2.5278878180378700e-03
+88 4.7360953393812558e-03 -3.9521981992179711e-04 -1.5380260878778402e-04
+382 -7.5978846181201729e-04 9.1581198188757167e-04 2.1894958493229710e-03
+431 4.6341900642218568e-03 3.0658565218453981e-03 3.5863369743786943e-03
+31 -2.6858533372124439e-03 -5.4430167913420099e-04 1.3024026667817588e-04
+12 2.6271150674440333e-04 -2.7080258294813250e-03 -1.0847641370299462e-03
+424 8.5983302159927885e-04 -2.3516703121589138e-04 1.1980967343463247e-03
+435 -1.4309271367350773e-03 2.2255314848666657e-03 9.7586321371918221e-04
+279 -1.5687614794335639e-03 -3.7244536975318248e-03 8.5264119642110313e-04
+315 -5.0870497543122745e-04 -1.0238381608476236e-03 -8.5757101912326342e-04
+414 -1.7615122735048212e-03 4.5555063910540485e-03 1.3751677573663179e-03
+459 4.7031762966329611e-03 -2.6381769729005582e-03 3.9695675361744748e-04
+359 1.9340446266884769e-03 -5.1956980790946183e-03 -1.0767903654319182e-03
+419 -8.4446659695415027e-04 -2.2890930436035243e-03 -1.1756432679383307e-03
+483 2.1690395211509405e-04 9.4167324545211636e-05 -2.5115279542173019e-03
+403 -2.3602887220737592e-03 -1.5461736697773218e-03 -9.4619212916936249e-04
+329 -4.3095635121066199e-03 -2.9154917133055445e-03 -4.8290706748702988e-04
+52 -1.0642529206615660e-03 3.6502082164533017e-03 3.3992152198722052e-05
+425 4.4642190873600942e-03 2.4820670604708511e-04 -1.9798607967542329e-03
+133 -8.3602858555994233e-05 5.9867752575375687e-04 -4.0882912586444565e-03
+360 -2.0375278668436363e-03 -2.4256605406981651e-03 1.6295720130001946e-04
+438 -4.6289958968646809e-03 1.1571118511167478e-03 -4.1663173625736743e-03
+454 -3.2737050224161315e-03 -8.8606289383738799e-05 1.9070632074633127e-03
+86 -5.0510267834903001e-05 3.5566364746472565e-04 1.5491928232471061e-03
+6 2.7425768763721780e-03 -5.0339805086138890e-08 1.3038703177047008e-03
+447 1.5841067690497592e-04 1.7435185140082772e-03 3.4045157575518957e-03
+49 -2.0415358001655916e-04 2.7810596242235168e-03 -2.4800657159744819e-04
+83 -4.0318916926273965e-03 -2.1380397727092954e-03 1.0808564700023715e-03
+41 -4.8665529274017689e-04 6.6392521057926051e-04 6.2797859291268711e-04
+45 3.2185049212545241e-03 8.0716156893931128e-04 -6.9368336519423852e-04
+55 -6.8505131175842311e-04 -2.6955937952498051e-05 2.6179124320550467e-03
+477 -2.2319222017936611e-03 -2.7385033010105730e-03 1.1401977783747049e-03
+436 2.8969505671441720e-03 1.3516225524469435e-03 -1.9251175838145098e-04
+442 -1.4302039908927838e-04 1.0867592343837141e-04 2.2892837370676556e-03
+77 -1.3108400214979442e-03 3.9260104740771671e-04 -7.3854749348740739e-04
+339 -7.7030872863422060e-04 -3.1160874313663600e-04 -1.6636810777033003e-04
+445 2.4247628927109087e-03 1.6352375997318186e-03 -1.0564757480909660e-03
+59 -2.3622856532245049e-03 9.3520062081421464e-05 1.8843539695054348e-03
+23 -2.9917869831022005e-03 -2.9044803209340901e-03 -5.0312631927628510e-04
+257 8.8682824764592860e-04 -1.4022837453633570e-03 -2.6135080147894477e-04
+165 1.6830952753787455e-03 1.0555434603315432e-03 -4.4283085741319205e-04
+43 1.3278979648760675e-03 1.6122665589997298e-03 9.0741855929559259e-04
+79 1.5571374767444916e-04 -2.0384007955143068e-04 -3.5191950638304203e-03
+288 -1.3972951159063634e-04 -7.6518322196253755e-04 -6.3027489838045846e-04
+192 1.2177261178263844e-03 -1.6599114068314978e-03 -2.5873880853143011e-03
+146 2.0888656806875702e-03 -6.8437754021862213e-04 1.8331058750996505e-03
+148 3.9500137227034098e-03 -3.3059256596020777e-03 -3.6677922269510179e-03
+135 -5.2102308638121470e-04 7.9274674149305499e-04 9.7436164183101908e-04
+156 2.8858104288590333e-03 -3.4329679392112768e-03 1.2981557446399125e-03
+293 -8.1185034296565352e-04 1.5698789035786533e-03 -1.4641484298527382e-03
+217 6.9402036250886358e-04 3.2199846676078344e-03 7.0957951249929255e-05
+161 -8.4395652801011239e-05 1.0756912781415108e-03 -2.7476281771830918e-03
+75 -7.8356876099585542e-04 -9.4151401528697455e-04 2.3850729194060303e-03
+178 -1.3511381895526737e-03 1.0353652505799178e-03 3.6929861797660277e-03
+68 -9.7936956707962187e-04 9.3446557382636814e-04 -1.5940947838689727e-04
+87 5.4431761329206839e-04 1.1948355875622317e-03 -3.5511023119419202e-03
+184 -3.0361830712004809e-03 -2.1340374229553731e-03 -6.3467836038311708e-04
+469 -1.5410014489918242e-04 -1.2649614801729832e-03 1.1272500737530130e-03
+142 3.3944550969777177e-03 -2.7272032951460813e-03 3.9693093547550932e-03
+13 -1.3850289113002572e-03 -7.4089307372856141e-04 -8.2388395090134635e-04
+70 6.7317139439382605e-04 3.0547873577886318e-03 2.4007564045097930e-04
+71 -1.4555906739843782e-03 -3.2254307677740154e-03 -7.2473436819424657e-04
+76 -7.6441055831473091e-04 1.3040381228105970e-03 9.3606736802791593e-04
+480 -1.2006702547099845e-03 -2.7592395396836889e-03 -1.6129397064725151e-03
+81 1.2705654592941388e-04 -4.1509810518860022e-03 -2.6242103953650993e-03
+93 -8.3039396764408857e-04 3.2536218032579983e-03 8.3418720088637255e-04
+3 -1.0601336437840904e-04 1.6802848762413299e-03 3.1993376798326385e-03
+197 -1.1557101342678207e-03 1.0021294027407004e-03 2.5265857871351934e-03
+154 1.6584503732043350e-03 -2.8703423007943570e-03 7.6491376665023742e-04
+223 -1.1893892353020072e-03 -1.3218045793059316e-03 -2.2996816113026470e-03
+102 3.4357096263101126e-03 1.1489726001219273e-03 5.1390572287439299e-04
+98 -1.5422714500106579e-03 1.4419100527921487e-03 -2.2058377944790441e-04
+166 9.7814119737503849e-04 1.9462155667325531e-04 -6.8909824256139021e-04
+406 1.2702392172169550e-03 -1.5067259803456068e-03 -1.1659158496088232e-03
+67 4.2244408239455571e-03 -1.1390795383174762e-03 1.3929538876918826e-03
+169 -1.7809797248926310e-03 1.3451320774606410e-03 -1.8697867377897885e-03
+111 9.3050448937350956e-04 -2.1537377059964564e-03 3.2593494347547274e-03
+110 -5.1467812936165948e-04 -1.1382444921853787e-03 6.0132206045859270e-03
+97 1.7765458513200928e-03 -9.3060587429285191e-04 2.0955920866213640e-03
+16 1.1583657757241431e-03 -1.3983977571114228e-03 2.4871761900208070e-03
+64 -8.9942925258101381e-04 7.0166079454909292e-05 1.4508436051379316e-03
+407 2.3344032731824659e-03 -1.7725185623270203e-03 -2.2419567768139497e-04
+159 -2.8552366235862982e-03 4.1292204254214838e-04 -9.0520561354238353e-04
+141 -2.6842148755041929e-03 -1.2718501483264060e-03 -3.6581358731658733e-04
+344 1.1938272923879400e-03 5.2831153573451464e-04 -2.5395693963164924e-04
+381 3.1884538836811785e-03 3.6563369725634123e-04 1.5422249789432138e-03
+128 1.4494248026867629e-03 1.2789834567980316e-04 -3.8706922868188076e-03
+264 -1.1988134696168144e-03 -1.6541192886909784e-03 -2.6165644506030658e-03
+248 -2.3590544548624599e-03 -2.8600338021579961e-04 -8.2933879431381450e-05
+168 1.0057849307707580e-03 9.4418778717936301e-04 1.0061858290396518e-03
+147 -3.7489783029180733e-04 -1.0231736831912003e-04 -7.7984572770213459e-04
+149 -2.7744452013216156e-03 2.8424650353222731e-03 -3.4098513790964917e-04
+269 9.2146151112763007e-04 -1.1236790776502474e-03 2.7084238697638856e-03
+131 7.3227398828591694e-04 -9.3708944922753031e-05 -3.4858190022792716e-03
+277 4.9705354105179875e-04 -4.8517168085466313e-04 4.3796885117474860e-03
+183 7.3591633730271536e-04 -1.9517260421192978e-03 -3.6589909041142205e-03
+158 -2.3473931920907926e-03 -4.2553420418604024e-04 6.9855378560729751e-04
+263 -3.0311240753727285e-03 4.3761906999777926e-04 1.4549367124306771e-04
+56 -2.3260042073863798e-04 1.8097744601973842e-04 -1.5648364348563408e-03
+152 2.0006091361063480e-03 -5.4520205876135098e-04 1.5397333132688392e-03
+189 -9.3027971483485049e-04 2.2104744431743692e-03 -1.5761003999832332e-03
+191 7.3499951964368015e-04 -2.3246446632421069e-03 4.3304201957114832e-04
+94 2.6103222254723235e-03 3.7831973804036312e-03 -1.2474383492846147e-03
+91 3.5681266229195140e-04 5.1442551650120259e-04 1.3740016768969765e-03
+174 -1.4165106153845148e-03 1.2266008182217961e-03 2.5357562102653912e-03
+14 3.3391771941788666e-03 -1.3063065299461297e-05 1.1798324009913645e-04
+201 3.1079437163311426e-03 3.1285193325591579e-03 -3.2774060104247347e-04
+475 -2.2353939092508888e-04 -2.7495320139233571e-03 -1.4856889457900264e-03
+162 -3.9621065234632519e-03 6.7509214179985061e-05 -1.0516221281832879e-03
+164 -1.5632884150323617e-03 4.9751543423590680e-04 -3.2368763431018973e-04
+181 1.0647990052487172e-03 4.9406501957035989e-04 1.1641017651086191e-03
+186 -1.1499519354106430e-03 2.9668726604173269e-03 2.6038177384091967e-03
+286 -9.8636416090681911e-04 1.9511708687699823e-03 4.1636813885600050e-04
+109 -3.9701570406670975e-03 -6.5807937787818631e-04 1.0652231487004158e-03
+268 1.2211252773361443e-03 1.2260979285673190e-03 -4.2515781833478376e-03
+193 2.4355454093592708e-03 3.2853101961679948e-06 4.2777907073173350e-03
+185 6.2284196376058301e-04 -4.0276960850785509e-04 4.8457129533940603e-04
+392 -1.7737662943515884e-03 1.0682795305647628e-03 -1.7527114116298241e-03
+291 7.6141080153698014e-04 3.1952344538696185e-03 4.2884413466729029e-04
+235 -7.7631184729754388e-04 9.8730975269737992e-04 -5.0634824720258880e-04
+471 2.8404335840491813e-03 -6.6486563782281512e-04 1.4258185433335647e-03
+95 1.2620641562175936e-03 1.3333282151178300e-04 -2.6226251191950726e-03
+420 -5.3556351065634671e-04 3.9866963979926775e-04 1.6428152582844083e-03
+84 3.6006546417051339e-03 -1.3075499106202954e-03 -5.4091911204454471e-04
+282 2.0544721704048420e-03 2.4527892546954890e-04 -3.0582003733813021e-03
+377 3.4727930948573499e-03 2.5982146798714278e-04 2.9672736849833906e-03
+364 1.4654240887202266e-03 -3.4910215914357098e-03 -6.2640840920057442e-04
+365 2.3414827275519503e-03 1.3806431246516388e-03 1.0955425483292324e-03
+252 3.0543804307955809e-04 9.8965674903037033e-05 1.1910082849719305e-04
+249 1.0305751182579222e-05 1.9197002127617005e-03 4.3422043441565327e-04
+285 1.9065417760086691e-03 3.0837851822643528e-03 -3.0166807168647996e-03
+73 -1.1146375701680449e-03 1.1831311712934283e-03 -2.0503877949927837e-03
+292 3.9973390405336389e-03 -2.9042449172282858e-03 -1.2025312009853984e-03
+378 2.3956073933031536e-03 2.1796530535040035e-03 -7.9921002302328593e-04
+272 -1.9951563254564189e-03 -1.3378250791282042e-03 -2.9941703496312138e-04
+274 -1.1524686435519435e-03 -2.7958434495936732e-03 -2.5181451588126506e-04
+199 -3.1246584005096673e-03 1.1069964737642644e-03 1.5635921715584568e-03
+177 1.7070589238642783e-03 1.4165362533276914e-03 -2.7662850103212060e-03
+273 2.2878471177319136e-05 3.8470474285880017e-04 5.6627935626834196e-06
+283 -1.2164463511786267e-03 -1.9784430924841548e-03 1.0548124779720973e-03
+258 -2.1925247243727345e-03 -2.6647666707264555e-03 2.4754394476750553e-03
+266 9.8166776616327419e-04 -2.1356298988183569e-04 -1.0961018437115352e-04
+399 -3.5624347714159323e-04 -4.5219555450564464e-03 2.8952727937785810e-03
+301 2.6359498060704481e-04 -1.8699780786784036e-03 6.5173724367514018e-04
+262 -1.4576126407278129e-03 -4.2523356575127104e-04 1.6746207796408663e-04
+203 1.2239037126249408e-03 2.2440315473058543e-03 -1.0785020405174712e-03
+170 5.1756905049820507e-04 1.3335039852099852e-03 1.5857179023639014e-03
+370 -2.7739456674004629e-03 -1.9897937768700840e-03 -8.1634876277980476e-04
+210 -1.6505175770336695e-03 9.0058532333407856e-04 -2.6052178032250349e-04
+176 1.0439369896940271e-03 -1.4853596783741087e-03 8.3640279083877357e-04
+294 -5.9794036638875141e-04 1.2446334264209311e-03 2.2701233078146660e-04
+198 2.4806218886019374e-03 9.8919203421795818e-04 -3.3886221738926615e-03
+180 1.3729082479812871e-03 1.8966325943499051e-03 -1.2719932922599397e-03
+278 -6.5137434533389454e-04 -1.4546672643610356e-03 -2.2014641629435933e-03
+80 -1.1971550596874276e-03 5.5662969005554905e-04 -1.7696628108703933e-04
+218 1.0753476338700846e-03 4.2209982896333539e-03 -1.2993964509791206e-03
+289 -2.4098744437990121e-03 -4.2048521109973409e-03 4.4912292630166096e-03
+270 -3.9259408530904422e-03 1.2413042919004469e-03 -1.4460969584231523e-03
+187 3.1227783726618676e-03 -3.7247978945758428e-03 2.1988908178545569e-03
+393 1.3988619718704155e-03 -3.3413651237843432e-03 2.1909261994869050e-03
+281 -3.7614909560351704e-03 8.7436510927074545e-06 4.5576160109094303e-04
+209 4.1304004496309525e-03 1.2992715842932506e-03 -4.1623032525637036e-04
+69 1.8281876022431098e-03 -5.4433314112936810e-04 1.1227123747018376e-03
+358 -1.3990360348343069e-03 2.2970976736614698e-04 2.3176821504962810e-03
+341 2.9543020337205261e-04 7.7386949848518038e-04 2.2285730764337749e-04
+346 3.4797859340703324e-03 -9.5109379538970917e-05 -8.4471671321135881e-04
+347 -6.3049658946348218e-04 1.3449951200785190e-03 2.9108335803988872e-03
+376 9.7552991936596350e-04 -2.2717886349590309e-03 -8.6509198821360515e-04
+245 -3.7857588083464598e-03 -1.8445195150312998e-04 -2.6635096045285510e-03
+50 1.7778077603753015e-03 1.5420272189081922e-03 9.3231029830008071e-04
+371 -1.4600500862411360e-03 -6.0631939652608694e-04 -2.5692752529869484e-03
+366 -9.4769734296717669e-05 -6.7319752085951432e-04 -1.9286923144893758e-03
+389 -6.7377557313416127e-04 -2.3977712653731362e-03 2.4275147731505757e-03
+255 -9.6342107165360449e-04 2.1553225365470064e-03 3.6664612415839588e-03
+160 3.2208803979243535e-04 3.8305213877912170e-03 -2.3374855089707100e-03
+397 7.3883412286552565e-04 -1.4815319140376519e-03 9.8923752204616413e-04
+220 1.9439930175634647e-04 -1.8185557281213109e-04 6.6394660790682731e-04
+385 4.4698517766540176e-04 -1.5131355672808396e-03 -2.8656896405148710e-03
+361 -8.2094605350970754e-04 3.3775457437799552e-03 -1.0583533846014351e-03
+470 -4.3710838669991050e-04 4.2042146223766185e-03 -4.8552363825338674e-04
+267 9.3389509732878242e-04 -1.7713403636599567e-03 -1.1380862729233672e-03
+372 8.0370549207088473e-04 -1.1028624229508391e-03 4.9116201582196104e-03
+482 2.4759041966672174e-03 2.2840093349500587e-04 -3.2668077005742783e-03
+390 8.9111763997695487e-04 1.4807708460130948e-03 2.6100948567820152e-04
+295 8.9047346143043024e-05 -2.2290342638070916e-03 1.2782085560375047e-03
+276 -8.0260068045294366e-04 1.2267241825852390e-03 -7.5992472546478475e-04
+299 1.5824793955772790e-03 -2.8829340994414353e-03 1.6061761097983902e-03
+493 9.8697883399010474e-04 -2.5136670929858736e-04 -8.3094019468833312e-04
+362 -3.6842874090458177e-03 2.5952855244700808e-03 2.0114073440510318e-03
+317 2.7194713513344581e-04 1.1295075733466231e-03 7.8251525422734253e-04
+284 -6.5612249657536761e-04 1.4310317870508810e-03 1.9100780956450318e-03
+457 1.2530904155609063e-03 -2.9172507851533019e-03 2.1932627072453353e-03
+396 -5.0248617616191222e-04 -3.9794498278644388e-03 -2.2104270095844072e-04
+386 -7.5413621635333269e-04 -2.8056839723491732e-03 3.9252685683486216e-03
+205 -1.8592399532976463e-05 3.7140958820399638e-03 1.3013662702221697e-03
+387 1.0641288443524720e-03 -1.9946385210010183e-03 -2.4319231876012109e-03
+307 -1.7221737684714033e-03 1.9864521045351207e-03 3.2132910230904862e-03
+356 -2.5659146058546601e-03 -1.5916794695471337e-03 -2.9769482889631573e-03
+462 -1.9186543137123392e-03 -3.2879691099034171e-03 3.5247435599602799e-04
+213 6.0213000790495281e-05 -8.3559874091480448e-05 -2.8174349452613069e-03
+313 -4.8949704960498611e-04 8.4313383045184654e-04 -3.4367144038964917e-05
+499 2.7399713931419941e-03 2.8294665592103489e-04 4.2458833144298633e-04
+394 6.0965676834791381e-04 8.3696721072323691e-04 -1.5768019583938225e-03
+63 1.5840589837952139e-03 -4.6976295495357599e-04 -6.3671628122941798e-03
+426 1.7583994050366179e-03 -2.0560962442600513e-03 -9.9378840334548527e-04
+369 -1.2058627215128020e-03 3.1182540547570838e-03 -9.5331615218337609e-04
+450 -6.3932117904459923e-04 -5.1553275714867109e-04 1.1305697270455476e-03
+451 1.7897704754018847e-03 -2.4571974609670900e-03 1.8375605736402831e-03
+494 2.0517472084900486e-03 -9.4372745594612526e-04 -1.7139567571198906e-03
+474 1.6719037205687353e-03 1.6058695551830918e-03 -3.5251450492674251e-03
+486 -1.5658886523417217e-03 -9.5514619700151019e-04 -3.4014928645752424e-03
+275 -1.9693934598927313e-04 1.4772150775771258e-03 -2.0205192010815546e-04
+449 3.9359931988453528e-05 -1.2977220556727917e-03 2.5553150443650067e-03
+29 -1.1762671233969523e-03 -1.0992349741405694e-03 -7.2727175751746633e-04
+297 3.0549813041792200e-03 8.8948667458870227e-04 -6.7701661091337144e-04
+58 1.0752423463584254e-03 1.6869040943153541e-05 8.1088977646228614e-04
+348 6.7408369460347220e-04 4.3953329634420276e-03 9.3428593942334790e-04
+446 -1.1090858515197153e-03 -1.4241283487506661e-03 -1.6763059683199804e-04
+498 -1.5575715669837774e-03 -5.5099012944997073e-05 2.4763909945859064e-03
+464 -3.7296616020736856e-03 -9.0516999395489121e-04 4.3915909621293865e-03
+367 -1.1797135832807872e-03 -8.5817285940028903e-04 -1.2039493988398983e-03
+368 -2.8783210334596388e-03 6.6504061586076678e-04 2.9794378367171020e-03
+54 -6.4070369440571005e-05 1.6780568861596223e-03 -1.4950653148714196e-04
+468 -9.7906049063220643e-04 -1.8361489153042962e-03 -2.6883548261262720e-03
+207 5.0243903417637845e-04 -1.6622738976522018e-03 -5.6440195310519358e-04
+352 2.1802206405490115e-03 -3.6507413192487827e-03 -4.9012762361313961e-03
+89 -2.8385711965003835e-03 5.7080296582602216e-04 3.0853799542197998e-04
+309 -7.0066464326263477e-05 -5.0297426690714233e-04 -6.4157569930356408e-04
+413 2.4228806992511380e-03 2.9565465980119759e-03 -3.5769622494316534e-04
+479 1.1856538623878955e-03 1.9957311293115451e-03 1.3974856109380993e-03
+363 -1.8019505402279542e-04 1.5287913337463451e-05 -2.9174121354363608e-03
+408 -3.4638226537976504e-04 4.8333699095883925e-04 8.5326481900015411e-04
+287 -7.8001281877070777e-04 -2.6732826372910055e-03 2.6978961083927292e-03
+416 -5.1295440436442945e-04 1.0508121861511302e-03 2.1452152726957390e-03
+331 -5.7639331874351895e-03 1.0050088146832338e-03 6.4535823321432831e-05
+411 -1.6556981786323562e-03 -1.0022326546323670e-03 -2.1879247218854858e-03
+395 -1.8466275945110322e-03 -2.7403120204940257e-03 -3.3003820916140028e-04
+215 -5.5738018929129890e-04 1.3389143198700701e-04 5.0084050232290951e-04
+430 -9.1334440618258189e-04 8.4707260900557637e-04 -7.3878910592628657e-05
+15 -2.1829836040239501e-03 -1.2900890354718086e-03 1.4646365599933371e-03
+495 -1.8155744683250130e-03 -2.0167202142211235e-03 1.3909940029987206e-03
+319 -1.9055034755232326e-03 2.2892685908153872e-03 -1.1639482195070865e-03
+418 1.0983880548350270e-03 2.6284329471994586e-03 -1.4318794538185256e-03
+398 -2.7790720433038562e-03 1.2670043024626079e-03 -1.2684374674018285e-03
+404 2.3717735644193795e-03 -8.2191408067838290e-04 -1.8944770940947234e-03
+439 1.0801325407633564e-04 -3.4584285449524020e-04 -6.0764300307510240e-05
+65 -2.8390154319278045e-04 -2.1391271063979493e-03 2.4100411454639915e-03
+465 1.2964631140873723e-04 4.0921942903105650e-04 1.2073520095929977e-03
+448 -1.4635039179951884e-03 3.9776995106385394e-04 2.8450759226946063e-03
+452 1.2009582384679706e-03 3.0220166723573137e-03 1.2042108208406006e-03
+487 -5.2141766315259104e-04 -1.5545771538193079e-03 -1.1711522300342210e-03
+456 -1.4840047761346164e-03 5.6533932977665422e-04 2.4350702873681311e-03
+92 9.6191503784132484e-04 -2.2211955723329614e-03 -1.6812608463743933e-04
+380 2.8108246823925574e-03 1.1909368995630585e-03 1.5813005240236844e-03
+36 -3.0723815307612101e-03 -1.6016931912048872e-03 1.2937932401045191e-03
+62 1.2128853486723771e-03 -2.0483766425746916e-04 -2.7754129226970881e-03
+461 1.3519879878265550e-03 -3.2126708392746931e-03 3.1843063089435253e-03
+490 -7.4638050116656066e-04 2.4932197371144350e-04 -2.6703768870167747e-04
+497 -3.1211739741977599e-03 9.4547324630858578e-04 -3.3102500562815553e-04
+298 3.3094096185719273e-03 -1.6771016721681062e-03 -5.7283763329387131e-04
+485 1.8952971924856678e-03 2.0167231473010635e-03 -2.6609266847574305e-03
+66 3.7921888745258642e-03 1.1045914129440466e-03 4.0778829475533150e-03
+489 3.0586420546123588e-03 -2.0535625839646849e-03 2.5322751510919122e-04
+72 -3.9451243147929950e-03 2.0565532864750022e-03 2.6253177817846481e-03
+472 3.8070505978645155e-03 -1.0340104331536199e-03 2.7161641858209902e-04
+130 -5.9659837992332104e-04 -2.1187551155929843e-03 5.0211479955652495e-04
+500 -2.6104267194696886e-03 4.7064449588598931e-03 -3.5534525299161585e-04
+496 4.1964336093590490e-04 -8.0423092972593325e-04 1.3653918721857967e-05
+473 9.2259648216000488e-05 -1.1614601192178762e-03 -2.0123184681095346e-03
+476 2.1190885289194844e-04 1.4713556289944825e-03 -1.7989355940283243e-03
+310 6.8086421979091452e-04 2.1611975673076363e-03 1.4417283856763034e-03
+46 -3.9669430659745623e-03 1.0190107939335658e-04 -3.7141613130843311e-03
+463 1.2153183941616419e-03 4.2742690171191228e-03 -2.9368408316562916e-03
+478 -1.7430261545401812e-03 -5.5689767198338971e-04 7.8011263621809797e-04
+7 -1.2488029214759581e-03 -1.1048105897854344e-03 -1.0746834865220396e-03
+5 3.5183160225511572e-03 1.0414102207728798e-03 -5.9339580656487742e-04
+96 1.3697911611400180e-03 -1.2930053697410174e-03 -2.0188583414983848e-03
+417 -1.8986464877876811e-03 1.5317575602566996e-04 2.7017463699208107e-03
+405 -1.3044583054766285e-03 -1.5422148408109940e-03 -1.7870686554580157e-03
+481 1.1498683403264685e-04 -8.2179882782056535e-04 2.3909938625131335e-04
+491 -2.6359420248711862e-04 -4.5180347664829455e-03 1.0228587509901893e-03
+10 -2.3709726712042799e-03 -1.2500296950042314e-03 -1.7245628545996150e-03
+74 1.0628757845528491e-03 -2.3566524370620028e-03 3.4768225151704012e-03
+415 -7.4096918167685245e-04 1.3921182650885123e-03 3.0177913540692957e-03
+78 -1.5910007331516743e-03 -3.5525150306235415e-04 2.5179275359188628e-03
diff --git a/examples/USER/misc/grem/lj-temper/1/log.lammps.1 b/examples/USER/misc/grem/lj-temper/1/log.lammps.1
new file mode 100644
index 000000000..62224c880
--- /dev/null
+++ b/examples/USER/misc/grem/lj-temper/1/log.lammps.1
@@ -0,0 +1,1074 @@
+print "This is replica: ${rep}"
+This is replica: 1
+
+read_data ${rep}/lj.data
+read_data 1/lj.data
+ orthogonal box = (1.26181 1.26181 1.26181) to (23.7382 23.7382 23.7382)
+ 1 by 1 by 1 MPI processor grid
+ reading atoms ...
+ 500 atoms
+ reading velocities ...
+ 500 velocities
+ 0 = max # of 1-2 neighbors
+ 0 = max # of 1-3 neighbors
+ 0 = max # of 1-4 neighbors
+ 1 = max # of special neighbors
+
+#dump dump all xyz 1000 ${rep}/dump.xyz
+
+thermo 10
+thermo_style custom step temp pe etotal press vol
+timestep 1.0
+
+fix fxnpt all npt temp ${T0} ${T0} 1000.0 iso ${press} ${press} 10000.0
+fix fxnpt all npt temp 300 ${T0} 1000.0 iso ${press} ${press} 10000.0
+fix fxnpt all npt temp 300 300 1000.0 iso ${press} ${press} 10000.0
+fix fxnpt all npt temp 300 300 1000.0 iso 0 ${press} 10000.0
+fix fxnpt all npt temp 300 300 1000.0 iso 0 0 10000.0
+fix fxgREM all grem ${lambda} -.03 -30000 fxnpt
+fix fxgREM all grem 910 -.03 -30000 fxnpt
+thermo_modify press fxgREM_press
+
+temper/grem 10000 100 ${lambda} fxgREM fxnpt 10294 98392 #${walker}
+temper/grem 10000 100 910 fxgREM fxnpt 10294 98392
+Neighbor list info ...
+ 1 neighbor list requests
+ update every 1 steps, delay 10 steps, check yes
+ max neighbors/atom: 2000, page size: 100000
+ master list distance cutoff = 7
+ ghost atom cutoff = 7
+ binsize = 3.5 -> bins = 7 7 7
+Memory usage per processor = 5.38334 Mbytes
+Step Temp PotEng TotEng Press Volume
+ 0 288.55656 -3406.7669 -2977.5609 178.123 11354.789
+ 10 288.31142 -3406.6287 -2977.7873 169.48583 11354.791
+ 20 289.8223 -3406.6801 -2975.5914 143.0151 11354.796
+ 30 291.70551 -3406.9361 -2973.0463 110.8113 11354.804
+ 40 292.3991 -3406.3961 -2971.4746 97.5904 11354.814
+ 50 292.5823 -3407.0192 -2971.8253 77.444998 11354.825
+ 60 293.9295 -3407.2359 -2970.038 57.79557 11354.839
+ 70 296.04201 -3409.5899 -2969.2498 13.811528 11354.853
+ 80 296.75736 -3409.7185 -2968.3144 11.76625 11354.868
+ 90 295.13392 -3408.2806 -2969.2912 48.889984 11354.884
+ 100 292.15244 -3406.6138 -2972.0592 101.11822 11354.9
+ 110 289.12916 -3405.0545 -2974.9968 152.31767 11354.918
+ 120 287.27612 -3402.6986 -2975.3971 202.34047 11354.94
+ 130 287.42354 -3402.7701 -2975.2494 207.659 11354.965
+ 140 289.21301 -3404.805 -2974.6226 176.72962 11354.993
+ 150 291.22691 -3407.3598 -2974.1819 138.20681 11355.026
+ 160 291.8086 -3407.667 -2973.6239 136.41994 11355.061
+ 170 290.14945 -3408.1771 -2976.6018 147.28873 11355.098
+ 180 287.06496 -3406.5762 -2979.5889 189.13996 11355.139
+ 190 284.67717 -3403.7829 -2980.3472 235.97079 11355.183
+ 200 284.76856 -3403.8146 -2980.243 229.78409 11355.232
+ 210 287.30412 -3406.3882 -2979.0451 178.2025 11355.285
+ 220 290.24387 -3409.0532 -2977.3375 128.2392 11355.341
+ 230 291.75312 -3408.9488 -2974.9881 127.5165 11355.4
+ 240 291.56602 -3408.0298 -2974.3475 156.54095 11355.461
+ 250 289.54014 -3406.0876 -2975.4186 212.94237 11355.526
+ 260 286.70194 -3405.2696 -2978.8222 257.79759 11355.594
+ 270 285.294 -3405.1159 -2980.7627 275.81206 11355.668
+ 280 286.55908 -3405.0003 -2978.7654 263.50914 11355.747
+ 290 289.68555 -3407.235 -2976.3497 203.07914 11355.83
+ 300 292.70849 -3408.8867 -2973.505 148.33374 11355.918
+ 310 294.49815 -3409.8488 -2971.8051 116.25484 11356.008
+ 320 295.01917 -3408.7887 -2969.97 128.97587 11356.101
+ 330 293.62796 -3407.5857 -2970.8364 172.03075 11356.196
+ 340 289.75335 -3405.7881 -2974.802 251.12304 11356.295
+ 350 284.97643 -3403.0949 -2979.214 349.19648 11356.399
+ 360 281.8078 -3400.7724 -2981.6047 424.30214 11356.509
+ 370 281.86417 -3399.842 -2980.5904 446.31739 11356.627
+ 380 285.76759 -3401.969 -2976.9114 388.90905 11356.754
+ 390 292.89931 -3403.7861 -2968.1206 299.89217 11356.888
+ 400 300.34739 -3407.488 -2960.744 182.63695 11357.028
+ 410 304.41494 -3410.4953 -2957.7011 100.39899 11357.171
+ 420 303.85492 -3410.1355 -2958.1743 95.619711 11357.317
+ 430 300.81739 -3408.528 -2961.0849 126.6436 11357.464
+ 440 298.33667 -3408.8098 -2965.0566 131.90634 11357.614
+ 450 297.59531 -3409.0098 -2966.3594 123.7656 11357.766
+ 460 297.63297 -3409.7725 -2967.066 102.31468 11357.921
+ 470 297.08461 -3410.2092 -2968.3183 91.899247 11358.078
+ 480 294.93467 -3409.096 -2970.403 117.26815 11358.237
+ 490 290.85555 -3405.726 -2973.1004 189.72375 11358.398
+ 500 285.96923 -3401.9081 -2976.5506 276.3915 11358.563
+ 510 282.89047 -3399.6252 -2978.847 332.0296 11358.733
+ 520 282.00698 -3398.4259 -2978.9619 356.61549 11358.909
+ 530 281.59566 -3399.3281 -2980.4759 347.9844 11359.092
+ 540 282.13143 -3400.0957 -2980.4466 327.18332 11359.282
+ 550 285.29816 -3401.7988 -2977.4394 270.12617 11359.477
+ 560 290.61836 -3404.5637 -2972.2909 180.78896 11359.678
+ 570 296.03555 -3406.5945 -2966.264 98.242808 11359.883
+ 580 300.53871 -3408.7725 -2961.744 23.345649 11360.089
+ 590 304.57492 -3411.7414 -2958.7093 -51.135366 11360.296
+ 600 307.70286 -3413.8121 -2956.1274 -99.74504 11360.502
+ 610 307.4453 -3413.7319 -2956.4303 -89.528722 11360.707
+ 620 302.60338 -3412.0183 -2961.9187 -20.95705 11360.909
+ 630 295.45279 -3408.2329 -2968.7692 88.92139 11361.112
+ 640 288.99864 -3404.8425 -2974.9789 184.507 11361.316
+ 650 284.34769 -3402.3256 -2979.3799 248.31274 11361.524
+ 660 281.61709 -3399.6924 -2980.8083 291.11773 11361.737
+ 670 280.81464 -3400.7596 -2983.0691 272.78278 11361.955
+ 680 281.12808 -3401.9172 -2983.7605 245.57676 11362.178
+ 690 281.62922 -3402.1239 -2983.2218 230.96812 11362.406
+ 700 282.68114 -3402.3696 -2981.9028 215.37371 11362.639
+ 710 285.68075 -3403.4336 -2978.5051 179.25783 11362.875
+ 720 291.09563 -3405.9695 -2972.9868 110.88608 11363.115
+ 730 296.71165 -3408.4848 -2967.1487 43.449083 11363.358
+ 740 298.95953 -3411.3584 -2966.6788 -0.16353109 11363.601
+ 750 296.12026 -3408.903 -2968.4466 55.376662 11363.845
+ 760 290.41552 -3404.9858 -2973.0147 143.51434 11364.089
+ 770 286.15427 -3402.2686 -2976.6358 197.31982 11364.337
+ 780 286.44173 -3403.1293 -2977.0689 166.80088 11364.588
+ 790 291.05969 -3403.8977 -2970.9685 101.12001 11364.842
+ 800 296.16373 -3406.3812 -2965.8601 17.480161 11365.099
+ 810 297.57076 -3405.6224 -2963.0084 10.893497 11365.356
+ 820 295.03676 -3403.5921 -2964.7473 62.199066 11365.613
+ 830 291.33925 -3402.0989 -2968.7538 126.16879 11365.871
+ 840 288.62338 -3400.8882 -2971.5828 181.67525 11366.132
+ 850 287.67016 -3399.4736 -2971.5861 220.14947 11366.397
+ 860 288.98767 -3400.1058 -2970.2585 209.25845 11366.666
+ 870 292.17389 -3401.1163 -2966.5298 174.42425 11366.939
+ 880 295.40208 -3402.6746 -2963.2864 133.4123 11367.215
+ 890 296.65783 -3404.0539 -2962.7979 113.59974 11367.494
+ 900 295.1242 -3403.489 -2964.5141 139.94644 11367.775
+ 910 291.92281 -3400.1557 -2965.9426 209.05038 11368.059
+ 920 289.32856 -3399.0008 -2968.6465 240.69528 11368.347
+ 930 289.67692 -3398.6872 -2967.8147 228.61897 11368.639
+ 940 294.3022 -3402.1968 -2964.4446 130.39654 11368.936
+ 950 301.51105 -3404.378 -2955.9032 25.61018 11369.235
+ 960 306.83743 -3409.327 -2952.9296 -91.059043 11369.535
+ 970 307.4444 -3409.8054 -2952.5051 -109.84508 11369.833
+ 980 304.50616 -3409.2287 -2956.2989 -78.391305 11370.13
+ 990 301.06082 -3407.0587 -2959.2536 -15.295458 11370.425
+ 1000 298.65751 -3404.9437 -2960.7133 43.569751 11370.721
+ 1010 297.03945 -3404.7155 -2962.8918 73.28153 11371.017
+ 1020 295.59833 -3403.268 -2963.5879 110.62196 11371.314
+ 1030 293.93194 -3401.9573 -2964.7558 139.816 11371.614
+ 1040 292.24705 -3400.2439 -2965.5486 164.01425 11371.917
+ 1050 291.34252 -3399.4876 -2966.1376 163.57877 11372.222
+ 1060 291.75453 -3400.2511 -2966.2883 132.24681 11372.531
+ 1070 293.50063 -3401.0949 -2964.535 90.509052 11372.842
+ 1080 296.32578 -3402.93 -2962.1679 34.42726 11373.156
+ 1090 298.98455 -3402.9618 -2958.2449 8.5704615 11373.47
+ 1100 299.9828 -3403.2527 -2957.051 1.5561287 11373.784
+ 1110 298.93539 -3402.0133 -2957.3696 34.967375 11374.099
+ 1120 296.7305 -3401.5744 -2960.2103 69.990098 11374.414
+ 1130 295.27674 -3400.7635 -2961.5617 100.03863 11374.731
+ 1140 296.45601 -3400.7563 -2959.8005 95.241061 11375.05
+ 1150 299.73047 -3402.44 -2956.6136 50.324323 11375.37
+ 1160 302.03965 -3405.0321 -2955.771 0.470984 11375.692
+ 1170 300.54713 -3402.485 -2955.4439 40.510086 11376.014
+ 1180 294.8817 -3399.5948 -2960.9806 118.6072 11376.337
+ 1190 287.72897 -3396.8027 -2968.8277 206.40841 11376.662
+ 1200 283.05677 -3393.2885 -2972.263 279.02297 11376.992
+ 1210 282.91094 -3393.206 -2972.3975 272.12528 11377.326
+ 1220 285.66291 -3395.1197 -2970.2178 215.47532 11377.666
+ 1230 288.36949 -3397.5325 -2968.6047 152.40126 11378.01
+ 1240 289.67758 -3398.3748 -2967.5013 118.13181 11378.357
+ 1250 291.00888 -3398.308 -2965.4544 96.526587 11378.707
+ 1260 293.84005 -3399.9931 -2962.9283 46.221913 11379.058
+ 1270 297.63013 -3401.288 -2958.5858 -4.0302383 11379.41
+ 1280 300.44491 -3402.0378 -2955.1488 -38.37951 11379.762
+ 1290 300.95481 -3402.0312 -2954.3838 -48.631626 11380.114
+ 1300 301.24616 -3401.9018 -2953.821 -61.001277 11380.464
+ 1310 305.01154 -3404.2298 -2950.5482 -131.36483 11380.814
+ 1320 311.60599 -3406.4203 -2942.93 -220.63077 11381.161
+ 1330 316.32472 -3410.5936 -2940.0846 -310.56676 11381.504
+ 1340 315.12652 -3409.6296 -2940.9028 -285.69651 11381.842
+ 1350 308.72437 -3406.1667 -2946.9626 -182.76942 11382.174
+ 1360 300.42386 -3402.5779 -2955.7202 -57.265006 11382.503
+ 1370 291.86699 -3397.149 -2963.019 88.315244 11382.831
+ 1380 285.09338 -3393.9007 -2969.8459 183.43851 11383.161
+ 1390 283.26305 -3393.1335 -2971.8012 194.92821 11383.494
+ 1400 289.04947 -3395.7975 -2965.8583 92.997624 11383.831
+ 1410 300.84613 -3402.0615 -2954.5757 -102.30017 11384.169
+ 1420 311.89363 -3408.8341 -2944.916 -294.13404 11384.506
+ 1430 316.26294 -3410.8357 -2940.4185 -369.01277 11384.837
+ 1440 313.07744 -3409.551 -2943.8721 -334.67509 11385.162
+ 1450 305.74795 -3405.4442 -2950.6673 -222.43979 11385.481
+ 1460 298.15384 -3400.4099 -2956.9287 -87.530949 11385.795
+ 1470 292.1043 -3398.479 -2963.996 4.2912315 11386.108
+ 1480 288.00301 -3394.6072 -2966.2246 103.03433 11386.422
+ 1490 286.48955 -3393.3567 -2967.2252 147.68036 11386.737
+ 1500 287.48142 -3392.1803 -2964.5735 167.33614 11387.055
+ 1510 289.27495 -3391.8413 -2961.5668 165.84579 11387.376
+ 1520 291.01349 -3392.6523 -2959.7918 146.48188 11387.701
+ 1530 293.34192 -3394.0528 -2957.7289 111.17657 11388.028
+ 1540 296.64118 -3396.6485 -2955.4172 50.028873 11388.358
+ 1550 300.52876 -3398.2535 -2951.2398 -9.8278236 11388.688
+ 1560 305.14663 -3400.791 -2946.9086 -89.001177 11389.019
+ 1570 310.31451 -3402.4512 -2940.8819 -161.0121 11389.348
+ 1580 314.23162 -3403.81 -2936.4143 -214.94446 11389.674
+ 1590 314.52782 -3404.0768 -2936.2405 -223.55934 11389.997
+ 1600 311.08815 -3401.61 -2938.89 -167.84504 11390.315
+ 1610 306.10599 -3399.0803 -2943.7709 -98.841023 11390.63
+ 1620 302.52927 -3397.2093 -2947.2199 -50.599558 11390.944
+ 1630 302.10621 -3398.0117 -2948.6516 -60.705989 11391.256
+ 1640 304.2424 -3400.1027 -2947.5652 -106.35651 11391.567
+ 1650 306.33623 -3400.1991 -2944.5471 -124.55589 11391.877
+ 1660 305.33215 -3399.7578 -2945.5994 -106.18891 11392.184
+ 1670 300.60375 -3396.9911 -2949.8658 -27.83967 11392.489
+ 1680 295.20215 -3392.6707 -2953.5799 74.222703 11392.795
+ 1690 293.11396 -3392.5609 -2956.5761 99.698114 11393.101
+ 1700 295.20055 -3393.7137 -2954.6253 74.174948 11393.409
+ 1710 298.61364 -3394.9449 -2950.7797 34.681084 11393.719
+ 1720 299.88908 -3396.1729 -2950.1106 11.905962 11394.03
+ 1730 298.09598 -3395.3049 -2951.9098 38.765485 11394.341
+ 1740 295.0286 -3393.2067 -2954.374 91.406596 11394.653
+ 1750 292.96414 -3391.5335 -2955.7716 130.19484 11394.967
+ 1760 293.17155 -3390.0702 -2953.9998 141.98792 11395.284
+ 1770 296.04097 -3391.7895 -2951.4509 88.301219 11395.604
+ 1780 300.6197 -3393.9327 -2946.7837 8.7705214 11395.925
+ 1790 305.7527 -3395.8553 -2941.0714 -76.675691 11396.247
+ 1800 310.74558 -3398.7537 -2936.5432 -170.20114 11396.567
+ 1810 314.26266 -3401.0983 -2933.6564 -239.96059 11396.884
+ 1820 315.26578 -3401.7859 -2932.852 -261.14572 11397.197
+ 1830 314.24138 -3400.4292 -2933.019 -231.17343 11397.505
+ 1840 312.64709 -3399.8149 -2934.776 -193.42475 11397.809
+ 1850 310.66507 -3398.8556 -2936.7649 -141.98293 11398.109
+ 1860 307.30576 -3397.2675 -2940.1734 -73.112103 11398.407
+ 1870 302.47145 -3394.3384 -2944.4351 16.618285 11398.704
+ 1880 297.50047 -3390.8147 -2948.3053 103.94164 11399.001
+ 1890 294.24887 -3388.3807 -2950.7079 154.37283 11399.3
+ 1900 293.31467 -3386.7076 -2950.4243 167.60666 11399.602
+ 1910 294.66437 -3387.2163 -2948.9253 130.83647 11399.907
+ 1920 298.5524 -3390.3149 -2946.2408 43.272759 11400.215
+ 1930 303.91978 -3393.7084 -2941.6507 -56.511105 11400.524
+ 1940 308.58357 -3397.3703 -2938.3756 -148.39882 11400.832
+ 1950 310.90998 -3398.1611 -2935.706 -181.39974 11401.137
+ 1960 310.32459 -3396.5445 -2934.9602 -156.73653 11401.44
+ 1970 307.70017 -3394.9874 -2937.3067 -113.50288 11401.739
+ 1980 305.65987 -3394.9412 -2940.2953 -92.306354 11402.037
+ 1990 306.43872 -3396.4605 -2940.6561 -112.33253 11402.332
+ 2000 309.22099 -3397.2556 -2937.3128 -140.69715 11402.626
+ 2010 311.05418 -3398.5748 -2935.9053 -167.80709 11402.917
+ 2020 310.23059 -3397.5017 -2936.0572 -146.55742 11403.205
+ 2030 307.43819 -3396.1274 -2938.8364 -108.22772 11403.491
+ 2040 304.64116 -3394.7563 -2941.6256 -72.82906 11403.774
+ 2050 303.41893 -3393.0766 -2941.764 -50.240604 11404.056
+ 2060 304.11019 -3392.8549 -2940.5141 -61.425446 11404.338
+ 2070 305.61902 -3392.8242 -2938.2391 -79.53269 11404.618
+ 2080 306.70889 -3391.7735 -2935.5672 -78.077065 11404.897
+ 2090 307.46882 -3393.303 -2935.9664 -97.77896 11405.175
+ 2100 308.61883 -3393.2096 -2934.1625 -97.801103 11405.451
+ 2110 310.24844 -3393.9106 -2932.4396 -110.16488 11405.725
+ 2120 311.5518 -3393.7752 -2930.3655 -113.88546 11405.997
+ 2130 311.99253 -3393.822 -2929.7567 -115.36427 11406.268
+ 2140 311.46232 -3394.515 -2931.2384 -117.77083 11406.536
+ 2150 309.9686 -3394.0194 -2932.9646 -97.812894 11406.802
+ 2160 307.17342 -3392.5435 -2935.6463 -54.921684 11407.067
+ 2170 303.55463 -3389.6913 -2938.1767 9.8620566 11407.33
+ 2180 300.99155 -3388.7413 -2941.0392 42.248905 11407.594
+ 2190 301.36894 -3389.2916 -2941.0282 30.272152 11407.859
+ 2200 304.97872 -3391.897 -2938.2643 -37.079138 11408.124
+ 2210 310.26237 -3395.6951 -2934.2033 -136.37634 11408.389
+ 2220 314.67549 -3397.5665 -2929.5105 -207.26956 11408.652
+ 2230 316.01468 -3397.6041 -2927.5562 -230.25747 11408.91
+ 2240 313.58016 -3396.8634 -2930.4367 -210.17146 11409.165
+ 2250 308.6933 -3394.6334 -2935.4755 -150.55411 11409.415
+ 2260 304.23406 -3392.383 -2939.8579 -92.302193 11409.663
+ 2270 302.38206 -3391.8445 -2942.0741 -72.984544 11409.909
+ 2280 302.70156 -3391.7209 -2941.4753 -73.128075 11410.154
+ 2290 302.55242 -3391.8638 -2941.84 -69.947249 11410.397
+ 2300 300.30419 -3390.9763 -2944.2966 -36.738075 11410.64
+ 2310 296.56056 -3388.5535 -2947.4422 91.776141 11410.882
+ 2320 292.69274 -3385.5249 -2950.1666 172.2891 11411.126
+ 2330 291.02471 -3385.5352 -2952.658 197.45672 11411.374
+ 2340 291.82374 -3384.665 -2950.5993 205.00082 11411.625
+ 2350 293.79732 -3386.2132 -2949.212 165.40702 11411.881
+ 2360 295.55718 -3389.0779 -2949.459 104.04701 11412.139
+ 2370 296.37264 -3389.0057 -2948.1739 80.415377 11412.4
+ 2380 295.73558 -3389.1103 -2949.226 70.736497 11412.662
+ 2390 292.64695 -3386.6853 -2951.3952 119.33801 11412.926
+ 2400 286.50632 -3382.6853 -2956.5288 219.60398 11413.193
+ 2410 279.3549 -3377.6299 -2962.1106 277.96833 11413.463
+ 2420 276.78551 -3376.3084 -2964.6109 304.43407 11413.739
+ 2430 281.67038 -3378.0477 -2959.0843 223.61936 11414.02
+ 2440 294.4434 -3385.332 -2947.3698 5.936043 11414.305
+ 2450 311.57718 -3394.3855 -2930.938 -272.88452 11414.591
+ 2460 327.06772 -3402.5485 -2916.0601 -527.88466 11414.872
+ 2470 335.86695 -3407.6659 -2908.0892 -684.17468 11415.143
+ 2480 335.91425 -3407.3913 -2907.7443 -692.26177 11415.401
+ 2490 328.81398 -3403.4099 -2914.324 -582.24969 11415.646
+ 2500 318.56563 -3398.3473 -2924.505 -421.58107 11415.88
+ 2510 309.73345 -3393.8178 -2933.1128 -272.39944 11416.106
+ 2520 305.22368 -3390.3791 -2936.382 -169.49078 11416.327
+ 2530 304.95661 -3390.7395 -2937.1396 -148.29744 11416.545
+ 2540 307.15736 -3391.9394 -2935.0661 -160.07921 11416.76
+ 2550 309.41291 -3392.9127 -2932.6844 -170.94466 11416.972
+ 2560 309.45604 -3391.4749 -2931.1825 -138.25687 11417.182
+ 2570 306.72042 -3389.9465 -2933.7231 -85.720991 11417.389
+ 2580 302.54424 -3387.7526 -2937.7409 -20.987806 11417.594
+ 2590 299.50723 -3386.9792 -2941.4849 10.535833 11417.799
+ 2600 299.56314 -3387.3942 -2941.8167 -2.519525 11418.004
+ 2610 302.32461 -3389.0443 -2939.3593 -53.911119 11418.209
+ 2620 305.19047 -3389.306 -2935.3583 -90.114379 11418.414
+ 2630 306.07597 -3388.9977 -2933.7329 -103.20217 11418.616
+ 2640 305.83306 -3388.5916 -2933.6881 -105.27998 11418.817
+ 2650 307.02812 -3388.8502 -2932.1692 -126.51319 11419.016
+ 2660 310.81254 -3391.2016 -2928.8915 -194.41376 11419.213
+ 2670 315.73317 -3393.5286 -2923.8995 -274.15973 11419.406
+ 2680 318.96826 -3395.5822 -2921.1411 -339.4658 11419.594
+ 2690 318.49698 -3395.9738 -2922.2337 -356.20956 11419.775
+ 2700 314.52638 -3394.427 -2926.5928 -319.87258 11419.95
+ 2710 308.41841 -3392.226 -2933.477 -254.60398 11420.119
+ 2720 301.35268 -3389.1027 -2940.8634 -172.15357 11420.283
+ 2730 296.25247 -3387.594 -2946.9409 -127.00162 11420.444
+ 2740 296.1514 -3387.9346 -2947.4318 -145.74136 11420.603
+ 2750 300.8383 -3390.532 -2943.0578 -229.82895 11420.758
+ 2760 307.25197 -3393.6952 -2936.6811 -333.09228 11420.91
+ 2770 312.67022 -3396.0438 -2930.9705 -412.64484 11421.055
+ 2780 315.79577 -3396.4658 -2926.7435 -442.06309 11421.192
+ 2790 316.49405 -3396.9897 -2926.2288 -444.04992 11421.321
+ 2800 315.42779 -3394.828 -2925.6531 -396.41061 11421.442
+ 2810 314.00205 -3392.2038 -2925.1495 -341.26732 11421.555
+ 2820 313.56714 -3392.3675 -2925.9601 -330.38944 11421.662
+ 2830 314.14397 -3392.7007 -2925.4354 -334.44652 11421.762
+ 2840 314.30392 -3392.4066 -2924.9033 -329.68149 11421.856
+ 2850 312.07505 -3391.3179 -2927.1299 -295.16864 11421.944
+ 2860 306.66535 -3387.943 -2931.8015 -206.53104 11422.027
+ 2870 299.87116 -3384.1989 -2938.1633 -99.990395 11422.105
+ 2880 294.58058 -3382.4721 -2944.3058 -30.173164 11422.182
+ 2890 292.91447 -3382.3538 -2946.6658 -13.254573 11422.258
+ 2900 295.54504 -3384.0836 -2944.4828 -59.72035 11422.333
+ 2910 301.83863 -3385.87 -2936.9079 -141.29828 11422.408
+ 2920 309.1667 -3391.2562 -2931.3942 -274.61299 11422.48
+ 2930 314.37368 -3394.1559 -2926.5489 -362.79972 11422.546
+ 2940 316.59079 -3395.6614 -2924.7566 -408.83209 11422.606
+ 2950 317.79244 -3396.8721 -2924.1799 -438.6484 11422.658
+ 2960 319.93387 -3399 -2923.1226 -481.04843 11422.702
+ 2970 322.51177 -3400.7163 -2921.0045 -518.63744 11422.737
+ 2980 324.10848 -3400.4453 -2918.3585 -522.28507 11422.761
+ 2990 323.60397 -3399.7989 -2918.4625 -502.9005 11422.776
+ 3000 320.47551 -3398.8817 -2922.1987 -456.44282 11422.782
+ 3010 314.43052 -3396.3467 -2928.6551 -365.85603 11422.779
+ 3020 306.26475 -3391.1934 -2935.6478 -228.69255 11422.769
+ 3030 298.37042 -3387.6414 -2943.838 -114.19999 11422.755
+ 3040 293.27909 -3385.6412 -2949.4108 -42.30611 11422.738
+ 3050 291.76416 -3384.964 -2950.9869 -18.409555 11422.721
+ 3060 293.34878 -3384.1585 -2947.8244 -21.99195 11422.703
+ 3070 296.63896 -3386.0062 -2944.7783 -71.616976 11422.685
+ 3080 299.1685 -3388.4833 -2943.4928 -122.0298 11422.666
+ 3090 299.21577 -3388.7992 -2943.7384 -126.75664 11422.645
+ 3100 297.66555 -3387.3062 -2944.5512 -95.868896 11422.621
+ 3110 295.42966 -3387.0414 -2947.6122 -8.963617 11422.596
+ 3120 292.44157 -3383.6877 -2948.703 65.268852 11422.571
+ 3130 289.45836 -3381.652 -2951.1046 125.46164 11422.547
+ 3140 286.59533 -3378.8987 -2952.6098 186.97058 11422.525
+ 3150 284.86243 -3378.403 -2954.6917 202.93289 11422.508
+ 3160 285.88001 -3378.6408 -2953.416 175.94514 11422.494
+ 3170 290.34913 -3381.2183 -2949.346 84.688215 11422.483
+ 3180 296.48495 -3384.8025 -2943.8036 -35.397075 11422.474
+ 3190 301.22572 -3386.624 -2938.5736 -123.34851 11422.464
+ 3200 303.85153 -3388.3552 -2936.3991 -189.22202 11422.452
+ 3210 305.73026 -3390.6896 -2935.939 -248.88053 11422.437
+ 3220 306.92046 -3392.2163 -2935.6954 -286.56264 11422.417
+ 3230 306.42016 -3391.6715 -2935.8947 -279.95893 11422.392
+ 3240 303.95745 -3389.9425 -2937.8289 -236.79429 11422.361
+ 3250 299.94919 -3386.4926 -2940.3409 -157.60782 11422.327
+ 3260 295.48972 -3384.8744 -2945.3559 -95.002047 11422.289
+ 3270 292.20128 -3384.4898 -2949.8626 -56.88883 11422.249
+ 3280 290.99915 -3384.5702 -2951.731 -42.67784 11422.208
+ 3290 291.14325 -3384.6725 -2951.619 -38.825499 11422.167
+ 3300 290.65734 -3384.5253 -2952.1945 -22.93565 11422.124
+ 3310 289.14809 -3382.7764 -2952.6905 -39.418297 11422.081
+ 3320 288.43393 -3381.208 -2952.1844 -12.141702 11422.038
+ 3330 289.87609 -3382.5408 -2951.3721 -41.926132 11421.994
+ 3340 294.86506 -3384.5181 -2945.9287 -111.46757 11421.949
+ 3350 302.23522 -3388.7366 -2939.1846 -226.14248 11421.902
+ 3360 307.55974 -3392.2206 -2934.7488 -313.85904 11421.851
+ 3370 306.86698 -3391.0552 -2934.6138 -298.36277 11421.794
+ 3380 301.4814 -3389.527 -2941.0962 -239.59094 11421.731
+ 3390 297.06245 -3387.2212 -2945.3633 -178.66758 11421.664
+ 3400 297.7319 -3385.8908 -2943.0371 -169.81459 11421.593
+ 3410 300.76496 -3387.5918 -2940.2268 -157.2227 11421.52
+ 3420 302.491 -3388.1149 -2938.1825 -178.39433 11421.443
+ 3430 303.10645 -3389.5489 -2938.701 -198.79345 11421.364
+ 3440 303.6261 -3389.6119 -2937.9911 -197.20761 11421.28
+ 3450 303.32504 -3390.0987 -2938.9257 -187.96647 11421.193
+ 3460 300.93812 -3388.4069 -2940.7842 -131.2704 11421.102
+ 3470 296.61035 -3386.4639 -2945.2785 -51.368687 11421.01
+ 3480 292.11891 -3384.0282 -2949.5235 37.453769 11420.916
+ 3490 289.4644 -3381.6488 -2951.0925 109.96733 11420.823
+ 3500 289.15675 -3381.6022 -2951.5034 130.74881 11420.731
+ 3510 290.86739 -3381.9809 -2949.3377 121.09434 11420.643
+ 3520 293.82372 -3383.7678 -2946.7272 73.856524 11420.557
+ 3530 297.55858 -3385.1027 -2942.5068 17.209755 11420.472
+ 3540 301.18967 -3386.6407 -2938.6439 -46.053003 11420.388
+ 3550 303.34113 -3389.258 -2938.061 -112.05763 11420.303
+ 3560 303.17085 -3388.6334 -2937.6898 -120.79776 11420.215
+ 3570 300.76421 -3388.5015 -2941.1375 -113.2772 11420.126
+ 3580 296.87868 -3385.2427 -2943.6582 -53.230254 11420.035
+ 3590 292.65654 -3382.0455 -2946.741 13.365982 11419.942
+ 3600 289.52782 -3380.0328 -2949.3821 61.731029 11419.85
+ 3610 289.77006 -3381.0845 -2950.0735 -9.459815 11419.758
+ 3620 294.06356 -3383.1944 -2945.7971 -67.437973 11419.667
+ 3630 299.18585 -3386.5554 -2941.5391 -144.88535 11419.574
+ 3640 303.33618 -3389.5111 -2938.3215 -206.49679 11419.478
+ 3650 305.77933 -3390.9982 -2936.1746 -234.38746 11419.378
+ 3660 305.55766 -3391.2718 -2936.7779 -226.69474 11419.274
+ 3670 303.25191 -3390.7866 -2939.7224 -197.12894 11419.166
+ 3680 301.16843 -3388.4494 -2940.4842 -153.37358 11419.054
+ 3690 300.93624 -3387.7969 -2940.1771 -146.7453 11418.939
+ 3700 301.88513 -3389.2461 -2940.2149 -176.21181 11418.821
+ 3710 303.14814 -3390.6066 -2939.6967 -207.34839 11418.699
+ 3720 303.89918 -3391.0284 -2939.0014 -222.14377 11418.574
+ 3730 302.61137 -3389.3996 -2939.2882 -196.53885 11418.445
+ 3740 299.00775 -3389.6452 -2944.8938 -176.13558 11418.312
+ 3750 295.71364 -3387.1666 -2947.315 -131.96798 11418.176
+ 3760 296.35961 -3388.3187 -2947.5062 -164.84401 11418.037
+ 3770 301.77653 -3391.1915 -2942.3218 -255.72265 11417.895
+ 3780 308.8968 -3394.2226 -2934.762 -357.7228 11417.747
+ 3790 313.07347 -3396.15 -2930.4769 -417.01469 11417.593
+ 3800 312.35603 -3395.2312 -2930.6252 -397.3246 11417.432
+ 3810 308.79076 -3393.5249 -2934.2221 -342.49236 11417.262
+ 3820 306.23345 -3391.5887 -2936.0897 -291.9951 11417.086
+ 3830 305.94283 -3390.9121 -2935.8453 -275.91619 11416.905
+ 3840 306.28369 -3392.0321 -2936.4583 -287.61086 11416.718
+ 3850 305.04941 -3390.5724 -2936.8345 -258.9012 11416.526
+ 3860 301.82271 -3389.3222 -2940.3838 -216.9246 11416.328
+ 3870 298.68461 -3389.5696 -2945.2989 -190.59638 11416.127
+ 3880 298.30443 -3388.978 -2945.2727 -173.85569 11415.922
+ 3890 300.95062 -3390.7187 -2943.0775 -204.50567 11415.713
+ 3900 303.51724 -3391.3636 -2939.9047 -219.36061 11415.501
+ 3910 302.25999 -3390.6122 -2941.0234 -122.83485 11415.285
+ 3920 297.22557 -3387.3203 -2945.2198 -19.289582 11415.067
+ 3930 291.76259 -3383.1172 -2949.1424 98.336369 11414.849
+ 3940 288.70624 -3381.0228 -2951.5942 165.20019 11414.632
+ 3950 288.96503 -3381.8453 -2952.0317 159.55219 11414.419
+ 3960 292.22017 -3382.892 -2948.2366 114.21426 11414.209
+ 3970 298.1571 -3386.2161 -2942.73 12.350045 11414
+ 3980 305.57017 -3390.432 -2935.9196 -113.05956 11413.792
+ 3990 311.5273 -3394.4332 -2931.0599 -218.65079 11413.582
+ 4000 313.53418 -3396.1818 -2929.8234 -255.38698 11413.368
+ 4010 312.37608 -3395.6806 -2931.0449 -295.83445 11413.148
+ 4020 310.59274 -3395.493 -2933.5099 -269.67896 11412.923
+ 4030 308.37548 -3394.014 -2935.3289 -223.87766 11412.693
+ 4040 304.94572 -3391.865 -2938.2814 -162.34071 11412.458
+ 4050 300.90174 -3389.7689 -2942.2003 -99.043835 11412.22
+ 4060 298.51296 -3390.1699 -2946.1545 -80.682508 11411.98
+ 4070 299.24436 -3388.879 -2943.7757 -67.924008 11411.739
+ 4080 301.11535 -3389.9297 -2942.0435 -90.22597 11411.496
+ 4090 300.94638 -3389.3245 -2941.6896 -76.657851 11411.252
+ 4100 297.90825 -3388.3131 -2945.1972 -34.125097 11411.006
+ 4110 293.99526 -3385.2372 -2947.9415 37.955541 11410.76
+ 4120 292.58191 -3384.7301 -2949.5366 57.624498 11410.514
+ 4130 295.65282 -3387.3611 -2947.5999 1.0162218 11410.269
+ 4140 302.22605 -3391.2749 -2941.7365 -102.62287 11410.024
+ 4150 309.17622 -3396.0638 -2936.1876 -220.81134 11409.777
+ 4160 313.77424 -3398.7641 -2932.0487 -293.33469 11409.526
+ 4170 315.3689 -3399.0086 -2929.9213 -306.14476 11409.269
+ 4180 314.61593 -3400.0549 -2932.0875 -302.61236 11409.007
+ 4190 312.90458 -3400.4423 -2935.0204 -278.47882 11408.739
+ 4200 311.10683 -3400.6486 -2937.9008 -248.55213 11408.465
+ 4210 309.08442 -3398.1019 -2938.3622 -186.86179 11408.187
+ 4220 306.7827 -3397.1103 -2940.7943 -145.28699 11407.905
+ 4230 304.31351 -3395.5028 -2942.8595 -102.45943 11407.621
+ 4240 302.04933 -3394.4026 -2945.1271 -73.264361 11407.334
+ 4250 300.2312 -3392.631 -2946.0598 -42.102461 11407.046
+ 4260 298.26311 -3390.5122 -2946.8685 -2.5047029 11406.756
+ 4270 294.82654 -3387.0545 -2948.5223 69.934096 11406.467
+ 4280 289.80844 -3384.5627 -2953.4946 149.11232 11406.179
+ 4290 285.20604 -3380.9856 -2956.7632 239.41376 11405.894
+ 4300 283.87486 -3380.9251 -2958.6828 258.87434 11405.613
+ 4310 287.92252 -3383.1788 -2954.9159 197.51795 11405.337
+ 4320 297.91387 -3389.2489 -2946.1246 32.284847 11405.065
+ 4330 311.61086 -3395.8082 -2932.3107 -176.10896 11404.793
+ 4340 324.17171 -3402.1455 -2919.9646 -374.74486 11404.517
+ 4350 331.67471 -3407.2638 -2913.9228 -509.91699 11404.235
+ 4360 331.93601 -3408.4913 -2914.7616 -527.8866 11403.943
+ 4370 324.96245 -3405.1688 -2921.8118 -421.05794 11403.641
+ 4380 313.77835 -3398.1992 -2931.4777 -227.4838 11403.331
+ 4390 303.79255 -3393.0866 -2941.2182 -58.576625 11403.017
+ 4400 298.74929 -3389.8008 -2945.4338 48.210212 11402.702
+ 4410 298.24442 -3387.976 -2944.36 92.769256 11402.387
+ 4420 299.96761 -3389.4893 -2943.3102 67.047303 11402.074
+ 4430 302.69437 -3391.0333 -2940.7983 21.670202 11401.762
+ 4440 305.62764 -3393.4819 -2938.884 -39.876192 11401.45
+ 4450 306.96934 -3394.1305 -2937.5368 -67.938578 11401.137
+ 4460 305.13 -3392.8865 -2939.0288 -47.175878 11400.824
+ 4470 300.82826 -3390.4083 -2942.9491 10.880006 11400.509
+ 4480 297.17739 -3387.6325 -2945.6036 70.412699 11400.194
+ 4490 297.51232 -3389.0369 -2946.5099 54.169368 11399.881
+ 4500 301.7 -3391.2629 -2942.507 -0.78469182 11399.568
+ 4510 305.47746 -3391.9929 -2937.6183 26.03718 11399.256
+ 4520 305.78686 -3392.2203 -2937.3856 35.732913 11398.945
+ 4530 302.50336 -3391.3322 -2941.3814 97.014031 11398.634
+ 4540 296.77493 -3388.3108 -2946.8806 208.111 11398.325
+ 4550 290.88116 -3383.7456 -2951.0819 340.6468 11398.019
+ 4560 286.5692 -3382.896 -2956.646 415.82907 11397.721
+ 4570 284.26453 -3381.0189 -2958.197 480.55726 11397.43
+ 4580 283.84043 -3382.2453 -2960.0541 485.78451 11397.148
+ 4590 284.98267 -3383.8871 -2959.997 463.27335 11396.875
+ 4600 286.97962 -3384.2001 -2957.3397 438.51435 11396.611
+ 4610 289.29671 -3385.8905 -2955.5836 386.29577 11396.355
+ 4620 292.13879 -3387.6353 -2953.101 323.27711 11396.107
+ 4630 295.67281 -3391.2445 -2951.4536 231.46191 11395.865
+ 4640 299.131 -3393.2295 -2948.2948 160.58541 11395.627
+ 4650 301.56095 -3395.6491 -2947.1001 97.807195 11395.392
+ 4660 302.60567 -3395.5226 -2945.4196 82.372848 11395.159
+ 4670 302.30815 -3396.4283 -2946.7678 74.432664 11394.928
+ 4680 300.7377 -3393.4089 -2946.0844 130.03537 11394.698
+ 4690 298.06699 -3391.6966 -2948.3446 185.19822 11394.47
+ 4700 294.4353 -3390.8521 -2952.9019 239.87425 11394.246
+ 4710 289.90083 -3388.2792 -2957.0737 319.52982 11394.026
+ 4720 285.02592 -3385.894 -2961.9396 394.60118 11393.812
+ 4730 281.23215 -3382.7138 -2964.4023 464.0568 11393.606
+ 4740 280.0817 -3381.7818 -2965.1815 480.72294 11393.409
+ 4750 282.54339 -3383.0235 -2962.7616 439.16192 11393.22
+ 4760 288.0651 -3387.0311 -2958.5561 339.30679 11393.04
+ 4770 294.39534 -3391.0072 -2953.1164 234.30939 11392.866
+ 4780 299.21819 -3393.0185 -2947.9541 169.24345 11392.697
+ 4790 301.73884 -3393.9075 -2945.0939 143.05564 11392.531
+ 4800 302.75299 -3394.1495 -2943.8273 144.28182 11392.368
+ 4810 303.06312 -3394.7551 -2943.9716 153.41268 11392.208
+ 4820 302.51476 -3394.9739 -2945.0061 178.30536 11392.05
+ 4830 300.47904 -3393.8994 -2946.9596 231.01468 11391.896
+ 4840 297.24408 -3392.3659 -2950.2379 296.7663 11391.746
+ 4850 293.95775 -3390.1428 -2952.903 366.32465 11391.602
+ 4860 291.26884 -3387.8871 -2954.6468 423.23973 11391.465
+ 4870 288.91802 -3384.7829 -2955.0393 476.50493 11391.336
+ 4880 286.58211 -3386.0269 -2959.7577 467.62264 11391.216
+ 4890 284.69453 -3385.4362 -2961.9747 465.45542 11391.104
+ 4900 283.82945 -3385.326 -2963.1512 441.77168 11391.002
+ 4910 284.19976 -3384.9088 -2962.1832 410.82305 11390.908
+ 4920 285.56697 -3385.7468 -2960.9876 362.75211 11390.822
+ 4930 287.97577 -3385.8959 -2957.5538 324.05445 11390.742
+ 4940 291.41709 -3387.4576 -2953.9967 272.85064 11390.669
+ 4950 295.06496 -3388.8824 -2949.9956 233.24747 11390.602
+ 4960 297.58053 -3390.6767 -2948.0482 207.99135 11390.539
+ 4970 298.08333 -3392.5701 -2949.1937 202.97472 11390.479
+ 4980 297.15562 -3391.6283 -2949.6319 242.15266 11390.424
+ 4990 296.35566 -3391.5494 -2950.7428 265.37353 11390.373
+ 5000 296.758 -3391.8035 -2950.3985 267.40652 11390.328
+ 5010 298.24456 -3392.8434 -2949.2272 243.66653 11390.287
+ 5020 300.13977 -3394.13 -2947.6949 206.88752 11390.251
+ 5030 301.84556 -3393.9894 -2945.017 185.5566 11390.219
+ 5040 302.22975 -3394.4975 -2944.9536 171.76749 11390.191
+ 5050 299.55557 -3393.815 -2948.2488 205.30003 11390.166
+ 5060 293.06079 -3389.2477 -2953.342 323.47479 11390.145
+ 5070 284.52383 -3383.5823 -2960.3747 477.59861 11390.13
+ 5080 277.54388 -3379.1256 -2966.3001 603.74352 11390.125
+ 5090 275.77077 -3378.3287 -2968.1405 637.89526 11390.13
+ 5100 279.87476 -3380.5402 -2964.2477 579.00917 11390.148
+ 5110 286.98825 -3386.4068 -2959.5335 442.75132 11390.177
+ 5120 293.30478 -3390.0836 -2953.815 328.06898 11390.215
+ 5130 297.24859 -3393.78 -2951.6453 225.93083 11390.258
+ 5140 299.79408 -3392.9473 -2947.0263 185.15405 11390.307
+ 5150 301.96612 -3393.4701 -2944.3184 135.26547 11390.359
+ 5160 302.56005 -3394.0919 -2944.0567 103.32721 11390.413
+ 5170 300.572 -3393.6786 -2946.6006 109.80783 11390.47
+ 5180 297.45735 -3392.8496 -2950.4044 134.57497 11390.529
+ 5190 295.24151 -3392.8245 -2953.6751 147.12756 11390.591
+ 5200 294.04448 -3391.7069 -2954.338 164.37795 11390.655
+ 5210 294.59656 -3392.2718 -2954.0818 84.30371 11390.722
+ 5220 297.82386 -3392.612 -2949.6216 39.046942 11390.791
+ 5230 302.29049 -3395.7462 -2946.112 -43.768472 11390.861
+ 5240 305.88217 -3397.4717 -2942.4951 -90.731638 11390.93
+ 5250 306.77031 -3399.278 -2942.9804 -101.53549 11390.997
+ 5260 305.10208 -3396.9012 -2943.0849 -29.21821 11391.063
+ 5270 302.73882 -3395.0624 -2944.7613 50.730539 11391.128
+ 5280 301.27833 -3394.1203 -2945.9916 113.03124 11391.194
+ 5290 300.45603 -3393.6642 -2946.7587 158.03464 11391.263
+ 5300 299.3087 -3392.3714 -2947.1724 204.02224 11391.334
+ 5310 296.98922 -3391.6302 -2949.8812 305.76796 11391.41
+ 5320 293.14213 -3389.3079 -2953.2812 373.02689 11391.492
+ 5330 289.6631 -3386.2872 -2955.4353 439.13031 11391.582
+ 5340 287.91159 -3384.3085 -2956.0618 471.90644 11391.679
+ 5350 288.39461 -3384.4643 -2955.4992 454.02981 11391.786
+ 5360 290.7493 -3386.4041 -2953.9366 393.47006 11391.901
+ 5370 293.85211 -3387.8741 -2950.7914 326.99935 11392.024
+ 5380 296.59363 -3389.3898 -2948.2293 262.02609 11392.154
+ 5390 298.09802 -3391.3408 -2947.9426 205.56267 11392.289
+ 5400 297.88041 -3390.0172 -2946.9426 205.05516 11392.427
+ 5410 297.87771 -3390.7952 -2947.7247 120.96449 11392.57
+ 5420 300.49171 -3391.7094 -2944.7507 73.74801 11392.714
+ 5430 304.91583 -3394.0204 -2940.4812 -2.6972788 11392.861
+ 5440 309.47273 -3397.0658 -2936.7485 -84.264683 11393.007
+ 5450 312.65113 -3399.2165 -2934.1716 -138.38842 11393.152
+ 5460 314.16294 -3399.9173 -2932.6238 -154.85698 11393.294
+ 5470 314.5715 -3399.2169 -2931.3156 -140.95363 11393.434
+ 5480 314.805 -3398.9484 -2930.6998 -128.18506 11393.571
+ 5490 314.85082 -3397.6562 -2929.3395 -102.34593 11393.706
+ 5500 313.80012 -3397.2036 -2930.4497 -79.464769 11393.839
+ 5510 311.32002 -3396.4871 -2933.4221 -43.974541 11393.971
+ 5520 307.99056 -3394.6436 -2936.531 12.086223 11394.102
+ 5530 304.64705 -3394.1081 -2940.9687 54.128567 11394.233
+ 5540 302.13897 -3392.8536 -2943.4448 97.268068 11394.366
+ 5550 300.97942 -3392.0844 -2944.4003 121.21961 11394.501
+ 5560 301.22257 -3391.302 -2943.2563 130.32176 11394.638
+ 5570 302.37728 -3392.8703 -2943.107 102.54338 11394.777
+ 5580 303.90502 -3394.6436 -2942.608 67.523275 11394.919
+ 5590 305.60313 -3394.8024 -2940.2409 46.854081 11395.062
+ 5600 307.46578 -3395.0538 -2937.7217 22.515633 11395.207
+ 5610 309.31516 -3396.2207 -2936.1378 -10.766506 11395.351
+ 5620 310.73287 -3396.2257 -2934.0341 -21.203612 11395.496
+ 5630 310.46695 -3396.4844 -2934.6883 -13.000649 11395.64
+ 5640 307.27298 -3395.3824 -2938.3372 39.76578 11395.785
+ 5650 301.76841 -3392.0779 -2943.2203 136.26647 11395.93
+ 5660 296.48504 -3389.0317 -2948.0327 220.21865 11396.079
+ 5670 294.55098 -3387.9734 -2949.8512 242.88313 11396.231
+ 5680 296.68245 -3389.6926 -2948.3999 188.80296 11396.388
+ 5690 300.4424 -3389.5542 -2942.6689 135.49069 11396.549
+ 5700 302.66412 -3390.4032 -2940.2133 81.346885 11396.713
+ 5710 302.25297 -3391.241 -2941.6626 51.120354 11396.879
+ 5720 300.25179 -3390.6715 -2944.0697 56.112 11397.045
+ 5730 298.34322 -3390.4165 -2946.6535 62.838264 11397.213
+ 5740 297.98463 -3390.7568 -2947.5272 53.607961 11397.383
+ 5750 299.90722 -3393.0218 -2946.9326 5.3841291 11397.553
+ 5760 303.13994 -3395.2264 -2944.3287 -53.811566 11397.724
+ 5770 305.99802 -3395.9069 -2940.758 -94.062605 11397.894
+ 5780 308.04227 -3396.136 -2937.9465 -124.11003 11398.063
+ 5790 309.86898 -3397.9557 -2937.0491 -171.08495 11398.229
+ 5800 311.45771 -3399.3847 -2936.115 -210.25845 11398.392
+ 5810 312.41632 -3400.465 -2935.7694 -237.21976 11398.552
+ 5820 312.61073 -3400.2017 -2935.217 -236.18259 11398.707
+ 5830 311.43072 -3398.9149 -2935.6852 -203.86294 11398.858
+ 5840 308.00658 -3396.2515 -2938.1151 -130.67542 11399.005
+ 5850 302.24257 -3392.5555 -2942.9926 -23.873551 11399.15
+ 5860 296.27729 -3389.4082 -2948.7182 76.02978 11399.295
+ 5870 293.20913 -3389.0532 -2952.9268 115.47544 11399.441
+ 5880 293.34267 -3390.0739 -2953.7489 105.83294 11399.59
+ 5890 294.5273 -3391.0204 -2952.9334 79.084741 11399.74
+ 5900 295.80592 -3392.0205 -2952.0316 44.16714 11399.893
+ 5910 298.24322 -3394.7145 -2951.1004 -21.853226 11400.046
+ 5920 302.94251 -3398.0067 -2947.4027 -110.01542 11400.199
+ 5930 308.53682 -3401.2747 -2942.3496 -199.90194 11400.35
+ 5940 312.1367 -3402.3859 -2938.1062 -243.46634 11400.498
+ 5950 312.14925 -3401.6366 -2937.3383 -233.18141 11400.641
+ 5960 309.93784 -3401.2299 -2940.2208 -206.20099 11400.78
+ 5970 308.2622 -3401.7806 -2943.2639 -194.16436 11400.915
+ 5980 308.58601 -3400.4177 -2941.4194 -178.12358 11401.046
+ 5990 309.79497 -3400.2077 -2939.4112 -186.07474 11401.174
+ 6000 309.79963 -3399.7258 -2938.9223 -185.51773 11401.299
+ 6010 308.33559 -3399.351 -2940.7252 -175.91956 11401.42
+ 6020 307.19242 -3400.204 -2943.2786 -179.91758 11401.539
+ 6030 307.30985 -3401.4999 -2944.3998 -191.73319 11401.654
+ 6040 306.91756 -3401.8568 -2945.3402 -182.79938 11401.765
+ 6050 304.39838 -3399.9783 -2947.2087 -127.35429 11401.873
+ 6060 300.42086 -3396.899 -2950.0457 -48.344454 11401.979
+ 6070 297.76517 -3396.2645 -2953.3613 -14.424571 11402.084
+ 6080 298.36799 -3394.9392 -2951.1395 -7.0834029 11402.189
+ 6090 301.21429 -3396.5692 -2948.5358 -60.375249 11402.294
+ 6100 303.6523 -3397.843 -2946.1832 -111.9472 11402.398
+ 6110 303.86112 -3397.7508 -2945.7804 -131.18421 11402.499
+ 6120 301.9095 -3396.4594 -2947.3919 -117.3665 11402.599
+ 6130 299.42727 -3394.4788 -2949.1035 -87.645667 11402.696
+ 6140 298.3595 -3394.0729 -2950.2858 -83.36517 11402.792
+ 6150 299.36978 -3394.4257 -2949.1359 -99.909242 11402.886
+ 6160 301.41077 -3394.9573 -2946.6316 -122.83232 11402.978
+ 6170 303.42949 -3397.5828 -2946.2544 -166.55717 11403.068
+ 6180 304.83885 -3397.8984 -2944.4737 -175.97635 11403.156
+ 6190 304.73997 -3396.7222 -2943.4446 -154.28901 11403.24
+ 6200 303.0148 -3396.3535 -2945.6419 -128.61062 11403.321
+ 6210 301.12088 -3395.4961 -2947.6016 -94.948903 11403.4
+ 6220 300.18935 -3394.2538 -2947.7449 -63.568787 11403.477
+ 6230 300.01041 -3394.8759 -2948.6332 -61.710472 11403.553
+ 6240 300.31545 -3394.715 -2948.0185 -57.650601 11403.628
+ 6250 301.05609 -3395.324 -2947.5258 -67.988103 11403.702
+ 6260 301.79476 -3395.1418 -2946.2449 -71.993115 11403.775
+ 6270 301.96287 -3395.4349 -2946.288 -82.171296 11403.846
+ 6280 301.70933 -3395.4965 -2946.7267 -92.225659 11403.917
+ 6290 302.21155 -3395.5827 -2946.0659 -115.67847 11403.985
+ 6300 305.50066 -3396.9529 -2942.5439 -179.9312 11404.052
+ 6310 312.14215 -3400.5824 -2936.2947 -293.8815 11404.115
+ 6320 319.55709 -3402.2815 -2926.9646 -381.85771 11404.172
+ 6330 323.19661 -3405.4415 -2924.7111 -441.57881 11404.223
+ 6340 319.95104 -3405.9592 -2930.0562 -400.84299 11404.265
+ 6350 310.4927 -3400.3934 -2938.559 -229.75211 11404.3
+ 6360 298.42894 -3393.5212 -2949.6308 -22.337875 11404.331
+ 6370 288.9046 -3387.4093 -2957.6856 145.97832 11404.361
+ 6380 286.12702 -3385.9545 -2960.3622 190.40832 11404.394
+ 6390 290.85143 -3388.3897 -2955.7703 113.76113 11404.43
+ 6400 300.02856 -3393.1651 -2946.8953 -34.906929 11404.469
+ 6410 308.48558 -3398.8658 -2940.0169 -187.60491 11404.507
+ 6420 311.94797 -3400.6169 -2936.6179 -247.51919 11404.542
+ 6430 309.87074 -3399.5548 -2938.6455 -221.9863 11404.572
+ 6440 305.16591 -3396.9044 -2942.9932 -152.75418 11404.598
+ 6450 301.62734 -3395.1673 -2946.5195 -102.88306 11404.622
+ 6460 300.87128 -3396.5517 -2949.0284 -113.42071 11404.643
+ 6470 301.86817 -3396.1496 -2947.1435 -119.53169 11404.663
+ 6480 301.9885 -3395.6564 -2946.4714 -119.50368 11404.68
+ 6490 299.19368 -3394.0704 -2949.0425 -86.151645 11404.695
+ 6500 294.13866 -3390.575 -2953.0661 -15.615988 11404.709
+ 6510 289.51503 -3387.9766 -2957.345 37.774185 11404.722
+ 6520 287.58282 -3387.5273 -2959.7697 42.4817 11404.736
+ 6530 288.35022 -3389.3596 -2960.4605 -0.76052488 11404.751
+ 6540 290.15148 -3390.1861 -2958.6078 -39.656575 11404.766
+ 6550 292.02637 -3390.5274 -2956.1603 -71.363919 11404.781
+ 6560 294.32021 -3391.6302 -2953.8512 -112.37179 11404.794
+ 6570 297.30048 -3392.1909 -2949.979 -149.55078 11404.805
+ 6580 300.22903 -3392.8573 -2946.2894 -187.08271 11404.814
+ 6590 302.55204 -3394.506 -2944.4828 -231.39149 11404.818
+ 6600 304.2655 -3395.5531 -2942.9812 -266.62013 11404.819
+ 6610 306.0515 -3396.2494 -2941.021 -298.41873 11404.814
+ 6620 307.58649 -3398.5191 -2941.0075 -343.32244 11404.804
+ 6630 307.47238 -3399.2174 -2941.8755 -349.93615 11404.787
+ 6640 304.44203 -3399.3496 -2946.5152 -318.80672 11404.764
+ 6650 299.25869 -3397.232 -2952.1074 -238.53202 11404.734
+ 6660 294.39112 -3394.2374 -2956.3529 -148.68425 11404.701
+ 6670 292.36347 -3393.8709 -2959.0024 -115.23466 11404.664
+ 6680 293.86388 -3393.6221 -2956.5218 -117.00174 11404.625
+ 6690 296.75251 -3395.0622 -2953.6653 -156.73762 11404.584
+ 6700 298.97587 -3395.0837 -2950.3797 -179.62088 11404.54
+ 6710 300.2408 -3396.019 -2949.4335 -204.16391 11404.493
+ 6720 300.41654 -3397.7992 -2950.9524 -224.02097 11404.442
+ 6730 298.97103 -3396.5752 -2951.8785 -188.96116 11404.387
+ 6740 296.23581 -3394.373 -2953.7446 -128.40971 11404.328
+ 6750 293.94756 -3392.6824 -2955.4577 -78.444334 11404.266
+ 6760 293.37066 -3392.5981 -2956.2314 -67.727634 11404.204
+ 6770 294.00627 -3393.1838 -2955.8717 -86.785633 11404.14
+ 6780 294.86552 -3392.7086 -2954.1185 -108.86912 11404.074
+ 6790 296.28447 -3394.3874 -2953.6867 -169.23198 11404.006
+ 6800 299.36843 -3395.281 -2949.9932 -233.38527 11403.935
+ 6810 303.52105 -3398.7445 -2947.28 -326.66229 11403.859
+ 6820 306.46802 -3401.0147 -2945.1668 -380.77462 11403.777
+ 6830 306.23279 -3401.2577 -2945.7596 -370.00925 11403.688
+ 6840 303.04655 -3399.3346 -2948.5758 -300.20522 11403.592
+ 6850 299.059 -3396.7029 -2951.8753 -212.85312 11403.491
+ 6860 296.56557 -3394.9015 -2953.7827 -152.54155 11403.385
+ 6870 296.90206 -3395.8532 -2954.2339 -155.70909 11403.276
+ 6880 299.33223 -3397.3111 -2952.0771 -190.15457 11403.164
+ 6890 301.60564 -3398.5496 -2949.9341 -226.73859 11403.048
+ 6900 302.11736 -3399.9961 -2950.6194 -253.45506 11402.928
+ 6910 301.01369 -3399.3615 -2951.6264 -240.31097 11402.804
+ 6920 299.09528 -3399.0648 -2954.1832 -219.48036 11402.674
+ 6930 296.74763 -3399.4518 -2958.0622 -197.13287 11402.541
+ 6940 293.72404 -3397.0933 -2960.201 -134.65127 11402.404
+ 6950 291.04142 -3395.5803 -2962.6782 -84.193464 11402.264
+ 6960 290.80515 -3394.3704 -2961.8198 -57.027433 11402.122
+ 6970 293.05006 -3395.5884 -2959.6987 -78.468168 11401.979
+ 6980 295.14108 -3396.3281 -2957.3281 -93.490698 11401.835
+ 6990 294.54106 -3397.1531 -2959.0457 -88.208536 11401.689
+ 7000 291.20672 -3395.9331 -2962.7852 -39.9341 11401.541
+ 7010 287.38342 -3394.0446 -2966.5835 14.31155 11401.392
+ 7020 285.60657 -3393.4214 -2968.6033 28.216267 11401.244
+ 7030 287.15251 -3395.691 -2968.5734 -29.214931 11401.096
+ 7040 291.85637 -3396.9522 -2962.8379 -110.18397 11400.948
+ 7050 298.50571 -3400.3475 -2956.3428 -235.1368 11400.797
+ 7060 304.64437 -3403.8624 -2950.727 -354.75312 11400.641
+ 7070 307.22959 -3405.669 -2948.6882 -418.78309 11400.479
+ 7080 304.80588 -3403.6383 -2950.2626 -388.73185 11400.309
+ 7090 299.071 -3400.6882 -2955.8427 -310.95671 11400.131
+ 7100 293.01663 -3398.3514 -2962.5113 -229.54443 11399.948
+ 7110 288.40147 -3396.8109 -2967.8355 -163.81307 11399.759
+ 7120 285.12087 -3396.0097 -2971.914 -117.93752 11399.568
+ 7130 282.66041 -3395.3987 -2974.9628 -85.42855 11399.374
+ 7140 281.15912 -3395.4465 -2977.2436 -75.858742 11399.178
+ 7150 282.29089 -3394.9803 -2975.094 -88.037497 11398.981
+ 7160 287.49599 -3398.2215 -2970.5931 -178.76115 11398.782
+ 7170 295.48762 -3401.3046 -2961.7892 -289.93872 11398.579
+ 7180 303.08434 -3405.0968 -2954.2818 -402.94238 11398.371
+ 7190 307.79654 -3408.2087 -2950.3847 -477.97275 11398.155
+ 7200 308.56667 -3409.5234 -2950.5538 -493.93401 11397.93
+ 7210 305.91544 -3407.0944 -2952.0684 -435.52708 11397.696
+ 7220 302.15207 -3405.0988 -2955.6705 -373.36609 11397.453
+ 7230 300.43633 -3403.7165 -2956.8402 -336.8924 11397.203
+ 7240 301.39305 -3404.7442 -2956.4449 -351.29801 11396.946
+ 7250 302.43844 -3405.0311 -2955.1768 -357.63227 11396.682
+ 7260 300.72132 -3404.7025 -2957.4023 -331.27515 11396.412
+ 7270 295.1355 -3402.7449 -2963.7532 -250.92265 11396.135
+ 7280 287.37676 -3398.53 -2971.0789 -126.14481 11395.853
+ 7290 281.49992 -3396.2786 -2977.5689 -41.505539 11395.568
+ 7300 280.89798 -3395.2418 -2977.4274 -17.801439 11395.283
+ 7310 285.41234 -3396.9119 -2972.3826 -71.722961 11394.997
+ 7320 291.74745 -3399.8597 -2965.9075 -159.58228 11394.709
+ 7330 296.67814 -3402.9463 -2961.6601 -238.84383 11394.418
+ 7340 298.9572 -3404.3007 -2959.6245 -276.16362 11394.123
+ 7350 299.3418 -3404.9989 -2959.7507 -290.60625 11393.822
+ 7360 299.35246 -3403.7801 -2958.5161 -278.11325 11393.515
+ 7370 299.0317 -3403.4292 -2958.6423 -271.14623 11393.204
+ 7380 296.94637 -3401.7023 -2960.0171 -232.36766 11392.887
+ 7390 292.34359 -3399.8907 -2965.0517 -170.22645 11392.565
+ 7400 286.85521 -3396.7978 -2970.1224 -83.05472 11392.24
+ 7410 282.89617 -3394.8137 -2974.0271 -18.137433 11391.913
+ 7420 281.31449 -3395.1976 -2976.7636 0.37177853 11391.585
+ 7430 281.62535 -3394.7888 -2975.8924 8.8775544 11391.257
+ 7440 283.76918 -3396.5796 -2974.4945 -27.327627 11390.929
+ 7450 287.92158 -3398.9563 -2970.6948 -90.852367 11390.601
+ 7460 293.51822 -3401.3507 -2964.7646 -170.65436 11390.27
+ 7470 299.3593 -3403.6206 -2958.3464 -252.04724 11389.936
+ 7480 303.77347 -3406.4178 -2954.5778 -326.90724 11389.597
+ 7490 305.79072 -3407.0935 -2952.253 -356.57954 11389.251
+ 7500 305.80886 -3406.7895 -2951.922 -355.94035 11388.899
+ 7510 304.6323 -3406.8733 -2953.7558 -345.4839 11388.54
+ 7520 302.39619 -3407.2881 -2957.4967 -325.34955 11388.173
+ 7530 299.069 -3406.4386 -2961.5961 -278.67456 11387.801
+ 7540 295.58278 -3404.4476 -2964.7906 -216.01514 11387.423
+ 7550 293.12661 -3402.8952 -2966.8916 -167.84774 11387.04
+ 7560 292.19875 -3402.5873 -2967.9638 -149.13749 11386.654
+ 7570 291.97547 -3402.6716 -2968.3802 -143.55823 11386.265
+ 7580 290.93677 -3402.0385 -2969.2921 -124.99671 11385.873
+ 7590 288.39845 -3400.4385 -2971.4676 -84.681387 11385.479
+ 7600 285.02898 -3398.6382 -2974.6792 -36.232317 11385.082
+ 7610 282.43701 -3396.6097 -2976.5061 5.9917465 11384.685
+ 7620 282.43005 -3396.8042 -2976.7109 -0.31526184 11384.287
+ 7630 284.75412 -3398.4215 -2974.8714 -41.615163 11383.89
+ 7640 287.23643 -3399.4711 -2972.2287 -75.272647 11383.491
+ 7650 288.1882 -3399.1435 -2970.4854 -75.049315 11383.09
+ 7660 287.07262 -3398.8478 -2971.849 -53.01354 11382.688
+ 7670 284.55813 -3397.1178 -2973.8592 -1.9447828 11382.284
+ 7680 282.73681 -3395.77 -2975.2204 36.083128 11381.88
+ 7690 283.91191 -3396.7404 -2974.443 18.80164 11381.477
+ 7700 288.54517 -3398.5771 -2969.388 -38.63331 11381.073
+ 7710 294.50679 -3400.8906 -2962.8341 -110.31595 11380.669
+ 7720 298.40834 -3402.5894 -2958.7296 -153.92996 11380.262
+ 7730 298.20556 -3403.1883 -2959.6301 -146.00608 11379.852
+ 7740 294.76661 -3401.2022 -2962.7593 -75.874151 11379.439
+ 7750 290.67454 -3398.4583 -2966.1019 10.675725 11379.024
+ 7760 288.15294 -3397.2409 -2968.6353 63.872089 11378.61
+ 7770 288.08883 -3396.9921 -2968.4818 78.834703 11378.196
+ 7780 290.15001 -3399.5011 -2967.925 37.093302 11377.783
+ 7790 292.87946 -3401.592 -2965.956 -11.281904 11377.37
+ 7800 294.69442 -3402.1227 -2963.787 -37.856741 11376.958
+ 7810 295.31574 -3402.3848 -2963.125 -53.652124 11376.544
+ 7820 295.45918 -3404.2219 -2964.7487 -85.414376 11376.128
+ 7830 295.47339 -3403.7515 -2964.2572 -91.80538 11375.711
+ 7840 295.37438 -3404.2699 -2964.9229 -109.69205 11375.292
+ 7850 295.25819 -3404.5161 -2965.3419 -122.76616 11374.871
+ 7860 295.09066 -3404.3391 -2965.4141 -125.85371 11374.447
+ 7870 294.67778 -3404.4202 -2966.1094 -122.80642 11374.02
+ 7880 294.09542 -3403.8775 -2966.4328 -103.93414 11373.591
+ 7890 293.68941 -3404.7503 -2967.9096 -96.207583 11373.159
+ 7900 293.6397 -3404.3738 -2967.607 -70.970631 11372.725
+ 7910 293.50927 -3404.6078 -2968.035 -48.033995 11372.29
+ 7920 292.56529 -3403.7328 -2968.5641 -5.946331 11371.853
+ 7930 291.0806 -3403.0798 -2970.1194 36.143756 11371.416
+ 7940 289.70851 -3402.7512 -2971.8318 68.956124 11370.979
+ 7950 288.76775 -3402.2663 -2972.7461 95.25596 11370.543
+ 7960 288.06667 -3400.8608 -2972.3835 126.09888 11370.109
+ 7970 287.3645 -3401.0342 -2973.6013 135.59531 11369.676
+ 7980 286.55845 -3400.8846 -2974.6506 145.58963 11369.246
+ 7990 286.51796 -3402.2098 -2976.0361 127.98085 11368.819
+ 8000 288.29448 -3402.5718 -2973.7556 103.67599 11368.393
+ 8010 291.13395 -3404.3151 -2971.2754 53.407351 11367.969
+ 8020 292.89688 -3405.4598 -2969.7978 21.342495 11367.546
+ 8030 292.1673 -3405.3465 -2970.7698 28.676778 11367.123
+ 8040 289.80488 -3405.9042 -2974.8414 47.984223 11366.7
+ 8050 287.5722 -3404.4281 -2976.6863 96.120543 11366.278
+ 8060 286.23218 -3403.8413 -2978.0926 130.27514 11365.857
+ 8070 285.46741 -3404.0984 -2979.4873 148.6826 11365.438
+ 8080 285.25646 -3404.0034 -2979.706 160.06252 11365.022
+ 8090 286.6686 -3405.2047 -2978.8068 135.29868 11364.609
+ 8100 290.33723 -3405.1611 -2973.3064 100.27875 11364.198
+ 8110 295.33208 -3406.3837 -2967.0996 38.668823 11363.788
+ 8120 299.38378 -3408.9228 -2963.6121 -29.998578 11363.379
+ 8130 301.56401 -3408.9738 -2960.4202 -50.319599 11362.969
+ 8140 302.48234 -3409.2434 -2959.3238 -54.993099 11362.558
+ 8150 302.48539 -3409.531 -2959.6069 -45.878967 11362.145
+ 8160 301.27244 -3408.6148 -2960.4949 -8.7524704 11361.732
+ 8170 298.5905 -3407.406 -2963.2753 44.170046 11361.318
+ 8180 295.54229 -3406.52 -2966.9233 92.774917 11360.904
+ 8190 294.081 -3406.1213 -2968.6981 118.18885 11360.492
+ 8200 294.45974 -3408.0627 -2970.0762 98.373321 11360.081
+ 8210 294.65872 -3408.3257 -2970.0432 96.984375 11359.673
+ 8220 293.01357 -3408.6126 -2972.7771 109.5815 11359.265
+ 8230 289.96233 -3406.5376 -2975.2406 161.54631 11358.86
+ 8240 287.12881 -3404.8456 -2977.7633 207.85672 11358.457
+ 8250 285.75483 -3404.7531 -2979.7144 221.07868 11358.058
+ 8260 286.39906 -3403.0218 -2977.0249 230.20572 11357.662
+ 8270 289.10417 -3404.0119 -2973.9913 185.3435 11357.271
+ 8280 292.69654 -3406.5489 -2971.185 112.14138 11356.883
+ 8290 295.01591 -3408.5085 -2969.6947 56.973257 11356.497
+ 8300 294.35621 -3408.2838 -2970.4513 56.72927 11356.111
+ 8310 291.02286 -3405.9123 -2973.0378 111.6657 11355.727
+ 8320 286.83319 -3403.4611 -2976.8185 185.22317 11355.344
+ 8330 282.84918 -3401.6502 -2980.9335 257.71597 11354.965
+ 8340 279.58402 -3399.5783 -2983.7183 329.15134 11354.59
+ 8350 278.40669 -3399.7162 -2985.6074 354.97139 11354.221
+ 8360 280.1577 -3400.8207 -2984.1073 339.53175 11353.858
+ 8370 283.99431 -3403.0846 -2980.6646 286.8886 11353.502
+ 8380 288.53831 -3405.2136 -2976.0347 225.12706 11353.15
+ 8390 292.86037 -3407.6147 -2972.0071 161.98803 11352.803
+ 8400 295.81198 -3409.2536 -2969.2557 120.79965 11352.458
+ 8410 296.66981 -3408.8055 -2967.5316 123.54338 11352.116
+ 8420 295.81274 -3408.3225 -2968.3234 141.83605 11351.775
+ 8430 294.7989 -3408.0163 -2969.5252 159.94347 11351.437
+ 8440 294.54905 -3408.3967 -2970.2773 162.01507 11351.101
+ 8450 294.76835 -3407.9868 -2969.5412 166.72428 11350.769
+ 8460 294.73607 -3407.4348 -2969.0372 170.95388 11350.439
+ 8470 295.07526 -3407.614 -2968.7119 159.49922 11350.112
+ 8480 297.35958 -3410.324 -2968.0241 104.17619 11349.788
+ 8490 300.5281 -3412.4767 -2965.464 54.952197 11349.466
+ 8500 300.24963 -3411.9208 -2965.3222 72.580391 11349.145
+ 8510 294.41732 -3408.269 -2970.3455 175.33636 11348.825
+ 8520 286.775 -3403.874 -2977.3179 301.05154 11348.508
+ 8530 283.68836 -3402.2773 -2980.3124 353.26963 11348.196
+ 8540 287.65066 -3404.4689 -2976.6103 299.48875 11347.89
+ 8550 294.95162 -3409.7014 -2970.9833 179.52431 11347.59
+ 8560 300.29243 -3410.6873 -2964.0251 123.4933 11347.294
+ 8570 301.36239 -3410.3479 -2962.0942 121.38521 11346.999
+ 8580 298.80106 -3408.2456 -2963.8017 177.39677 11346.707
+ 8590 293.92849 -3405.5173 -2968.3209 265.20964 11346.417
+ 8600 288.7236 -3404.053 -2974.5985 341.22743 11346.133
+ 8610 285.84967 -3402.8311 -2977.6514 390.1371 11345.854
+ 8620 286.90192 -3403.66 -2976.9151 374.88446 11345.583
+ 8630 291.06487 -3406.2166 -2973.2797 307.42449 11345.319
+ 8640 295.23937 -3408.648 -2969.5018 240.15903 11345.06
+ 8650 295.66991 -3410.1814 -2970.3948 216.37492 11344.806
+ 8660 291.15875 -3408.9589 -2975.8823 267.87836 11344.555
+ 8670 284.81478 -3404.7474 -2981.107 372.83564 11344.31
+ 8680 281.80185 -3403.0457 -2983.8868 426.74661 11344.071
+ 8690 284.45529 -3404.493 -2981.3873 403.10055 11343.84
+ 8700 290.19686 -3406.08 -2974.4342 357.72326 11343.617
+ 8710 294.45479 -3407.4978 -2969.5186 329.8927 11343.4
+ 8720 294.95826 -3409.1899 -2970.4618 332.65539 11343.189
+ 8730 292.27487 -3408.0539 -2973.3172 393.68646 11342.985
+ 8740 288.92305 -3405.2339 -2975.4827 474.50821 11342.788
+ 8750 287.48885 -3405.8452 -2978.2274 491.58061 11342.599
+ 8760 288.63619 -3405.3941 -2976.0697 489.90201 11342.42
+ 8770 291.28504 -3405.7749 -2972.5105 456.86619 11342.249
+ 8780 294.36019 -3407.1804 -2969.3419 401.67275 11342.088
+ 8790 297.20732 -3409.2494 -2967.176 338.48844 11341.933
+ 8800 298.65976 -3410.0142 -2965.7805 304.43191 11341.786
+ 8810 297.85932 -3408.866 -2965.8229 314.38087 11341.644
+ 8820 296.20424 -3408.5583 -2967.9769 327.51435 11341.507
+ 8830 295.30305 -3408.934 -2969.6931 332.32135 11341.377
+ 8840 295.07797 -3408.368 -2969.4619 346.1243 11341.253
+ 8850 294.41361 -3407.9523 -2970.0344 363.74045 11341.136
+ 8860 292.63628 -3407.3121 -2972.0378 393.7324 11341.025
+ 8870 290.25957 -3405.2814 -2973.5423 443.00844 11340.922
+ 8880 288.66514 -3402.3721 -2973.0046 494.42045 11340.827
+ 8890 288.65315 -3402.4443 -2973.0946 494.19028 11340.741
+ 8900 290.66988 -3403.9064 -2971.5569 457.23155 11340.665
+ 8910 294.49075 -3404.5279 -2966.4952 414.38467 11340.597
+ 8920 298.84249 -3407.6788 -2963.1732 341.5209 11340.537
+ 8930 302.12621 -3409.5806 -2960.1907 299.80369 11340.483
+ 8940 303.11226 -3409.9388 -2959.0823 304.1669 11340.435
+ 8950 300.89311 -3407.9855 -2960.4298 369.00255 11340.393
+ 8960 295.57562 -3404.4411 -2964.7948 477.98884 11340.358
+ 8970 289.55941 -3400.5091 -2969.8114 591.0345 11340.332
+ 8980 286.20027 -3399.2422 -2973.541 641.53268 11340.317
+ 8990 287.30234 -3400.318 -2972.9775 618.80056 11340.314
+ 9000 291.26875 -3403.1168 -2969.8766 547.16137 11340.323
+ 9010 293.73241 -3404.1574 -2967.2527 506.09112 11340.342
+ 9020 291.67726 -3402.8136 -2968.9658 530.08791 11340.371
+ 9030 286.8363 -3400.8423 -2974.195 584.70771 11340.411
+ 9040 284.19785 -3399.8316 -2977.1088 609.39381 11340.461
+ 9050 286.51955 -3400.5241 -2974.3479 571.15621 11340.523
+ 9060 292.15205 -3403.1847 -2968.6307 478.01531 11340.595
+ 9070 298.45918 -3405.8218 -2961.8864 376.03636 11340.677
+ 9080 304.03667 -3407.3953 -2955.1638 295.48053 11340.767
+ 9090 307.61549 -3409.4339 -2951.8792 236.1672 11340.862
+ 9100 307.99275 -3410.7417 -2952.6259 225.60591 11340.962
+ 9110 305.15264 -3409.8609 -2955.9695 279.86702 11341.066
+ 9120 300.5983 -3407.2402 -2960.123 374.84897 11341.176
+ 9130 296.67023 -3405.1051 -2963.8306 460.38895 11341.293
+ 9140 294.00175 -3404.7238 -2967.4185 510.73574 11341.419
+ 9150 291.45766 -3404.4072 -2970.886 548.01853 11341.555
+ 9160 288.87706 -3402.886 -2973.2032 587.44288 11341.701
+ 9170 287.79602 -3402.1954 -2974.1207 596.47705 11341.859
+ 9180 289.34322 -3403.6246 -2973.2485 553.96469 11342.028
+ 9190 292.98035 -3405.4233 -2969.6373 487.91532 11342.207
+ 9200 297.35706 -3407.1051 -2964.809 417.29843 11342.397
+ 9210 301.98688 -3409.4502 -2960.2676 340.04667 11342.594
+ 9220 306.67098 -3412.0893 -2955.9394 266.88596 11342.798
+ 9230 309.38368 -3413.4979 -2953.3131 232.44396 11343.008
+ 9240 308.19358 -3412.468 -2954.0534 263.61958 11343.222
+ 9250 304.22619 -3411.4688 -2958.9554 320.14124 11343.442
+ 9260 300.37702 -3409.0915 -2962.3035 393.30238 11343.668
+ 9270 298.26634 -3407.2891 -2963.6405 445.35505 11343.902
+ 9280 297.30587 -3408.1004 -2965.8805 457.35904 11344.145
+ 9290 295.09719 -3406.6378 -2967.7031 503.33248 11344.397
+ 9300 290.62723 -3403.914 -2971.628 575.63964 11344.658
+ 9310 287.06141 -3401.5627 -2974.5806 629.83999 11344.931
+ 9320 288.51247 -3402.3961 -2973.2557 603.91943 11345.216
+ 9330 294.7638 -3405.6308 -2967.192 510.23901 11345.512
+ 9340 301.91191 -3408.4412 -2959.3701 414.20847 11345.819
+ 9350 306.18175 -3410.8309 -2955.4088 348.89983 11346.134
+ 9360 306.02336 -3409.7009 -2954.5143 362.28244 11346.457
+ 9370 302.83823 -3407.5435 -2957.0946 410.84875 11346.786
+ 9380 299.99875 -3405.7104 -2959.4849 450.80484 11347.124
+ 9390 299.66987 -3404.2253 -2958.4891 464.23117 11347.471
+ 9400 301.1087 -3405.0355 -2957.1591 434.57171 11347.828
+ 9410 301.84906 -3405.4565 -2956.4789 412.12717 11348.192
+ 9420 300.60954 -3404.6412 -2957.5073 416.78809 11348.566
+ 9430 298.51961 -3403.4855 -2959.4602 430.87221 11348.948
+ 9440 297.27342 -3400.9593 -2958.7876 454.61716 11349.338
+ 9450 297.01913 -3400.5633 -2958.7699 447.07292 11349.738
+ 9460 296.57285 -3402.2913 -2961.1616 417.91492 11350.146
+ 9470 295.2309 -3402.5995 -2963.4659 415.83082 11350.563
+ 9480 293.09234 -3401.807 -2965.8543 436.18562 11350.989
+ 9490 290.53082 -3400.5157 -2968.3731 466.55556 11351.423
+ 9500 288.5927 -3400.4904 -2971.2306 475.74331 11351.867
+ 9510 288.44126 -3400.5344 -2971.4999 464.18854 11352.32
+ 9520 290.40067 -3401.487 -2969.538 418.56076 11352.783
+ 9530 293.70407 -3401.9985 -2965.136 361.80926 11353.254
+ 9540 297.88102 -3404.0453 -2960.9698 280.91388 11353.733
+ 9550 302.10623 -3405.4577 -2956.0976 213.78761 11354.218
+ 9560 304.66474 -3404.7565 -2951.5908 193.76068 11354.707
+ 9570 305.01743 -3404.4039 -2950.7136 195.11694 11355.201
+ 9580 304.74132 -3404.6212 -2951.3415 200.33098 11355.699
+ 9590 305.56209 -3404.9244 -2950.4239 198.79833 11356.202
+ 9600 307.21463 -3405.2931 -2948.3346 189.52216 11356.709
+ 9610 308.29306 -3407.0511 -2948.4885 165.46194 11357.22
+ 9620 308.20656 -3406.4537 -2948.0198 175.2499 11357.735
+ 9630 306.96224 -3407.0489 -2950.4659 177.76703 11358.255
+ 9640 305.01915 -3406.3386 -2952.6458 200.14593 11358.778
+ 9650 302.67813 -3405.9343 -2955.7235 222.8452 11359.306
+ 9660 300.38918 -3404.6389 -2957.8328 255.9126 11359.839
+ 9670 298.41925 -3402.3382 -2958.4621 298.57798 11360.377
+ 9680 296.17886 -3401.0714 -2960.5278 331.00431 11360.922
+ 9690 293.44387 -3399.4007 -2962.9252 370.33231 11361.473
+ 9700 291.34236 -3397.1594 -2963.8098 409.00309 11362.033
+ 9710 291.71271 -3397.8693 -2963.9688 392.09333 11362.601
+ 9720 295.17024 -3399.503 -2960.4597 338.28022 11363.177
+ 9730 300.42669 -3401.9986 -2955.1367 259.30751 11363.76
+ 9740 305.28707 -3404.7978 -2950.7064 181.84074 11364.349
+ 9750 307.54229 -3405.3606 -2947.9148 153.98903 11364.943
+ 9760 306.45881 -3404.9853 -2949.1511 166.71246 11365.54
+ 9770 303.47263 -3402.8962 -2951.5036 217.20941 11366.141
+ 9780 300.47801 -3401.0708 -2954.1325 265.82983 11366.748
+ 9790 298.19674 -3399.9051 -2956.36 297.47046 11367.36
+ 9800 297.15258 -3399.5568 -2957.5649 302.72387 11367.979
+ 9810 297.86514 -3399.7904 -2956.7386 280.39609 11368.604
+ 9820 300.0193 -3399.7717 -2953.5157 244.48777 11369.235
+ 9830 302.7942 -3400.4894 -2950.106 194.63025 11369.872
+ 9840 305.24482 -3401.8183 -2947.7898 144.1862 11370.514
+ 9850 306.36621 -3403.5876 -2947.8911 106.96158 11371.159
+ 9860 305.14908 -3401.5592 -2947.673 136.06361 11371.807
+ 9870 303.05573 -3399.9676 -2949.1952 167.86769 11372.459
+ 9880 303.42101 -3399.2147 -2947.899 170.99657 11373.115
+ 9890 306.92488 -3400.3399 -2943.8124 129.33866 11373.775
+ 9900 309.67026 -3401.3048 -2940.6938 98.545791 11374.438
+ 9910 307.56329 -3401.6789 -2944.2019 116.46825 11375.104
+ 9920 300.97112 -3397.3292 -2949.6575 226.93924 11375.774
+ 9930 294.25284 -3393.4453 -2955.7665 332.67518 11376.448
+ 9940 291.73121 -3390.8429 -2956.9149 386.19184 11377.13
+ 9950 294.61156 -3392.5494 -2954.337 337.78919 11377.821
+ 9960 301.51363 -3395.6949 -2947.2162 231.2611 11378.518
+ 9970 309.22637 -3400.3397 -2940.3889 92.739501 11379.221
+ 9980 314.99028 -3404.1669 -2935.6428 -21.781381 11379.926
+ 9990 317.04677 -3405.9327 -2934.3496 -77.568581 11380.633
+ 10000 314.92215 -3402.6147 -2934.1919 -33.467423 11381.339
+Loop time of 3.44538 on 1 procs for 10000 steps with 500 atoms
+
+Performance: 250.770 ns/day, 0.096 hours/ns, 2902.433 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 | 2.5622 | 2.5622 | 2.5622 | 0.0 | 74.37
+Bond | 0.00069213 | 0.00069213 | 0.00069213 | 0.0 | 0.02
+Neigh | 0.023138 | 0.023138 | 0.023138 | 0.0 | 0.67
+Comm | 0.088789 | 0.088789 | 0.088789 | 0.0 | 2.58
+Output | 0.0089374 | 0.0089374 | 0.0089374 | 0.0 | 0.26
+Modify | 0.3415 | 0.3415 | 0.3415 | 0.0 | 9.91
+Other | | 0.4201 | | | 12.19
+
+Nlocal: 500 ave 500 max 500 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Nghost: 1636 ave 1636 max 1636 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Neighs: 14902 ave 14902 max 14902 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+
+Total # of neighbors = 14902
+Ave neighs/atom = 29.804
+Ave special neighs/atom = 0
+Neighbor list builds = 24
+Dangerous builds = 0
+
+#write_data ${rep}/lj-out.data
+Total wall time: 0:00:03
diff --git a/examples/USER/misc/grem/lj-temper/2/lj.data b/examples/USER/misc/grem/lj-temper/2/lj.data
new file mode 100644
index 000000000..ddfa1bd13
--- /dev/null
+++ b/examples/USER/misc/grem/lj-temper/2/lj.data
@@ -0,0 +1,1022 @@
+LAMMPS data file via write_data, version 9 Nov 2016, timestep = 100000
+
+500 atoms
+1 atom types
+
+1.2553519977148806e+00 2.3744648002278225e+01 xlo xhi
+1.2553519977148806e+00 2.3744648002278225e+01 ylo yhi
+1.2553519977148806e+00 2.3744648002278225e+01 zlo zhi
+
+Masses
+
+1 62.5
+
+Pair Coeffs # lj/cut
+
+1 1.1 2.8
+
+Atoms # full
+
+412 0 1 0.0000000000000000e+00 2.9471478482662330e+00 3.3044514757367764e+00 3.3052428351190573e+00 0 0 1
+113 0 1 0.0000000000000000e+00 1.5860373566232791e+01 1.1840553422220029e+01 1.4921199881952212e+00 0 0 0
+9 0 1 0.0000000000000000e+00 7.3358207865553542e+00 3.2388498235856491e+00 3.4181987766250082e+00 0 0 0
+432 0 1 0.0000000000000000e+00 1.0463029558579258e+01 3.6653203236330989e+00 4.0807957196909452e+00 0 0 1
+105 0 1 0.0000000000000000e+00 1.2558337919382286e+01 1.5495283781783966e+00 4.0292716885553013e+00 0 0 0
+440 0 1 0.0000000000000000e+00 1.2392585134438326e+01 4.1036497311335012e+00 2.0314966315159668e+00 0 0 1
+139 0 1 0.0000000000000000e+00 1.4378677977949524e+01 3.7756210534492074e+00 4.1005550027874911e+00 0 0 0
+114 0 1 0.0000000000000000e+00 1.4563069687698981e+01 1.6859653966553867e+00 1.7338690336048050e+00 0 0 0
+35 0 1 0.0000000000000000e+00 1.6626720961424937e+01 4.0936806331000799e+00 1.7914530868374974e+00 0 0 0
+1 0 1 0.0000000000000000e+00 1.9177932822860036e+01 1.8948168059189694e+00 1.9191065666569789e+00 -1 0 0
+134 0 1 0.0000000000000000e+00 1.6641612043776632e+01 1.7893637958680133e+00 3.9668777619873539e+00 0 0 0
+200 0 1 0.0000000000000000e+00 1.9962207750788302e+01 2.3283082479494834e+00 4.6976199552991424e+00 0 1 0
+22 0 1 0.0000000000000000e+00 1.9997883222653172e+01 4.7671450566878537e+00 2.9835449410998582e+00 -1 0 0
+107 0 1 0.0000000000000000e+00 2.2105222172343709e+01 2.4644057961574930e+00 2.5687285975812748e+00 -1 0 0
+51 0 1 0.0000000000000000e+00 2.9664660036621706e+00 7.6824454363555610e+00 3.6348154191809434e+00 0 0 0
+423 0 1 0.0000000000000000e+00 3.2562165819388755e+00 5.7960264325034832e+00 1.4169958826782925e+00 0 0 1
+427 0 1 0.0000000000000000e+00 5.2552000341394676e+00 5.3992394986129684e+00 3.6522421653739885e+00 0 0 1
+32 0 1 0.0000000000000000e+00 5.2907145566324587e+00 8.0491736858658456e+00 1.4966506744910535e+00 0 0 0
+429 0 1 0.0000000000000000e+00 8.3924538439000358e+00 6.0534398494052617e+00 4.2313445642237593e+00 0 0 1
+132 0 1 0.0000000000000000e+00 6.0171801124142341e+00 8.1475724736178705e+00 4.5079262523638350e+00 0 0 0
+26 0 1 0.0000000000000000e+00 8.2684545572447981e+00 8.7797954895131838e+00 2.3482567373778274e+00 0 0 0
+30 0 1 0.0000000000000000e+00 7.5853569124171827e+00 6.2195967622179413e+00 1.3139455201713182e+00 0 0 0
+312 0 1 0.0000000000000000e+00 1.0435842460719066e+01 6.7346718476728569e+00 1.8270015121252432e+00 0 0 1
+232 0 1 0.0000000000000000e+00 1.0332519229076038e+01 8.5204625003193613e+00 4.5226875522443546e+00 0 0 0
+137 0 1 0.0000000000000000e+00 1.2453284513016115e+01 6.2844663279244104e+00 4.2012757658447839e+00 0 0 0
+460 0 1 0.0000000000000000e+00 1.4468756043175931e+01 6.6701236057460962e+00 2.2097434685511170e+00 0 0 1
+33 0 1 0.0000000000000000e+00 1.2545007878351194e+01 8.8840439894710883e+00 2.4322056852854423e+00 0 0 0
+21 0 1 0.0000000000000000e+00 1.7882660705724909e+01 7.1382798957664466e+00 3.0494708696789932e+00 -1 0 0
+8 0 1 0.0000000000000000e+00 2.3165590149303362e+01 5.2288325280705958e+00 3.6084690340694756e+00 -1 0 0
+61 0 1 0.0000000000000000e+00 2.0925886505870615e+01 7.4646600395752243e+00 3.8047412392237430e+00 -1 0 0
+39 0 1 0.0000000000000000e+00 2.3195176550195484e+01 7.8605548800039520e+00 1.5589163438042923e+00 0 0 0
+121 0 1 0.0000000000000000e+00 2.8649652058137178e+00 1.0359449316849590e+01 1.8200446756047239e+00 0 0 0
+99 0 1 0.0000000000000000e+00 3.7324568888235894e+00 1.0342604900403931e+01 4.9232215219629332e+00 1 0 0
+48 0 1 0.0000000000000000e+00 6.0309818173016190e+00 1.1063465563377049e+01 2.5207578070769157e+00 0 0 0
+143 0 1 0.0000000000000000e+00 8.2023212270314119e+00 1.0640802302821136e+01 4.9600362320863542e+00 0 0 0
+153 0 1 0.0000000000000000e+00 1.0414799188234191e+01 1.0957397146631100e+01 2.6849726178084126e+00 0 0 0
+226 0 1 0.0000000000000000e+00 1.3483452648115497e+01 1.1739026390512160e+01 3.2046766497201569e+00 0 0 0
+120 0 1 0.0000000000000000e+00 1.5660857516507061e+01 9.4226144882716110e+00 3.4055007364107119e+00 0 0 0
+44 0 1 0.0000000000000000e+00 1.8713371903682734e+01 1.2182482532779423e+01 2.5836767343439693e+00 -1 0 0
+60 0 1 0.0000000000000000e+00 1.9042913011248501e+01 9.6817952845466930e+00 4.2921583695650414e+00 0 0 0
+175 0 1 0.0000000000000000e+00 1.8801772642190073e+01 1.1326508053897671e+01 1.0688836076924455e+01 0 0 0
+229 0 1 0.0000000000000000e+00 1.4545302173466009e+01 1.0975430110773127e+01 1.0650801833310501e+01 0 0 0
+24 0 1 0.0000000000000000e+00 2.0976022176734652e+01 1.0187411348687290e+01 1.9486164174864711e+00 -1 0 0
+467 0 1 0.0000000000000000e+00 2.3212760512273668e+01 9.8724172343319658e+00 3.9871776404616779e+00 -1 0 1
+28 0 1 0.0000000000000000e+00 2.7002231280541649e+00 2.4994604174260413e+00 8.0901543098121742e+00 0 0 0
+108 0 1 0.0000000000000000e+00 5.1968791484743875e+00 2.8758491178501178e+00 5.8201553996980637e+00 0 0 0
+25 0 1 0.0000000000000000e+00 3.0538358028107551e+00 5.1308299111811166e+00 5.7808974110953137e+00 0 0 0
+101 0 1 0.0000000000000000e+00 6.5887122028880665e+00 2.8984295716047193e+00 8.7398256919275319e+00 0 0 0
+103 0 1 0.0000000000000000e+00 8.3529940487157788e+00 3.5030461877920520e+00 6.1234713788068715e+00 0 0 0
+206 0 1 0.0000000000000000e+00 1.2278686477573610e+01 3.0958608770468294e+00 6.5974517776313206e+00 0 0 0
+112 0 1 0.0000000000000000e+00 9.9337827443303137e+00 2.7891672255702735e+00 8.8559244821184784e+00 0 0 0
+214 0 1 0.0000000000000000e+00 1.5474735918014355e+01 3.7034482008302065e+00 6.9959515465069710e+00 0 0 0
+2 0 1 0.0000000000000000e+00 1.7619952834777237e+01 4.5021981620296678e+00 5.0135687080915563e+00 -1 0 0
+17 0 1 0.0000000000000000e+00 1.8868810434308159e+01 4.2760511228207214e+00 7.6941824512690653e+00 0 0 0
+484 0 1 0.0000000000000000e+00 1.7691992865259806e+01 1.5762904178768657e+00 6.9970005908249870e+00 -1 1 1
+82 0 1 0.0000000000000000e+00 2.3259515296696200e+01 2.8358776322811510e+00 5.3760095349365429e+00 -1 1 0
+182 0 1 0.0000000000000000e+00 2.1061814251161493e+01 2.1983167270986339e+00 7.3828753763041233e+00 -1 1 0
+194 0 1 0.0000000000000000e+00 2.2897144225227912e+01 4.5497676733290309e+00 8.2054317594631350e+00 0 1 0
+19 0 1 0.0000000000000000e+00 2.1040214995339156e+01 5.0844399216961929e+00 5.7206574463042186e+00 0 0 0
+27 0 1 0.0000000000000000e+00 4.0462773636446530e+00 7.8336551281969493e+00 6.8123871414338080e+00 0 0 0
+126 0 1 0.0000000000000000e+00 4.1419587763016219e+00 5.0877466447992719e+00 8.8054782268372609e+00 0 0 0
+42 0 1 0.0000000000000000e+00 1.8154499642630371e+00 7.0422292906344603e+00 8.9720337262032004e+00 0 0 0
+11 0 1 0.0000000000000000e+00 6.2438034475539155e+00 5.6366856154330298e+00 6.5405266462438112e+00 0 0 0
+127 0 1 0.0000000000000000e+00 8.2350912767675624e+00 8.0751547990188755e+00 6.8332441009060263e+00 0 0 0
+230 0 1 0.0000000000000000e+00 1.0418686828750106e+01 5.8162818556983522e+00 6.4912875650631285e+00 0 0 0
+118 0 1 0.0000000000000000e+00 1.1138175450894529e+01 8.4424825461843565e+00 7.4874288557168427e+00 0 0 0
+115 0 1 0.0000000000000000e+00 1.5540437844865567e+01 6.4479948015787922e+00 4.9684850469153456e+00 0 0 0
+355 0 1 0.0000000000000000e+00 1.3310475581269706e+01 6.1519415705927365e+00 7.2171082386157011e+00 0 0 0
+136 0 1 0.0000000000000000e+00 1.3410550341645537e+01 8.9429441166275048e+00 5.4380200060462673e+00 0 0 0
+119 0 1 0.0000000000000000e+00 1.6608924172777378e+01 6.3711766524929612e+00 7.9399893134919726e+00 0 0 0
+57 0 1 0.0000000000000000e+00 1.8819285286249752e+01 7.1521712617970721e+00 5.9269730593451069e+00 0 0 0
+37 0 1 0.0000000000000000e+00 2.3458803173418332e+01 7.3078353717367213e+00 5.8456094236601643e+00 0 0 0
+233 0 1 0.0000000000000000e+00 2.0758304748363244e+01 6.7025338851559004e+00 8.4063396600417803e+00 0 0 0
+163 0 1 0.0000000000000000e+00 1.6882305248393552e+00 1.0063092014698205e+01 7.2396321929030307e+00 0 0 0
+38 0 1 0.0000000000000000e+00 5.9889407520638755e+00 1.0276103182445789e+01 6.9235358815151979e+00 1 0 0
+145 0 1 0.0000000000000000e+00 9.1471977082793536e+00 1.0850609673219537e+01 7.6977001138812389e+00 0 0 0
+47 0 1 0.0000000000000000e+00 1.1389201161233851e+01 1.1207654712573008e+01 5.5925778073693744e+00 0 0 0
+246 0 1 0.0000000000000000e+00 1.3770383944632808e+01 1.1072815382109791e+01 7.5084109529788314e+00 0 0 0
+151 0 1 0.0000000000000000e+00 1.6407921369973607e+01 9.2719794934019983e+00 6.7527488841679757e+00 0 0 0
+326 0 1 0.0000000000000000e+00 1.5895716495942827e+01 1.1794663701006193e+01 5.1794801210964900e+00 0 0 0
+173 0 1 0.0000000000000000e+00 1.8941088016519956e+01 9.2714831994880473e+00 8.1972955625890940e+00 0 0 0
+234 0 1 0.0000000000000000e+00 1.8628770672886411e+01 1.1906807532071170e+01 6.4584232052887298e+00 0 0 0
+171 0 1 0.0000000000000000e+00 1.6625546749433759e+01 1.1631631395475454e+01 8.4686815284114942e+00 0 0 0
+4 0 1 0.0000000000000000e+00 2.2041300268447976e+01 9.4466540121312086e+00 9.3415000791272025e+00 -1 0 0
+238 0 1 0.0000000000000000e+00 2.1221113035554417e+01 9.2915196687798911e+00 6.2472071087933614e+00 0 0 0
+140 0 1 0.0000000000000000e+00 2.1473514865095034e+01 1.1760670046433813e+01 7.6089838952949096e+00 0 0 0
+104 0 1 0.0000000000000000e+00 4.3771997179265520e+00 2.5438958350246841e+00 1.0633036184813228e+01 0 0 0
+353 0 1 0.0000000000000000e+00 2.1417673611257202e+00 4.4746449561329937e+00 1.0751976693850574e+01 1 0 0
+225 0 1 0.0000000000000000e+00 7.8501773382614841e+00 2.2743528441256955e+00 1.1336610517574817e+01 0 0 0
+303 0 1 0.0000000000000000e+00 6.2862990489055317e+00 4.9068647278986610e+00 1.1116746373470553e+01 0 0 0
+211 0 1 0.0000000000000000e+00 1.0924566200359624e+01 2.7479679227462608e+00 1.1606497932119344e+01 0 0 0
+290 0 1 0.0000000000000000e+00 1.2967021581118788e+01 3.3367523069560177e+00 9.3979448500603908e+00 0 1 0
+216 0 1 0.0000000000000000e+00 1.4709712982932345e+01 2.7274533815710473e+00 1.1779269182090347e+01 0 0 0
+144 0 1 0.0000000000000000e+00 9.0477309974880793e+00 9.8903274768612235e+00 1.2350522950766532e+01 0 0 0
+190 0 1 0.0000000000000000e+00 1.9289402891531871e+01 1.4788739121498866e+00 9.5174573864329357e+00 0 1 0
+334 0 1 0.0000000000000000e+00 1.6966680657821662e+01 3.4155144066069205e+00 9.8861143744508428e+00 0 0 0
+239 0 1 0.0000000000000000e+00 2.0753182942074879e+01 1.4841331991270519e+00 1.2150085491769383e+01 0 0 0
+337 0 1 0.0000000000000000e+00 2.2861491866501161e+01 1.9048489445635588e+00 9.9303295729431884e+00 0 0 0
+124 0 1 0.0000000000000000e+00 2.0540467712337552e+01 4.0729234253453210e+00 1.0215744086356619e+01 -1 0 0
+321 0 1 0.0000000000000000e+00 3.8862757170149851e+00 7.0668438694155702e+00 1.1104507495418543e+01 0 0 0
+129 0 1 0.0000000000000000e+00 8.3309640873471551e+00 5.3305884202069533e+00 8.7118064458331155e+00 0 0 0
+224 0 1 0.0000000000000000e+00 6.1131935696922941e+00 7.3641696659455178e+00 9.0343803226786381e+00 0 0 0
+106 0 1 0.0000000000000000e+00 6.9185081354472109e+00 7.6132750919804062e+00 1.1958087776960154e+01 0 0 0
+227 0 1 0.0000000000000000e+00 9.1902962274113413e+00 5.2524555564395614e+00 1.1632393749345729e+01 0 0 0
+204 0 1 0.0000000000000000e+00 9.0341401427285035e+00 8.1842569568535453e+00 9.8670071883080634e+00 0 0 0
+240 0 1 0.0000000000000000e+00 1.1257548009450401e+01 5.9986707464670097e+00 9.4552835870399328e+00 0 0 0
+265 0 1 0.0000000000000000e+00 1.1302792379047222e+01 7.9519929071416540e+00 1.1897008897625129e+01 0 0 0
+157 0 1 0.0000000000000000e+00 2.1193160549469887e+01 1.2171912275577029e+01 4.4172607076631500e+00 0 0 0
+330 0 1 0.0000000000000000e+00 1.3718748960407382e+01 8.4608684951998789e+00 9.0971082568728914e+00 0 0 0
+332 0 1 0.0000000000000000e+00 1.4771468424790942e+01 5.7347085231586741e+00 1.0096418079196415e+01 0 0 0
+155 0 1 0.0000000000000000e+00 2.2134325533518570e+01 1.1408651593522311e+01 1.1757651886792067e+01 0 0 0
+231 0 1 0.0000000000000000e+00 1.8259377130251856e+01 5.9444807098576868e+00 1.0621308398543894e+01 0 0 0
+40 0 1 0.0000000000000000e+00 2.0048015792272295e+01 8.5441680243560150e+00 1.1216289602688668e+01 0 0 0
+250 0 1 0.0000000000000000e+00 2.2243375732112355e+01 6.5388183511684304e+00 1.1093760202378377e+01 0 0 0
+150 0 1 0.0000000000000000e+00 1.6754394698650515e+01 8.6258820235837490e+00 1.0306018849887309e+01 0 0 0
+221 0 1 0.0000000000000000e+00 1.7571799767291794e+00 9.0778599604756103e+00 1.1369209657524888e+01 0 0 0
+323 0 1 0.0000000000000000e+00 4.7694538418767110e+00 9.6833400365956077e+00 1.2467618431356856e+01 0 0 0
+237 0 1 0.0000000000000000e+00 4.0846409738337872e+00 9.5769979162767527e+00 9.2245621516570306e+00 1 0 0
+261 0 1 0.0000000000000000e+00 1.8365716398920666e+00 1.1740851523687301e+01 9.7883228867300343e+00 0 0 0
+122 0 1 0.0000000000000000e+00 6.8917400493163576e+00 1.0228162933923382e+01 1.0220598265069283e+01 0 0 0
+172 0 1 0.0000000000000000e+00 1.1380874270361115e+01 1.0195363436868565e+01 9.9229683626863601e+00 0 0 0
+373 0 1 0.0000000000000000e+00 1.2593004071138997e+01 5.2565859628020055e+00 1.1994897294711102e+01 0 0 0
+333 0 1 0.0000000000000000e+00 1.4207162238593673e+01 8.2154339337178257e+00 1.2365152188286844e+01 0 0 0
+488 0 1 0.0000000000000000e+00 4.1164793617714075e+00 4.0990165065621831e+00 1.3209210006912739e+01 0 1 0
+324 0 1 0.0000000000000000e+00 1.8618371169221084e+00 3.7554971977717782e+00 1.5228098647461211e+01 0 0 0
+401 0 1 0.0000000000000000e+00 5.0798537646145467e+00 4.6776585105088939e+00 1.6002067222728630e+01 0 0 0
+23 0 1 0.0000000000000000e+00 2.3254920311013528e+01 1.0748884094403763e+01 2.2313462667033555e+01 -1 0 -1
+125 0 1 0.0000000000000000e+00 2.1631360998674745e+00 1.8636197199059517e+00 1.2564338108836596e+01 0 0 0
+257 0 1 0.0000000000000000e+00 2.5925105977143224e+00 1.1868602145997393e+01 1.2904761896702663e+01 1 0 0
+433 0 1 0.0000000000000000e+00 8.7257779174172825e+00 2.4195525279989276e+00 1.4131073084834959e+01 0 0 0
+305 0 1 0.0000000000000000e+00 7.1906978095803034e+00 4.8988811292497099e+00 1.3814628706576377e+01 0 0 0
+492 0 1 0.0000000000000000e+00 1.0571280218349125e+01 4.8545809026986042e+00 1.4330523805834208e+01 0 1 0
+356 0 1 0.0000000000000000e+00 1.2583548477751293e+01 2.3159009789708307e+00 1.3845350255309803e+01 0 0 0
+314 0 1 0.0000000000000000e+00 1.5812682233679686e+01 2.9164988866865098e+00 1.4545104707233911e+01 0 0 0
+311 0 1 0.0000000000000000e+00 2.0193225424877809e+01 3.4343640189830977e+00 1.4953695776120075e+01 0 0 0
+300 0 1 0.0000000000000000e+00 2.2499538999876989e+01 1.4415502856452518e+00 1.4860159143165914e+01 0 1 0
+18 0 1 0.0000000000000000e+00 2.2542261665893385e+01 4.0940458289570012e+00 1.2923915248195664e+01 0 0 0
+117 0 1 0.0000000000000000e+00 1.8964844661271032e+00 6.2654386331129288e+00 1.3293240091600872e+01 1 0 0
+188 0 1 0.0000000000000000e+00 4.8029744400691676e+00 7.0026557709450366e+00 1.4112476660413199e+01 0 1 0
+322 0 1 0.0000000000000000e+00 2.6519230692744160e+00 6.8699148996986112e+00 1.6360989988752095e+01 0 0 0
+228 0 1 0.0000000000000000e+00 9.1569041908116091e+00 7.2903849830173586e+00 1.4167134293073987e+01 0 0 0
+167 0 1 0.0000000000000000e+00 1.2218178105918815e+01 7.6214318224137294e+00 1.4777541732015129e+01 0 0 0
+340 0 1 0.0000000000000000e+00 1.3746671132557330e+01 4.9182065657617988e+00 1.4884502566570092e+01 0 0 0
+455 0 1 0.0000000000000000e+00 1.5696925435687897e+01 7.5911354926407428e+00 1.4987981243563214e+01 0 0 0
+336 0 1 0.0000000000000000e+00 1.6021671461177625e+01 5.4598806822493238e+00 1.2703023763647469e+01 0 0 0
+458 0 1 0.0000000000000000e+00 1.7809761851096688e+01 5.3692593496648620e+00 1.5081418082656997e+01 0 0 0
+179 0 1 0.0000000000000000e+00 1.7834993389666217e+01 8.1297322513180532e+00 1.3133447612302430e+01 0 0 0
+349 0 1 0.0000000000000000e+00 1.9585879305724426e+01 7.9180295367651681e+00 1.5600350090889643e+01 0 0 0
+20 0 1 0.0000000000000000e+00 2.0130933975248084e+01 5.7787610288485807e+00 1.2939511138237973e+01 0 0 0
+212 0 1 0.0000000000000000e+00 2.1923573995225837e+01 5.9367192581548709e+00 1.5573782393567516e+01 0 0 0
+244 0 1 0.0000000000000000e+00 2.1881144968941271e+01 8.6052945409576882e+00 1.3420115281942246e+01 -1 0 0
+123 0 1 0.0000000000000000e+00 2.3602340083186446e+00 9.2093255110198271e+00 1.4323083606352151e+01 0 0 0
+242 0 1 0.0000000000000000e+00 4.8095690432686657e+00 1.1590679157288836e+01 1.4888624098092260e+01 0 0 0
+343 0 1 0.0000000000000000e+00 7.6601080261573520e+00 1.2151522931530412e+01 1.5843880787559547e+01 0 0 0
+222 0 1 0.0000000000000000e+00 7.0824663385221021e+00 9.4883779113104456e+00 1.4632453069685052e+01 0 0 0
+247 0 1 0.0000000000000000e+00 6.9174877588221495e+00 1.1964639032963760e+01 1.2615692926094795e+01 0 0 0
+251 0 1 0.0000000000000000e+00 1.2239562356911113e+01 1.0632786887771957e+01 1.3121320079555897e+01 0 0 0
+306 0 1 0.0000000000000000e+00 1.0026803296145593e+01 1.0078713333550780e+01 1.5145204141363529e+01 0 0 0
+345 0 1 0.0000000000000000e+00 1.1911060183772097e+01 1.2250762511658607e+01 1.5894746059016711e+01 0 0 0
+253 0 1 0.0000000000000000e+00 1.3887070532159820e+01 9.9996295000654243e+00 1.5476485525662495e+01 0 0 0
+260 0 1 0.0000000000000000e+00 1.6366328727111540e+01 1.0619584054284898e+01 1.3047747213972363e+01 0 0 0
+256 0 1 0.0000000000000000e+00 1.9415900341559272e+01 1.0789832273680988e+01 1.3868791258167031e+01 0 0 0
+254 0 1 0.0000000000000000e+00 1.7121423244850583e+01 1.0352616436279636e+01 1.6060674911208586e+01 0 0 0
+236 0 1 0.0000000000000000e+00 2.2455182918551223e+01 1.1727886603111667e+01 1.4668855710225973e+01 0 0 0
+383 0 1 0.0000000000000000e+00 3.3812669094705652e+00 3.0075490604361104e+00 1.7756663865814012e+01 0 1 0
+388 0 1 0.0000000000000000e+00 5.8030069198898637e+00 1.4696956933268188e+00 1.6806926635360433e+01 0 1 0
+90 0 1 0.0000000000000000e+00 8.5138637067960943e+00 4.1771393564373396e+00 1.6536653606659453e+01 0 1 -1
+400 0 1 0.0000000000000000e+00 6.3449909655856178e+00 3.5262616496845469e+00 1.8720630222405049e+01 0 1 0
+445 0 1 0.0000000000000000e+00 2.0310296144931570e+01 1.0098594982589558e+01 2.1448009865433455e+01 -1 0 0
+331 0 1 0.0000000000000000e+00 1.0880877264345207e+01 1.7858746342622409e+00 1.6289244655907467e+01 0 0 0
+316 0 1 0.0000000000000000e+00 1.1592332763403485e+01 2.0630527909795804e+00 1.9095353209262122e+01 0 0 0
+434 0 1 0.0000000000000000e+00 9.4826194285641208e+00 4.2789317078097007e+00 1.9295924863288604e+01 0 0 0
+375 0 1 0.0000000000000000e+00 1.1826770809314681e+01 4.6724762987121826e+00 1.7216411950075091e+01 0 0 0
+410 0 1 0.0000000000000000e+00 1.3969686169074370e+01 2.3345386337055301e+00 1.6797961497988176e+01 0 0 0
+53 0 1 0.0000000000000000e+00 1.3863212596044733e+01 4.1210486237047075e+00 1.9320093404204009e+01 0 0 -1
+338 0 1 0.0000000000000000e+00 1.5887610477521353e+01 1.9085176210457742e+00 1.9197556225075864e+01 0 0 0
+357 0 1 0.0000000000000000e+00 1.5741494271196864e+01 4.7907185482084067e+00 1.7041357570731677e+01 0 0 0
+296 0 1 0.0000000000000000e+00 1.7672706974721883e+01 2.5753011239896137e+00 1.7042414476303335e+01 0 1 0
+34 0 1 0.0000000000000000e+00 1.9099946522520042e+01 2.5744769663208737e+00 1.9647631019753597e+01 0 0 -1
+320 0 1 0.0000000000000000e+00 2.1571346056806853e+01 2.8874176750456106e+00 1.7706413248865950e+01 0 0 0
+85 0 1 0.0000000000000000e+00 2.3574855921502689e+01 2.6262017320601059e+00 1.9979101316051363e+01 -1 1 -1
+384 0 1 0.0000000000000000e+00 4.3177746803471297e+00 5.9749246163023839e+00 1.8619897282329354e+01 0 1 0
+259 0 1 0.0000000000000000e+00 2.3864714973720877e+00 8.4609897189262249e+00 1.8949033312631457e+01 1 0 0
+302 0 1 0.0000000000000000e+00 7.0448063740996227e+00 7.0490610140969245e+00 1.6260210886259436e+01 0 0 0
+402 0 1 0.0000000000000000e+00 7.5909632228594974e+00 6.6931287219242392e+00 1.9371807653092013e+01 0 0 0
+208 0 1 0.0000000000000000e+00 9.9247952974342724e+00 7.0383014872205871e+00 1.7002209056949006e+01 0 0 0
+351 0 1 0.0000000000000000e+00 1.1879776398427904e+01 6.6099448033227794e+00 1.9513746882110986e+01 0 0 0
+271 0 1 0.0000000000000000e+00 1.3976596928236486e+01 7.1427966181414781e+00 1.7234124044409391e+01 0 0 0
+335 0 1 0.0000000000000000e+00 1.9294976324973391e+01 5.1600544282266156e+00 1.7787420696865667e+01 0 0 0
+379 0 1 0.0000000000000000e+00 1.7117172681673445e+01 7.7028181254794132e+00 1.7889707856343563e+01 0 0 0
+219 0 1 0.0000000000000000e+00 2.3610811278298456e+01 5.0429058291665871e+00 1.8103935684119953e+01 0 0 0
+304 0 1 0.0000000000000000e+00 2.1442700750376972e+01 7.0869637161825336e+00 1.8512426548835450e+01 -1 0 0
+441 0 1 0.0000000000000000e+00 4.5906953079995780e+00 9.0277819450956205e+00 1.6573131372583411e+01 0 0 0
+342 0 1 0.0000000000000000e+00 2.2692520126875086e+00 1.1099902024864269e+01 1.6949507723156966e+01 0 0 0
+308 0 1 0.0000000000000000e+00 5.3296845382134101e+00 8.7350272828315916e+00 1.9612305231015249e+01 0 0 0
+428 0 1 0.0000000000000000e+00 5.3915324830782243e+00 1.1613953591253386e+01 1.8046180039862001e+01 0 0 0
+325 0 1 0.0000000000000000e+00 7.6943142464497587e+00 9.6373872877309879e+00 1.7695343283622407e+01 0 0 0
+328 0 1 0.0000000000000000e+00 9.8123031561883405e+00 8.8499010409052055e+00 1.9656706304581093e+01 0 0 0
+327 0 1 0.0000000000000000e+00 9.7770526941306439e+00 1.1930774951233404e+01 1.8033201468580636e+01 0 0 0
+350 0 1 0.0000000000000000e+00 1.1761145280112277e+01 9.4272474506740345e+00 1.7599843420649762e+01 0 0 0
+453 0 1 0.0000000000000000e+00 1.2729455668227722e+01 1.2108825309821141e+01 1.9093963167850191e+01 0 0 0
+374 0 1 0.0000000000000000e+00 1.5223566559407070e+01 9.9830386756408274e+00 1.8365552409168814e+01 0 0 0
+280 0 1 0.0000000000000000e+00 1.7375503486713797e+01 1.2142883296292213e+01 1.8656498784143139e+01 0 0 0
+354 0 1 0.0000000000000000e+00 1.9464833136523538e+01 9.8541018013322006e+00 1.8325489337744962e+01 0 0 0
+444 0 1 0.0000000000000000e+00 1.9747403261711497e+01 1.2405076921565701e+01 1.6586532385340497e+01 -1 0 0
+437 0 1 0.0000000000000000e+00 2.2520075431197213e+01 8.8387339168055572e+00 1.6273942260063940e+01 0 0 0
+422 0 1 0.0000000000000000e+00 2.2433725706274267e+01 1.0367304500902177e+01 1.9104732581829602e+01 -1 0 0
+59 0 1 0.0000000000000000e+00 1.8049189813465034e+01 1.2204020502933753e+01 2.1739483210648338e+01 0 0 -1
+421 0 1 0.0000000000000000e+00 4.1582864285889025e+00 3.6941694502206053e+00 2.0636972843787639e+01 0 0 0
+88 0 1 0.0000000000000000e+00 1.9179922220956085e+00 2.9242277661132814e+00 2.2849860236960161e+01 0 1 -1
+339 0 1 0.0000000000000000e+00 1.7515711324481543e+01 9.4664643454244359e+00 2.0551598017266855e+01 0 0 0
+431 0 1 0.0000000000000000e+00 7.1271853689417393e+00 4.1616743932209497e+00 2.1590726777750739e+01 0 0 0
+31 0 1 0.0000000000000000e+00 9.2353370680273663e+00 1.8173305015613674e+00 2.1124184725472375e+01 0 0 -1
+12 0 1 0.0000000000000000e+00 1.1598368662495300e+01 4.1473201393828445e+00 2.1379803890809363e+01 0 0 -1
+116 0 1 0.0000000000000000e+00 9.4458779080319673e+00 3.8045176578876108e+00 2.3639356353008750e+01 0 0 -1
+435 0 1 0.0000000000000000e+00 1.3791877751130915e+01 1.6014652731076167e+00 2.1323473079251038e+01 0 0 0
+279 0 1 0.0000000000000000e+00 1.4551370934380211e+01 4.5672675283861563e+00 2.2238486370239130e+01 0 0 0
+315 0 1 0.0000000000000000e+00 1.6896177512243430e+01 4.7832843647316636e+00 1.9971034982831675e+01 0 0 0
+414 0 1 0.0000000000000000e+00 1.6923197275431505e+01 2.2717995722412248e+00 2.2011995850078435e+01 0 0 0
+459 0 1 0.0000000000000000e+00 1.8942676862900456e+01 4.5245844734966107e+00 2.2405515476817158e+01 0 0 0
+359 0 1 0.0000000000000000e+00 2.1333127323624623e+01 2.4320625939644893e+00 2.2140195986222992e+01 0 0 0
+419 0 1 0.0000000000000000e+00 2.1434893742916799e+01 4.9920801296786461e+00 2.0426934722514908e+01 0 0 0
+483 0 1 0.0000000000000000e+00 1.7864311697222177e+00 5.5903812593139088e+00 2.1019609148315730e+01 0 1 0
+403 0 1 0.0000000000000000e+00 2.8504947212350182e+00 8.3319835733873742e+00 2.1979459749607948e+01 0 0 0
+329 0 1 0.0000000000000000e+00 5.0914039792036263e+00 6.3841965491922554e+00 2.1415877871925510e+01 0 0 0
+52 0 1 0.0000000000000000e+00 7.5572368942784678e+00 8.7635270153274885e+00 2.1826645768385795e+01 0 0 -1
+425 0 1 0.0000000000000000e+00 9.6013262017411556e+00 6.3777016624773371e+00 2.1402255007408606e+01 0 0 0
+133 0 1 0.0000000000000000e+00 1.2696006407850435e+01 6.9960491974752772e+00 2.2226880788893453e+01 0 0 -1
+360 0 1 0.0000000000000000e+00 1.4880764583126753e+01 7.3288828599512454e+00 2.0012902094430643e+01 0 0 0
+438 0 1 0.0000000000000000e+00 1.9277631259587132e+01 7.1045485909543062e+00 2.0441487380226057e+01 0 0 0
+454 0 1 0.0000000000000000e+00 1.6793690497011511e+01 6.8032905081177795e+00 2.2695065729678035e+01 0 0 0
+86 0 1 0.0000000000000000e+00 2.2359975082167686e+01 5.2004515733304624e+00 2.3275526301718003e+01 -1 1 -1
+424 0 1 0.0000000000000000e+00 2.0227211599841475e+01 7.1788479727081382e+00 2.3227977679892817e+01 -1 0 0
+6 0 1 0.0000000000000000e+00 2.2461763058488742e+01 7.8827115311442428e+00 2.1327406777027477e+01 -1 0 -1
+447 0 1 0.0000000000000000e+00 3.0314904272120859e+00 1.1066943895123893e+01 2.0168586995082734e+01 0 0 0
+49 0 1 0.0000000000000000e+00 7.6048772496803805e+00 1.1414139376330143e+01 2.0154664812343761e+01 0 0 -1
+83 0 1 0.0000000000000000e+00 5.1254075552968388e+00 1.0395412526116033e+01 2.2316151443354947e+01 0 0 -1
+41 0 1 0.0000000000000000e+00 8.2285226427854887e+00 1.1612210163954966e+01 2.3094991855982784e+01 0 0 -1
+45 0 1 0.0000000000000000e+00 1.0487023758214310e+01 9.1795466512066710e+00 2.2701209780816775e+01 0 0 -1
+55 0 1 0.0000000000000000e+00 1.0376800759325057e+01 1.1727853384696413e+01 2.0928769177085897e+01 0 0 -1
+477 0 1 0.0000000000000000e+00 1.4847389859335632e+01 9.0948699619919608e+00 2.3030930269775780e+01 0 0 0
+77 0 1 0.0000000000000000e+00 1.2603448854973449e+01 1.1321433263985758e+01 2.2731701093948395e+01 0 0 -1
+442 0 1 0.0000000000000000e+00 1.5335025721396944e+01 1.1642280058659042e+01 2.0955086104926608e+01 -1 0 0
+436 0 1 0.0000000000000000e+00 1.2833152428285830e+01 9.3925941499027594e+00 2.0350722132419833e+01 0 0 0
+466 0 1 0.0000000000000000e+00 5.1433904089859688e+00 3.4577380006646625e+00 2.3583602056343409e+01 0 1 0
+443 0 1 0.0000000000000000e+00 1.8109080645425081e+01 9.4438142369403266e+00 2.3600948234243198e+01 -1 0 0
+391 0 1 0.0000000000000000e+00 8.4397722192004387e+00 1.3452445101436865e+00 1.8254964765813689e+01 0 1 0
+451 0 1 0.0000000000000000e+00 1.5131657755784397e+01 1.2493331927132965e+01 1.6614216464949251e+01 0 0 0
+318 0 1 0.0000000000000000e+00 1.8292183000201121e+01 3.2321904200724951e+00 1.2603174285696097e+01 0 0 0
+43 0 1 0.0000000000000000e+00 3.7895384721386538e+00 1.2840587003918733e+01 3.3864837165602251e+00 0 0 0
+165 0 1 0.0000000000000000e+00 3.7019202504075444e+00 1.5264501560193352e+01 2.0110036598090808e+00 0 0 0
+79 0 1 0.0000000000000000e+00 8.4014906770995008e+00 1.3361996824844294e+01 3.0340084663236881e+00 1 0 0
+288 0 1 0.0000000000000000e+00 6.3492466321250358e+00 1.5713404562175285e+01 3.3870634096487273e+00 0 0 0
+146 0 1 0.0000000000000000e+00 1.1403670196767704e+01 1.3958663112072415e+01 3.7654664093269314e+00 0 0 0
+148 0 1 0.0000000000000000e+00 9.2396418082895142e+00 1.6219917935780618e+01 3.9984383471988107e+00 0 0 0
+135 0 1 0.0000000000000000e+00 1.3699275108956758e+01 1.4366620823875245e+01 1.6611960331579791e+00 0 0 0
+156 0 1 0.0000000000000000e+00 1.6264157579228716e+01 1.4267967444023617e+01 3.3689982390393785e+00 0 0 0
+71 0 1 0.0000000000000000e+00 1.3884967612634769e+01 1.6328056164119925e+01 4.2336855164929492e+00 0 0 0
+293 0 1 0.0000000000000000e+00 1.8993248711821479e+01 1.4688969283842177e+01 4.5020685618916279e+00 0 0 0
+161 0 1 0.0000000000000000e+00 2.3681334128638525e+01 1.5124505218697401e+01 4.1003253231305337e+00 -1 0 0
+75 0 1 0.0000000000000000e+00 2.1102450349908338e+01 1.5021773260010294e+01 2.3449287647964026e+00 0 0 0
+381 0 1 0.0000000000000000e+00 2.1323746391325230e+01 2.1700613018754765e+01 9.4150074620639916e+00 -1 0 0
+87 0 1 0.0000000000000000e+00 4.2205050618019859e+00 1.7915049156216213e+01 3.6908163219399683e+00 0 0 0
+469 0 1 0.0000000000000000e+00 6.3188004325123579e+00 1.8309682522616782e+01 1.5933337051659640e+00 0 0 1
+184 0 1 0.0000000000000000e+00 7.0966580959380963e+00 1.8637522383994870e+01 4.6149777609102571e+00 0 0 0
+142 0 1 0.0000000000000000e+00 1.1657760910181441e+01 1.6670067657592746e+01 1.9461619293264243e+00 0 0 0
+13 0 1 0.0000000000000000e+00 9.3730049007884073e+00 1.8920787569450148e+01 2.5109304321955284e+00 0 -1 0
+70 0 1 0.0000000000000000e+00 1.1498790472099246e+01 1.8461154351475720e+01 4.6298390590008660e+00 0 0 0
+76 0 1 0.0000000000000000e+00 1.3860095943958832e+01 1.9057001015699171e+01 2.3725219861678433e+00 0 0 0
+480 0 1 0.0000000000000000e+00 1.5831768388070657e+01 1.6817380528074509e+01 2.0394446553794570e+00 0 0 1
+81 0 1 0.0000000000000000e+00 1.8864796137199221e+01 1.7458130441896159e+01 2.7898115617550747e+00 -1 0 0
+93 0 1 0.0000000000000000e+00 1.6888748720545330e+01 1.9695449243745138e+01 3.1984792680122269e+00 0 0 0
+94 0 1 0.0000000000000000e+00 1.6779915175059340e+01 1.6912170601546269e+01 5.1581624142862790e+00 0 0 0
+138 0 1 0.0000000000000000e+00 1.4843823874475570e+00 1.2552824822468773e+01 5.4845438444564971e+00 1 0 0
+3 0 1 0.0000000000000000e+00 1.4359956440101140e+00 1.7753343575525527e+01 2.4629226361185852e+00 0 -1 0
+197 0 1 0.0000000000000000e+00 2.1182896732343927e+01 1.9528564213867476e+01 3.2388058287189008e+00 0 0 0
+154 0 1 0.0000000000000000e+00 2.1395173196152093e+01 1.7110820091889067e+01 4.9417328604424497e+00 0 0 0
+223 0 1 0.0000000000000000e+00 1.7349910109591247e+00 2.0192867582978955e+01 4.1224968053539879e+00 0 -1 0
+102 0 1 0.0000000000000000e+00 4.0383455955239347e+00 2.0654766065917883e+01 1.9438044657554956e+00 0 -1 0
+98 0 1 0.0000000000000000e+00 1.9782034461805176e+00 2.2835121636424638e+01 2.5925719406065593e+00 1 0 0
+406 0 1 0.0000000000000000e+00 5.0536329748605375e+00 2.3520298792736803e+01 3.1068482568416336e+00 0 -1 1
+166 0 1 0.0000000000000000e+00 5.0916494126286178e+00 2.0894888277893202e+01 4.9871067921187962e+00 0 0 0
+67 0 1 0.0000000000000000e+00 7.0850056443420240e+00 2.1424306072509189e+01 2.9414924851205368e+00 0 0 0
+169 0 1 0.0000000000000000e+00 1.1558699212943202e+01 2.1245115253834307e+01 2.8902749081786356e+00 0 0 0
+111 0 1 0.0000000000000000e+00 9.4493275827341012e+00 2.3517339791855640e+01 3.1097002329932169e+00 0 -1 0
+193 0 1 0.0000000000000000e+00 9.2754565238586490e+00 2.0600352707939891e+01 5.1318024231219042e+00 0 0 0
+110 0 1 0.0000000000000000e+00 1.4496193691453273e+01 2.1760713531123329e+01 3.6863982572419469e+00 0 -1 0
+16 0 1 0.0000000000000000e+00 1.6839128186971749e+01 2.2242742649481769e+01 1.5265233688503232e+00 0 -1 0
+97 0 1 0.0000000000000000e+00 1.9165830574719770e+01 2.1917431292954539e+01 4.0133320144396709e+00 0 0 0
+407 0 1 0.0000000000000000e+00 2.1431326774306221e+01 2.2099683306476827e+01 1.4835517953744337e+00 -1 -1 1
+64 0 1 0.0000000000000000e+00 2.2079495464825179e+01 2.2546578628516762e+01 4.7279326994520154e+00 -1 0 0
+159 0 1 0.0000000000000000e+00 4.1545168101724208e+00 1.5222406649779931e+01 5.4915319165543970e+00 1 0 0
+141 0 1 0.0000000000000000e+00 1.9373605309732147e+00 1.4832347771201396e+01 7.5814702534455973e+00 0 0 0
+344 0 1 0.0000000000000000e+00 4.7669646706480631e+00 1.5261303828808087e+01 8.4790668411913224e+00 0 0 0
+68 0 1 0.0000000000000000e+00 2.2841483317306334e+01 2.1827926198765091e+01 1.2193685589909091e+01 -1 0 0
+128 0 1 0.0000000000000000e+00 6.3324473498896223e+00 1.3002396944026390e+01 5.1890970814000390e+00 0 0 0
+264 0 1 0.0000000000000000e+00 7.3339735317553938e+00 1.5841810037712390e+01 6.3844213033181711e+00 0 0 0
+248 0 1 0.0000000000000000e+00 6.9168328366666039e+00 1.2954438054674222e+01 8.2678255036160238e+00 0 0 0
+168 0 1 0.0000000000000000e+00 9.2801444941535625e+00 1.3496824157217713e+01 5.8696651812092462e+00 0 0 0
+147 0 1 0.0000000000000000e+00 1.1392652900903787e+01 1.2954287816802752e+01 8.0069443265262521e+00 0 0 0
+149 0 1 0.0000000000000000e+00 1.1278023479823455e+01 1.5882456412855278e+01 6.3046769182283331e+00 0 0 0
+269 0 1 0.0000000000000000e+00 9.1019052336994903e+00 1.5228889057788003e+01 8.7119185610543894e+00 0 0 0
+131 0 1 0.0000000000000000e+00 1.3681009394944784e+01 1.3685261684174774e+01 5.6046664738518430e+00 0 0 0
+73 0 1 0.0000000000000000e+00 1.4175642449756777e+01 1.3654694311301201e+01 8.8316536639306626e+00 0 0 0
+277 0 1 0.0000000000000000e+00 1.6695258248802038e+01 1.4186511864550493e+01 6.8826412853220384e+00 0 0 0
+183 0 1 0.0000000000000000e+00 2.1517767204603132e+01 1.4599076999519603e+01 6.3426697098935438e+00 -1 0 0
+158 0 1 0.0000000000000000e+00 1.8472252817442929e+00 1.7645703414290075e+01 6.0896940443511545e+00 1 0 0
+263 0 1 0.0000000000000000e+00 5.0756579261372572e+00 1.7905056962336857e+01 6.6422056166200525e+00 0 0 0
+56 0 1 0.0000000000000000e+00 9.2455977643781182e+00 1.8057736051586197e+01 6.7861120557822661e+00 0 0 0
+152 0 1 0.0000000000000000e+00 1.1989225630370726e+01 1.8375253094193319e+01 7.6721086597900694e+00 0 0 0
+189 0 1 0.0000000000000000e+00 1.4199001570455138e+01 1.6245034841029881e+01 7.0976952274137668e+00 0 0 0
+191 0 1 0.0000000000000000e+00 1.4535312059055725e+01 1.8951039330430319e+01 5.3591436031039406e+00 0 0 0
+91 0 1 0.0000000000000000e+00 1.8932688022061448e+01 1.6540072307678003e+01 7.2619182843281900e+00 0 0 0
+174 0 1 0.0000000000000000e+00 1.9000335355115425e+01 1.9266444227330183e+01 5.4261842171309000e+00 0 0 0
+14 0 1 0.0000000000000000e+00 1.6892769537542776e+01 1.8633873519126851e+01 7.7889323838489100e+00 0 -1 0
+201 0 1 0.0000000000000000e+00 1.9738544039265449e+01 1.9186576124349934e+01 8.5597676199980377e+00 -1 -1 0
+475 0 1 0.0000000000000000e+00 2.2280991815038689e+01 1.6920973182512856e+01 8.1726577404516014e+00 0 0 1
+162 0 1 0.0000000000000000e+00 2.1989545182967603e+01 1.9672388809723465e+01 6.3507847503499271e+00 -1 0 0
+164 0 1 0.0000000000000000e+00 3.0532372015273914e+00 2.0395374871021758e+01 7.0387216288775276e+00 0 0 0
+181 0 1 0.0000000000000000e+00 2.8462199213710795e+00 2.3218599563951166e+01 5.2537918607954097e+00 0 0 0
+186 0 1 0.0000000000000000e+00 4.9651168940061474e+00 2.2886078621851787e+01 8.2025976018716413e+00 0 0 0
+109 0 1 0.0000000000000000e+00 7.1395500504136509e+00 2.0209239745957255e+01 7.2195317282333340e+00 0 -1 0
+286 0 1 0.0000000000000000e+00 7.2455803370209226e+00 2.3221355934452049e+01 5.6328380972916081e+00 0 0 0
+268 0 1 0.0000000000000000e+00 7.9470121068469117e+00 2.2820268406627541e+01 8.7519890832262135e+00 0 0 0
+185 0 1 0.0000000000000000e+00 1.0286858950569618e+01 2.3589683249619156e+01 5.8762807651527043e+00 0 0 0
+392 0 1 0.0000000000000000e+00 1.0154195454618042e+01 2.0804740729693748e+01 8.2916535929784771e+00 0 0 0
+235 0 1 0.0000000000000000e+00 1.2368085211434659e+01 2.1123509174435689e+01 6.1537519383269244e+00 0 -1 0
+291 0 1 0.0000000000000000e+00 1.2075909615751115e+01 2.3146965097455421e+01 8.3539351928072243e+00 0 0 0
+95 0 1 0.0000000000000000e+00 1.4563717400229189e+01 2.3359917080259507e+01 6.3774486472287002e+00 0 0 0
+471 0 1 0.0000000000000000e+00 1.4519885772381118e+01 2.0387583592731509e+01 7.9637963125367000e+00 0 0 1
+420 0 1 0.0000000000000000e+00 1.6718172448453949e+01 2.1287667304682230e+01 5.9529399708050317e+00 0 -1 1
+84 0 1 0.0000000000000000e+00 1.9795088767643477e+01 2.1808053313508509e+01 6.9364471044800835e+00 -1 0 0
+282 0 1 0.0000000000000000e+00 2.3528016203683748e+01 2.2644100244575675e+01 7.4080488223065908e+00 -1 0 0
+377 0 1 0.0000000000000000e+00 2.5925785132928332e+00 1.4651884723045956e+01 1.0636168364177042e+01 1 0 0
+281 0 1 0.0000000000000000e+00 1.9220348006182711e+01 2.1104476352689630e+01 1.1526114099503586e+01 -1 0 0
+364 0 1 0.0000000000000000e+00 6.7452252241696540e+00 1.4818910540164078e+01 1.0805161605242473e+01 0 0 0
+365 0 1 0.0000000000000000e+00 1.0122600518860189e+01 1.5321656327107430e+01 1.1581683538984633e+01 0 0 0
+252 0 1 0.0000000000000000e+00 1.2088766810605197e+01 1.3009356387332442e+01 1.1131378395395334e+01 0 0 0
+249 0 1 0.0000000000000000e+00 1.2270821772324375e+01 1.5751009418214496e+01 9.4388231861618053e+00 0 0 0
+285 0 1 0.0000000000000000e+00 9.0734941575130392e+00 1.2503774291328003e+01 1.0413882101116361e+01 0 0 0
+292 0 1 0.0000000000000000e+00 1.4264849165232079e+01 1.5247857471810972e+01 1.1766937151473126e+01 0 0 0
+378 0 1 0.0000000000000000e+00 1.9102900428676257e+01 1.3735623292160982e+01 8.7961049464442844e+00 0 0 0
+272 0 1 0.0000000000000000e+00 1.6519702174904467e+01 1.3236492001457561e+01 1.1350924113156120e+01 0 0 0
+199 0 1 0.0000000000000000e+00 1.6603577083524002e+01 1.5861003937725588e+01 9.3341574411337263e+00 0 0 0
+274 0 1 0.0000000000000000e+00 1.9750046620987163e+01 1.3882432660863063e+01 1.1929043329286570e+01 0 0 0
+217 0 1 0.0000000000000000e+00 1.7470338073647682e+01 2.1512982464267317e+01 8.9758048814974352e+00 0 -1 0
+273 0 1 0.0000000000000000e+00 2.1905513365024227e+01 1.4095416261474517e+01 9.7880144001093203e+00 0 0 0
+283 0 1 0.0000000000000000e+00 2.7341724919248058e+00 1.7397575938806483e+01 9.3194385614973623e+00 0 0 0
+258 0 1 0.0000000000000000e+00 2.3543479307329811e+00 1.9121324970830017e+01 1.1901567833679202e+01 1 0 0
+399 0 1 0.0000000000000000e+00 4.8145879365857889e+00 1.6923563017592951e+01 1.1364984801232216e+01 1 0 0
+266 0 1 0.0000000000000000e+00 4.8970544262371138e+00 1.9879871827612959e+01 9.5114176214648118e+00 0 0 0
+301 0 1 0.0000000000000000e+00 6.9427481222480978e+00 1.7344010453819614e+01 9.1762114205061636e+00 0 -1 0
+262 0 1 0.0000000000000000e+00 7.6863984033261898e+00 1.7226194893726845e+01 1.2188556118218260e+01 0 0 0
+178 0 1 0.0000000000000000e+00 2.3404307609878309e+01 1.2623410656045472e+01 2.2959538353366913e+00 0 0 0
+241 0 1 0.0000000000000000e+00 4.0073732266180810e+00 1.2661998656839094e+01 7.1942523955664592e+00 0 0 0
+170 0 1 0.0000000000000000e+00 9.9135349117257370e+00 1.8121280710454450e+01 9.8163044238527881e+00 0 0 0
+370 0 1 0.0000000000000000e+00 1.2352018568294890e+01 1.7517441149518532e+01 1.2093622353566772e+01 0 0 0
+393 0 1 0.0000000000000000e+00 1.2250884106501193e+01 1.9957510410058717e+01 1.0346499815699350e+01 0 0 0
+176 0 1 0.0000000000000000e+00 1.4389695879633516e+01 1.7890886905699332e+01 9.6344431003459956e+00 0 0 0
+294 0 1 0.0000000000000000e+00 1.7415756111612815e+01 1.8701130889416341e+01 1.0681379581425521e+01 0 0 0
+198 0 1 0.0000000000000000e+00 1.9773268010837612e+01 1.6592072253337996e+01 1.0483410416385489e+01 0 0 0
+180 0 1 0.0000000000000000e+00 2.2920087832528679e+01 1.6764850150963643e+01 1.1121017742154484e+01 0 0 0
+278 0 1 0.0000000000000000e+00 2.1440765176805925e+01 1.9263999183432887e+01 1.1405344970781966e+01 0 0 0
+80 0 1 0.0000000000000000e+00 2.3658294200102290e+01 1.9931603892314079e+01 9.3244663150827467e+00 0 0 0
+218 0 1 0.0000000000000000e+00 2.6658497173629998e+00 2.2598433181951812e+01 1.0111775705261808e+01 1 -1 0
+289 0 1 0.0000000000000000e+00 7.8905196082931131e+00 2.0121991024131738e+01 1.0450016056166623e+01 0 0 0
+270 0 1 0.0000000000000000e+00 5.7569318561917129e+00 2.2232405251836518e+01 1.0966344362521648e+01 0 0 0
+187 0 1 0.0000000000000000e+00 9.8925151902567006e+00 2.2558625428323666e+01 1.0909379195860955e+01 0 0 0
+196 0 1 0.0000000000000000e+00 1.5055690372937109e+01 2.3437800810826225e+01 9.2333131810285423e+00 0 0 0
+209 0 1 0.0000000000000000e+00 1.2940051178255782e+01 2.2625992837838169e+01 1.1413433370997980e+01 0 -1 0
+192 0 1 0.0000000000000000e+00 1.5094537232641763e+01 2.0525101920496120e+01 1.1192453363626862e+01 0 0 0
+100 0 1 0.0000000000000000e+00 1.6986038155027558e+01 2.3172322076363777e+01 1.1544209430903804e+01 0 0 0
+243 0 1 0.0000000000000000e+00 4.7289314454008764e+00 1.2511147494410439e+01 1.0359656977306441e+01 0 0 0
+358 0 1 0.0000000000000000e+00 2.3881176950200693e+00 1.3634920745134961e+01 1.5300774081479577e+01 1 0 0
+341 0 1 0.0000000000000000e+00 4.6644771889888688e+00 1.4208010337698818e+01 1.3228774421824442e+01 0 0 0
+346 0 1 0.0000000000000000e+00 7.6483986868928628e+00 1.4741675349345668e+01 1.3810945962228692e+01 0 0 0
+347 0 1 0.0000000000000000e+00 5.3301480995328925e+00 1.4074536778639354e+01 1.6223637342637147e+01 0 0 0
+376 0 1 0.0000000000000000e+00 1.1987921719231846e+01 1.4681358565257440e+01 1.3919362541958703e+01 0 0 0
+50 0 1 0.0000000000000000e+00 9.8882990975147109e+00 1.4431194539323853e+01 1.6052181877811734e+01 0 0 -1
+245 0 1 0.0000000000000000e+00 9.6723724954625609e+00 1.2765044045484560e+01 1.3462332628511101e+01 0 0 0
+371 0 1 0.0000000000000000e+00 1.5029859647957872e+01 1.5420545021843914e+01 1.4870718351992702e+01 0 0 0
+366 0 1 0.0000000000000000e+00 1.4250485105368027e+01 1.2628858812606156e+01 1.3656126231227741e+01 0 0 0
+389 0 1 0.0000000000000000e+00 1.7334206037249402e+01 1.3224165030852538e+01 1.4435730264346438e+01 0 0 0
+255 0 1 0.0000000000000000e+00 1.9796717813224490e+01 1.5443932866821809e+01 1.4637981046183025e+01 0 0 0
+160 0 1 0.0000000000000000e+00 2.2910967526845042e+01 1.4160899586085661e+01 1.2949011021800766e+01 0 0 0
+397 0 1 0.0000000000000000e+00 2.2641693855822254e+01 1.5873296920273837e+01 1.5665390597366335e+01 0 0 0
+220 0 1 0.0000000000000000e+00 2.4686852634976679e+00 1.6311593267269032e+01 1.3345349779862129e+01 1 -1 0
+385 0 1 0.0000000000000000e+00 3.2715215047377266e+00 1.9042470697100704e+01 1.4746482511480250e+01 0 0 0
+361 0 1 0.0000000000000000e+00 5.5778130501753358e+00 1.6925319980810588e+01 1.4283007622887181e+01 0 0 0
+470 0 1 0.0000000000000000e+00 7.6846292078954042e+00 1.9172497711239409e+01 1.4821283523480369e+01 0 0 0
+267 0 1 0.0000000000000000e+00 9.8525219724682707e+00 1.6979726129737706e+01 1.4146117072837074e+01 0 0 0
+372 0 1 0.0000000000000000e+00 1.0500266091315710e+01 1.9744460896702385e+01 1.5555755288738071e+01 0 0 0
+482 0 1 0.0000000000000000e+00 1.2899037600135284e+01 1.7708180361802917e+01 1.5155385800690487e+01 0 0 0
+295 0 1 0.0000000000000000e+00 1.5271265195659630e+01 1.8049190261483410e+01 1.2916544262207067e+01 0 0 0
+390 0 1 0.0000000000000000e+00 1.5136648882230260e+01 1.9781673176523569e+01 1.5555351522798089e+01 0 0 0
+276 0 1 0.0000000000000000e+00 1.7326805294663188e+01 1.7626369986353751e+01 1.5240374963809833e+01 0 0 0
+493 0 1 0.0000000000000000e+00 1.9278899189677219e+01 1.8149702511876256e+01 1.3035966280386130e+01 0 0 0
+362 0 1 0.0000000000000000e+00 2.2522823998691152e+01 1.8357193869553448e+01 1.4069804713374380e+01 -1 0 0
+284 0 1 0.0000000000000000e+00 3.6464410896422366e+00 2.1540714834031263e+01 1.2980271531228258e+01 0 0 0
+387 0 1 0.0000000000000000e+00 7.9329628137292367e+00 2.1790601281238231e+01 1.3147084923676710e+01 0 0 0
+386 0 1 0.0000000000000000e+00 5.4030349556238999e+00 2.1247528274801837e+01 1.5352594319197411e+01 0 0 0
+205 0 1 0.0000000000000000e+00 8.2690052760825168e+00 2.2109185394448879e+01 1.6008060752529335e+01 0 -1 0
+307 0 1 0.0000000000000000e+00 1.0755083598715737e+01 2.2326868927287812e+01 1.3827585152514754e+01 0 -1 0
+462 0 1 0.0000000000000000e+00 1.2878546684799506e+01 2.0272803784350195e+01 1.3478461879005966e+01 0 0 0
+213 0 1 0.0000000000000000e+00 1.2900388015255219e+01 2.1917526282990501e+01 1.5949073479630075e+01 0 -1 0
+313 0 1 0.0000000000000000e+00 1.4946093820082725e+01 2.2482308040438291e+01 1.3774290264682293e+01 0 -1 0
+299 0 1 0.0000000000000000e+00 1.7140743949559671e+01 2.0192662997264691e+01 1.3523783489539669e+01 0 0 0
+195 0 1 0.0000000000000000e+00 1.8101856005590967e+01 2.3079504730018236e+01 1.4428896241684908e+01 0 0 0
+396 0 1 0.0000000000000000e+00 2.3213112541333896e+01 2.0973934726917435e+01 1.5116263223440775e+01 0 0 0
+394 0 1 0.0000000000000000e+00 2.0375013304650814e+01 2.0757166622561385e+01 1.4397106950021019e+01 0 0 0
+63 0 1 0.0000000000000000e+00 3.0087879012796996e+00 1.3895070792764377e+01 1.8269312751232675e+01 0 0 -1
+426 0 1 0.0000000000000000e+00 7.6291699468716576e+00 1.3974744425512863e+01 1.8351599844211961e+01 0 0 0
+369 0 1 0.0000000000000000e+00 5.3788708762163910e+00 1.5967452481897219e+01 1.8809366845464538e+01 0 0 0
+450 0 1 0.0000000000000000e+00 1.0748644772720882e+01 1.4743215210575269e+01 1.9081347188950645e+01 0 0 0
+177 0 1 0.0000000000000000e+00 1.7332141502451435e+01 1.5921195729830506e+01 1.2511903465048896e+01 0 0 0
+494 0 1 0.0000000000000000e+00 1.2711196031822658e+01 1.4867959097496067e+01 1.6866865580826349e+01 0 0 0
+474 0 1 0.0000000000000000e+00 1.5281581115205991e+01 1.4446947512319319e+01 1.9061869575565602e+01 0 0 0
+275 0 1 0.0000000000000000e+00 1.7327361445917568e+01 1.4843960135135600e+01 1.6891093152215426e+01 0 0 0
+449 0 1 0.0000000000000000e+00 1.8093287350861921e+01 1.4965807607373749e+01 2.0088074333796420e+01 0 0 0
+297 0 1 0.0000000000000000e+00 2.2522721471803024e+01 1.3086272187102631e+01 1.7672701101381683e+01 0 0 0
+58 0 1 0.0000000000000000e+00 2.0324124767659541e+01 1.5205961597276753e+01 1.7723325170070304e+01 0 0 -1
+348 0 1 0.0000000000000000e+00 2.3061802458923140e+01 1.6094188927982149e+01 1.8855665197728861e+01 -1 0 0
+446 0 1 0.0000000000000000e+00 3.2324452817959788e+00 1.6358095608049119e+01 1.6309496132132814e+01 0 0 0
+498 0 1 0.0000000000000000e+00 3.0638100376968498e+00 1.8106381304220129e+01 1.9135277405882071e+01 1 0 0
+367 0 1 0.0000000000000000e+00 7.7681893037740295e+00 1.6464910054711041e+01 1.6528182899343875e+01 0 0 0
+368 0 1 0.0000000000000000e+00 5.4886917009164033e+00 1.8587439912347349e+01 1.7000257615399448e+01 0 0 0
+207 0 1 0.0000000000000000e+00 8.2396202520753619e+00 1.9357654878404745e+01 1.8009405781025393e+01 0 -1 0
+54 0 1 0.0000000000000000e+00 8.4427385369900367e+00 1.6700675063311550e+01 1.9420956278245413e+01 0 0 -1
+468 0 1 0.0000000000000000e+00 5.9275779988827670e+00 1.8689568810619043e+01 1.9997415625917817e+01 0 0 0
+352 0 1 0.0000000000000000e+00 1.0659166200024014e+01 1.7209040904088425e+01 1.7263496778250087e+01 0 0 0
+489 0 1 0.0000000000000000e+00 1.0783783880414752e+01 1.9338409275588681e+01 1.9776628186378467e+01 0 0 0
+486 0 1 0.0000000000000000e+00 1.5233198829651670e+01 1.7150900963837934e+01 1.7373487392968748e+01 0 0 0
+89 0 1 0.0000000000000000e+00 1.2806034754936018e+01 1.6951290066349241e+01 1.9427195076360356e+01 0 0 -1
+309 0 1 0.0000000000000000e+00 1.2844157915927838e+01 1.9373225127388025e+01 1.7617838969983602e+01 0 -1 0
+215 0 1 0.0000000000000000e+00 1.5832794457834435e+01 1.9789387687147027e+01 1.8696421461052672e+01 0 -1 0
+413 0 1 0.0000000000000000e+00 1.8197676656050561e+01 1.7555291002517052e+01 1.8144115355786724e+01 0 -1 0
+317 0 1 0.0000000000000000e+00 2.0325006515848045e+01 1.7953030454726758e+01 1.6085884440247263e+01 0 -1 0
+464 0 1 0.0000000000000000e+00 2.3293507532693312e+01 1.8485185313417837e+01 1.6931146230867565e+01 -1 0 0
+479 0 1 0.0000000000000000e+00 2.0853218649629483e+01 1.8157945064875435e+01 1.9336217864899005e+01 0 0 0
+363 0 1 0.0000000000000000e+00 3.0395692165683434e+00 2.0783822773313041e+01 1.7095313970201524e+01 0 0 0
+408 0 1 0.0000000000000000e+00 3.3434652264018232e+00 2.2995224634003101e+01 1.9553449727006033e+01 0 -1 0
+287 0 1 0.0000000000000000e+00 5.8665277074599125e+00 2.1374813165105060e+01 1.8472045471211509e+01 0 0 0
+411 0 1 0.0000000000000000e+00 1.0738383175716976e+01 2.1638326341190641e+01 1.7982189190437055e+01 0 -1 0
+395 0 1 0.0000000000000000e+00 1.3761380225297966e+01 2.2251581867064040e+01 1.8724812466094164e+01 0 0 0
+430 0 1 0.0000000000000000e+00 1.6000161486815863e+01 2.2571668922683187e+01 1.6665480060871744e+01 0 -1 0
+15 0 1 0.0000000000000000e+00 1.8065673267893366e+01 2.0311629519200039e+01 1.6588789798590899e+01 0 -1 -1
+495 0 1 0.0000000000000000e+00 1.8286036382400383e+01 2.2493754118208962e+01 1.8748537031091658e+01 0 0 0
+404 0 1 0.0000000000000000e+00 2.0104376470225127e+01 2.3160955202166306e+01 1.6508299890358810e+01 -1 -1 0
+418 0 1 0.0000000000000000e+00 2.3500245674954023e+01 2.0586301940554172e+01 1.9502878347925993e+01 0 -1 0
+439 0 1 0.0000000000000000e+00 2.1119720031238337e+01 2.2734007966732442e+01 1.9908235212631588e+01 0 -1 0
+398 0 1 0.0000000000000000e+00 2.1027038114227572e+01 2.0515529424877073e+01 1.7648540196155459e+01 0 0 0
+319 0 1 0.0000000000000000e+00 2.3328306579120856e+01 2.3048924247686294e+01 1.7477723117050978e+01 0 -1 0
+65 0 1 0.0000000000000000e+00 3.0716647760510107e+00 1.2932870295308355e+01 2.2688006215752367e+01 0 0 -1
+465 0 1 0.0000000000000000e+00 3.0895537894170504e+00 1.5651023079487507e+01 2.0847057557221923e+01 0 0 0
+487 0 1 0.0000000000000000e+00 5.9904066164169274e+00 1.3526095352604024e+01 2.3227888696048822e+01 0 0 0
+448 0 1 0.0000000000000000e+00 5.0535245624917877e+00 1.3336763574655706e+01 2.0515555926553724e+01 0 0 0
+452 0 1 0.0000000000000000e+00 8.3013976103713443e+00 1.4224878704824741e+01 2.1229277089039876e+01 0 0 0
+69 0 1 0.0000000000000000e+00 8.4714510008213821e+00 1.5861377716199817e+01 2.3606654021504056e+01 0 0 -1
+456 0 1 0.0000000000000000e+00 1.0642607408931912e+01 1.3638717702345769e+01 2.3441366909927972e+01 0 0 0
+380 0 1 0.0000000000000000e+00 1.2760582574434126e+01 1.4394077142364996e+01 2.1233000302042029e+01 0 0 0
+36 0 1 0.0000000000000000e+00 1.5774493168081658e+01 1.4565374534424594e+01 2.2066353644244735e+01 0 0 -1
+78 0 1 0.0000000000000000e+00 1.8468096589072125e+01 1.4843697641763670e+01 2.3498760959642290e+01 0 0 -1
+461 0 1 0.0000000000000000e+00 2.3587290948345817e+01 1.5178340086335641e+01 2.3228972453788430e+01 -1 0 0
+490 0 1 0.0000000000000000e+00 2.1192315186069621e+01 1.5613013556569737e+01 2.1123558381350215e+01 0 0 0
+497 0 1 0.0000000000000000e+00 2.3373050048279012e+01 1.3480662352298356e+01 2.0598172870121189e+01 0 0 0
+62 0 1 0.0000000000000000e+00 2.0824473144136263e+01 1.2791960375826347e+01 2.2822573031326776e+01 -1 0 -1
+298 0 1 0.0000000000000000e+00 3.7026169625677938e+00 1.8029789116721474e+01 2.2648827611400080e+01 1 0 -1
+485 0 1 0.0000000000000000e+00 6.0986820094123537e+00 1.6250091305233809e+01 2.1862621048299303e+01 0 0 0
+66 0 1 0.0000000000000000e+00 8.3667304186715512e+00 1.8738740357060905e+01 2.1766301314129265e+01 0 0 -1
+92 0 1 0.0000000000000000e+00 1.0598231378414175e+01 1.6531035050898865e+01 2.1526465853499161e+01 0 0 -1
+72 0 1 0.0000000000000000e+00 1.1547636441821830e+01 1.9426773428915531e+01 2.2784838384786084e+01 0 0 -1
+472 0 1 0.0000000000000000e+00 1.5766209805528018e+01 1.7126122182283517e+01 2.0207861398492518e+01 0 0 0
+130 0 1 0.0000000000000000e+00 1.3780793500068112e+01 1.7178784657330716e+01 2.2367504537634197e+01 0 0 -1
+500 0 1 0.0000000000000000e+00 1.3745866541488736e+01 1.9700458126471744e+01 2.0668474372091971e+01 0 0 0
+496 0 1 0.0000000000000000e+00 1.6132996112969884e+01 1.9198802164153463e+01 2.2592073194915073e+01 0 0 0
+310 0 1 0.0000000000000000e+00 1.8486372110485952e+01 1.9962858608261058e+01 2.0189092820439761e+01 0 -1 0
+473 0 1 0.0000000000000000e+00 1.8441407890474480e+01 1.7460830795468723e+01 2.1691715144970530e+01 0 0 0
+46 0 1 0.0000000000000000e+00 2.3422379689976026e+01 1.7910103590002905e+01 2.1374827024260021e+01 -1 0 -1
+463 0 1 0.0000000000000000e+00 2.1162467402828206e+01 1.7787199201721492e+01 2.3404247136340366e+01 -1 0 0
+478 0 1 0.0000000000000000e+00 2.3552288149076364e+01 2.0142375291977238e+01 2.3419343185193028e+01 0 0 0
+7 0 1 0.0000000000000000e+00 3.5209424706081616e+00 2.0558416005821186e+01 2.1276473343265351e+01 0 -1 -1
+5 0 1 0.0000000000000000e+00 3.9883029230906470e+00 2.3359120214194284e+01 2.2419446391921298e+01 0 -1 -1
+409 0 1 0.0000000000000000e+00 6.4585672451720262e+00 2.3702826106422251e+01 2.0420129342302126e+01 0 -1 0
+405 0 1 0.0000000000000000e+00 6.3993766513842054e+00 2.1083696420743621e+01 2.2395290842577651e+01 0 -1 0
+416 0 1 0.0000000000000000e+00 8.5824735361924294e+00 2.1415000550841611e+01 2.0146694009933384e+01 0 -1 0
+415 0 1 0.0000000000000000e+00 1.1635985709053479e+01 2.3664193805548088e+01 2.3342497852639745e+01 0 -1 0
+10 0 1 0.0000000000000000e+00 9.3892654515943494e+00 2.1469258882694298e+01 2.3234846153158941e+01 0 -1 -1
+491 0 1 0.0000000000000000e+00 1.1521365266247223e+01 2.2019494663453159e+01 2.0739079617435642e+01 0 0 0
+96 0 1 0.0000000000000000e+00 1.4044016287693703e+01 2.1437085304387864e+01 2.2950363840913234e+01 0 0 -1
+74 0 1 0.0000000000000000e+00 1.6221024158619095e+01 2.1973689654902131e+01 2.1184017742533179e+01 0 0 -1
+499 0 1 0.0000000000000000e+00 1.9040965067179862e+01 2.2714630523797382e+01 2.1925406271224531e+01 0 0 0
+481 0 1 0.0000000000000000e+00 2.3485949540946002e+01 2.2715374804818410e+01 2.1769116373359310e+01 -1 0 0
+417 0 1 0.0000000000000000e+00 2.1289084070945080e+01 2.0173717319372464e+01 2.1474199562732800e+01 0 -1 0
+382 0 1 0.0000000000000000e+00 3.0569305294173712e+00 2.3508089124963391e+01 1.5389385757631612e+01 0 0 0
+476 0 1 0.0000000000000000e+00 1.9109036146480548e+01 1.9962545825054690e+01 2.3426219816812633e+01 0 0 0
+457 0 1 0.0000000000000000e+00 2.0332090081795869e+01 1.2847902875186227e+01 1.9827312422896270e+01 0 0 0
+29 0 1 0.0000000000000000e+00 7.3229935608180847e+00 2.3689353913369509e+01 2.3358327517791061e+01 0 -1 -1
+202 0 1 0.0000000000000000e+00 5.6649622238544799e+00 2.3714392851292835e+01 1.3771234747881932e+01 0 -1 0
+203 0 1 0.0000000000000000e+00 5.6300642771225711e+00 1.9440784672022836e+01 1.2547505525684075e+01 0 -1 0
+210 0 1 0.0000000000000000e+00 1.0017549731615686e+01 1.9537646934087455e+01 1.2529751130636123e+01 0 -1 0
+
+Velocities
+
+412 -7.1763244942137832e-04 -1.1270779856504941e-03 1.9034235369393519e-03
+113 -2.4177073243374018e-03 2.1436021495371870e-04 -3.5398477644996227e-04
+9 -7.8741498944682496e-05 -5.3891259343946511e-04 1.6296756147333583e-03
+432 -1.8041222638159849e-03 -2.0263719763421396e-05 -2.6368332746034701e-03
+105 3.6656647426640530e-03 -6.3984575949152251e-04 -2.2076806895289028e-03
+440 2.5858559751275943e-03 -4.1213279654282316e-05 -1.9379129292466028e-03
+139 3.0782077038025652e-03 1.6277825261694155e-03 9.4016540975972102e-04
+114 8.3255957512072890e-04 -3.9428628878126004e-03 1.5200455785487020e-03
+35 -3.6927888552194441e-03 3.2890216629891419e-03 1.3663877436200149e-03
+1 1.6597227400533190e-03 3.6653397142427836e-04 9.1081683381447412e-04
+134 1.3839382487058106e-03 -9.3070332909306482e-04 -2.3586412785148075e-04
+200 -1.4164081426961271e-03 2.4253015788274130e-03 3.3899308777622381e-03
+22 -8.4346136847570535e-04 2.8882691922121730e-03 2.4887581779854963e-03
+107 -2.8157517857417421e-03 -9.9806303833668993e-04 1.8421830023586283e-03
+51 -1.8384963919834685e-03 -2.2538744531089804e-03 -1.2913790826403647e-03
+423 2.1932420771706646e-03 -8.0956438072212790e-04 4.2828850611612441e-05
+427 1.7411611468287249e-03 -4.0708445624974337e-03 -1.7539636326046450e-03
+32 5.2877104508783845e-04 1.5968007622532464e-03 1.1360196669727199e-03
+429 -6.6814893387604716e-04 -2.7541904225918183e-04 1.2812502685815462e-03
+132 -1.6445463469190562e-03 -3.9487823044584685e-03 -1.3353507597479212e-03
+26 -1.6576430949262419e-03 2.8529325683446282e-03 -3.2184602038838775e-03
+30 -3.5386772359798377e-03 -1.7306588155312564e-03 3.5888622583317409e-04
+312 1.3153515638800707e-03 1.0183128841617492e-03 -7.7487142144541156e-04
+232 -3.8757229495452626e-03 -3.4083671314819835e-03 -8.8868207629138631e-04
+137 -8.9420842203615124e-05 -6.8048884671690149e-04 3.7605095333955618e-04
+460 1.2981593682961968e-03 -1.1849848790291440e-03 -1.2849804257384658e-03
+33 1.2326124379077536e-03 5.7033580523507474e-04 -9.8813207116351569e-04
+21 -1.0043261976073292e-03 9.1570346238793677e-04 -3.9199882719392941e-04
+8 -4.9599127255305151e-04 1.9613732123896204e-03 -1.0017827198564842e-03
+61 1.2576415975023602e-03 -2.9849047867037464e-03 -9.3189788240013722e-04
+39 1.2551500978327530e-03 2.7972448619051704e-03 -2.6878076380960326e-03
+121 -6.3367513328493777e-04 2.2339078687329153e-03 8.5097722597706144e-04
+99 -1.4078027060945343e-04 -2.1920370158937086e-03 7.9855448816381377e-04
+48 4.5237471859824888e-03 -1.5437572276139544e-05 -1.6190522089117201e-03
+143 -9.7104455479869961e-04 -3.1022847221393673e-03 1.6206667749291128e-03
+153 3.4019576915611098e-03 -1.2862243452632371e-03 4.0535701574544334e-05
+226 -2.9697408145818279e-04 1.8935938817990516e-03 -1.7121286506496841e-03
+120 2.0375482506282050e-03 -3.4177020470881417e-04 -9.5012734438903817e-04
+44 3.0246538947301771e-03 3.1685911958942736e-03 -5.4218515087823302e-04
+60 1.9883188115607533e-03 1.1085915144304055e-03 5.0131104508295500e-04
+175 -2.5801018971771591e-04 -1.0394992143159807e-03 7.2315490997091605e-04
+229 -2.6770612402613973e-03 -2.3177410610196353e-04 9.5646334772881455e-04
+24 2.3317483899694224e-03 9.4309177583327530e-04 -2.8364276926318748e-05
+467 6.0313108620145518e-04 1.3488329981811550e-03 2.6446590695248053e-03
+28 -2.7704926122845866e-03 1.6895215731501444e-03 -2.4067535973533814e-03
+108 -1.9687636503448423e-03 -2.8918341961734727e-03 4.0367973127900978e-04
+25 -8.5877512315973067e-04 5.4494378703870893e-04 1.5942783551761339e-03
+101 -2.6719176910733953e-03 4.4227681333221698e-03 -2.3442538583422172e-04
+103 2.7511047996537280e-04 1.8330541111152814e-03 2.8643338745589582e-04
+206 -1.1421583582380494e-03 1.7469935189673561e-03 1.4586564441802289e-03
+112 -3.4622818475639147e-04 -1.8005562893377765e-04 2.3667397317917761e-03
+214 1.4560244736504134e-03 8.1527510227148161e-04 1.3088973725452466e-04
+2 -2.6714235261803211e-03 -2.4607184720503903e-03 2.0978957157274541e-03
+17 -1.0050631416367510e-03 3.7225827607952896e-04 5.1797586002810796e-03
+484 2.1525468795666894e-03 2.5277520569910285e-03 3.2180196622847053e-04
+82 2.3765256161680736e-03 1.3106077260768576e-04 -3.6639949503085912e-03
+182 -3.7745922506578265e-04 -3.0175030446434876e-03 -1.3392179892643540e-03
+194 4.6866430770708678e-03 -1.8159007855718188e-03 3.5392311917870297e-03
+19 9.6761706111071993e-04 -3.8472222595528601e-03 1.3836704660992181e-04
+27 -2.0494816977077398e-03 -6.6232648755930356e-04 5.8004970548959449e-04
+126 1.9726950502087172e-04 -1.3231887081684196e-03 3.0077766079494306e-03
+42 -1.8979948306766996e-03 -3.7231494525547617e-03 2.0056530782672794e-03
+11 -6.9582820881404394e-05 2.8018085254777523e-03 -4.0846124454191156e-04
+127 7.4013684834611934e-04 -6.0171177473919055e-04 3.0902078444487545e-04
+230 2.6135051192116708e-03 2.0341084388176408e-03 -2.0841912104314670e-03
+118 -8.6285615916673584e-04 2.2712459099819382e-03 -9.3857681211211973e-04
+115 1.3314049628348754e-03 -5.8683287877988090e-05 -3.3949494935291380e-04
+355 -3.1841314448150285e-04 1.2062938877432342e-03 -1.0310891137000457e-03
+136 -1.0673490220733618e-03 -4.2369403362923956e-03 2.6764009072551687e-04
+119 5.3215949569519446e-03 -2.7333065812266961e-03 -1.4961972673251868e-03
+57 6.2468735272167301e-04 -3.1770113320600348e-03 -6.2366682473324021e-05
+37 1.1873869496108217e-03 -3.3924601881503202e-04 -1.2067855923739764e-03
+233 -7.2752375173168438e-04 -8.5415782547204556e-04 1.3211961024551851e-03
+163 8.9835116326640011e-04 5.8024692752462923e-04 -3.5637627212795832e-03
+38 -2.7676982089227197e-03 8.4039579235222210e-04 1.2202722440237358e-04
+145 -3.1169980465044222e-04 2.4531731984171645e-03 7.6086690162037156e-05
+47 -2.9588495197277491e-03 2.3489941957171544e-03 7.4360346591081960e-04
+246 1.8364543564520027e-04 -2.1834744288069512e-03 7.5767239481411083e-05
+151 -1.8538885647429756e-03 -2.1951534017704288e-04 1.0394170733694812e-03
+326 -1.6973348173039389e-05 1.4303575930495991e-04 2.0657501583316467e-03
+173 1.8601204246570429e-03 -3.1595745544689077e-06 6.2382239678910104e-04
+234 -1.7490934893957645e-03 -1.5502094630758505e-03 -1.6379471283876803e-03
+171 -1.2700518441304794e-03 -7.7837335692111881e-04 -2.2941664148132088e-03
+4 1.6875076556623493e-03 2.8587844783067244e-04 -1.6273614599704739e-03
+238 1.4979415690643917e-04 -1.0096618119974045e-03 1.4912521572399450e-03
+140 -2.1096516599637908e-03 2.0450765779483951e-03 -1.8602073768618345e-03
+104 -4.7169097885837973e-03 -2.3539624670593953e-03 1.3206755650396226e-03
+353 -1.4289671947619663e-03 1.7555099230010611e-03 -2.7523388903324918e-03
+225 1.6045885505917344e-03 -2.4872440501996600e-04 1.1608677215911304e-04
+303 2.7523223630714112e-03 1.5822419424908858e-03 1.6431557354095618e-04
+211 1.5095558457032497e-03 -7.7648138421094017e-04 3.4487485946982960e-03
+290 1.4759916060968837e-03 1.8619947691255391e-03 1.5181226872732934e-03
+216 -1.2099297288219316e-03 1.4881519623521171e-03 -8.5676889955325669e-04
+144 -2.1057508430433200e-03 -1.3818423860095035e-03 3.3092034765834624e-04
+190 -5.6844505927017741e-04 2.4871772999117159e-04 -2.2692057540318090e-03
+334 2.3891113595542282e-03 5.9504133301119407e-04 -1.6661784561868953e-03
+239 3.5026828095220770e-03 -4.9884417384604276e-06 2.4362479737452740e-03
+337 -2.6919537375727056e-03 -1.1117895875270691e-03 -8.4828368850980868e-05
+124 -9.6598303824617013e-04 1.4670680406116904e-03 2.8798360249333108e-03
+321 -3.5696998130131728e-04 -3.1505628229594480e-03 3.0564225410814028e-03
+129 -8.8001125367169041e-04 2.0251747584645930e-03 1.6251288033987984e-03
+224 1.1334799136843287e-03 -2.1457717681911976e-03 4.9724753474096161e-04
+106 1.5081294460942678e-03 -4.5626669541297751e-03 1.2085833129248005e-03
+227 -1.8800720402759071e-04 -4.6516195145222955e-03 -2.3628048707104547e-03
+204 4.0034710868269854e-04 2.9453920918081673e-04 1.7176320136801590e-03
+240 9.6377052693793271e-04 -1.0993921532649805e-04 9.7430038890336588e-04
+265 -1.5849770994905488e-03 -3.0977668882266130e-03 -1.3529706360394247e-03
+157 -3.3969509466832130e-04 7.5352406366465286e-04 1.3845487901675171e-03
+330 -2.9561309653755572e-03 -5.8202957174046180e-03 -1.4934052771122569e-03
+332 1.0164853318266273e-03 -6.7788533897233721e-04 1.7741827319871643e-03
+155 -1.6662416064594759e-04 -1.6069353856134937e-03 -4.2461486137459672e-03
+231 6.5607132835188620e-04 -2.1998875758222369e-03 -4.3119060300828727e-03
+40 3.0039780776363553e-03 -3.2558830956793783e-04 -1.5216061579244444e-03
+250 3.7221596179295266e-03 6.9901203958810574e-04 4.8609100139752458e-04
+150 4.9121705232197256e-04 1.2652472325114968e-03 2.4546895694337371e-03
+221 -3.6532140834222527e-03 -1.9500973680149246e-03 -3.4654374314871355e-03
+323 -7.4735891619121919e-04 3.4964003743191956e-04 8.7528649853536476e-04
+237 -2.4984857323842795e-03 -4.6976929625930375e-04 1.9033277331261071e-03
+261 4.0680321540934022e-03 -2.4497455980543380e-03 -8.0193029960715784e-04
+122 4.6511253058558716e-05 1.2637017266412383e-04 3.6500503380613035e-03
+172 -1.4967051977915723e-05 1.4175171689606793e-03 1.3848707437217956e-03
+373 -3.6720007565449453e-04 2.3360355383897015e-03 -2.6665380527690638e-03
+333 2.6565168833038613e-03 -6.3507883090610517e-04 -1.1391763242255639e-03
+488 1.1693503229192727e-03 3.1926205105953075e-03 -1.6820902140641846e-03
+324 1.4858224963416266e-03 -2.2800045296797649e-03 -1.7059083099619197e-03
+401 -3.1485929441338418e-03 -8.8273948044435466e-04 -2.5180489626380181e-03
+23 1.6110325719423716e-03 9.4246127772606655e-05 -3.4091973395237085e-04
+125 2.7679546034282699e-04 1.8575683918964784e-03 2.2991706090300609e-03
+257 1.3619508126040691e-03 2.6084770140153243e-04 1.4154554805932465e-03
+433 1.0658128023684754e-03 2.0538487214222605e-03 1.8332473590006542e-03
+305 -1.4736135490828765e-03 2.2403983170228097e-03 3.3365918707666702e-04
+492 -5.1684821022602472e-04 -4.0891377388356980e-03 8.3697181540220487e-05
+356 -1.2354332629763889e-03 -2.1246183878660856e-03 -4.8180289700785323e-04
+314 1.5624909058846405e-03 1.9221331383087858e-03 -1.9117399302334174e-03
+311 -1.5423188836210834e-03 -3.9357978692729266e-03 6.4005333665267668e-04
+300 5.8961737387850047e-03 2.6525052372519450e-03 7.4318283759564445e-05
+18 5.8465743128714991e-04 -7.8974124558777456e-04 1.7792544386794227e-04
+117 -1.6739244319206943e-03 -1.2553550295495378e-04 3.8513116813407066e-03
+188 1.8778711181559157e-03 -1.8649304391118234e-03 1.6599663369798352e-03
+322 1.2024877157089423e-03 -2.1160480405838689e-03 -1.8156881213267488e-03
+228 -3.5011957897829377e-03 3.3787488158549209e-03 -1.0720715347352448e-03
+167 2.5396006247771952e-03 -3.1197711006921390e-03 -3.3313133003486217e-03
+340 1.7826806631728795e-03 -2.8299339774474821e-03 1.6781266479509922e-03
+455 -2.2149552536200834e-04 2.2504601355822318e-03 6.8748556136419509e-04
+336 -1.7720841374165732e-04 2.3648631060589490e-03 2.3037148145904100e-03
+458 -2.0488533310530897e-03 -1.8123257312122631e-03 1.9536615599621252e-04
+179 -4.5598276498730420e-04 2.6333702623071243e-03 -1.3289649861763294e-03
+349 -3.5906513091083468e-03 -1.3829585251475007e-03 1.7777367169799765e-03
+20 -2.5643721996223396e-03 -3.0758309738128545e-03 1.8047254104325407e-03
+212 -4.2951245652401532e-04 3.1848173124456150e-04 1.2546961845624756e-03
+244 4.8095498545455722e-04 -2.2573085885738359e-03 -1.7560205770416899e-03
+123 -3.3922858751496208e-03 6.8399948302800469e-05 -4.1875909364593993e-03
+242 3.1118269332402488e-03 1.3065047051570718e-03 -1.3946879100177425e-03
+343 -1.9857317737256323e-03 -1.3035809845628424e-03 -1.5877906229002754e-03
+222 1.0045589385353968e-03 1.3214460745748845e-03 3.8021220909929956e-04
+247 3.4697471498266745e-03 -2.0886532290808346e-04 -1.3796513743841994e-03
+251 -5.9097672454122588e-06 -3.0570153083069409e-03 -2.8003211276687759e-03
+306 1.1046167258517347e-03 3.3224627885116748e-03 1.9555956244563170e-03
+345 -3.0154014587444121e-04 -1.4310822818381242e-04 7.1599686769155272e-04
+253 2.1875080765149869e-04 1.5258153666992125e-03 1.3594750827621998e-03
+260 2.4924910742474271e-04 1.2843078556507219e-03 2.8556892255182469e-04
+256 -1.3905747497840540e-03 -2.3156336245551469e-03 1.5565631717454019e-03
+254 -1.4458058610674269e-03 -2.1551866129451151e-03 3.1373398950244268e-03
+236 3.1280423753214664e-04 1.1064240386634385e-03 1.0849335861552267e-03
+383 2.0013791061626466e-03 1.1201453470121986e-03 2.5483768375102736e-03
+388 7.8945344992430026e-04 -1.4413794336571811e-03 -7.0531320448430585e-04
+90 -1.7855172411279567e-03 -5.2277713079084353e-04 2.2568719734436440e-03
+400 3.6088319490311213e-03 -9.0504739979034278e-05 4.3865522445016525e-04
+445 3.4616097010201187e-03 4.4405369475195711e-04 7.9648453904313519e-04
+331 -1.0427812357970579e-03 1.5102580536025613e-04 3.0269663149499557e-03
+316 -7.2920762283232082e-04 2.9841164700626322e-03 -3.0523762883920289e-03
+434 1.2520968754224768e-03 9.4171049470808584e-05 1.3898587431296337e-03
+375 2.7078467035540569e-05 -6.0834696719609714e-04 -1.3484158193233686e-03
+410 8.1771724155750537e-04 1.5315455891573899e-04 -1.2314864299393428e-03
+53 1.2903355566952247e-03 1.3082679782560922e-04 -2.8878514949457021e-04
+338 -2.5345765061160976e-03 -8.7126463952455339e-04 9.4858458894403480e-05
+357 -9.0715868310003349e-04 8.8362065919528115e-04 -2.2477098131487286e-03
+296 -1.2978870352557013e-05 -2.8626467901871470e-03 -3.1298254731394739e-03
+34 -2.6566506371701721e-03 -8.5214606331952109e-05 -2.5448550648978917e-04
+320 -3.5063527342116176e-03 -1.2166373277587756e-03 7.8271022452406584e-04
+85 7.5630565912250460e-04 -1.9147697162765099e-03 2.6219931189398266e-04
+384 -1.2918756084047700e-03 -1.5758898002332154e-03 -1.6483696435792606e-03
+259 3.7384103081190482e-03 -8.9723983541790367e-04 1.1605777387124459e-03
+302 1.4227479764387511e-03 3.6679074661522238e-03 4.8795509146244584e-05
+402 -1.0693184364808449e-04 1.5547117610829632e-03 1.2081250894895815e-03
+208 4.8719635952467507e-04 -1.2802971041543920e-03 -1.0230000643407091e-05
+351 1.7399278198683790e-03 4.8319705474821296e-03 -1.5278957565467521e-03
+271 -1.7578372847629614e-03 -1.8719344976262937e-03 -2.5156096742401934e-03
+335 5.9034205651058256e-04 -1.4545836439026866e-03 3.8847103805714524e-03
+379 -3.4994501653180222e-03 -1.7650029185722451e-03 2.4479679398234401e-03
+219 -2.3932246623800365e-04 -5.2619737411126503e-04 -3.3795223598719944e-03
+304 -1.5265067592619684e-03 -5.0456062271885048e-04 1.7307093087346853e-04
+441 2.7425797059336357e-04 1.4965137000173933e-03 2.0760524475580315e-03
+342 -3.5349686472608454e-04 3.4189280765196560e-03 -1.6222888504650184e-03
+308 -1.7187614310427235e-03 1.4221311383709947e-03 -2.1469220943336453e-04
+428 -8.4009854741942495e-04 -1.0975990886855128e-03 -1.4910338971035402e-03
+325 -3.9925397346169273e-04 -1.9162195530463377e-03 -3.0600541025267903e-04
+328 -8.9451273143079134e-04 2.2806084657394378e-03 -1.3644858797716710e-03
+327 -1.6179396137577953e-03 1.8861861313098677e-03 4.0159446786490298e-03
+350 -2.4144792873490137e-03 1.9338139632451914e-03 -2.1727200781151792e-03
+453 -4.2735865090221496e-04 1.4456289910567200e-03 3.2560846787983702e-03
+374 -2.8546069072882393e-03 1.4675104815586419e-03 -2.3115162713355464e-04
+280 -9.1491767260535001e-04 -2.0013747923239506e-03 -1.6303366518458904e-03
+354 1.7176391862209501e-03 -9.2548725893010924e-04 -5.6671343208943795e-04
+444 -4.5850724783657532e-05 1.7007953083447971e-03 2.0831172300464333e-04
+437 -1.7483132016789433e-03 -2.8590850946577330e-03 7.8706010208475148e-04
+422 -4.1769538054942898e-04 2.5052597164770662e-03 -1.2404410742723109e-03
+59 -5.9065848977870889e-04 -2.6621523192181884e-03 2.5737675640721330e-03
+421 1.7147547682962126e-04 1.2924885563145158e-03 3.6957394902597468e-03
+88 -1.3971404797102820e-03 -1.2503451167652560e-03 -8.6652100708624639e-04
+339 5.3477117781406324e-03 6.0371635597424912e-04 -1.6083696174831418e-03
+431 -4.6944666436626726e-05 -4.0137613826985200e-04 4.1360630892921090e-03
+31 9.6401825899959518e-04 -3.1384203034557951e-03 -5.8347466151818176e-04
+12 2.2244856665261609e-04 -8.5223048091847599e-04 2.4708585620080207e-03
+116 -9.7876789553135346e-04 1.1334903361177305e-03 -5.6508101726968456e-03
+435 3.2810732922497032e-04 1.9330077671017780e-03 -2.3901139328064949e-03
+279 -4.2964957863343761e-03 2.3895932558998127e-05 4.3540077673176041e-04
+315 6.1438506559914597e-05 -8.5212575049620616e-05 5.3489696153290545e-03
+414 -7.3804675958895195e-05 -5.3916632457412224e-04 -4.5849060693150048e-04
+459 1.2561143100958198e-04 -1.2578420247481839e-03 2.6493010128070590e-03
+359 9.4808853294744023e-04 -2.8603246437045938e-04 -9.2888616405027897e-04
+419 -5.4625772620610249e-04 -1.2620092699897880e-03 -1.1324837594581963e-03
+483 -1.3950772993361902e-03 2.3162814044487226e-04 2.5422368428007296e-03
+403 2.0527448602651196e-03 2.4079537714727464e-03 2.8746875450756286e-03
+329 2.8434819526117843e-03 9.6030068604546087e-04 4.1466839729067898e-03
+52 -3.1325564313652585e-03 2.0390712451556704e-03 3.9312235529856774e-03
+425 -1.6696092252525550e-03 -4.9231621541369367e-03 1.2843507606780371e-03
+133 5.3812660016672989e-04 4.0534966904348249e-03 -2.6394348370472318e-04
+360 -2.3511216056997382e-04 3.4911156034712451e-03 -1.1281181981205235e-03
+438 -2.0394321870595422e-03 3.1944095280361357e-03 -4.6484337925254216e-03
+454 2.4715070455342712e-04 1.3365873096143652e-03 1.5610068171732149e-03
+86 -1.3383598645657605e-03 -4.5091553174346237e-03 3.0134993345236841e-03
+424 -7.1473972700399004e-04 -2.9101274187286292e-03 -5.0519769144625947e-03
+6 1.3165200471437126e-04 2.2770881710800305e-04 -4.9028195634589419e-03
+447 1.6180450844232338e-03 -2.1832762944097673e-04 -1.4572984592818561e-03
+49 -7.5793743362813045e-04 4.2082549118051642e-03 9.4548362139827192e-04
+83 1.4131256489648735e-03 2.2053314709649397e-04 4.1884194311020016e-04
+41 -5.3977931214918313e-04 -2.5110705264897574e-03 -1.1032059946647810e-03
+45 -2.1756154539804944e-03 2.0757080682870604e-03 2.5694215757773864e-03
+55 -3.0466620030259470e-03 8.2745339617018891e-04 1.8331407644843324e-03
+477 -2.2595007966490039e-03 -2.9577190125933042e-04 5.6608800824838306e-04
+77 -1.1316656747830430e-03 2.9553089515799331e-03 -2.2249677023167794e-03
+442 2.4347290488718949e-03 1.6927222130035024e-03 2.6059676730272974e-03
+436 1.0457527454612186e-03 2.3509696585660329e-03 2.7895050379788812e-03
+466 -3.9482051009056510e-04 -1.7652147230211651e-03 6.3359557356106413e-04
+443 2.9521992208989115e-03 -2.0452236803864248e-03 -1.1347764670512085e-04
+391 9.3820518545245608e-05 4.6457752447728092e-03 7.3961694569977664e-04
+451 8.2944620833076926e-04 1.1232479653125621e-03 3.6139053676951795e-04
+318 1.0477885002488719e-03 -1.4136294640245154e-03 -2.5963250289652742e-03
+43 -7.5886894062331101e-04 -8.7870305526194985e-04 -3.8457775529574342e-04
+165 1.2203378400343313e-03 -4.3939647646279393e-03 -2.1669484937643347e-03
+79 3.2296235495469349e-03 1.7590122401678226e-03 1.1328281207600096e-03
+288 2.7672647290975246e-04 -4.5038911940071570e-04 1.1239706483457949e-04
+146 -4.7853901472001546e-04 5.4804498705514218e-04 1.5147497231580583e-04
+148 2.8266357925168318e-03 -2.2400076476845818e-03 -6.6616080985461054e-05
+135 -4.1628473655862157e-03 7.8851181760056905e-04 -3.4423441183974758e-03
+156 -3.1441159302246879e-03 1.5617746146314852e-03 -3.7329783246521793e-03
+71 -7.6188943823196121e-04 8.5701000992603486e-05 -1.8498483951676355e-03
+293 -1.4937853272081109e-03 1.2092776223180958e-03 2.9882326752973302e-03
+161 -1.5316950135321648e-03 -1.2204854888998088e-04 -2.2007373736581157e-03
+75 -2.0794394888772570e-04 -2.0042521796121648e-03 2.3775642875457955e-06
+381 3.4274172157629976e-03 1.4292446889778805e-03 1.1574154154124316e-03
+87 1.2029262523144577e-03 -8.0026169597755987e-05 -3.0499045482128705e-03
+469 -1.1289112404666015e-03 1.0933466790077951e-03 3.5997749034213464e-03
+184 2.9971425808272374e-03 6.4774533195448988e-05 8.2595738484150132e-04
+142 -1.3973708566405666e-03 8.4162012883122765e-04 4.2214263772232469e-03
+13 2.7289960819164459e-03 -2.3356129331581947e-03 -1.2811998241021138e-03
+70 1.6052594407157248e-04 -2.0739931527198621e-04 -5.0935762345896037e-03
+76 -2.4911565388924363e-03 -1.7102017647322424e-04 -2.6947832142061650e-03
+480 -2.3671139540609961e-03 2.8976207948010224e-04 1.8561578398582611e-03
+81 1.7792898374013627e-03 -4.1575893213908364e-03 -1.1572859435052816e-03
+93 -3.7773312643669950e-03 -3.8944313905973768e-03 -4.6913980840448998e-04
+94 -1.2308823272882464e-03 7.5949583100103058e-04 -2.2841899127569827e-03
+138 3.4840757836301857e-04 2.8517626123369453e-03 5.7488614888626056e-04
+3 6.0321247510403163e-04 -2.8428422847798711e-03 6.7678916957651116e-04
+197 1.9191685111340268e-03 -3.1596882008818212e-04 -4.4883738366348656e-04
+154 6.0966180874013395e-04 -2.7894112801673189e-03 2.8121509060799869e-03
+223 -4.8484176917716476e-03 1.3771502157959403e-03 6.5503525580093750e-04
+102 -2.6425505401778859e-03 -4.0199914115257472e-03 1.1541741545410308e-03
+98 2.7054241009166671e-03 -2.9672313415155071e-03 1.7742532086889424e-03
+406 -2.1244411045504458e-04 -1.2658157082914626e-03 1.1012124555226353e-03
+166 -3.4222042569765449e-03 3.3831351814773720e-04 6.2728243204795617e-04
+67 -9.5560152591255061e-05 -8.7179861124624591e-04 -8.9107477929710596e-04
+169 4.3783776411264316e-03 -1.9132268161995455e-03 7.4382142202721047e-04
+111 -8.8125568675217331e-04 -7.8376813257608402e-04 2.4090527769566536e-03
+193 3.1447739152301191e-03 -1.3183060384628204e-03 -5.5431017720991799e-04
+110 -2.3227231613210868e-03 -6.3642502210898991e-04 -6.3836294212245943e-04
+16 -1.7397271536876528e-03 -4.3615954035410270e-04 4.0955385179603874e-03
+97 -1.1067679893939366e-03 -1.1983172356665602e-03 -1.3991293913421816e-03
+407 -1.1494728939119830e-03 1.8698844745756353e-03 3.4189875196061393e-04
+64 1.4631835651289979e-03 -2.8277911348729458e-03 3.7461019169987065e-03
+159 3.6393144284427928e-03 -2.1141157343902012e-03 -2.1303305377902999e-03
+141 1.1471297593711068e-03 -1.8324405021119565e-03 -3.6319897202591015e-03
+344 -1.7329420915848527e-03 -1.6964416805020216e-03 -3.0479091176011663e-03
+68 -2.0224305326709564e-03 -9.3816912631265671e-04 -2.3350682153352484e-03
+128 1.2984558574452437e-03 1.6426993551470071e-03 -8.0276077707860786e-04
+264 -5.5074692594781394e-04 -2.4862613797376294e-03 9.5161912657120383e-04
+248 2.4801822971766627e-03 7.3502788451789954e-04 2.5702396950296439e-03
+168 -1.2215651922443697e-03 3.4527270054371955e-03 -2.9789431321381337e-03
+147 -7.0540255374266819e-04 -1.4997334085060680e-03 1.8913617599920058e-03
+149 -7.6108774056715260e-05 -1.8317865004572427e-04 -1.0721089512934594e-03
+269 7.3017313643897177e-03 5.8835212910976541e-04 2.6075629644794190e-03
+131 6.9428905436132431e-04 1.5663409776087715e-03 -1.6780131394962729e-03
+73 -1.8815810165546535e-03 3.8212849932088653e-03 1.7889921987800242e-03
+277 3.1314529502818292e-03 4.0477974704316612e-03 -3.4116881377702288e-03
+183 -1.6020488437860174e-04 1.6276342096550680e-03 -9.3795410050766010e-04
+158 -8.4460764720296447e-05 -3.8444772294587990e-03 -2.0405955157747971e-04
+263 -2.5507957295253352e-04 -8.3589578761603296e-04 -1.1835145751141787e-05
+56 -2.2930454402257886e-03 -1.2532338922951484e-03 -8.4658226534428194e-04
+152 1.8832923982266153e-04 3.4104928762474728e-03 2.0799256747295642e-03
+189 4.0843663536653291e-04 2.4465171959156952e-03 -2.6571715338802606e-03
+191 4.0761073728464011e-04 2.0667944536502639e-03 2.3365757540651408e-05
+91 -1.0078353371221224e-03 6.2245328901186145e-04 -1.0346552118211470e-03
+174 4.9309699669584693e-03 6.8539978263513516e-03 -5.0204658434153358e-03
+14 3.3818655212390441e-03 2.1091508153149864e-04 2.0317515745854808e-03
+201 1.2427525396644370e-03 -7.0899991224697705e-04 7.5448302201942699e-04
+475 -8.9172035209143287e-04 6.4076043096496932e-04 7.4980360477941202e-05
+162 2.1373028067972078e-03 1.6373841522098857e-03 -2.3790241831934279e-03
+164 -5.2701896315900847e-03 1.7177592569828694e-03 6.0044916697043404e-05
+181 -5.6683662376694243e-04 -1.4825979470346571e-03 2.0617794610694670e-03
+186 -6.0422625466470656e-04 9.2926940590184592e-04 7.1825769969625260e-05
+109 -2.9520282160057284e-04 2.5689078727439514e-03 -9.7334466743079326e-04
+286 -5.0193588414709526e-03 7.4274949829678709e-04 -4.7626368282415992e-03
+268 -4.7677977993028424e-04 4.7111424176936477e-03 -3.1345483163495996e-04
+185 3.1855747529462410e-04 -3.9242941056273697e-03 2.2923311823357981e-05
+392 2.0348552722966257e-03 5.7078451911418866e-04 2.7420310939823972e-03
+235 1.1542598306282911e-03 -2.0474039739056056e-03 -2.9709628503073486e-03
+291 -1.2072065070062776e-03 -6.1959903832513763e-04 7.8515563353727521e-04
+95 -1.3260832237872941e-03 1.3189792357174070e-03 -4.2868328457613498e-03
+471 7.0825969257983835e-04 -5.8191274786255733e-04 1.6041931719607346e-03
+420 2.4677806049745441e-03 1.4288746556922012e-03 -1.2037406865211813e-03
+84 -1.6488359020341685e-03 -2.2596889002430079e-03 -3.1081504714057938e-03
+282 1.9299543215667862e-03 2.9160973835519284e-03 2.0634565113648377e-04
+377 4.0678608670122905e-03 -4.2955239122948038e-03 -9.8407469645821134e-04
+281 -2.6306243317875191e-03 4.2834472629643058e-03 -1.1823005136056407e-03
+364 -1.4197782846454405e-03 1.6295247321429106e-03 -2.0227037345137326e-03
+365 9.4831673121587999e-04 1.4007585734365814e-03 2.0927382332656776e-04
+252 6.4037673549535376e-04 -1.1654749025538132e-04 -4.9834338879404985e-04
+249 -2.3355116707703848e-04 -5.1517545246634764e-03 -2.1159840993110286e-03
+285 -9.8916352409220165e-04 -2.5795428229016880e-03 -3.7125554750707393e-04
+292 -1.9783769064847851e-04 -7.3529035848189563e-04 3.6175230382012777e-03
+378 1.4057375633460833e-03 1.8477855161938201e-03 1.2278730412407419e-03
+272 2.2067096090308286e-03 -7.1186311215172733e-04 2.7975695278089725e-03
+199 -1.4143150933629227e-04 9.1291678932289442e-04 2.5317265965195349e-03
+274 3.5788808475866872e-04 -2.3371583007089315e-03 -4.3546108834637790e-04
+217 -2.4283019556760408e-03 4.8863133065318333e-04 1.4790203086161267e-03
+273 1.2552055306024417e-03 -1.5999341767987359e-03 1.2610074319518899e-06
+283 1.8452230856367679e-04 2.1522379851573810e-03 -1.4591918055293356e-03
+258 -2.1933735906453367e-04 7.9757824417985023e-04 1.9774799276013081e-03
+399 -1.6985128915947801e-03 1.9234314635969050e-03 1.4029858711002809e-03
+266 2.6775072608943638e-03 -8.0863735029934310e-04 2.1559742607723240e-03
+301 -2.1932747198207636e-03 2.4091837504953456e-03 4.0432457578344341e-03
+262 9.5688658980250512e-04 7.5215576812166817e-04 -1.6212488869540398e-03
+178 1.5111002751959600e-03 5.2718826106263608e-04 1.9462291677149263e-04
+241 -3.0521488171895479e-04 1.6414370666423646e-04 1.0679565818583845e-03
+170 7.7186642953375271e-04 -3.2733763921424379e-04 5.4607124007948699e-03
+370 8.8169877725535371e-04 1.8525232115199604e-03 4.4919378615610887e-04
+393 1.2572285021765878e-03 7.5865432785655884e-04 6.1568512302606735e-04
+176 5.5805157354053641e-04 9.4183652744100367e-04 2.1478984104376839e-03
+294 -3.9753190606130777e-03 1.7271927201647132e-03 -5.5089312589279055e-04
+198 -6.8820229685204420e-04 4.1945788230536825e-03 -4.8370658775351332e-04
+180 -4.5384031780846188e-05 -1.1500500144870302e-03 1.2238888931168646e-03
+278 3.3135770932095272e-03 2.4715572864526382e-03 1.9387214381622902e-04
+80 -9.1739970957145298e-04 1.2651805603462812e-03 -2.3679465755404024e-04
+218 4.0645443875594383e-03 3.7873600682160830e-03 -1.6853545931964371e-03
+289 -5.2765669936747760e-03 5.1207525799991382e-04 -2.6688611881202676e-04
+270 1.8297228542262435e-03 2.3511838865958243e-03 2.6012197012238611e-04
+187 4.3548656186011333e-03 3.4591319799141007e-03 5.4635344466769976e-04
+196 4.7270778232088554e-04 1.1611484852660468e-03 -8.5024810292544200e-04
+209 -3.4898487013391224e-03 -3.0200305382923395e-04 2.6479549784270686e-03
+192 -4.4460308371053147e-04 -1.9897692096662169e-03 6.3615783879986392e-04
+100 -4.2240750141193219e-03 -2.5350608969006792e-03 1.5700008456777633e-03
+243 -1.7960542742812668e-03 -6.0772940113100703e-05 2.0177241823242206e-03
+358 -3.4929414019054935e-03 -1.4572223349623419e-04 -5.9207921093033984e-04
+341 3.3108727891900512e-04 -1.5707949524167953e-03 -4.7827398453362804e-03
+346 3.2277658065836133e-03 -2.5644681287928708e-03 -2.3436676631199411e-03
+347 -3.0330386870692307e-04 -1.8228624042103939e-03 9.5137930203143721e-04
+376 3.3316419391635071e-03 -3.4958041664932040e-04 -6.5961474218590802e-05
+50 1.9428702382042419e-03 1.3121717650817728e-04 -1.2619211955120382e-03
+245 -2.7110963938095249e-04 5.0959648184253057e-04 -2.2355067582427463e-03
+371 6.6415799880112153e-04 -5.6285839256968169e-04 -1.9919847010477056e-03
+366 -2.6502491720821648e-03 9.1409764938071467e-04 -1.7411548172015124e-03
+389 3.3140085798083154e-04 -1.3008612856341760e-03 -9.3901352255251302e-04
+255 2.0942584438227610e-03 1.8169160428473689e-03 2.0329285208362108e-03
+160 -1.7939750965552386e-03 1.0978040448754267e-03 -4.3483765733614834e-03
+397 -3.4691116953560326e-04 4.6235689554416474e-03 -3.0822012698890583e-04
+220 1.7873111926312757e-03 1.7632203582850627e-03 4.8074951882357486e-04
+385 -1.4260981354688889e-03 9.7701578874505096e-04 -1.0291905170512301e-03
+361 -2.3595753846802307e-05 -1.7510823259897662e-03 1.1297192306854095e-03
+470 6.0813236400331561e-04 -2.8684737601911310e-04 1.4428913565830920e-03
+267 -5.8006328170737880e-04 -9.2729004810198929e-04 1.2266322361966439e-04
+372 -3.8595404637047288e-04 3.0990494459345451e-04 -1.1131818788489910e-03
+482 -6.9257858687011404e-04 7.8240944331150878e-04 -1.4849772076241351e-03
+295 -4.0354956295941590e-03 1.2775879583219129e-03 -7.1683479580860550e-04
+390 1.8003573758443685e-03 -1.2461228993535198e-04 -1.0405119338004807e-04
+276 6.2686199722657536e-03 -6.0690024822983462e-05 1.6319388507522132e-04
+493 3.0275699159830623e-03 2.2801925483700650e-03 -1.0187607961921498e-03
+362 6.6621849115843814e-04 3.6706643592800917e-04 8.6292080528753683e-04
+284 2.0667637779132799e-03 -4.4225677156808381e-04 1.7485958722262566e-03
+387 1.0305968662509438e-04 2.4117245422773927e-04 -1.4985718619074386e-03
+386 1.7901067877333534e-03 2.0178979009584258e-03 -9.4746346760020991e-04
+205 -2.3130535829650263e-03 -3.3453974947442039e-03 4.8814083539380326e-04
+307 -2.0663433017149295e-03 2.0371062585788626e-03 -9.8206716124390591e-04
+462 7.0794269028573486e-04 2.8885120848424085e-03 1.3172057853083467e-04
+213 -1.0680302200079414e-04 5.5945396554520370e-04 -3.2773721799630568e-03
+313 1.6146932680666532e-03 3.7797522006556252e-04 -6.3889646981071043e-04
+299 -2.4859139711578384e-03 -1.0057841328956123e-03 -1.1335569281171951e-03
+195 1.2031141848029973e-03 1.7672773834572291e-03 -4.8277563992194243e-04
+396 2.5536278086777170e-03 -4.4165362818345981e-04 3.4407767915384290e-04
+394 -2.6401216225523604e-03 5.2396131212740778e-04 -1.4033613524585670e-03
+63 3.0458656916238407e-03 -1.5499795985683038e-03 -2.5510397786390926e-03
+426 -3.6902154303446399e-03 3.3625204149304736e-03 2.7311156773159530e-03
+369 -4.6717146509676173e-04 -1.7244454332297123e-03 -2.5919065016945001e-05
+450 1.4476231793816531e-03 -1.9406933619817336e-04 -3.6766319551952034e-04
+177 -8.0662886999234215e-04 -1.7475599953685785e-03 -2.9902659111958477e-03
+494 3.3139622822261241e-03 -2.8039034346119529e-04 -1.3968495284483343e-03
+474 -1.4133605497640073e-03 -1.5217825083299024e-03 -3.3368625323274993e-03
+275 1.3536850354900762e-03 -8.5444098824722606e-04 1.1410657946503942e-03
+449 -1.3989517635374542e-03 7.0523325376827071e-04 -4.2674823897541450e-04
+297 2.2307225484119385e-04 -3.1569812323291239e-03 3.3320069691201754e-03
+58 -2.1927160500048520e-04 8.2123629579338429e-04 -1.0652996071103217e-03
+348 -1.4899817267752789e-03 2.7658693069194219e-04 -7.8245563181142001e-05
+446 2.0166174402001147e-03 -1.9454598698849400e-03 -3.0681865732862311e-03
+498 1.3016640912290648e-03 -3.5927569275878272e-03 -1.1681169188911805e-03
+367 -9.0197566762910018e-04 -7.8008534995514269e-04 2.0186681204438328e-03
+368 2.4865596949532011e-03 -1.9374179139827325e-03 3.9031193786394792e-03
+207 1.1447599477528536e-03 1.5822872974210209e-03 1.2067926324765123e-03
+54 1.1185750819545880e-03 -2.7085549471432073e-03 -3.4090695135472349e-04
+468 -1.3603854703663531e-03 7.8312785073530403e-04 -1.0184373768804494e-03
+352 5.9326242786915363e-04 5.6890092718657687e-04 -2.5071594908179953e-03
+489 -1.4821977185628045e-03 2.1682949032823203e-03 7.5224077794902686e-04
+486 -4.1070626528124246e-03 2.1533825680716090e-03 -1.4602677119395597e-03
+89 1.2022548160801137e-03 7.1642449265503207e-05 -1.0737286515568863e-04
+309 -1.3251163282089371e-03 -1.3501744051002363e-03 -5.3459485709054788e-03
+215 -1.1938154464889994e-03 1.0714458228778482e-03 -1.6503222377562876e-03
+413 1.6865860759689936e-03 -1.9968621187405711e-03 -2.7224195293588426e-03
+317 -2.0947310969609239e-03 -1.0669039418251707e-03 -1.3614000068600627e-03
+464 7.7970113348324013e-04 -1.9064865975767936e-03 2.0063090929302325e-03
+479 -4.5433604440575474e-03 -2.3049863894331144e-03 2.4687291132977985e-03
+363 -1.8215723489570080e-04 -1.3637433163173155e-04 -4.6439910455608194e-04
+408 -1.6807743597048177e-03 -9.9123745866370560e-04 2.6089504702508336e-03
+287 -2.6252756695253042e-04 -1.7360648562825555e-04 5.9810635035619262e-05
+411 -2.8640668025632903e-04 3.2245138872279496e-03 1.1800960002302459e-04
+395 -4.5794108761477439e-04 1.3302221661884738e-03 -3.1066973534371020e-04
+430 2.5315913696943460e-03 -3.4715905643932849e-05 1.6510924548626094e-03
+15 -4.2155515651220174e-03 -1.9801858023966177e-03 8.5162758587037607e-04
+495 4.4573668854160049e-04 1.6441452463791908e-03 -5.9751175512677644e-04
+404 2.2950102075707446e-03 1.7758023663071853e-03 1.8039293540408397e-03
+418 -7.2451983238029015e-05 -3.3843492959321148e-03 -1.3187695003120077e-04
+439 9.9720806021715469e-04 -4.8581069421707270e-04 1.0324789198996329e-03
+398 -2.8757815036564667e-04 2.7291067928466466e-03 1.3226081921061529e-03
+319 -1.2635864503665248e-03 -1.5932818430664942e-03 1.0158167304661526e-04
+65 -1.4017947130397857e-03 5.5456272483510134e-03 -2.4696664160818427e-04
+465 4.5486141360262538e-04 2.1304472661568133e-03 -3.5651762745476682e-03
+487 1.1720190806708394e-03 -3.2648800119911724e-04 1.4973783593709927e-04
+448 -2.8978123826443056e-03 -2.6306590058639500e-03 -6.4168664298024775e-04
+452 1.0373260699641697e-03 1.2661449204558338e-03 -1.5547885448432396e-03
+69 1.3021214634402758e-03 -8.5887611192840064e-04 3.9012171973351419e-03
+456 -9.0622622485102701e-04 1.5140596535282670e-03 1.8071779515211397e-03
+380 1.3650247912024954e-04 -2.7832988609063072e-03 1.8745261935893369e-03
+36 1.5274885676604326e-03 3.5125386820381954e-04 -9.2154580728780330e-04
+78 -1.9077570104994339e-03 1.2297554091691442e-04 -2.0410427556088696e-03
+461 -1.8326431556592428e-03 -1.3035582741604958e-03 -1.8388887014677744e-03
+490 1.1501260619871964e-03 2.1834799931634680e-04 3.6754009202314120e-03
+497 -2.5075108017209424e-04 2.4283661477287382e-04 -5.3176698465725308e-05
+62 -8.7072566643904244e-04 -6.6872116817724529e-04 1.7355357576545791e-03
+298 2.3027028455103338e-03 1.6046752756299328e-03 -8.7316458941522849e-04
+485 1.5397656617452326e-03 4.2851763745908276e-04 -2.0152037209154828e-03
+66 -1.5416387762040515e-03 3.1531869418482765e-03 1.5726443255865577e-03
+92 2.2054847512569631e-03 -3.8935840527918464e-04 1.3864262333541444e-03
+72 -5.3995707747408160e-04 -1.8060869687938873e-03 8.4129777332964681e-04
+472 2.4768269208077973e-03 3.8652711943843589e-03 9.3186921982638343e-04
+130 -4.1020965474395044e-04 -1.2247957392274172e-03 -6.6117952000134084e-05
+500 2.9794447468093688e-04 -3.6298123130995069e-03 -1.0449474735152973e-03
+496 8.8260000065661830e-04 5.9314827726629515e-04 2.8089013678511722e-03
+310 1.9578067367884105e-03 2.5930267656703778e-03 1.2817449758963334e-03
+473 -1.8161482194553880e-03 -2.0175688142892488e-03 -1.8379861268429332e-04
+46 -1.0413045712618946e-03 2.0973967108389091e-03 -1.6900573292605615e-03
+463 1.6130049526662244e-05 2.8387309323286208e-03 2.8959222162097059e-03
+478 -2.0040744162538129e-03 7.5363410509093909e-04 -1.9749090495233874e-04
+7 1.4452813701290260e-03 5.0152936278627609e-05 -4.7161442552601674e-03
+5 2.3994165197337870e-03 6.6828770991019166e-04 3.2516694868713475e-03
+409 -2.4814774122222565e-03 -2.3601948986678536e-03 -3.4962902444495699e-03
+405 1.7237017901882777e-03 -5.7811821835621439e-03 2.3817763037473970e-03
+416 -8.1966937785310859e-04 -1.0916590537153774e-03 1.8068005908095875e-04
+415 2.0128015379018257e-04 -5.9301345229979124e-04 3.1963971748053400e-03
+10 -3.8399397642326159e-04 7.7383866489061880e-04 1.3279940407181009e-03
+491 -1.1307249255575710e-03 -1.1123103631141790e-05 -1.4223891584675037e-03
+96 -9.8913610822259760e-04 1.2491351789608036e-03 -2.0335144812349912e-03
+74 -1.0113643129020479e-03 -2.5170853945448196e-03 3.6195209641901546e-03
+499 -4.7373850007826550e-04 -1.8583299362177925e-03 -1.5492872941080451e-03
+481 -2.4354716359828504e-03 1.0615445072124292e-03 1.3163281159845756e-04
+417 5.2846844503718184e-04 2.2922592855675315e-03 -1.8747723764988521e-03
+382 -1.8613170040471094e-03 3.9298321137399457e-03 -1.2406984302226912e-03
+476 1.0064771011327170e-03 3.6756565915333447e-03 -3.4554233001269198e-03
+457 1.4072194452814185e-04 1.8978807352833516e-03 -1.0424449324295528e-03
+29 -1.6466758477746751e-03 -3.1804956687750207e-04 8.3989634840135195e-04
+202 2.5617807707964176e-03 -4.6092749208942766e-03 2.3106546779111175e-03
+203 -6.4326362346926649e-04 2.1540094522550942e-03 8.4100267846229783e-04
+210 1.4263505619140464e-03 8.3640989097722655e-04 7.8311189627065987e-04
diff --git a/examples/USER/misc/grem/lj-temper/2/log.lammps.2 b/examples/USER/misc/grem/lj-temper/2/log.lammps.2
new file mode 100644
index 000000000..7a67a8ad4
--- /dev/null
+++ b/examples/USER/misc/grem/lj-temper/2/log.lammps.2
@@ -0,0 +1,1074 @@
+print "This is replica: ${rep}"
+This is replica: 2
+
+read_data ${rep}/lj.data
+read_data 2/lj.data
+ orthogonal box = (1.25535 1.25535 1.25535) to (23.7446 23.7446 23.7446)
+ 1 by 1 by 1 MPI processor grid
+ reading atoms ...
+ 500 atoms
+ reading velocities ...
+ 500 velocities
+ 0 = max # of 1-2 neighbors
+ 0 = max # of 1-3 neighbors
+ 0 = max # of 1-4 neighbors
+ 1 = max # of special neighbors
+
+#dump dump all xyz 1000 ${rep}/dump.xyz
+
+thermo 10
+thermo_style custom step temp pe etotal press vol
+timestep 1.0
+
+fix fxnpt all npt temp ${T0} ${T0} 1000.0 iso ${press} ${press} 10000.0
+fix fxnpt all npt temp 300 ${T0} 1000.0 iso ${press} ${press} 10000.0
+fix fxnpt all npt temp 300 300 1000.0 iso ${press} ${press} 10000.0
+fix fxnpt all npt temp 300 300 1000.0 iso 0 ${press} 10000.0
+fix fxnpt all npt temp 300 300 1000.0 iso 0 0 10000.0
+fix fxgREM all grem ${lambda} -.03 -30000 fxnpt
+fix fxgREM all grem 920 -.03 -30000 fxnpt
+thermo_modify press fxgREM_press
+
+temper/grem 10000 100 ${lambda} fxgREM fxnpt 10294 98392 #${walker}
+temper/grem 10000 100 920 fxgREM fxnpt 10294 98392
+Neighbor list info ...
+ 1 neighbor list requests
+ update every 1 steps, delay 10 steps, check yes
+ max neighbors/atom: 2000, page size: 100000
+ master list distance cutoff = 7
+ ghost atom cutoff = 7
+ binsize = 3.5 -> bins = 7 7 7
+Memory usage per processor = 5.3797 Mbytes
+Step Temp PotEng TotEng Press Volume
+ 0 303.5147 -3379.1918 -2927.7367 939.06157 11374.376
+ 10 302.01819 -3379.7359 -2930.5067 955.34812 11374.385
+ 20 299.66358 -3378.5808 -2932.854 998.03963 11374.412
+ 30 297.90005 -3376.5984 -2933.4946 1044.5312 11374.459
+ 40 297.80982 -3376.2818 -2933.3122 1054.8591 11374.525
+ 50 299.23154 -3376.6121 -2931.5279 1041.3766 11374.611
+ 60 302.03518 -3378.9567 -2929.7023 989.46264 11374.717
+ 70 306.89734 -3382.1482 -2925.6616 909.21372 11374.842
+ 80 312.96036 -3387.2525 -2921.7477 798.74753 11374.984
+ 90 317.17373 -3389.1395 -2917.3676 741.54767 11375.141
+ 100 318.12855 -3389.1972 -2916.0051 732.24211 11375.313
+ 110 317.40874 -3387.8509 -2915.7295 752.10626 11375.498
+ 120 317.26883 -3388.0404 -2916.1271 747.01078 11375.698
+ 130 318.44405 -3388.8957 -2915.2343 716.45621 11375.912
+ 140 320.49327 -3390.6741 -2913.9647 662.18511 11376.14
+ 150 321.57523 -3390.6897 -2912.3709 631.6531 11376.38
+ 160 319.8381 -3388.8758 -2913.1409 645.43574 11376.633
+ 170 314.72914 -3387.1325 -2918.9968 690.12596 11376.897
+ 180 307.88565 -3382.5075 -2924.5509 787.49791 11377.175
+ 190 302.4306 -3379.5129 -2929.6703 860.06931 11377.468
+ 200 300.55209 -3378.8051 -2931.7566 879.17024 11377.778
+ 210 302.1658 -3378.4897 -2929.0409 861.25419 11378.104
+ 220 306.03052 -3380.9764 -2925.7792 784.32025 11378.447
+ 230 311.24302 -3383.7517 -2920.8013 683.50702 11378.804
+ 240 317.19613 -3387.7686 -2915.9634 557.05248 11379.175
+ 250 321.84027 -3392.5772 -2913.8642 433.86307 11379.556
+ 260 322.49145 -3392.6128 -2912.9312 405.00168 11379.945
+ 270 319.15693 -3391.296 -2916.5742 434.93244 11380.343
+ 280 313.97609 -3388.341 -2921.3254 510.85834 11380.749
+ 290 308.48891 -3384.8125 -2925.9586 605.15694 11381.164
+ 300 303.98225 -3382.1398 -2929.9893 688.68264 11381.592
+ 310 301.16194 -3378.5127 -2930.5572 772.56756 11382.032
+ 320 299.57734 -3377.8676 -2932.269 811.10407 11382.487
+ 330 298.20583 -3376.5619 -2933.0033 850.91749 11382.958
+ 340 296.68231 -3375.9562 -2934.6638 875.27503 11383.445
+ 350 296.07804 -3374.5866 -2934.193 890.91889 11383.949
+ 360 297.85202 -3376.2248 -2933.1925 843.92836 11384.469
+ 370 302.07191 -3378.2848 -2928.9758 765.82512 11385.006
+ 380 307.49834 -3380.8082 -2923.4278 672.28582 11385.557
+ 390 312.23703 -3382.6579 -2918.229 595.95834 11386.122
+ 400 315.07191 -3384.8092 -2916.1636 538.20119 11386.698
+ 410 315.94513 -3385.1213 -2915.1768 524.5897 11387.284
+ 420 315.30599 -3385.9721 -2916.9783 521.24858 11387.881
+ 430 313.40144 -3384.8785 -2918.7176 551.21708 11388.488
+ 440 310.63766 -3383.6667 -2921.6167 585.62129 11389.105
+ 450 308.5878 -3382.6214 -2923.6204 604.44349 11389.733
+ 460 308.95854 -3383.4294 -2923.877 573.35315 11390.374
+ 470 311.48972 -3384.2274 -2920.91 518.66227 11391.025
+ 480 313.53991 -3385.131 -2918.7641 464.40873 11391.686
+ 490 312.7438 -3385.3737 -2920.191 442.86257 11392.356
+ 500 309.36576 -3382.7455 -2922.5874 478.65718 11393.035
+ 510 306.02972 -3381.4592 -2926.2632 503.73832 11393.723
+ 520 304.91443 -3380.8562 -2927.3191 503.69667 11394.421
+ 530 306.90624 -3381.6004 -2925.1006 461.88876 11395.128
+ 540 310.95566 -3383.453 -2920.93 389.09174 11395.845
+ 550 314.97025 -3386.2079 -2917.7136 305.58596 11396.569
+ 560 317.27856 -3386.2296 -2914.3018 271.64243 11397.299
+ 570 316.65742 -3386.3265 -2915.3226 265.5502 11398.034
+ 580 313.57724 -3385.2042 -2918.7818 296.4929 11398.775
+ 590 310.76616 -3383.592 -2921.3508 332.13482 11399.521
+ 600 310.56557 -3382.7619 -2920.8192 337.42905 11400.274
+ 610 312.25189 -3384.1259 -2919.6749 301.12723 11401.034
+ 620 313.24348 -3384.0218 -2918.0959 287.28351 11401.799
+ 630 311.62555 -3383.6639 -2920.1445 300.88185 11402.57
+ 640 306.89182 -3380.3762 -2923.8979 376.45557 11403.347
+ 650 300.52127 -3376.7659 -2929.7633 469.88722 11404.132
+ 660 295.39559 -3374.6961 -2935.3176 534.41022 11404.925
+ 670 293.59119 -3373.5724 -2936.8778 557.79376 11405.729
+ 680 295.36949 -3374.8633 -2935.5236 520.47729 11406.543
+ 690 299.69654 -3378.0857 -2932.3098 439.24953 11407.368
+ 700 304.59438 -3382.4412 -2929.3802 343.41809 11408.201
+ 710 307.96318 -3385.2225 -2927.1506 284.402 11409.041
+ 720 308.35357 -3385.4211 -2926.7686 286.21174 11409.886
+ 730 305.33918 -3382.9107 -2928.7418 350.49893 11410.738
+ 740 300.03501 -3380.2078 -2933.9285 432.74134 11411.596
+ 750 295.12581 -3377.7448 -2938.7676 498.71123 11412.463
+ 760 293.47318 -3377.2413 -2940.7222 500.40178 11413.339
+ 770 296.15733 -3378.6892 -2938.1776 430.22536 11414.225
+ 780 301.50769 -3381.2166 -2932.7467 318.64474 11415.119
+ 790 306.13175 -3383.3122 -2927.9645 219.00268 11416.02
+ 800 307.37357 -3384.554 -2927.3591 165.57164 11416.925
+ 810 304.85262 -3381.8199 -2928.3748 199.62236 11417.834
+ 820 300.60164 -3377.5193 -2930.3971 273.18602 11418.746
+ 830 297.77967 -3376.0544 -2933.1297 303.65329 11419.664
+ 840 298.49364 -3377.374 -2933.3873 268.86417 11420.588
+ 850 302.57668 -3380.4586 -2930.3987 179.21637 11421.517
+ 860 308.14872 -3383.9175 -2925.5696 66.802979 11422.449
+ 870 313.06449 -3385.9345 -2920.2748 -27.644002 11423.383
+ 880 316.30535 -3390.2339 -2919.7537 -134.25313 11424.317
+ 890 317.74593 -3390.8186 -2918.1956 -177.66609 11425.248
+ 900 316.86746 -3390.4013 -2919.085 -181.01119 11426.176
+ 910 312.83916 -3387.691 -2922.3665 -122.44293 11427.101
+ 920 306.04955 -3384.2412 -2929.0157 -26.251061 11428.024
+ 930 298.70537 -3380.0665 -2935.7648 85.194278 11428.946
+ 940 293.16469 -3374.8762 -2938.8159 191.47072 11429.87
+ 950 290.52469 -3375.1154 -2942.9819 203.84747 11430.798
+ 960 291.09669 -3375.5747 -2942.5904 178.59821 11431.73
+ 970 293.99694 -3377.4311 -2940.1329 112.43402 11432.665
+ 980 297.31974 -3380.071 -2937.8304 32.375746 11433.603
+ 990 299.27867 -3382.2872 -2937.1329 -28.673784 11434.542
+ 1000 299.18538 -3381.9504 -2936.9349 -39.701634 11435.48
+ 1010 298.23484 -3381.0978 -2937.4961 -33.404095 11436.418
+ 1020 298.25068 -3381.2242 -2937.5989 -43.442228 11437.355
+ 1030 300.04566 -3381.6325 -2935.3373 -71.253925 11438.291
+ 1040 303.03618 -3383.1573 -2932.4139 -123.1949 11439.227
+ 1050 305.62588 -3385.6285 -2931.0332 -184.60439 11440.16
+ 1060 306.07572 -3385.2324 -2929.968 -198.95981 11441.09
+ 1070 304.58306 -3384.4562 -2931.412 -196.21389 11442.016
+ 1080 303.06947 -3384.0606 -2933.2678 -198.57704 11442.939
+ 1090 302.02905 -3383.296 -2934.0506 -197.95326 11443.858
+ 1100 300.12698 -3382.5392 -2936.1231 -186.50374 11444.773
+ 1110 297.09858 -3380.7073 -2938.7957 -150.78343 11445.685
+ 1120 294.34115 -3379.1724 -2941.3623 -122.02811 11446.594
+ 1130 293.53424 -3378.5476 -2941.9377 -123.07716 11447.501
+ 1140 294.65948 -3379.0854 -2940.8018 -157.77335 11448.406
+ 1150 296.41713 -3379.7404 -2938.8424 -203.59962 11449.308
+ 1160 297.79086 -3381.3482 -2938.4069 -259.83749 11450.206
+ 1170 298.3438 -3381.0176 -2937.2538 -285.02956 11451.1
+ 1180 297.93842 -3380.9013 -2937.7405 -299.60577 11451.988
+ 1190 297.07582 -3381.4271 -2939.5494 -313.37642 11452.871
+ 1200 296.14975 -3382.3095 -2941.8092 -328.47519 11453.747
+ 1210 294.6538 -3380.4823 -2942.2071 -307.74563 11454.618
+ 1220 292.18812 -3379.3884 -2944.7807 -288.80549 11455.483
+ 1230 289.29587 -3378.0359 -2947.7302 -265.02817 11456.343
+ 1240 287.36784 -3376.9988 -2949.5609 -253.90577 11457.197
+ 1250 287.9862 -3378.15 -2949.7924 -288.61773 11458.047
+ 1260 290.67163 -3379.6236 -2947.2715 -343.01375 11458.891
+ 1270 293.05086 -3381.7057 -2945.8148 -398.8239 11459.729
+ 1280 293.3269 -3382.6504 -2946.3489 -421.98111 11460.559
+ 1290 291.94616 -3381.2819 -2947.0341 -404.2175 11461.381
+ 1300 290.48513 -3379.3388 -2947.2642 -379.01155 11462.196
+ 1310 289.5049 -3379.3947 -2948.7781 -380.76243 11463.004
+ 1320 288.29266 -3377.7319 -2948.9185 -361.06431 11463.804
+ 1330 286.50603 -3376.906 -2950.75 -346.08019 11464.598
+ 1340 284.97315 -3376.1 -2952.2241 -334.73457 11465.385
+ 1350 285.0942 -3376.5494 -2952.4934 -353.9694 11466.166
+ 1360 287.69797 -3377.0467 -2949.1178 -398.93385 11466.94
+ 1370 292.61732 -3380.2532 -2945.0072 -497.14612 11467.706
+ 1380 298.30665 -3384.3222 -2940.6136 -612.2068 11468.463
+ 1390 303.26834 -3387.0353 -2935.9466 -704.13502 11469.208
+ 1400 307.12598 -3390.0083 -2933.1817 -784.07577 11469.94
+ 1410 309.28751 -3391.3029 -2931.2611 -822.41195 11470.657
+ 1420 308.33374 -3391.1158 -2932.4927 -810.90129 11471.358
+ 1430 303.41392 -3388.1401 -2936.8349 -729.8452 11472.043
+ 1440 295.21967 -3382.141 -2943.0241 -587.89152 11472.715
+ 1450 286.33756 -3376.9157 -2951.0103 -453.63505 11473.375
+ 1460 279.57758 -3373.7583 -2957.9078 -367.76561 11474.027
+ 1470 276.53714 -3372.0477 -2960.7197 -335.44486 11474.671
+ 1480 276.72464 -3371.2202 -2959.6132 -344.80853 11475.31
+ 1490 278.18011 -3372.6 -2958.8281 -392.59319 11475.941
+ 1500 279.24386 -3374.1359 -2958.7818 -438.80168 11476.565
+ 1510 279.7253 -3374.402 -2958.3318 -464.06084 11477.181
+ 1520 280.57993 -3374.2326 -2956.8912 -486.5533 11477.787
+ 1530 283.32681 -3374.5417 -2953.1145 -530.04289 11478.385
+ 1540 288.71705 -3377.364 -2947.9192 -623.34122 11478.972
+ 1550 295.37839 -3382.2674 -2942.9144 -748.15024 11479.547
+ 1560 300.71489 -3385.8532 -2938.5626 -841.74051 11480.108
+ 1570 302.63639 -3388.1734 -2938.0247 -886.85898 11480.653
+ 1580 300.45296 -3387.755 -2940.854 -862.42112 11481.181
+ 1590 295.47091 -3384.8622 -2945.3716 -785.65409 11481.693
+ 1600 290.44995 -3381.2867 -2949.2644 -703.72186 11482.189
+ 1610 287.57476 -3379.3984 -2951.6528 -662.6066 11482.672
+ 1620 286.53051 -3378.4826 -2952.2902 -650.80082 11483.142
+ 1630 285.38648 -3378.5573 -2954.0665 -652.91162 11483.6
+ 1640 283.8586 -3378.5296 -2956.3115 -651.89421 11484.045
+ 1650 283.23307 -3379.1764 -2957.8887 -664.31601 11484.477
+ 1660 283.85091 -3379.7817 -2957.575 -683.98395 11484.897
+ 1670 284.77612 -3380.1747 -2956.5918 -703.72987 11485.303
+ 1680 285.30283 -3380.0644 -2955.6981 -718.1161 11485.697
+ 1690 285.49074 -3380.4047 -2955.7589 -741.16629 11486.076
+ 1700 286.20519 -3380.1412 -2954.4327 -768.93434 11486.441
+ 1710 288.71261 -3382.6677 -2953.2296 -848.68486 11486.791
+ 1720 293.2831 -3385.7819 -2949.5455 -952.94302 11487.125
+ 1730 298.63728 -3388.7141 -2944.5138 -1055.871 11487.44
+ 1740 302.4884 -3389.9565 -2940.0279 -1114.512 11487.736
+ 1750 302.35616 -3390.6353 -2940.9035 -1117.2374 11488.009
+ 1760 297.2937 -3388.0766 -2945.8748 -1028.5991 11488.262
+ 1770 289.76103 -3382.8462 -2951.8487 -883.46138 11488.494
+ 1780 284.66174 -3379.8713 -2956.4585 -787.48556 11488.71
+ 1790 285.43678 -3380.6956 -2956.13 -791.71815 11488.91
+ 1800 291.12802 -3383.563 -2950.5322 -869.61106 11489.095
+ 1810 298.04214 -3387.3041 -2943.989 -972.77352 11489.262
+ 1820 302.29515 -3391.4179 -2941.7768 -1057.7023 11489.411
+ 1830 301.7556 -3390.142 -2941.3034 -1036.3434 11489.54
+ 1840 296.70542 -3386.9356 -2945.6088 -950.59168 11489.649
+ 1850 289.59634 -3382.6184 -2951.8658 -832.07808 11489.74
+ 1860 283.23887 -3379.5471 -2958.2507 -732.04265 11489.814
+ 1870 278.91498 -3375.7242 -2960.8593 -640.92199 11489.875
+ 1880 276.44705 -3375.6491 -2964.4551 -608.84139 11489.923
+ 1890 275.15496 -3374.8301 -2965.5579 -579.00068 11489.959
+ 1900 274.67282 -3375.4162 -2966.8612 -574.06998 11489.984
+ 1910 275.12109 -3374.9824 -2965.7606 -569.89081 11489.998
+ 1920 276.84494 -3375.9714 -2964.1856 -600.24967 11490.001
+ 1930 279.91942 -3378.0348 -2961.6759 -662.59206 11489.992
+ 1940 283.67405 -3380.7706 -2958.827 -744.58784 11489.971
+ 1950 286.81652 -3382.0888 -2955.471 -808.56984 11489.935
+ 1960 288.63882 -3383.2706 -2953.9423 -858.17388 11489.884
+ 1970 289.49576 -3384.921 -2954.318 -900.75656 11489.816
+ 1980 290.39872 -3385.6798 -2953.7337 -927.87134 11489.731
+ 1990 291.32905 -3386.9804 -2953.6506 -954.84301 11489.628
+ 2000 290.77847 -3387.9151 -2955.4041 -959.24278 11489.506
+ 2010 287.66282 -3386.7748 -2958.8982 -915.65755 11489.367
+ 2020 283.21157 -3383.1185 -2961.8628 -831.39426 11489.209
+ 2030 279.78792 -3380.0806 -2963.9172 -765.21653 11489.036
+ 2040 279.01543 -3378.9025 -2963.8882 -747.40559 11488.847
+ 2050 280.92303 -3380.2548 -2962.4031 -787.67419 11488.644
+ 2060 284.69026 -3381.1491 -2957.6939 -844.36904 11488.426
+ 2070 289.33478 -3383.0995 -2952.736 -922.42975 11488.191
+ 2080 294.04476 -3383.6459 -2946.2766 -983.0429 11487.939
+ 2090 298.53579 -3386.4301 -2942.3808 -1060.7335 11487.668
+ 2100 302.25173 -3389.4079 -2939.8313 -1122.3844 11487.376
+ 2110 303.2839 -3389.7173 -2938.6055 -1117.2499 11487.062
+ 2120 299.57557 -3387.562 -2941.966 -1031.0726 11486.727
+ 2130 291.01594 -3383.0078 -2950.1437 -869.21854 11486.373
+ 2140 280.3297 -3377.5713 -2960.6022 -679.00304 11486.001
+ 2150 271.30898 -3372.3506 -2968.7991 -513.48181 11485.616
+ 2160 267.28331 -3370.9192 -2973.3555 -446.9413 11485.221
+ 2170 269.56917 -3372.226 -2971.2623 -479.2055 11484.818
+ 2180 276.51753 -3376.5982 -2965.2993 -596.91956 11484.404
+ 2190 285.12808 -3381.5829 -2957.4765 -740.42485 11483.98
+ 2200 292.34143 -3385.8608 -2951.0251 -861.80154 11483.541
+ 2210 295.5131 -3387.9723 -2948.419 -916.93578 11483.085
+ 2220 293.55927 -3386.861 -2950.2139 -883.36556 11482.612
+ 2230 287.74008 -3383.8137 -2955.8222 -789.35644 11482.123
+ 2240 281.06869 -3380.1224 -2962.054 -679.82095 11481.617
+ 2250 276.62062 -3376.9776 -2965.5254 -597.93353 11481.099
+ 2260 275.78956 -3377.9836 -2967.7675 -600.12583 11480.569
+ 2270 278.41604 -3379.0936 -2964.9708 -639.27829 11480.027
+ 2280 283.36171 -3383.0491 -2961.57 -735.76839 11479.473
+ 2290 288.84806 -3386.5445 -2956.9048 -834.67512 11478.905
+ 2300 293.12141 -3387.5992 -2951.6033 -896.30276 11478.321
+ 2310 297.03461 -3389.6981 -2947.8817 -1022.3917 11477.719
+ 2320 301.28278 -3392.8995 -2944.7642 -1103.7519 11477.097
+ 2330 304.00699 -3395.2581 -2943.0708 -1157.067 11476.454
+ 2340 303.00515 -3394.8957 -2944.1985 -1143.4034 11475.789
+ 2350 298.11502 -3391.8516 -2948.4281 -1063.3765 11475.102
+ 2360 291.76765 -3389.7109 -2955.7286 -979.64342 11474.394
+ 2370 287.57328 -3387.1838 -2959.4403 -908.39375 11473.667
+ 2380 287.56643 -3386.976 -2959.2427 -899.23001 11472.923
+ 2390 290.69747 -3387.978 -2955.5875 -932.0179 11472.161
+ 2400 294.36926 -3390.4665 -2952.6145 -988.53214 11471.381
+ 2410 295.48519 -3391.9845 -2952.4727 -954.5636 11470.583
+ 2420 293.36075 -3392.3448 -2955.9929 -931.28238 11469.766
+ 2430 289.87642 -3389.3836 -2958.2144 -853.92038 11468.931
+ 2440 286.89909 -3388.0436 -2961.303 -796.50572 11468.08
+ 2450 284.60172 -3386.3255 -2963.002 -740.13382 11467.214
+ 2460 282.35941 -3384.7714 -2964.7831 -687.67905 11466.333
+ 2470 280.39195 -3384.301 -2967.2392 -650.16191 11465.439
+ 2480 279.04675 -3383.8091 -2968.7482 -618.61613 11464.532
+ 2490 278.66607 -3384.0294 -2969.5348 -606.3774 11463.614
+ 2500 280.13353 -3385.7541 -2969.0767 -630.03316 11462.683
+ 2510 283.71958 -3387.5729 -2965.5615 -674.68277 11461.741
+ 2520 288.04189 -3391.1541 -2962.7137 -745.86924 11460.785
+ 2530 291.28211 -3391.4544 -2958.1944 -768.44428 11459.815
+ 2540 292.98477 -3392.1436 -2956.351 -777.7229 11458.83
+ 2550 293.50977 -3392.647 -2956.0735 -769.10526 11457.831
+ 2560 292.72131 -3392.6197 -2957.219 -739.72872 11456.816
+ 2570 290.02028 -3390.9101 -2959.527 -675.72493 11455.788
+ 2580 285.7588 -3389.5738 -2964.5292 -606.83652 11454.746
+ 2590 281.85431 -3386.4774 -2967.2404 -525.53609 11453.693
+ 2600 280.4425 -3385.278 -2968.1411 -490.99442 11452.63
+ 2610 282.25275 -3385.3626 -2965.5331 -501.51053 11451.558
+ 2620 286.19326 -3386.994 -2961.3032 -548.47636 11450.475
+ 2630 289.90214 -3390.5918 -2959.3844 -613.12377 11449.382
+ 2640 291.23669 -3391.3112 -2958.1187 -620.56296 11448.278
+ 2650 290.03573 -3390.8957 -2959.4895 -589.30574 11447.162
+ 2660 287.94251 -3389.6755 -2961.3828 -537.17791 11446.034
+ 2670 286.77562 -3388.3569 -2961.7999 -489.00519 11444.896
+ 2680 287.20761 -3387.7376 -2960.538 -462.43528 11443.749
+ 2690 288.75538 -3387.528 -2958.0262 -451.41021 11442.593
+ 2700 290.25789 -3388.3447 -2956.6081 -451.75852 11441.428
+ 2710 290.25678 -3388.9108 -2957.1759 -435.66639 11440.255
+ 2720 288.09007 -3386.7222 -2958.2101 -368.61922 11439.073
+ 2730 284.93908 -3383.4122 -2959.5869 -278.83308 11437.884
+ 2740 283.00852 -3381.4921 -2960.5384 -213.33301 11436.69
+ 2750 283.25571 -3383.251 -2961.9296 -206.073 11435.492
+ 2760 284.73114 -3385.0912 -2961.5752 -209.01164 11434.29
+ 2770 286.20349 -3387.5862 -2961.8802 -220.57325 11433.084
+ 2780 287.33298 -3388.2961 -2960.9101 -210.25138 11431.874
+ 2790 287.87442 -3389.0452 -2960.8539 -198.80899 11430.659
+ 2800 287.51671 -3388.8581 -2961.1988 -173.2326 11429.441
+ 2810 286.11851 -3388.3039 -2962.7243 -140.84973 11428.22
+ 2820 284.65812 -3387.447 -2964.0397 -108.87551 11426.996
+ 2830 284.31005 -3387.5224 -2964.6328 -99.523592 11425.771
+ 2840 285.76901 -3387.7653 -2962.7056 -106.75968 11424.543
+ 2850 288.76478 -3387.8836 -2958.3679 -122.25494 11423.313
+ 2860 292.00704 -3389.8626 -2955.5242 -156.85412 11422.081
+ 2870 294.09752 -3390.0932 -2952.6454 -156.83054 11420.847
+ 2880 294.22319 -3390.0578 -2952.4231 -133.30402 11419.609
+ 2890 292.59122 -3389.6179 -2954.4107 -89.139611 11418.369
+ 2900 290.45621 -3389.0051 -2956.9735 -39.511167 11417.127
+ 2910 288.85115 -3388.8421 -2959.1979 -4.0265263 11415.885
+ 2920 288.21484 -3389.1291 -2960.4314 12.799329 11414.643
+ 2930 288.12811 -3389.2223 -2960.6535 22.026583 11413.401
+ 2940 287.94654 -3389.7837 -2961.485 22.81034 11412.159
+ 2950 287.23552 -3391.2057 -2963.9646 13.961071 11410.918
+ 2960 286.85609 -3391.6434 -2964.9667 9.4902602 11409.678
+ 2970 288.78803 -3392.1611 -2962.6108 -17.295912 11408.437
+ 2980 293.10525 -3393.5944 -2957.6226 -70.865292 11407.197
+ 2990 296.55773 -3395.8226 -2954.7155 -118.33212 11405.955
+ 3000 296.30277 -3395.9397 -2955.2118 -101.05038 11404.711
+ 3010 292.81266 -3392.9188 -2957.3822 -9.2366195 11403.466
+ 3020 288.15799 -3391.0331 -2962.4199 88.390489 11402.22
+ 3030 284.67202 -3389.7166 -2966.2886 171.23032 11400.976
+ 3040 284.55554 -3390.4351 -2967.1803 199.22597 11399.735
+ 3050 287.17666 -3393.3301 -2966.1766 172.87399 11398.498
+ 3060 289.89085 -3394.5707 -2963.38 157.59774 11397.265
+ 3070 291.24917 -3394.0706 -2960.8595 169.031 11396.035
+ 3080 290.93664 -3393.0875 -2960.3413 198.96579 11394.808
+ 3090 288.71312 -3392.3954 -2962.9565 241.21592 11393.585
+ 3100 285.83362 -3391.9606 -2966.8048 285.62805 11392.367
+ 3110 286.36561 -3390.0035 -2964.0563 255.15091 11391.154
+ 3120 293.37557 -3393.8773 -2957.5034 152.19108 11389.946
+ 3130 304.02065 -3399.6429 -2947.4353 -9.9174072 11388.74
+ 3140 314.14932 -3404.2112 -2936.9379 -156.12755 11387.535
+ 3150 320.69929 -3408.3801 -2931.3642 -261.55638 11386.327
+ 3160 322.20029 -3408.5548 -2929.3063 -265.34504 11385.114
+ 3170 318.26929 -3405.7105 -2932.309 -176.35162 11383.896
+ 3180 310.48173 -3400.856 -2939.038 -27.675078 11382.676
+ 3190 302.90284 -3397.1722 -2946.6272 99.924865 11381.454
+ 3200 299.82667 -3395.5953 -2949.6259 156.90813 11380.235
+ 3210 302.00765 -3397.3292 -2948.1157 123.67862 11379.019
+ 3220 306.66429 -3400.177 -2944.0371 51.413685 11377.805
+ 3230 310.19903 -3402.0131 -2940.6156 0.34410521 11376.592
+ 3240 310.57422 -3402.0949 -2940.1393 2.9983245 11375.379
+ 3250 307.71209 -3400.5061 -2942.8077 60.135998 11374.167
+ 3260 303.3078 -3399.903 -2948.7556 126.06835 11372.956
+ 3270 299.53197 -3397.8104 -2952.2793 207.43672 11371.748
+ 3280 298.35544 -3397.0246 -2953.2434 253.93467 11370.543
+ 3290 299.93029 -3398.2961 -2952.1725 251.81266 11369.343
+ 3300 302.74968 -3399.2058 -2948.8886 240.29097 11368.149
+ 3310 303.4966 -3400.0479 -2948.6197 305.85672 11366.959
+ 3320 300.74785 -3398.2547 -2950.915 376.09879 11365.776
+ 3330 296.1347 -3395.9917 -2955.5138 474.14094 11364.599
+ 3340 291.23744 -3391.8467 -2958.6531 601.10534 11363.432
+ 3350 286.78978 -3389.0274 -2962.4493 710.82864 11362.277
+ 3360 283.17342 -3388.1544 -2966.9553 789.13246 11361.134
+ 3370 281.01454 -3387.3669 -2969.3791 849.13601 11360.008
+ 3380 280.82111 -3387.6326 -2969.9325 873.27681 11358.897
+ 3390 282.37041 -3388.8143 -2968.8097 864.27778 11357.803
+ 3400 284.84322 -3389.894 -2966.2113 843.4724 11356.725
+ 3410 288.49074 -3391.2455 -2962.1373 749.42408 11355.663
+ 3420 293.27653 -3394.9331 -2958.7065 670.49298 11354.615
+ 3430 298.48882 -3398.0697 -2954.0902 593.25175 11353.58
+ 3440 303.6315 -3399.7245 -2948.0957 533.94054 11352.556
+ 3450 308.06438 -3400.5912 -2942.3687 489.08228 11351.543
+ 3460 311.708 -3403.917 -2940.275 422.76513 11350.539
+ 3470 314.73146 -3407.0326 -2938.8934 364.80604 11349.543
+ 3480 317.3054 -3407.4037 -2935.436 347.21373 11348.554
+ 3490 318.97769 -3408.1938 -2933.7387 340.97423 11347.572
+ 3500 318.96935 -3407.7879 -2933.3452 371.3883 11346.596
+ 3510 317.38154 -3407.5576 -2935.4766 418.57575 11345.627
+ 3520 315.56111 -3407.1977 -2937.8245 469.67064 11344.667
+ 3530 315.27391 -3407.8245 -2938.8785 493.6631 11343.715
+ 3540 316.69996 -3408.3561 -2937.2889 497.71444 11342.773
+ 3550 317.88458 -3407.8331 -2935.0039 506.92648 11341.84
+ 3560 317.04828 -3406.9778 -2935.3925 529.85368 11340.917
+ 3570 314.2773 -3405.4432 -2937.9796 573.3793 11340.004
+ 3580 310.76725 -3403.4975 -2941.2548 629.30717 11339.102
+ 3590 306.96608 -3402.0524 -2945.4636 684.90358 11338.212
+ 3600 303.31899 -3400.0356 -2948.8716 749.61482 11337.335
+ 3610 300.05007 -3397.5462 -2951.2445 885.43322 11336.473
+ 3620 296.95133 -3395.4183 -2953.7257 961.83493 11335.628
+ 3630 295.31321 -3394.6964 -2955.4404 1012.6359 11334.801
+ 3640 295.2929 -3395.0833 -2955.8575 1037.2887 11333.993
+ 3650 295.54318 -3395.3723 -2955.7742 1056.5831 11333.204
+ 3660 294.70191 -3395.5286 -2957.1819 1081.3211 11332.436
+ 3670 292.44487 -3394.9584 -2959.9688 1120.4055 11331.688
+ 3680 290.0885 -3394.1971 -2962.7125 1156.1816 11330.961
+ 3690 289.45324 -3393.2887 -2962.7489 1170.5683 11330.257
+ 3700 291.13884 -3394.4415 -2961.3946 1134.5316 11329.574
+ 3710 293.46456 -3395.3239 -2958.8176 1091.4352 11328.912
+ 3720 294.86556 -3395.5144 -2956.9242 1062.6849 11328.272
+ 3730 295.36698 -3395.6875 -2956.3515 1042.2213 11327.651
+ 3740 295.97388 -3395.7932 -2955.5545 1024.9572 11327.05
+ 3750 297.20831 -3396.4104 -2954.3355 1001.1531 11326.468
+ 3760 298.47922 -3398.2326 -2954.2674 971.38115 11325.906
+ 3770 298.22172 -3397.9474 -2954.3652 989.38906 11325.361
+ 3780 295.87209 -3396.7935 -2956.7062 1043.1954 11324.836
+ 3790 293.08821 -3396.1634 -2960.2169 1099.8916 11324.33
+ 3800 291.72666 -3396.1298 -2962.2085 1140.0205 11323.844
+ 3810 292.17149 -3395.8747 -2961.2918 1164.337 11323.381
+ 3820 294.12189 -3397.1862 -2959.7022 1149.6126 11322.939
+ 3830 297.35826 -3399.143 -2956.8451 1105.6678 11322.518
+ 3840 301.71136 -3401.1192 -2952.3464 1042.1569 11322.119
+ 3850 306.62046 -3405.014 -2948.9393 945.01506 11321.739
+ 3860 310.89003 -3405.8947 -2943.4693 888.39343 11321.377
+ 3870 312.24875 -3405.8035 -2941.3571 874.4977 11321.032
+ 3880 308.8029 -3403.9866 -2944.6657 931.22281 11320.703
+ 3890 301.40991 -3399.7819 -2951.4575 1058.7076 11320.393
+ 3900 293.12099 -3395.568 -2959.5728 1197.9197 11320.102
+ 3910 287.77962 -3393.2505 -2965.2001 1220.8505 11319.833
+ 3920 288.87398 -3394.785 -2965.1069 1192.8255 11319.587
+ 3930 294.66928 -3400.1096 -2961.8113 1073.6922 11319.363
+ 3940 301.20693 -3401.9063 -2953.8838 986.65721 11319.16
+ 3950 304.73348 -3402.82 -2949.552 938.60263 11318.975
+ 3960 304.21549 -3402.7994 -2950.3019 941.28239 11318.809
+ 3970 302.21091 -3401.4277 -2951.9119 978.24302 11318.659
+ 3980 302.47788 -3400.2656 -2950.3527 998.26662 11318.529
+ 3990 306.28663 -3404.3652 -2948.787 927.13412 11318.417
+ 4000 311.65091 -3406.0426 -2942.4854 865.5919 11318.322
+ 4010 314.19081 -3406.6593 -2939.3243 896.46439 11318.245
+ 4020 312.658 -3405.7441 -2940.6891 918.3838 11318.184
+ 4030 309.59619 -3402.8535 -2942.3526 977.27062 11318.141
+ 4040 307.6151 -3401.8018 -2944.2477 1007.306 11318.116
+ 4050 307.27991 -3400.9614 -2943.9058 1023.6904 11318.11
+ 4060 307.04898 -3402.4215 -2945.7094 1018.1965 11318.123
+ 4070 304.53111 -3400.0005 -2947.0335 1081.9802 11318.156
+ 4080 298.94955 -3395.9913 -2951.3265 1191.7584 11318.209
+ 4090 292.1409 -3392.9515 -2958.4141 1296.4766 11318.285
+ 4100 287.50136 -3390.5681 -2962.9316 1366.5588 11318.385
+ 4110 287.4162 -3389.6179 -2962.1081 1373.1291 11318.51
+ 4120 291.36374 -3392.0213 -2958.6398 1302.4708 11318.662
+ 4130 296.47435 -3394.0773 -2953.0941 1226.8422 11318.838
+ 4140 299.71332 -3396.5817 -2950.7809 1165.2858 11319.037
+ 4150 300.24 -3396.6564 -2950.0722 1158.7649 11319.259
+ 4160 299.52465 -3396.5072 -2950.987 1169.9319 11319.502
+ 4170 298.50189 -3396.9631 -2952.9642 1178.9647 11319.767
+ 4180 296.64388 -3395.3367 -2954.1014 1219.3145 11320.054
+ 4190 293.784 -3394.156 -2957.1746 1260.138 11320.365
+ 4200 291.39566 -3393.2602 -2959.8313 1289.4717 11320.699
+ 4210 291.08921 -3393.7543 -2960.7812 1280.4984 11321.058
+ 4220 293.42369 -3395.1842 -2958.7387 1236.1314 11321.44
+ 4230 297.33656 -3397.7003 -2955.4347 1167.3789 11321.846
+ 4240 300.45931 -3398.5567 -2951.6462 1128.4778 11322.274
+ 4250 300.93927 -3399.1292 -2951.5048 1119.1829 11322.724
+ 4260 298.79798 -3397.8546 -2953.4152 1152.9274 11323.195
+ 4270 296.20723 -3395.3862 -2954.8004 1196.5143 11323.688
+ 4280 296.18172 -3394.866 -2954.3182 1183.3718 11324.203
+ 4290 299.90788 -3397.2731 -2951.1828 1093.5607 11324.741
+ 4300 305.17381 -3401.9286 -2948.0057 958.8267 11325.299
+ 4310 308.29468 -3405.9433 -2947.3784 852.46249 11325.876
+ 4320 307.01196 -3405.4507 -2948.7936 844.96285 11326.469
+ 4330 301.7489 -3400.9715 -2952.1428 930.06756 11327.078
+ 4340 294.59589 -3396.8012 -2958.6121 1038.6158 11327.705
+ 4350 288.30812 -3393.0286 -2964.1922 1139.1996 11328.351
+ 4360 285.52084 -3392.6831 -2967.9924 1167.3078 11329.019
+ 4370 286.99184 -3393.3312 -2966.4526 1136.222 11329.709
+ 4380 291.72958 -3394.9021 -2960.9764 1053.5317 11330.421
+ 4390 297.40967 -3399.9335 -2957.5591 914.32396 11331.152
+ 4400 301.57914 -3401.5528 -2952.9767 825.47837 11331.901
+ 4410 303.14371 -3402.3861 -2951.4828 774.29779 11332.666
+ 4420 301.94795 -3400.6278 -2951.5031 787.75585 11333.446
+ 4430 298.80751 -3398.8785 -2954.4249 828.05782 11334.241
+ 4440 295.60045 -3398.2711 -2958.5879 862.75299 11335.052
+ 4450 293.90831 -3396.4777 -2959.3114 899.8822 11335.879
+ 4460 294.15343 -3397.3039 -2959.7729 888.74205 11336.723
+ 4470 295.64503 -3396.5155 -2956.7659 883.12542 11337.585
+ 4480 297.17329 -3398.2482 -2956.2255 845.10759 11338.463
+ 4490 297.6266 -3398.4084 -2955.7114 830.61183 11339.357
+ 4500 296.63247 -3397.1692 -2955.9508 839.54669 11340.268
+ 4510 296.14443 -3397.8301 -2957.3377 754.81689 11341.194
+ 4520 298.33104 -3399.0606 -2955.3158 690.95826 11342.134
+ 4530 302.65523 -3399.7653 -2949.5886 610.93015 11343.088
+ 4540 307.84168 -3403.1871 -2945.296 494.55313 11344.053
+ 4550 312.42009 -3404.8239 -2940.1227 413.18051 11345.028
+ 4560 315.02691 -3404.9728 -2936.3941 379.46633 11346.012
+ 4570 314.68604 -3404.6674 -2936.5958 390.09438 11347.002
+ 4580 311.34018 -3402.0369 -2938.942 462.76696 11348.001
+ 4590 306.5685 -3399.6717 -2943.6743 547.48471 11349.009
+ 4600 303.14366 -3398.8454 -2947.9422 601.3643 11350.027
+ 4610 302.63184 -3399.3744 -2949.2324 609.22016 11351.057
+ 4620 304.19078 -3401.7122 -2949.2515 566.71917 11352.098
+ 4630 306.49882 -3403.1503 -2947.2565 515.0155 11353.151
+ 4640 308.98294 -3402.845 -2943.2563 473.00437 11354.213
+ 4650 311.0507 -3404.6765 -2942.0121 408.08852 11355.285
+ 4660 310.92707 -3405.5542 -2943.0738 372.69958 11356.364
+ 4670 307.78066 -3403.6986 -2945.8982 393.17873 11357.451
+ 4680 304.08195 -3400.6193 -2948.3205 431.77625 11358.546
+ 4690 303.41381 -3400.539 -2949.2339 409.10546 11359.649
+ 4700 306.8594 -3402.2179 -2945.7878 331.23525 11360.76
+ 4710 311.96297 -3405.0862 -2941.0649 226.65261 11361.877
+ 4720 315.30405 -3407.4988 -2938.508 145.91609 11362.999
+ 4730 315.06731 -3405.5577 -2936.919 152.49655 11364.124
+ 4740 312.02876 -3404.9493 -2940.8302 174.31735 11365.253
+ 4750 309.00896 -3402.9096 -2943.2822 218.66693 11366.385
+ 4760 307.85827 -3402.5689 -2944.653 231.22067 11367.521
+ 4770 308.14841 -3401.5839 -2943.2365 238.582 11368.662
+ 4780 308.70685 -3400.8817 -2941.7036 237.03005 11369.808
+ 4790 308.9246 -3401.1738 -2941.6719 221.72118 11370.959
+ 4800 308.7648 -3401.5185 -2942.2543 203.84683 11372.114
+ 4810 307.92076 -3401.3523 -2943.3435 191.70578 11373.274
+ 4820 306.59324 -3403.0239 -2946.9897 158.9536 11374.437
+ 4830 305.33017 -3401.5746 -2947.4191 162.00536 11375.603
+ 4840 304.24614 -3401.2789 -2948.7358 155.74417 11376.773
+ 4850 302.73961 -3399.3032 -2949.0009 182.29248 11377.946
+ 4860 299.62644 -3397.2263 -2951.5547 233.3133 11379.123
+ 4870 294.54698 -3393.5341 -2955.4178 321.62738 11380.305
+ 4880 289.78412 -3391.0692 -2960.0373 387.59611 11381.493
+ 4890 288.27185 -3391.7207 -2962.9382 379.29676 11382.689
+ 4900 290.91244 -3393.8836 -2961.1734 304.3731 11383.892
+ 4910 297.02308 -3397.0491 -2955.2497 175.26778 11385.101
+ 4920 305.33688 -3400.5197 -2946.3542 18.811158 11386.314
+ 4930 313.36168 -3406.2016 -2940.0999 -155.66347 11387.527
+ 4940 318.06101 -3409.2476 -2936.1559 -260.08609 11388.738
+ 4950 317.6032 -3408.374 -2935.9633 -263.70086 11389.944
+ 4960 312.59028 -3405.3645 -2940.4101 -194.99765 11391.146
+ 4970 305.78237 -3400.8347 -2946.0066 -89.962888 11392.344
+ 4980 300.64144 -3398.1563 -2950.9749 -21.578934 11393.541
+ 4990 298.96248 -3397.2705 -2952.5864 -7.4012859 11394.737
+ 5000 299.61355 -3398.5974 -2952.9449 -44.077675 11395.934
+ 5010 300.09663 -3399.3073 -2952.9363 -78.403166 11397.13
+ 5020 299.0635 -3398.1223 -2953.288 -82.210248 11398.325
+ 5030 296.57031 -3395.9967 -2954.8708 -64.533404 11399.519
+ 5040 293.72935 -3393.8091 -2956.9089 -43.928909 11400.711
+ 5050 292.84572 -3394.1513 -2958.5654 -67.879637 11401.903
+ 5060 295.80937 -3395.4437 -2955.4497 -130.64199 11403.094
+ 5070 301.30211 -3397.8807 -2949.7166 -224.729 11404.283
+ 5080 306.44583 -3399.7263 -2943.9114 -309.43699 11405.468
+ 5090 309.70161 -3401.0517 -2940.394 -374.18078 11406.647
+ 5100 311.05668 -3402.11 -2939.4368 -420.67753 11407.819
+ 5110 311.02719 -3402.7939 -2940.1645 -450.23897 11408.984
+ 5120 310.16035 -3401.9635 -2940.6234 -452.03597 11410.14
+ 5130 308.53085 -3400.9731 -2942.0568 -440.87424 11411.288
+ 5140 305.82167 -3399.6492 -2944.7627 -413.10993 11412.427
+ 5150 301.9588 -3398.2112 -2949.0704 -373.51413 11413.559
+ 5160 297.95742 -3395.7777 -2952.5886 -323.96155 11414.684
+ 5170 296.3394 -3394.1407 -2953.3584 -305.12816 11415.804
+ 5180 298.15028 -3394.5365 -2951.0606 -336.38103 11416.917
+ 5190 300.76105 -3395.2481 -2947.8888 -373.44553 11418.024
+ 5200 300.8844 -3396.2869 -2948.7441 -389.10484 11419.125
+ 5210 296.73175 -3393.8391 -2952.4731 -263.20696 11420.219
+ 5220 289.1153 -3390.4787 -2960.4416 -155.29166 11421.308
+ 5230 282.15704 -3386.4679 -2966.7807 -50.268075 11422.394
+ 5240 278.92855 -3383.3907 -2968.5056 0.73007143 11423.479
+ 5250 280.24388 -3384.8931 -2968.0516 -51.930171 11424.565
+ 5260 284.33146 -3387.013 -2964.0915 -145.35679 11425.65
+ 5270 287.98924 -3390.451 -2962.0889 -255.50582 11426.732
+ 5280 288.86668 -3389.9747 -2960.3074 -297.22762 11427.809
+ 5290 287.15339 -3390.6938 -2963.5749 -327.01097 11428.881
+ 5300 285.08556 -3389.7501 -2965.7069 -328.07875 11429.947
+ 5310 285.82975 -3390.5888 -2965.4387 -423.8306 11431.007
+ 5320 290.11733 -3392.4713 -2960.9438 -497.66995 11432.058
+ 5330 294.49746 -3394.2738 -2956.2312 -563.12579 11433.101
+ 5340 296.28329 -3394.9025 -2954.2036 -586.40623 11434.132
+ 5350 294.91908 -3392.5995 -2953.9297 -546.85874 11435.153
+ 5360 292.04479 -3391.4313 -2957.0368 -509.4658 11436.164
+ 5370 289.9451 -3390.4304 -2959.1591 -486.29443 11437.164
+ 5380 289.79724 -3391.167 -2960.1156 -507.25727 11438.156
+ 5390 291.95373 -3392.5206 -2958.2615 -561.622 11439.138
+ 5400 296.32648 -3394.3166 -2953.5535 -644.29223 11440.11
+ 5410 300.25981 -3396.186 -2949.5723 -667.87838 11441.07
+ 5420 301.80466 -3397.4159 -2948.5044 -714.45572 11442.017
+ 5430 301.064 -3396.8684 -2949.0585 -709.74728 11442.951
+ 5440 298.96061 -3395.893 -2951.2118 -675.93065 11443.872
+ 5450 296.43834 -3395.5837 -2954.6541 -634.31521 11444.779
+ 5460 293.7147 -3395.8099 -2958.9316 -590.60258 11445.675
+ 5470 291.19498 -3394.5838 -2961.4534 -532.10179 11446.56
+ 5480 289.72084 -3392.8042 -2961.8665 -483.4122 11447.434
+ 5490 289.66073 -3392.0124 -2961.164 -467.73307 11448.3
+ 5500 289.95215 -3391.3008 -2960.019 -465.66343 11449.156
+ 5510 288.925 -3391.1048 -2961.3508 -466.73313 11450.004
+ 5520 285.80228 -3388.5914 -2963.4822 -429.81386 11450.843
+ 5530 281.57184 -3386.8573 -2968.0405 -395.98508 11451.674
+ 5540 277.75887 -3382.8747 -2969.7295 -342.2412 11452.498
+ 5550 275.25983 -3380.3411 -2970.913 -317.87223 11453.315
+ 5560 274.54462 -3379.2735 -2970.9092 -326.46608 11454.126
+ 5570 275.32922 -3380.0273 -2970.4959 -369.21745 11454.931
+ 5580 276.58925 -3381.9821 -2970.5766 -430.28145 11455.729
+ 5590 277.87581 -3383.4258 -2970.1066 -486.18899 11456.519
+ 5600 279.63976 -3384.2347 -2968.2918 -537.78064 11457.299
+ 5610 281.5989 -3386.0812 -2967.2241 -600.54649 11458.07
+ 5620 282.89103 -3386.3386 -2965.5596 -636.10139 11458.829
+ 5630 283.66626 -3387.3333 -2965.4012 -672.76308 11459.576
+ 5640 285.30477 -3389.506 -2965.1368 -726.29239 11460.31
+ 5650 288.28319 -3392.3531 -2963.5537 -793.85396 11461.03
+ 5660 291.22095 -3394.9133 -2961.7442 -850.96234 11461.736
+ 5670 291.65969 -3394.6477 -2960.826 -848.38919 11462.425
+ 5680 288.17718 -3391.3546 -2962.7129 -774.79749 11463.098
+ 5690 282.08567 -3386.2275 -2966.6464 -656.82912 11463.756
+ 5700 276.22014 -3382.5528 -2971.6963 -560.37092 11464.402
+ 5710 272.79165 -3380.3473 -2974.5904 -507.44819 11465.037
+ 5720 272.13894 -3379.5489 -2974.7628 -501.29313 11465.662
+ 5730 273.49861 -3381.0099 -2974.2015 -545.32148 11466.277
+ 5740 276.36109 -3383.3723 -2972.3062 -617.78859 11466.883
+ 5750 280.71765 -3386.2395 -2968.6933 -709.40432 11467.476
+ 5760 286.07667 -3390.3689 -2964.8516 -821.06414 11468.056
+ 5770 291.42526 -3392.7812 -2959.3082 -906.20569 11468.62
+ 5780 295.25311 -3394.8009 -2955.6342 -965.26598 11469.166
+ 5790 296.10535 -3394.2329 -2953.7986 -962.29029 11469.695
+ 5800 294.02646 -3391.7607 -2954.4186 -909.66026 11470.205
+ 5810 291.18898 -3390.5427 -2957.4212 -865.57598 11470.697
+ 5820 290.14013 -3389.4823 -2957.9209 -840.21298 11471.173
+ 5830 291.35845 -3391.3664 -2957.9928 -869.69584 11471.633
+ 5840 293.04196 -3391.6934 -2955.8157 -886.04967 11472.076
+ 5850 292.87578 -3391.5591 -2955.9286 -881.22865 11472.502
+ 5860 290.13068 -3388.946 -2957.3986 -825.53012 11472.912
+ 5870 285.86706 -3387.6512 -2962.4456 -772.61152 11473.305
+ 5880 282.01985 -3387.0033 -2967.5202 -734.22135 11473.684
+ 5890 280.34729 -3386.4833 -2969.4879 -722.17783 11474.048
+ 5900 281.47538 -3385.938 -2967.2648 -740.35408 11474.399
+ 5910 284.3759 -3387.5127 -2964.5251 -803.63431 11474.735
+ 5920 287.04221 -3389.2071 -2962.2536 -868.94807 11475.056
+ 5930 287.68393 -3389.6778 -2961.7697 -901.57972 11475.36
+ 5940 285.86029 -3389.7128 -2964.5173 -901.58829 11475.647
+ 5950 282.30506 -3387.6496 -2967.7423 -853.40072 11475.916
+ 5960 278.43176 -3385.657 -2971.5108 -793.89945 11476.17
+ 5970 275.83397 -3383.3798 -2973.0977 -734.60739 11476.408
+ 5980 275.26168 -3382.1915 -2972.7606 -701.12758 11476.632
+ 5990 275.64614 -3381.7048 -2971.7021 -685.67065 11476.842
+ 6000 275.27849 -3381.423 -2971.9671 -672.37107 11477.039
+ 6010 273.67316 -3379.0781 -2972.01 -634.41199 11477.224
+ 6020 272.3987 -3378.3739 -2973.2015 -628.14989 11477.396
+ 6030 273.8939 -3380.2557 -2972.8593 -683.53579 11477.556
+ 6040 279.35136 -3382.2836 -2966.7697 -780.18095 11477.703
+ 6050 287.56229 -3386.7586 -2959.0315 -928.61451 11477.834
+ 6060 295.36072 -3391.7762 -2952.4495 -1073.7474 11477.948
+ 6070 299.5369 -3393.5498 -2948.0114 -1140.2687 11478.042
+ 6080 298.79401 -3394.5909 -2950.1574 -1142.641 11478.113
+ 6090 293.98701 -3391.7321 -2954.4487 -1053.9066 11478.163
+ 6100 287.37075 -3388.4404 -2960.9982 -937.67595 11478.192
+ 6110 281.19247 -3384.1034 -2965.8509 -811.05616 11478.203
+ 6120 276.90687 -3382.8828 -2971.0049 -738.762 11478.199
+ 6130 275.4098 -3382.4193 -2972.7681 -704.04018 11478.18
+ 6140 276.67067 -3382.9563 -2971.4296 -710.31963 11478.148
+ 6150 279.4948 -3383.9045 -2968.1772 -740.83351 11478.101
+ 6160 282.37124 -3386.5919 -2966.5861 -796.84734 11478.041
+ 6170 284.49372 -3386.9779 -2963.8151 -823.39116 11477.965
+ 6180 285.98079 -3388.4274 -2963.0526 -856.69383 11477.874
+ 6190 287.28749 -3388.5819 -2961.2636 -871.98218 11477.766
+ 6200 288.82265 -3388.6066 -2959.0048 -885.12678 11477.641
+ 6210 290.40161 -3389.1849 -2957.2346 -902.14281 11477.499
+ 6220 291.17608 -3390.7223 -2957.6199 -920.96826 11477.34
+ 6230 290.35313 -3390.2412 -2958.363 -903.67262 11477.163
+ 6240 288.44414 -3390.0219 -2960.9831 -882.93015 11476.968
+ 6250 286.993 -3388.503 -2961.6226 -856.22777 11476.757
+ 6260 287.18292 -3387.8399 -2960.6771 -859.65512 11476.528
+ 6270 289.1412 -3388.7675 -2958.6919 -901.52636 11476.284
+ 6280 292.16487 -3390.8618 -2956.2887 -967.46412 11476.021
+ 6290 294.97534 -3392.1687 -2953.4153 -1019.2727 11475.74
+ 6300 296.18766 -3392.5094 -2951.9527 -1039.3437 11475.44
+ 6310 295.28402 -3390.7796 -2951.567 -1008.4722 11475.119
+ 6320 292.735 -3389.7673 -2954.3462 -961.33497 11474.779
+ 6330 289.43094 -3387.5122 -2957.0056 -886.40364 11474.42
+ 6340 286.78325 -3385.654 -2959.0856 -819.56914 11474.045
+ 6350 286.23643 -3384.5331 -2958.778 -778.2763 11473.653
+ 6360 287.4319 -3385.2509 -2957.7177 -774.47956 11473.246
+ 6370 288.7382 -3386.9543 -2957.4781 -785.47686 11472.825
+ 6380 288.63232 -3386.7517 -2957.433 -764.91093 11472.388
+ 6390 286.77822 -3385.3608 -2958.8 -717.4979 11471.936
+ 6400 284.06712 -3383.8471 -2961.3188 -663.96581 11471.471
+ 6410 282.16326 -3383.8741 -2964.1776 -637.61696 11470.993
+ 6420 282.19735 -3382.9619 -2963.2147 -620.00969 11470.502
+ 6430 283.85816 -3384.4754 -2962.2579 -645.657 11470
+ 6440 285.70999 -3386.3611 -2961.3891 -676.77012 11469.485
+ 6450 286.64582 -3386.2449 -2959.881 -675.21916 11468.957
+ 6460 286.44487 -3386.2329 -2960.1678 -663.64511 11468.416
+ 6470 285.63193 -3385.3241 -2960.4682 -638.15361 11467.862
+ 6480 285.33106 -3383.9334 -2959.5251 -615.10619 11467.296
+ 6490 286.40871 -3384.1605 -2958.1492 -628.34727 11466.718
+ 6500 289.21688 -3385.6918 -2955.5036 -676.73802 11466.128
+ 6510 292.98748 -3388.0646 -2952.2679 -743.32841 11465.524
+ 6520 295.61864 -3388.9598 -2949.2495 -780.29941 11464.907
+ 6530 295.80952 -3388.5118 -2948.5176 -775.83327 11464.274
+ 6540 294.27092 -3387.9428 -2950.2371 -747.56447 11463.627
+ 6550 292.14141 -3385.7003 -2951.1621 -688.0847 11462.965
+ 6560 290.24254 -3384.3888 -2952.675 -637.7312 11462.29
+ 6570 289.85917 -3384.7779 -2953.6343 -618.71938 11461.603
+ 6580 291.82647 -3386.5827 -2952.5129 -635.20873 11460.904
+ 6590 294.93391 -3387.8919 -2949.2001 -655.3527 11460.192
+ 6600 297.27006 -3389.2601 -2947.0934 -667.02819 11459.468
+ 6610 297.8032 -3388.3568 -2945.3971 -632.09698 11458.732
+ 6620 296.26406 -3385.8087 -2945.1383 -554.85728 11457.983
+ 6630 292.85736 -3383.845 -2948.2419 -463.88483 11457.223
+ 6640 288.40572 -3382.3065 -2953.3248 -369.04667 11456.454
+ 6650 284.60792 -3379.4541 -2956.1214 -269.71308 11455.679
+ 6660 283.35858 -3379.4507 -2957.9763 -232.84215 11454.898
+ 6670 285.4786 -3379.3697 -2954.7419 -229.92558 11454.112
+ 6680 289.70457 -3382.9237 -2952.0101 -288.11069 11453.322
+ 6690 293.80629 -3385.6123 -2948.5977 -329.87921 11452.526
+ 6700 295.41257 -3385.6131 -2946.2093 -310.24276 11451.724
+ 6710 292.89287 -3384.1793 -2948.5233 -232.66272 11450.917
+ 6720 286.98377 -3380.7045 -2953.8378 -104.20317 11450.104
+ 6730 281.34569 -3377.5278 -2959.0474 7.5624575 11449.29
+ 6740 280.69397 -3376.9592 -2959.4482 29.843772 11448.476
+ 6750 286.94315 -3379.358 -2952.5518 -56.460164 11447.662
+ 6760 297.02707 -3386.4345 -2944.6293 -239.92282 11446.847
+ 6770 306.07966 -3391.4471 -2936.1768 -393.5275 11446.028
+ 6780 311.17651 -3394.3371 -2931.4856 -483.5697 11445.201
+ 6790 312.2899 -3395.2186 -2930.7111 -505.48673 11444.365
+ 6800 310.57264 -3394.2619 -2932.3086 -470.47386 11443.52
+ 6810 306.5924 -3392.2063 -2936.1733 -394.07508 11442.665
+ 6820 300.1587 -3386.1783 -2939.715 -248.2712 11441.803
+ 6830 292.46802 -3381.5032 -2946.4792 -110.89534 11440.937
+ 6840 286.96557 -3379.4687 -2952.6291 -28.415477 11440.067
+ 6850 286.23042 -3377.5461 -2951.8001 6.8636331 11439.198
+ 6860 289.24118 -3379.7189 -2949.4946 -39.978463 11438.328
+ 6870 293.05675 -3381.058 -2945.1583 -84.259649 11437.458
+ 6880 295.18185 -3381.7727 -2942.7121 -103.90171 11436.586
+ 6890 294.27302 -3381.3179 -2943.6091 -78.836426 11435.712
+ 6900 290.60353 -3379.5978 -2947.347 -11.457827 11434.837
+ 6910 286.55757 -3376.7341 -2950.5015 71.245511 11433.961
+ 6920 285.54184 -3376.3538 -2951.632 94.122775 11433.087
+ 6930 289.51992 -3376.8724 -2946.2334 55.89341 11432.214
+ 6940 297.64035 -3381.5933 -2938.8758 -73.198003 11431.343
+ 6950 306.76452 -3386.9229 -2930.6339 -221.15197 11430.47
+ 6960 313.70651 -3388.9693 -2922.3547 -309.05306 11429.593
+ 6970 316.782 -3392.2374 -2921.0482 -367.90448 11428.71
+ 6980 316.03435 -3391.6211 -2921.5439 -336.48773 11427.821
+ 6990 312.39096 -3388.9989 -2924.341 -244.69351 11426.925
+ 7000 306.93965 -3386.0836 -2929.5341 -125.16916 11426.024
+ 7010 300.56936 -3383.6727 -2936.5985 -1.9661313 11425.121
+ 7020 295.02396 -3382.1594 -2943.3336 96.622092 11424.218
+ 7030 293.25431 -3381.4745 -2945.2809 139.91654 11423.316
+ 7040 296.84375 -3384.4144 -2942.8818 81.267549 11422.417
+ 7050 303.58867 -3388.2053 -2936.6401 -24.260499 11421.52
+ 7060 309.44583 -3391.3343 -2931.057 -118.23797 11420.622
+ 7070 312.28707 -3392.7752 -2928.2719 -165.42285 11419.722
+ 7080 312.66356 -3393.9168 -2928.8535 -180.63124 11418.819
+ 7090 311.3455 -3393.5098 -2930.4069 -155.28338 11417.912
+ 7100 308.58371 -3390.1319 -2931.137 -78.078517 11417.003
+ 7110 304.91373 -3386.8678 -2933.3317 8.7471452 11416.092
+ 7120 301.05721 -3384.5484 -2936.7486 86.704153 11415.181
+ 7130 297.82913 -3382.6112 -2939.613 155.31343 11414.272
+ 7140 295.68576 -3381.3299 -2941.5198 208.05279 11413.366
+ 7150 294.74265 -3381.5631 -2943.1558 236.20694 11412.464
+ 7160 294.77437 -3382.7788 -2944.3243 248.64398 11411.566
+ 7170 295.33715 -3383.9163 -2944.6246 259.16553 11410.674
+ 7180 295.81463 -3384.7411 -2944.7393 273.01868 11409.786
+ 7190 295.54755 -3384.1982 -2944.5936 304.20341 11408.903
+ 7200 295.09763 -3382.6243 -2943.689 341.53927 11408.027
+ 7210 296.47693 -3381.3639 -2940.377 352.31984 11407.156
+ 7220 300.8301 -3383.4747 -2936.0127 295.28087 11406.293
+ 7230 306.12425 -3385.7618 -2930.4252 226.49783 11405.435
+ 7240 309.48194 -3387.1435 -2926.8126 185.6027 11404.581
+ 7250 309.99759 -3387.2088 -2926.1108 187.39767 11403.731
+ 7260 308.43468 -3386.2865 -2927.5133 224.8731 11402.884
+ 7270 305.44502 -3385.0345 -2930.7082 285.72703 11402.042
+ 7280 301.43495 -3383.6959 -2935.3343 360.59362 11401.205
+ 7290 297.4086 -3381.8233 -2939.4506 442.47027 11400.375
+ 7300 294.97807 -3379.4665 -2940.7089 513.15872 11399.554
+ 7310 295.75414 -3379.964 -2940.0521 516.67927 11398.742
+ 7320 300.3318 -3384.0667 -2937.3459 438.25981 11397.94
+ 7330 307.10233 -3387.6547 -2930.8632 341.58916 11397.146
+ 7340 312.9726 -3391.2271 -2925.7041 254.65509 11396.359
+ 7350 314.73529 -3392.4581 -2924.3132 236.45855 11395.576
+ 7360 310.45984 -3389.3896 -2927.6041 326.632 11394.799
+ 7370 301.22163 -3383.2012 -2935.1568 499.72854 11394.027
+ 7380 291.50808 -3377.3926 -2943.7964 671.88008 11393.265
+ 7390 286.77185 -3375.6391 -2949.0877 750.29645 11392.516
+ 7400 289.60801 -3375.6799 -2944.91 738.38006 11391.781
+ 7410 297.9072 -3379.4009 -2936.2865 634.06462 11391.059
+ 7420 306.86802 -3384.7077 -2928.2648 505.93973 11390.35
+ 7430 312.6439 -3389.0209 -2923.9868 420.31855 11389.651
+ 7440 314.27234 -3389.9159 -2922.4596 413.7582 11388.959
+ 7450 312.97633 -3389.5725 -2924.0439 448.69075 11388.276
+ 7460 310.40079 -3387.2775 -2925.5799 515.03812 11387.601
+ 7470 308.243 -3386.6853 -2928.1972 555.68483 11386.936
+ 7480 307.4292 -3385.4598 -2928.1821 589.75365 11386.282
+ 7490 307.7376 -3386.6228 -2928.8864 587.44861 11385.638
+ 7500 307.95519 -3385.6266 -2927.5666 612.12542 11385.006
+ 7510 307.39769 -3385.0842 -2927.8534 639.03004 11384.386
+ 7520 306.45255 -3383.2603 -2927.4353 683.03593 11383.777
+ 7530 305.87395 -3383.8939 -2928.9296 692.03075 11383.182
+ 7540 306.13172 -3384.1134 -2928.7657 692.57991 11382.599
+ 7550 307.6379 -3383.6388 -2926.0507 685.69964 11382.03
+ 7560 310.22707 -3384.8735 -2923.4343 649.62518 11381.474
+ 7570 312.89039 -3386.8117 -2921.411 608.48298 11380.931
+ 7580 314.63285 -3387.8015 -2919.809 590.46711 11380.399
+ 7590 315.21351 -3388.6223 -2919.7661 588.03719 11379.878
+ 7600 315.39971 -3388.5473 -2919.4141 599.31981 11379.368
+ 7610 317.10584 -3390.9683 -2919.2974 565.88792 11378.87
+ 7620 321.28073 -3393.1743 -2915.2935 509.64794 11378.382
+ 7630 326.33797 -3395.1311 -2909.7281 450.27861 11377.904
+ 7640 328.73304 -3396.7985 -2907.833 425.64572 11377.435
+ 7650 325.48731 -3393.4823 -2909.3446 518.4295 11376.974
+ 7660 316.41529 -3388.4925 -2917.8487 691.5634 11376.523
+ 7670 304.32295 -3381.1672 -2928.5099 919.0776 11376.085
+ 7680 294.28288 -3374.0373 -2936.3138 1118.4675 11375.664
+ 7690 290.2471 -3372.3681 -2940.6475 1187.9188 11375.265
+ 7700 292.72091 -3373.1639 -2937.7638 1156.0968 11374.888
+ 7710 299.01407 -3377.8335 -2933.0727 1033.0888 11374.532
+ 7720 305.56914 -3381.3493 -2926.8384 914.6383 11374.197
+ 7730 309.95222 -3384.6135 -2923.583 819.99709 11373.879
+ 7740 311.43493 -3386.1312 -2922.8953 778.31391 11373.576
+ 7750 310.65134 -3385.4969 -2923.4265 791.98136 11373.289
+ 7760 308.48483 -3384.1608 -2925.313 834.73286 11373.016
+ 7770 305.9554 -3382.0839 -2926.9984 892.27428 11372.76
+ 7780 304.79264 -3381.4878 -2928.1318 918.98881 11372.52
+ 7790 306.61501 -3382.8243 -2926.7577 893.08052 11372.298
+ 7800 311.05323 -3384.9492 -2922.2811 832.13892 11372.093
+ 7810 315.45965 -3387.7174 -2918.495 761.45915 11371.904
+ 7820 317.4379 -3388.8888 -2916.7239 727.23148 11371.73
+ 7830 316.58179 -3388.8804 -2917.989 728.66787 11371.569
+ 7840 314.05015 -3388.2581 -2921.1323 751.52475 11371.422
+ 7850 310.87609 -3385.2802 -2922.8756 808.82972 11371.29
+ 7860 307.22135 -3382.1469 -2925.1785 875.7827 11371.173
+ 7870 302.95332 -3380.7498 -2930.1297 931.86206 11371.073
+ 7880 299.27318 -3378.3928 -2933.2466 995.89022 11370.99
+ 7890 298.73113 -3377.794 -2933.4541 1013.4324 11370.927
+ 7900 302.9336 -3380.0503 -2929.4595 955.75573 11370.882
+ 7910 310.85316 -3383.2317 -2920.8611 853.1286 11370.856
+ 7920 318.64303 -3389.4999 -2915.5426 712.78493 11370.846
+ 7930 322.38312 -3391.3581 -2911.8376 655.38322 11370.849
+ 7940 321.2856 -3390.2975 -2912.4095 671.34507 11370.866
+ 7950 318.40785 -3389.6114 -2916.0038 698.22996 11370.895
+ 7960 316.87892 -3388.8259 -2917.4926 717.43842 11370.937
+ 7970 316.26104 -3387.9336 -2917.5193 733.82728 11370.994
+ 7980 313.95666 -3386.2913 -2919.3045 776.37303 11371.064
+ 7990 308.946 -3385.5158 -2925.982 833.2884 11371.149
+ 8000 303.28615 -3381.0641 -2929.9489 937.21391 11371.25
+ 8010 299.51158 -3380.1189 -2934.6181 979.64521 11371.369
+ 8020 298.77124 -3377.5821 -2933.1825 1006.6972 11371.506
+ 8030 300.53478 -3377.3379 -2930.3152 977.21073 11371.663
+ 8040 303.50909 -3379.1422 -2927.6955 907.97593 11371.838
+ 8050 306.46909 -3380.1504 -2924.3009 848.84605 11372.031
+ 8060 308.42631 -3381.3446 -2922.5839 803.39243 11372.239
+ 8070 308.90326 -3380.7258 -2921.2556 802.79288 11372.463
+ 8080 308.11258 -3381.4478 -2923.1537 806.13058 11372.703
+ 8090 307.58403 -3381.0163 -2923.5084 825.15872 11372.958
+ 8100 308.35343 -3381.893 -2923.2406 818.32099 11373.228
+ 8110 310.07093 -3383.3418 -2922.1348 794.51443 11373.515
+ 8120 312.0663 -3384.433 -2920.258 768.90345 11373.816
+ 8130 314.00853 -3385.7581 -2918.6943 737.29462 11374.132
+ 8140 315.83717 -3386.3587 -2916.5748 710.61593 11374.463
+ 8150 318.43882 -3387.4281 -2913.7745 667.30558 11374.807
+ 8160 322.15074 -3389.8282 -2910.6534 595.85011 11375.164
+ 8170 324.90676 -3392.3137 -2909.0395 527.60254 11375.532
+ 8180 325.30314 -3393.509 -2909.6453 493.11941 11375.911
+ 8190 324.68055 -3392.1187 -2909.181 498.84975 11376.299
+ 8200 325.09705 -3392.1489 -2908.5917 485.18869 11376.697
+ 8210 325.85829 -3393.1816 -2908.4921 463.64326 11377.104
+ 8220 324.77895 -3393.367 -2910.2829 474.28025 11377.521
+ 8230 320.55768 -3391.262 -2914.4568 544.0701 11377.946
+ 8240 313.19737 -3387.4 -2921.5426 662.74627 11378.382
+ 8250 304.32504 -3382.2382 -2929.5777 805.95014 11378.832
+ 8260 297.28576 -3377.2665 -2935.0765 924.618 11379.296
+ 8270 295.33897 -3377.4637 -2938.1694 931.87791 11379.778
+ 8280 299.23536 -3379.2034 -2934.1135 865.26328 11380.278
+ 8290 306.43835 -3383.0692 -2927.2654 743.49277 11380.795
+ 8300 312.7135 -3386.1176 -2920.98 641.50034 11381.326
+ 8310 314.31071 -3385.9539 -2918.4405 619.83311 11381.87
+ 8320 311.727 -3384.1892 -2920.5189 653.76426 11382.425
+ 8330 309.68803 -3382.7561 -2922.1186 680.1308 11382.994
+ 8340 310.61369 -3382.3234 -2920.309 668.39659 11383.575
+ 8350 312.77362 -3384.476 -2919.2489 615.26476 11384.17
+ 8360 313.46729 -3387.3251 -2921.0663 566.73792 11384.776
+ 8370 311.52776 -3386.3515 -2922.9775 585.70641 11385.394
+ 8380 308.12286 -3384.8912 -2926.5818 621.93347 11386.023
+ 8390 306.347 -3383.494 -2927.8261 641.56189 11386.664
+ 8400 308.07628 -3384.7374 -2926.4973 599.7907 11387.317
+ 8410 311.25673 -3387.7765 -2924.8057 523.99486 11387.982
+ 8420 312.44083 -3386.5872 -2921.8552 513.54375 11388.657
+ 8430 310.82814 -3384.8958 -2922.5625 534.50752 11389.343
+ 8440 308.19148 -3384.2986 -2925.8871 556.83183 11390.039
+ 8450 305.71355 -3383.2732 -2928.5475 588.71804 11390.745
+ 8460 302.91142 -3382.4477 -2931.8899 626.41052 11391.464
+ 8470 299.31476 -3379.1708 -2933.9627 701.33194 11392.194
+ 8480 296.03619 -3377.1409 -2936.8095 758.81107 11392.938
+ 8490 294.27642 -3376.2882 -2938.5743 787.114 11393.697
+ 8500 294.04535 -3375.1712 -2937.801 800.80667 11394.471
+ 8510 294.86636 -3375.6079 -2937.0166 782.05958 11395.261
+ 8520 296.55026 -3377.6134 -2936.5174 731.3348 11396.066
+ 8530 299.55652 -3380.1521 -2934.5845 656.61721 11396.885
+ 8540 304.26135 -3382.6602 -2930.0945 561.42517 11397.717
+ 8550 310.02247 -3385.9416 -2924.8067 444.85971 11398.56
+ 8560 314.56952 -3388.6254 -2920.727 342.74584 11399.412
+ 8570 316.05261 -3389.331 -2919.2267 288.37636 11400.271
+ 8580 314.98077 -3388.761 -2920.251 272.38055 11401.136
+ 8590 313.16211 -3387.6084 -2921.8035 273.06661 11402.007
+ 8600 311.60398 -3387.7988 -2924.3115 260.17257 11402.883
+ 8610 310.03829 -3386.6711 -2925.5127 267.06466 11403.764
+ 8620 307.47482 -3384.681 -2927.3355 296.54629 11404.651
+ 8630 303.62205 -3383.1012 -2931.4864 335.68303 11405.544
+ 8640 299.61 -3380.6351 -2934.9879 388.67027 11406.444
+ 8650 296.85485 -3377.7419 -2936.1928 435.11682 11407.351
+ 8660 295.97061 -3376.3696 -2936.1357 444.93225 11408.267
+ 8670 296.67374 -3377.5278 -2936.2481 406.79994 11409.192
+ 8680 298.46577 -3378.6843 -2934.739 353.98902 11410.125
+ 8690 300.86043 -3379.6784 -2932.1713 296.66538 11411.066
+ 8700 303.15219 -3380.6103 -2929.6944 241.32605 11412.012
+ 8710 305.33009 -3383.184 -2929.0286 170.49593 11412.963
+ 8720 307.71753 -3384.7014 -2926.9949 111.02093 11413.919
+ 8730 310.87494 -3387.2104 -2924.8074 32.934052 11414.876
+ 8740 314.96661 -3389.103 -2920.614 -44.880833 11415.835
+ 8750 318.65926 -3390.3627 -2916.3812 -108.87315 11416.793
+ 8760 320.1122 -3391.7198 -2915.5772 -150.14394 11417.75
+ 8770 318.51912 -3390.057 -2916.2839 -126.12319 11418.704
+ 8780 314.67735 -3389.2751 -2921.2164 -89.311976 11419.657
+ 8790 310.28624 -3386.9808 -2925.4535 -30.0663 11420.608
+ 8800 307.14435 -3384.6522 -2927.7982 16.692529 11421.558
+ 8810 306.15197 -3384.2782 -2928.9004 19.197993 11422.51
+ 8820 306.99099 -3384.2202 -2927.5943 2.078842 11423.462
+ 8830 307.83719 -3384.0366 -2926.1521 -11.61895 11424.415
+ 8840 306.33593 -3381.3854 -2925.7339 26.151314 11425.368
+ 8850 301.70183 -3378.0337 -2929.2751 98.946157 11426.322
+ 8860 296.66941 -3375.493 -2934.2197 162.84194 11427.278
+ 8870 295.34195 -3375.9732 -2936.6745 157.5031 11428.237
+ 8880 298.62524 -3377.3865 -2933.2041 102.4268 11429.2
+ 8890 302.91146 -3380.9825 -2930.4247 16.071291 11430.166
+ 8900 303.81731 -3382.1482 -2930.2429 -9.8316515 11431.132
+ 8910 300.0749 -3379.7253 -2933.3866 46.477709 11432.098
+ 8920 294.79763 -3377.4313 -2938.9421 112.02541 11433.066
+ 8930 292.34338 -3375.9169 -2941.0782 137.05049 11434.036
+ 8940 294.12107 -3376.2886 -2938.8058 94.773717 11435.01
+ 8950 298.15538 -3379.0699 -2935.5864 -4.8619545 11435.985
+ 8960 302.22197 -3381.2145 -2931.6822 -102.94207 11436.96
+ 8970 304.26587 -3382.669 -2930.0966 -174.52019 11437.934
+ 8980 303.2523 -3382.6751 -2931.6103 -197.89417 11438.905
+ 8990 300.42223 -3381.3245 -2934.4692 -182.23495 11439.873
+ 9000 297.92305 -3379.2522 -2936.1142 -154.36887 11440.838
+ 9010 297.03035 -3378.2784 -2936.4683 -147.56282 11441.8
+ 9020 297.65238 -3379.2689 -2936.5335 -173.69344 11442.76
+ 9030 299.06083 -3379.8113 -2934.981 -200.33264 11443.717
+ 9040 300.15221 -3380.1648 -2933.7112 -220.92262 11444.67
+ 9050 299.62013 -3380.1971 -2934.5349 -223.4431 11445.619
+ 9060 296.94544 -3378.2811 -2936.5973 -185.87841 11446.565
+ 9070 292.94475 -3375.8324 -2940.0993 -132.93278 11447.508
+ 9080 289.39835 -3373.261 -2942.8029 -87.098752 11448.448
+ 9090 288.36131 -3373.6431 -2944.7275 -100.89193 11449.387
+ 9100 290.65235 -3375.4992 -2943.1759 -161.83225 11450.324
+ 9110 294.94517 -3379.3482 -2940.6396 -262.16146 11451.259
+ 9120 298.75777 -3381.462 -2937.0825 -336.83354 11452.189
+ 9130 300.43843 -3382.2929 -2935.4135 -377.4627 11453.113
+ 9140 300.37666 -3381.9408 -2935.1532 -388.12101 11454.03
+ 9150 299.85136 -3382.4941 -2936.4879 -404.88589 11454.94
+ 9160 299.61074 -3381.5072 -2935.8589 -408.00111 11455.843
+ 9170 299.66293 -3382.6713 -2936.9454 -441.77565 11456.738
+ 9180 300.38605 -3382.3995 -2935.598 -467.27644 11457.625
+ 9190 301.98209 -3384.6263 -2935.4509 -527.33934 11458.503
+ 9200 303.37531 -3384.8899 -2933.6421 -558.00268 11459.372
+ 9210 303.09424 -3385.4612 -2934.6315 -568.55511 11460.23
+ 9220 300.15338 -3383.9029 -2937.4475 -523.57126 11461.078
+ 9230 294.99905 -3378.5143 -2939.7256 -411.16104 11461.917
+ 9240 289.39162 -3374.0395 -2943.5914 -307.74859 11462.747
+ 9250 285.90162 -3373.9939 -2948.7369 -281.93139 11463.572
+ 9260 286.20435 -3374.3861 -2948.6789 -306.09584 11464.392
+ 9270 289.99244 -3376.2127 -2944.871 -388.05128 11465.206
+ 9280 295.50977 -3379.87 -2940.3216 -508.86842 11466.014
+ 9290 299.98954 -3382.9067 -2936.695 -609.69691 11466.811
+ 9300 301.36199 -3384.0734 -2935.8203 -652.35775 11467.597
+ 9310 299.11143 -3383.1865 -2938.2809 -629.114 11468.372
+ 9320 294.5938 -3380.2764 -2942.0904 -555.66072 11469.134
+ 9330 290.36353 -3377.8008 -2945.907 -488.53675 11469.886
+ 9340 288.61814 -3376.429 -2947.1314 -457.67376 11470.629
+ 9350 289.5339 -3377.1819 -2946.5221 -476.93709 11471.363
+ 9360 291.63049 -3379.8283 -2946.0501 -530.65098 11472.089
+ 9370 293.47203 -3380.2179 -2943.7005 -558.43946 11472.804
+ 9380 294.93115 -3380.6384 -2941.9506 -584.30052 11473.509
+ 9390 296.60223 -3381.3177 -2940.1444 -614.86042 11474.203
+ 9400 298.5321 -3382.9437 -2938.8998 -657.90426 11474.886
+ 9410 300.11057 -3383.1737 -2936.782 -679.87544 11475.556
+ 9420 300.41252 -3382.6342 -2935.7933 -679.98325 11476.213
+ 9430 298.96444 -3381.5662 -2936.8793 -657.73166 11476.857
+ 9440 296.13528 -3378.7483 -2938.2696 -604.27949 11477.49
+ 9450 293.11684 -3377.7901 -2941.801 -572.27736 11478.11
+ 9460 290.98019 -3376.0463 -2943.2353 -543.34332 11478.72
+ 9470 290.28856 -3375.4335 -2943.6513 -545.64537 11479.32
+ 9480 290.97378 -3376.6996 -2943.8982 -589.0905 11479.909
+ 9490 292.85451 -3378.5537 -2942.9548 -657.01603 11480.487
+ 9500 295.28697 -3379.5542 -2940.3373 -724.88949 11481.053
+ 9510 296.87172 -3380.7034 -2939.1292 -787.94148 11481.605
+ 9520 296.23547 -3381.9598 -2941.332 -830.98155 11482.142
+ 9530 293.75437 -3380.5256 -2943.5883 -822.04041 11482.663
+ 9540 291.54909 -3379.9167 -2946.2595 -815.07725 11483.169
+ 9550 291.16307 -3380.2711 -2947.1881 -822.62536 11483.659
+ 9560 291.79866 -3380.1873 -2946.1589 -822.23473 11484.133
+ 9570 291.65041 -3380.9475 -2947.1396 -814.88465 11484.591
+ 9580 290.23254 -3379.2294 -2947.5305 -761.76584 11485.034
+ 9590 288.33061 -3377.6155 -2948.7456 -701.7939 11485.463
+ 9600 286.3799 -3375.4461 -2949.4777 -634.89279 11485.878
+ 9610 284.26068 -3373.9636 -2951.1474 -578.30622 11486.281
+ 9620 281.65679 -3372.8476 -2953.9045 -529.58227 11486.673
+ 9630 278.89017 -3372.8136 -2957.9856 -502.06139 11487.054
+ 9640 277.30095 -3372.6954 -2960.2313 -495.16399 11487.427
+ 9650 278.40345 -3373.5344 -2959.4304 -531.825 11487.789
+ 9660 282.14776 -3374.9092 -2955.2358 -603.84605 11488.142
+ 9670 287.04483 -3377.2401 -2950.2827 -698.87041 11488.483
+ 9680 291.55412 -3378.4179 -2944.7533 -776.20806 11488.811
+ 9690 295.20795 -3379.2109 -2940.1115 -837.07223 11489.124
+ 9700 298.03246 -3380.9511 -2937.6504 -895.97598 11489.421
+ 9710 300.05202 -3381.9448 -2935.6401 -934.8783 11489.7
+ 9720 301.42456 -3381.7617 -2933.4155 -951.81177 11489.962
+ 9730 302.43834 -3382.9434 -2933.0892 -979.71154 11490.205
+ 9740 303.12032 -3385.5031 -2934.6346 -1018.3763 11490.43
+ 9750 302.8607 -3387.3642 -2936.8818 -1039.2882 11490.635
+ 9760 301.07909 -3386.3348 -2938.5025 -1013.2359 11490.82
+ 9770 297.74644 -3382.0054 -2939.1302 -935.6184 11490.985
+ 9780 293.62702 -3380.8839 -2944.136 -885.15759 11491.133
+ 9790 289.38542 -3377.3213 -2946.8824 -801.93493 11491.263
+ 9800 285.67325 -3374.8691 -2949.9518 -732.84761 11491.378
+ 9810 283.0727 -3373.7426 -2952.6934 -686.72414 11491.479
+ 9820 281.4333 -3373.3244 -2954.7137 -656.9477 11491.566
+ 9830 280.40389 -3372.0877 -2955.0082 -627.24088 11491.641
+ 9840 280.84517 -3372.7826 -2955.0467 -638.43489 11491.703
+ 9850 283.93889 -3373.6238 -2951.2862 -681.14828 11491.754
+ 9860 289.37524 -3377.9795 -2947.5558 -789.29649 11491.791
+ 9870 294.9083 -3382.1317 -2943.478 -897.08483 11491.813
+ 9880 297.94178 -3383.8578 -2940.692 -951.41238 11491.817
+ 9890 297.18245 -3383.4332 -2941.3968 -942.49675 11491.804
+ 9900 293.71846 -3382.2997 -2945.4158 -895.59881 11491.772
+ 9910 290.08949 -3378.9637 -2947.4775 -817.26566 11491.724
+ 9920 288.44239 -3378.9235 -2949.8873 -792.02548 11491.659
+ 9930 289.24493 -3380.488 -2950.2581 -805.47917 11491.579
+ 9940 290.9482 -3381.9375 -2949.1741 -824.1905 11491.483
+ 9950 291.0405 -3382.5477 -2949.647 -818.47447 11491.371
+ 9960 288.14191 -3380.4364 -2951.8471 -755.85819 11491.244
+ 9970 283.62261 -3377.349 -2955.4818 -669.34327 11491.102
+ 9980 280.37234 -3374.4975 -2957.4648 -598.26413 11490.948
+ 9990 279.61011 -3375.3781 -2959.4792 -592.89227 11490.781
+ 10000 280.25782 -3374.6041 -2957.7419 -585.18692 11490.603
+Loop time of 3.44534 on 1 procs for 10000 steps with 500 atoms
+
+Performance: 250.773 ns/day, 0.096 hours/ns, 2902.471 timesteps/s
+98.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 | 2.6193 | 2.6193 | 2.6193 | 0.0 | 76.03
+Bond | 0.00079417 | 0.00079417 | 0.00079417 | 0.0 | 0.02
+Neigh | 0.024127 | 0.024127 | 0.024127 | 0.0 | 0.70
+Comm | 0.089988 | 0.089988 | 0.089988 | 0.0 | 2.61
+Output | 0.0094585 | 0.0094585 | 0.0094585 | 0.0 | 0.27
+Modify | 0.34895 | 0.34895 | 0.34895 | 0.0 | 10.13
+Other | | 0.3527 | | | 10.24
+
+Nlocal: 500 ave 500 max 500 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Nghost: 1636 ave 1636 max 1636 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Neighs: 14829 ave 14829 max 14829 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+
+Total # of neighbors = 14829
+Ave neighs/atom = 29.658
+Ave special neighs/atom = 0
+Neighbor list builds = 25
+Dangerous builds = 0
+
+#write_data ${rep}/lj-out.data
+Total wall time: 0:00:03
diff --git a/examples/USER/misc/grem/lj-temper/3/lj.data b/examples/USER/misc/grem/lj-temper/3/lj.data
new file mode 100644
index 000000000..e119a29fa
--- /dev/null
+++ b/examples/USER/misc/grem/lj-temper/3/lj.data
@@ -0,0 +1,1022 @@
+LAMMPS data file via write_data, version 9 Nov 2016, timestep = 100000
+
+500 atoms
+1 atom types
+
+1.2179817713965573e+00 2.3782018228597583e+01 xlo xhi
+1.2179817713965573e+00 2.3782018228597583e+01 ylo yhi
+1.2179817713965573e+00 2.3782018228597583e+01 zlo zhi
+
+Masses
+
+1 62.5
+
+Pair Coeffs # lj/cut
+
+1 1.1 2.8
+
+Atoms # full
+
+412 0 1 0.0000000000000000e+00 2.7531201804796015e+00 3.1664865056449663e+00 3.3500216685659434e+00 0 0 1
+9 0 1 0.0000000000000000e+00 7.0647613784478391e+00 2.9277805021216365e+00 3.2772840869783790e+00 0 0 0
+432 0 1 0.0000000000000000e+00 1.0113354520150335e+01 3.3206394417501897e+00 3.8635838671245035e+00 0 0 1
+100 0 1 0.0000000000000000e+00 1.6756728099202345e+01 1.2500054990267015e+00 1.1752046648061357e+01 0 1 0
+40 0 1 0.0000000000000000e+00 1.9516900629034929e+01 8.9110108992891401e+00 1.1349747364874508e+01 0 0 0
+440 0 1 0.0000000000000000e+00 1.2435967085318200e+01 3.9040374604965438e+00 2.0034677065495901e+00 0 0 1
+139 0 1 0.0000000000000000e+00 1.4495749449920421e+01 3.5543650578535666e+00 4.4187377374227532e+00 0 0 0
+114 0 1 0.0000000000000000e+00 1.4680415943811575e+01 2.0007884504725046e+00 1.7681962857169413e+00 0 0 0
+35 0 1 0.0000000000000000e+00 1.7102156586447101e+01 4.0600042496824216e+00 1.9712246728941607e+00 0 0 0
+1 0 1 0.0000000000000000e+00 1.8996435136590335e+01 1.8193387018740561e+00 1.9966353721327290e+00 -1 0 0
+200 0 1 0.0000000000000000e+00 1.9764212752157022e+01 2.1883691246944403e+00 4.6905677484098494e+00 0 1 0
+229 0 1 0.0000000000000000e+00 1.4238788470639507e+01 1.0957623647437513e+01 1.0470984189713931e+01 0 0 0
+22 0 1 0.0000000000000000e+00 1.9993592659772979e+01 4.6530178026732489e+00 2.7554564109459054e+00 -1 0 0
+107 0 1 0.0000000000000000e+00 2.2169773977662736e+01 2.5300853058707982e+00 2.7755757167866504e+00 -1 0 0
+144 0 1 0.0000000000000000e+00 9.4728991425466322e+00 9.9459854386304496e+00 1.1891398921909639e+01 0 0 0
+51 0 1 0.0000000000000000e+00 3.0394320772606216e+00 7.7152020731183866e+00 3.7506603695119827e+00 0 0 0
+427 0 1 0.0000000000000000e+00 5.0312624370504775e+00 5.3677634608364286e+00 3.6590550417615608e+00 0 0 1
+32 0 1 0.0000000000000000e+00 5.1375568381627277e+00 8.0389377543966507e+00 1.4310360080114548e+00 0 0 0
+429 0 1 0.0000000000000000e+00 8.1738047341395959e+00 5.7270485188065567e+00 4.2548826251068723e+00 0 0 1
+132 0 1 0.0000000000000000e+00 6.1507227757993164e+00 8.3823126972052364e+00 4.4982265402411512e+00 0 0 0
+26 0 1 0.0000000000000000e+00 8.2027741452007454e+00 8.3946288968444911e+00 2.0325878658468017e+00 0 0 0
+30 0 1 0.0000000000000000e+00 7.1632687305430673e+00 5.6427346468162307e+00 1.4132243266748867e+00 0 0 0
+312 0 1 0.0000000000000000e+00 1.0363240752298729e+01 6.1421865600215240e+00 2.0126184498925395e+00 0 0 1
+232 0 1 0.0000000000000000e+00 1.0479494804817023e+01 8.2238984779949362e+00 4.4784708357682987e+00 0 0 0
+33 0 1 0.0000000000000000e+00 1.2525236058351654e+01 8.4496909064715915e+00 2.3075542687543971e+00 0 0 0
+137 0 1 0.0000000000000000e+00 1.2538955847939608e+01 5.9965743780007603e+00 4.2037778137498067e+00 0 0 0
+460 0 1 0.0000000000000000e+00 1.4943126965748629e+01 6.0534951583036847e+00 2.1549442679117559e+00 0 0 1
+21 0 1 0.0000000000000000e+00 1.7782130688556570e+01 6.8163735086851140e+00 3.1043336290808519e+00 -1 0 0
+8 0 1 0.0000000000000000e+00 2.3390906096311134e+01 5.4114132436777931e+00 3.7146710548992132e+00 -1 0 0
+61 0 1 0.0000000000000000e+00 2.0984557498178241e+01 7.5900258861215564e+00 3.6355542304982840e+00 -1 0 0
+39 0 1 0.0000000000000000e+00 2.3273700515405658e+01 8.0225080003320404e+00 1.5906319097677979e+00 0 0 0
+121 0 1 0.0000000000000000e+00 3.0468874711690779e+00 1.0267910782079209e+01 1.6272991394745080e+00 0 0 0
+99 0 1 0.0000000000000000e+00 3.6462049495510818e+00 1.0341523793687342e+01 4.6871747210096864e+00 1 0 0
+48 0 1 0.0000000000000000e+00 5.9222288511729362e+00 1.1090729433539524e+01 2.6163974013175069e+00 0 0 0
+143 0 1 0.0000000000000000e+00 7.9837747514646962e+00 1.0521764778586084e+01 4.6627383345196014e+00 0 0 0
+153 0 1 0.0000000000000000e+00 1.0405852053108610e+01 1.0705717352279491e+01 2.7610146714477071e+00 0 0 0
+226 0 1 0.0000000000000000e+00 1.3406219103552132e+01 1.1347423707338466e+01 3.7485684860442081e+00 0 0 0
+120 0 1 0.0000000000000000e+00 1.5671774751515176e+01 9.0429884238167375e+00 3.2826959821596859e+00 0 0 0
+113 0 1 0.0000000000000000e+00 1.5681790310875087e+01 1.1586412473081378e+01 1.5412570299761481e+00 0 0 0
+44 0 1 0.0000000000000000e+00 1.8637308319314378e+01 1.2385332888939118e+01 2.3871137786732852e+00 -1 0 0
+60 0 1 0.0000000000000000e+00 1.8629616467628495e+01 9.6604240056435131e+00 3.9812166608711372e+00 0 0 0
+239 0 1 0.0000000000000000e+00 2.0809707941741543e+01 1.8515880501129660e+00 1.2202249807412853e+01 0 0 0
+24 0 1 0.0000000000000000e+00 2.1057319429192816e+01 1.0242743355268749e+01 1.8267275490935233e+00 -1 0 0
+467 0 1 0.0000000000000000e+00 2.3219748723604425e+01 9.7764225588569360e+00 3.9219931118529363e+00 -1 0 1
+157 0 1 0.0000000000000000e+00 2.0929060455362539e+01 1.2076118563203687e+01 4.3265335494255162e+00 0 0 0
+178 0 1 0.0000000000000000e+00 2.3375805556284718e+01 1.2424776215667023e+01 2.3115594033217777e+00 0 0 0
+28 0 1 0.0000000000000000e+00 2.8100795439218627e+00 2.1360186220610369e+00 7.9526304609595950e+00 0 0 0
+108 0 1 0.0000000000000000e+00 5.2088634373619422e+00 2.6577771412050462e+00 5.6098510603943899e+00 0 0 0
+25 0 1 0.0000000000000000e+00 3.0136961579881683e+00 5.0466350504037374e+00 5.7361356632872456e+00 0 0 0
+101 0 1 0.0000000000000000e+00 6.1643859327458008e+00 2.8067137082357010e+00 8.4228612207575129e+00 0 0 0
+103 0 1 0.0000000000000000e+00 7.9863055325124535e+00 3.0706283180240521e+00 6.1419371078862097e+00 0 0 0
+112 0 1 0.0000000000000000e+00 1.0067074871624248e+01 2.6418993643725313e+00 8.9042678820350396e+00 0 0 0
+206 0 1 0.0000000000000000e+00 1.2161739724765575e+01 3.1660940811658800e+00 6.3521152661354305e+00 0 0 0
+214 0 1 0.0000000000000000e+00 1.5417194789756829e+01 3.7420677620369203e+00 7.3365252183497667e+00 0 0 0
+2 0 1 0.0000000000000000e+00 1.7766418632441635e+01 4.3245407242918388e+00 5.2238679339631133e+00 -1 0 0
+17 0 1 0.0000000000000000e+00 1.8862156518961889e+01 4.3138738881211900e+00 7.8890531612932584e+00 0 0 0
+484 0 1 0.0000000000000000e+00 1.7710008650504030e+01 1.5667215208740561e+00 6.9904181611338929e+00 -1 1 1
+82 0 1 0.0000000000000000e+00 2.3480040665100354e+01 2.6834294037051860e+00 5.5442020593466603e+00 -1 1 0
+182 0 1 0.0000000000000000e+00 2.0987869471391207e+01 2.2017939632912693e+00 7.4074493406374726e+00 -1 1 0
+194 0 1 0.0000000000000000e+00 2.3265585372255131e+01 4.6487739751952981e+00 7.8516033226312416e+00 0 1 0
+19 0 1 0.0000000000000000e+00 2.0908586082583533e+01 4.9218996861944646e+00 5.6078222440126479e+00 0 0 0
+27 0 1 0.0000000000000000e+00 3.7252141005952439e+00 7.7793125336542071e+00 6.5886984811239699e+00 0 0 0
+126 0 1 0.0000000000000000e+00 3.7855227670854541e+00 5.0709364052242645e+00 8.6175453267045832e+00 0 0 0
+11 0 1 0.0000000000000000e+00 6.0430466029712964e+00 5.4942649672754076e+00 6.6902255425891513e+00 0 0 0
+127 0 1 0.0000000000000000e+00 8.3633585768783174e+00 8.0645558825145756e+00 6.4489547795358293e+00 0 0 0
+129 0 1 0.0000000000000000e+00 8.1609807803950645e+00 5.0630778745065310e+00 8.8115465015729519e+00 0 0 0
+230 0 1 0.0000000000000000e+00 1.0008365940618654e+01 5.5035113483438218e+00 6.4518968568261235e+00 0 0 0
+118 0 1 0.0000000000000000e+00 1.1280373075256787e+01 8.4409142631402219e+00 7.5054970398271958e+00 0 0 0
+115 0 1 0.0000000000000000e+00 1.5366350978772033e+01 6.1746467980776449e+00 5.2999666059940775e+00 0 0 0
+355 0 1 0.0000000000000000e+00 1.3273598424482339e+01 5.8542545306747522e+00 7.2824414314484365e+00 0 0 0
+136 0 1 0.0000000000000000e+00 1.3357296065822137e+01 8.5459198926841893e+00 5.3535845750907471e+00 0 0 0
+119 0 1 0.0000000000000000e+00 1.6553482179210043e+01 6.4569366895950902e+00 7.9992059407731757e+00 0 0 0
+57 0 1 0.0000000000000000e+00 1.8793006874145242e+01 7.1143865619688302e+00 5.9574631617460758e+00 0 0 0
+37 0 1 0.0000000000000000e+00 2.3196473871362898e+01 7.2183926165376615e+00 5.9850618622703440e+00 0 0 0
+233 0 1 0.0000000000000000e+00 2.0880800139886610e+01 6.9188221050802756e+00 8.0367962498107648e+00 0 0 0
+4 0 1 0.0000000000000000e+00 2.1799915536934606e+01 9.4937337497437753e+00 9.2608841721120978e+00 -1 0 0
+163 0 1 0.0000000000000000e+00 1.6091550440465601e+00 1.0127196016021005e+01 7.0840133286859031e+00 0 0 0
+38 0 1 0.0000000000000000e+00 5.9349751052746544e+00 1.0078799630164749e+01 7.0212656625829961e+00 1 0 0
+145 0 1 0.0000000000000000e+00 8.9072828369599737e+00 1.0743930914709402e+01 7.7678887815038999e+00 0 0 0
+47 0 1 0.0000000000000000e+00 1.1074776391733973e+01 1.0846097817540443e+01 5.5988272975386995e+00 0 0 0
+246 0 1 0.0000000000000000e+00 1.3776467831221224e+01 1.1031969879577094e+01 7.0636260189415134e+00 0 0 0
+326 0 1 0.0000000000000000e+00 1.6371745836529314e+01 1.1576803735182471e+01 4.5956278243783064e+00 0 0 0
+151 0 1 0.0000000000000000e+00 1.6295935246750823e+01 9.2539280235764032e+00 6.5063774248568631e+00 0 0 0
+173 0 1 0.0000000000000000e+00 1.8715843696464198e+01 8.9968299211465101e+00 8.3048272047482712e+00 0 0 0
+234 0 1 0.0000000000000000e+00 1.8618021673369739e+01 1.1650788511818291e+01 6.5867683234335823e+00 0 0 0
+171 0 1 0.0000000000000000e+00 1.6576863996526274e+01 1.1429490382462335e+01 8.5864012623155226e+00 0 0 0
+238 0 1 0.0000000000000000e+00 2.0987744010416627e+01 9.6201810864937816e+00 6.2055776323819929e+00 0 0 0
+140 0 1 0.0000000000000000e+00 2.1644771128232662e+01 1.2185380540381155e+01 7.7237797202413629e+00 0 0 0
+104 0 1 0.0000000000000000e+00 4.2466159224096263e+00 2.2991184777888867e+00 1.0625899596625596e+01 0 0 0
+353 0 1 0.0000000000000000e+00 1.6454769971358982e+00 4.6074162497243352e+00 1.0590294402975310e+01 1 0 0
+225 0 1 0.0000000000000000e+00 7.6343574238432526e+00 2.1328255874211353e+00 1.1098770418604881e+01 0 0 0
+303 0 1 0.0000000000000000e+00 5.9765428017954845e+00 4.8750485807888353e+00 1.0812298803978726e+01 0 0 0
+211 0 1 0.0000000000000000e+00 1.0744967280672734e+01 2.5748983562654333e+00 1.1974543994424497e+01 0 0 0
+290 0 1 0.0000000000000000e+00 1.3055377511593379e+01 3.2912830045275103e+00 9.2798312383803676e+00 0 1 0
+216 0 1 0.0000000000000000e+00 1.4375333071260748e+01 3.1151013064057098e+00 1.1905867051767387e+01 0 0 0
+334 0 1 0.0000000000000000e+00 1.6789577835538225e+01 3.8296348470813557e+00 1.0103980016796120e+01 0 0 0
+190 0 1 0.0000000000000000e+00 1.8906200658880330e+01 1.6478051332879835e+00 9.8321402068469546e+00 0 1 0
+175 0 1 0.0000000000000000e+00 1.9369571801279612e+01 1.1565272416862831e+01 9.9266948473725769e+00 0 0 0
+337 0 1 0.0000000000000000e+00 2.3018667306488723e+01 1.8994907979921729e+00 1.0145160319379452e+01 0 0 0
+124 0 1 0.0000000000000000e+00 2.0934777622340647e+01 4.1736803497567099e+00 1.0032900681450526e+01 -1 0 0
+155 0 1 0.0000000000000000e+00 2.1898066983869633e+01 1.1382891368644383e+01 1.1651550349568385e+01 0 0 0
+42 0 1 0.0000000000000000e+00 1.6151551001505737e+00 7.3366369329989167e+00 8.9288107117262214e+00 0 0 0
+321 0 1 0.0000000000000000e+00 3.7828223163843826e+00 7.2127582651058235e+00 1.1124713518448633e+01 0 0 0
+224 0 1 0.0000000000000000e+00 5.9657656602171016e+00 7.4771058430657291e+00 8.8394867263626242e+00 0 0 0
+106 0 1 0.0000000000000000e+00 6.7871269126372260e+00 7.4249237494540079e+00 1.1908057553174631e+01 0 0 0
+204 0 1 0.0000000000000000e+00 8.9898577543315632e+00 8.0194429971996612e+00 9.5611155778669179e+00 0 0 0
+227 0 1 0.0000000000000000e+00 9.2998994941521307e+00 5.3310286201133836e+00 1.1591694849108869e+01 0 0 0
+240 0 1 0.0000000000000000e+00 1.1010880741300729e+01 5.7289404839401019e+00 9.3508141321617355e+00 0 0 0
+265 0 1 0.0000000000000000e+00 1.1735588129336550e+01 8.0867351010405759e+00 1.1126679758142076e+01 0 0 0
+373 0 1 0.0000000000000000e+00 1.2231248085300006e+01 5.3309805563582229e+00 1.2244948112458122e+01 0 0 0
+332 0 1 0.0000000000000000e+00 1.4383610834965895e+01 5.8962110478334830e+00 1.0232303269582022e+01 0 0 0
+330 0 1 0.0000000000000000e+00 1.4064090782221257e+01 8.4640946942483595e+00 8.6055025949603916e+00 0 0 0
+231 0 1 0.0000000000000000e+00 1.8827137844140914e+01 6.2871335524509755e+00 1.0203537332969438e+01 0 0 0
+250 0 1 0.0000000000000000e+00 2.1899975890800356e+01 6.7888989672056432e+00 1.0985980248490767e+01 0 0 0
+221 0 1 0.0000000000000000e+00 1.6602638529355553e+00 9.4566129924810092e+00 1.1223489204490338e+01 0 0 0
+237 0 1 0.0000000000000000e+00 4.0945880593545718e+00 9.7194752670826681e+00 9.2444483451406896e+00 1 0 0
+261 0 1 0.0000000000000000e+00 1.5482647513506007e+00 1.2329107961152308e+01 9.4234045553955159e+00 0 0 0
+323 0 1 0.0000000000000000e+00 4.8471401421421927e+00 1.0054502183869033e+01 1.2183082827057651e+01 0 0 0
+122 0 1 0.0000000000000000e+00 7.0345876514299359e+00 1.0423133237031141e+01 1.0175609465856530e+01 0 0 0
+150 0 1 0.0000000000000000e+00 1.6564172087277989e+01 8.4575004503894888e+00 1.0344436560088164e+01 0 0 0
+172 0 1 0.0000000000000000e+00 1.1364317325894964e+01 1.0793716180698228e+01 9.4633846454505797e+00 0 0 0
+333 0 1 0.0000000000000000e+00 1.4324040432061421e+01 8.5569295236269340e+00 1.2448634876417449e+01 0 0 0
+488 0 1 0.0000000000000000e+00 3.7850756690182039e+00 4.4055136101039620e+00 1.2887552450606556e+01 0 1 0
+324 0 1 0.0000000000000000e+00 1.8223073003778096e+00 4.0466748796224952e+00 1.5406114018569282e+01 0 0 0
+125 0 1 0.0000000000000000e+00 2.0819873761094461e+00 1.7400385152665390e+00 1.2648863550865038e+01 0 0 0
+401 0 1 0.0000000000000000e+00 4.9627403635066134e+00 4.3166734929538038e+00 1.6032244511199451e+01 0 0 0
+202 0 1 0.0000000000000000e+00 5.3999648817002193e+00 1.6136487838584563e+00 1.3515861835761964e+01 0 0 0
+433 0 1 0.0000000000000000e+00 8.2367012922663783e+00 2.0411542110264445e+00 1.4291805977881852e+01 0 0 0
+305 0 1 0.0000000000000000e+00 6.9355605768320485e+00 4.7849153126707886e+00 1.3727292984126443e+01 0 0 0
+388 0 1 0.0000000000000000e+00 6.3580619772716078e+00 1.5077586065857871e+00 1.6502270524897739e+01 0 1 0
+492 0 1 0.0000000000000000e+00 1.0381692389657090e+01 4.6470095368870261e+00 1.4516932387352666e+01 0 1 0
+331 0 1 0.0000000000000000e+00 1.0446538969090032e+01 1.7662870642298791e+00 1.6400926708823217e+01 0 0 0
+356 0 1 0.0000000000000000e+00 1.2740155304491852e+01 2.0426175610905712e+00 1.4305882115565723e+01 0 0 0
+314 0 1 0.0000000000000000e+00 1.6114543329461981e+01 2.7001308338934713e+00 1.4810517323736214e+01 0 0 0
+311 0 1 0.0000000000000000e+00 2.0313069051459969e+01 3.7630767483090022e+00 1.5038993931174243e+01 0 0 0
+18 0 1 0.0000000000000000e+00 2.2484879215790215e+01 4.3986606690722656e+00 1.2934845660365333e+01 0 0 0
+300 0 1 0.0000000000000000e+00 2.2417668304546019e+01 1.6009954354346907e+00 1.4626904411524890e+01 0 1 0
+188 0 1 0.0000000000000000e+00 4.6716234889671213e+00 7.1642652714106871e+00 1.3935196771381268e+01 0 1 0
+117 0 1 0.0000000000000000e+00 1.6085359573768148e+00 6.7483488500335671e+00 1.3075501047138122e+01 1 0 0
+322 0 1 0.0000000000000000e+00 2.5877089025393265e+00 7.1927857689627377e+00 1.5959723953922149e+01 0 0 0
+228 0 1 0.0000000000000000e+00 9.3612059978288826e+00 7.2991395002259472e+00 1.3625962187280471e+01 0 0 0
+167 0 1 0.0000000000000000e+00 1.2139061608045866e+01 7.4557137796881454e+00 1.4689344567830586e+01 0 0 0
+340 0 1 0.0000000000000000e+00 1.3640818254056343e+01 4.6736050011825228e+00 1.4862837101772024e+01 0 0 0
+455 0 1 0.0000000000000000e+00 1.5495286439575489e+01 7.2765192139049271e+00 1.5459073689116956e+01 0 0 0
+336 0 1 0.0000000000000000e+00 1.6064495680583136e+01 5.3803151173846135e+00 1.2930648301998170e+01 0 0 0
+257 0 1 0.0000000000000000e+00 2.2167343436838109e+00 1.2222823166849944e+01 1.2508999246215785e+01 1 0 0
+458 0 1 0.0000000000000000e+00 1.7782457897795112e+01 5.3023586487283421e+00 1.5406970643639823e+01 0 0 0
+179 0 1 0.0000000000000000e+00 1.7575949725894567e+01 8.1147732813415097e+00 1.3739090894603818e+01 0 0 0
+349 0 1 0.0000000000000000e+00 1.9796750054305924e+01 8.4900267471269881e+00 1.5870924483600385e+01 0 0 0
+20 0 1 0.0000000000000000e+00 1.9988787918525190e+01 6.3450606334831905e+00 1.3144997184318475e+01 0 0 0
+212 0 1 0.0000000000000000e+00 2.2098750812306967e+01 6.2850684805719510e+00 1.5499500436227796e+01 0 0 0
+123 0 1 0.0000000000000000e+00 2.5585447103480141e+00 9.5904072834306806e+00 1.4231682079344274e+01 0 0 0
+242 0 1 0.0000000000000000e+00 4.5152005884543396e+00 1.1824159767729327e+01 1.4710846711343898e+01 0 0 0
+318 0 1 0.0000000000000000e+00 1.8449885032685849e+01 3.6949530117077001e+00 1.2555666946513883e+01 0 0 0
+343 0 1 0.0000000000000000e+00 7.4097381355435612e+00 1.2218826427864830e+01 1.5829568416768071e+01 0 0 0
+443 0 1 0.0000000000000000e+00 1.8088263657195341e+01 9.4457678013537336e+00 2.3765024474554245e+01 -1 0 0
+222 0 1 0.0000000000000000e+00 6.9571064416419359e+00 9.7014488066545095e+00 1.4072031613662880e+01 0 0 0
+345 0 1 0.0000000000000000e+00 1.1994175603233263e+01 1.2087076827724363e+01 1.5550812210626781e+01 0 0 0
+306 0 1 0.0000000000000000e+00 9.7231401802841830e+00 1.0090847639392539e+01 1.5180131168618072e+01 0 0 0
+251 0 1 0.0000000000000000e+00 1.2247918569305632e+01 1.0641514066289529e+01 1.2759926608768895e+01 0 0 0
+253 0 1 0.0000000000000000e+00 1.4423529832571583e+01 1.0193521434426556e+01 1.5116994017445297e+01 0 0 0
+260 0 1 0.0000000000000000e+00 1.6712838136910250e+01 1.0822986388809543e+01 1.2544507506036284e+01 0 0 0
+256 0 1 0.0000000000000000e+00 1.9629921802426459e+01 1.0923491462118827e+01 1.3802417296653763e+01 0 0 0
+254 0 1 0.0000000000000000e+00 1.7394580356718080e+01 1.0366189108529486e+01 1.6210695142127683e+01 0 0 0
+244 0 1 0.0000000000000000e+00 2.1892501832239738e+01 8.7630879844201779e+00 1.3592754801138875e+01 -1 0 0
+236 0 1 0.0000000000000000e+00 2.2551997553406920e+01 1.1751697059555021e+01 1.4629781357673565e+01 0 0 0
+383 0 1 0.0000000000000000e+00 3.2235791274095758e+00 3.5950411419049697e+00 1.8162306177542398e+01 0 1 0
+400 0 1 0.0000000000000000e+00 6.1852324819097229e+00 3.4468157854460872e+00 1.8777630662205404e+01 0 1 0
+90 0 1 0.0000000000000000e+00 8.1834861132224965e+00 4.3284026998958938e+00 1.6697449611402256e+01 0 1 -1
+316 0 1 0.0000000000000000e+00 1.1584844600712859e+01 1.8826503739426728e+00 1.9263622926020098e+01 0 0 0
+434 0 1 0.0000000000000000e+00 9.4421556992487385e+00 3.9532285947421686e+00 1.9428182729968675e+01 0 0 0
+375 0 1 0.0000000000000000e+00 1.1583681479457404e+01 4.3488860976666421e+00 1.7372486850092571e+01 0 0 0
+410 0 1 0.0000000000000000e+00 1.3745356152768613e+01 2.2386305504824202e+00 1.7120397649291302e+01 0 0 0
+53 0 1 0.0000000000000000e+00 1.3737595399654657e+01 4.1514475448480113e+00 1.9529624428203554e+01 0 0 -1
+338 0 1 0.0000000000000000e+00 1.5946699573048056e+01 2.1290339815733974e+00 1.9221076286740086e+01 0 0 0
+357 0 1 0.0000000000000000e+00 1.5673524498751059e+01 4.7152344397008275e+00 1.7478781438682084e+01 0 0 0
+296 0 1 0.0000000000000000e+00 1.7955337499584694e+01 2.6646635725683492e+00 1.7164202848585397e+01 0 1 0
+34 0 1 0.0000000000000000e+00 1.9400149150436796e+01 2.6224958521927064e+00 1.9681490115692853e+01 0 0 -1
+320 0 1 0.0000000000000000e+00 2.1647460485249162e+01 3.3521543441017023e+00 1.7673660707897000e+01 0 0 0
+85 0 1 0.0000000000000000e+00 2.3744158177879278e+01 2.6230394869497156e+00 1.9992912448469440e+01 -1 1 -1
+384 0 1 0.0000000000000000e+00 4.2143138159341031e+00 6.5236368569443020e+00 1.8324258457228972e+01 0 1 0
+259 0 1 0.0000000000000000e+00 2.0458169585533135e+00 8.3540347108900654e+00 1.8840315637991225e+01 1 0 0
+302 0 1 0.0000000000000000e+00 7.0447928462335403e+00 6.9142423427233952e+00 1.5860966992514205e+01 0 0 0
+402 0 1 0.0000000000000000e+00 7.3510422867574450e+00 6.2698621563976671e+00 1.9090199800209241e+01 0 0 0
+308 0 1 0.0000000000000000e+00 5.0738703582866558e+00 9.2370087773401739e+00 1.9423946277721733e+01 0 0 0
+208 0 1 0.0000000000000000e+00 9.8314423586861750e+00 6.8358753350048627e+00 1.6963032337350068e+01 0 0 0
+351 0 1 0.0000000000000000e+00 1.1485456135147579e+01 6.4810950029047953e+00 1.9725513766393519e+01 0 0 0
+271 0 1 0.0000000000000000e+00 1.3513012994023244e+01 6.8382487838595232e+00 1.7590298491605317e+01 0 0 0
+335 0 1 0.0000000000000000e+00 1.9364157172661649e+01 5.3427597807508587e+00 1.7831837886070211e+01 0 0 0
+379 0 1 0.0000000000000000e+00 1.7078504431863351e+01 7.2935234540269676e+00 1.8389746292601082e+01 0 0 0
+219 0 1 0.0000000000000000e+00 2.3492677182420707e+01 5.5515928443736566e+00 1.8300307017116126e+01 0 0 0
+304 0 1 0.0000000000000000e+00 2.1344994292559498e+01 7.8470677732089484e+00 1.8479338340002926e+01 -1 0 0
+441 0 1 0.0000000000000000e+00 4.9248457448213045e+00 9.1194954293042407e+00 1.6346621159013399e+01 0 0 0
+342 0 1 0.0000000000000000e+00 2.4551840751025051e+00 1.1203600460638114e+01 1.7088828953266866e+01 0 0 0
+428 0 1 0.0000000000000000e+00 5.3165057944172487e+00 1.1742093301737309e+01 1.7786512712646875e+01 0 0 0
+325 0 1 0.0000000000000000e+00 7.6360997792299248e+00 9.5799150558109538e+00 1.7388089859100482e+01 0 0 0
+49 0 1 0.0000000000000000e+00 7.5352223022019871e+00 1.1169902934343195e+01 2.0059147979138196e+01 0 0 -1
+328 0 1 0.0000000000000000e+00 9.5556592219143326e+00 8.7468513030004669e+00 1.9543433711827738e+01 0 0 0
+327 0 1 0.0000000000000000e+00 1.0078966198222577e+01 1.1689531310299742e+01 1.8096027034374316e+01 0 0 0
+350 0 1 0.0000000000000000e+00 1.2120657097937100e+01 9.4172692817596033e+00 1.7184472763419741e+01 0 0 0
+374 0 1 0.0000000000000000e+00 1.5137956603504021e+01 1.0065533571927249e+01 1.8239361119052852e+01 0 0 0
+453 0 1 0.0000000000000000e+00 1.3076253558722129e+01 1.2219757287422551e+01 1.8488754921443039e+01 0 0 0
+280 0 1 0.0000000000000000e+00 1.7407505892092338e+01 1.2105273990076141e+01 1.8861594003138741e+01 0 0 0
+354 0 1 0.0000000000000000e+00 1.9134091546777483e+01 9.7714535289811550e+00 1.8522607196725545e+01 0 0 0
+444 0 1 0.0000000000000000e+00 2.0090211861560377e+01 1.1777148815878668e+01 1.6657507245216106e+01 -1 0 0
+437 0 1 0.0000000000000000e+00 2.2828741629413145e+01 9.2865334481443789e+00 1.6394098605646882e+01 0 0 0
+422 0 1 0.0000000000000000e+00 2.2644314029985097e+01 1.0966850343703886e+01 1.9227840816694929e+01 -1 0 0
+421 0 1 0.0000000000000000e+00 4.2100941190019459e+00 3.2365641073121036e+00 2.1004864198498645e+01 0 0 0
+88 0 1 0.0000000000000000e+00 1.8191575787695975e+00 2.7755578958703171e+00 2.3024885249446278e+01 0 1 -1
+431 0 1 0.0000000000000000e+00 7.2147432412166825e+00 3.5935008985476085e+00 2.1715340774272420e+01 0 0 0
+391 0 1 0.0000000000000000e+00 8.5487370865961019e+00 1.3283845398832343e+00 1.8501077172954773e+01 0 1 0
+12 0 1 0.0000000000000000e+00 1.1668595262311936e+01 3.8111252721673470e+00 2.1788884959292481e+01 0 0 -1
+31 0 1 0.0000000000000000e+00 9.3701740081292897e+00 1.4056694895486848e+00 2.1454522797061244e+01 0 0 -1
+435 0 1 0.0000000000000000e+00 1.3897783175073508e+01 1.6497739804313374e+00 2.1316249081732856e+01 0 0 0
+279 0 1 0.0000000000000000e+00 1.4824190657196558e+01 4.3437226360672554e+00 2.2270580495078221e+01 0 0 0
+414 0 1 0.0000000000000000e+00 1.7039059509438307e+01 2.0902839063090943e+00 2.1990954797457640e+01 0 0 0
+459 0 1 0.0000000000000000e+00 1.9249285414506531e+01 4.4866137335929528e+00 2.2503487455671902e+01 0 0 0
+315 0 1 0.0000000000000000e+00 1.7092159062241663e+01 4.5903559193604684e+00 2.0308928676910433e+01 0 0 0
+359 0 1 0.0000000000000000e+00 2.1663845419920975e+01 2.2300702611435277e+00 2.2083545102568465e+01 0 0 0
+483 0 1 0.0000000000000000e+00 2.4435604310700181e+00 5.7868523570537826e+00 2.0817238019486297e+01 0 1 0
+403 0 1 0.0000000000000000e+00 3.1149907755141810e+00 8.5536585585270331e+00 2.1705085803887002e+01 0 0 0
+329 0 1 0.0000000000000000e+00 5.3399217522465747e+00 5.9817839694786370e+00 2.1244022417715883e+01 0 0 0
+52 0 1 0.0000000000000000e+00 7.2508045337676021e+00 8.5784997862729018e+00 2.1713689032736248e+01 0 0 -1
+425 0 1 0.0000000000000000e+00 9.0530281069162157e+00 6.1494699692009158e+00 2.1704307328127605e+01 0 0 0
+133 0 1 0.0000000000000000e+00 1.2789470116119368e+01 6.7156797290777748e+00 2.2440174940816419e+01 0 0 -1
+360 0 1 0.0000000000000000e+00 1.4832380050758642e+01 6.9233879665738955e+00 2.0383506705313707e+01 0 0 0
+454 0 1 0.0000000000000000e+00 1.6964011046975799e+01 6.7105188001255920e+00 2.2740784042815932e+01 0 0 0
+438 0 1 0.0000000000000000e+00 1.9100486150022277e+01 6.9475400814853137e+00 2.0673524377605126e+01 0 0 0
+424 0 1 0.0000000000000000e+00 2.0116183694405024e+01 7.2451262842662709e+00 2.3431499465065656e+01 -1 0 0
+419 0 1 0.0000000000000000e+00 2.1413430265051801e+01 4.9268711353746397e+00 2.0260622727519298e+01 0 0 0
+86 0 1 0.0000000000000000e+00 2.2366554809966225e+01 5.3251776230893464e+00 2.3472677144534252e+01 -1 1 -1
+6 0 1 0.0000000000000000e+00 2.2613254773990001e+01 7.9722525349543272e+00 2.1250214669760965e+01 -1 0 -1
+447 0 1 0.0000000000000000e+00 3.1780916437744833e+00 1.1440532723486781e+01 1.9975393238538430e+01 0 0 0
+83 0 1 0.0000000000000000e+00 5.2086794434179620e+00 1.0768804414687651e+01 2.2238246725243663e+01 0 0 -1
+41 0 1 0.0000000000000000e+00 8.2346736385527439e+00 1.1183873371327440e+01 2.2954760816372207e+01 0 0 -1
+45 0 1 0.0000000000000000e+00 1.0313164303031444e+01 8.8880474817456125e+00 2.2572600052120102e+01 0 0 -1
+55 0 1 0.0000000000000000e+00 1.0553029093714120e+01 1.1568424142350963e+01 2.1047648486466365e+01 0 0 -1
+477 0 1 0.0000000000000000e+00 1.4857363788226277e+01 8.9247269484203073e+00 2.2783344275555663e+01 0 0 0
+77 0 1 0.0000000000000000e+00 1.2634617396508110e+01 1.1059476895076758e+01 2.3021521064167196e+01 0 0 -1
+442 0 1 0.0000000000000000e+00 1.4919607621959237e+01 1.1771449621683553e+01 2.1037309246031519e+01 -1 0 0
+436 0 1 0.0000000000000000e+00 1.2792035503785876e+01 9.2312539361029629e+00 2.0502486418622198e+01 0 0 0
+59 0 1 0.0000000000000000e+00 1.8247895457096156e+01 1.2051633654387590e+01 2.1859671837895149e+01 0 0 -1
+339 0 1 0.0000000000000000e+00 1.7223429523298329e+01 9.2664271030232204e+00 2.1019359107026503e+01 0 0 0
+445 0 1 0.0000000000000000e+00 2.0352554003186491e+01 1.0013220286435008e+01 2.1233078197074484e+01 -1 0 0
+23 0 1 0.0000000000000000e+00 2.3355070215449722e+01 1.0836938066984400e+01 2.2319583652089989e+01 -1 0 -1
+466 0 1 0.0000000000000000e+00 4.9654594331327626e+00 3.3997983837971955e+00 2.3701520826469142e+01 0 1 0
+116 0 1 0.0000000000000000e+00 9.3784369301655488e+00 3.4913465042503864e+00 2.3595087232955763e+01 0 0 -1
+247 0 1 0.0000000000000000e+00 7.0374240005066380e+00 1.2303202653460064e+01 1.2613228164274291e+01 0 0 0
+423 0 1 0.0000000000000000e+00 2.8633181804958543e+00 5.7370638647939218e+00 2.3610730681801094e+01 0 0 0
+43 0 1 0.0000000000000000e+00 3.5865810791180306e+00 1.2955471196300092e+01 3.3928058732912212e+00 0 0 0
+165 0 1 0.0000000000000000e+00 3.7674302179420440e+00 1.5742605438563359e+01 1.5648793035926665e+00 0 0 0
+161 0 1 0.0000000000000000e+00 2.3723370653078838e+01 1.5032502248268477e+01 3.9019439821261854e+00 -1 0 0
+79 0 1 0.0000000000000000e+00 8.1636554414090909e+00 1.3196013656168761e+01 2.9188935252103847e+00 1 0 0
+288 0 1 0.0000000000000000e+00 6.1760597646555082e+00 1.5724626796104605e+01 3.5903028902190059e+00 0 0 0
+241 0 1 0.0000000000000000e+00 3.8273654006499913e+00 1.2558962392923572e+01 7.3148407464010878e+00 0 0 0
+146 0 1 0.0000000000000000e+00 1.1280622765513495e+01 1.3478669256456341e+01 3.9237316310580557e+00 0 0 0
+148 0 1 0.0000000000000000e+00 9.1896663445436850e+00 1.6140049633325773e+01 4.2917466109161699e+00 0 0 0
+135 0 1 0.0000000000000000e+00 1.3257652349772130e+01 1.4052256857076534e+01 1.9777433205698629e+00 0 0 0
+156 0 1 0.0000000000000000e+00 1.6221326312154140e+01 1.4191383508418411e+01 3.1853991976739597e+00 0 0 0
+71 0 1 0.0000000000000000e+00 1.3800819635258010e+01 1.6296953433313732e+01 3.8949311915822533e+00 0 0 0
+293 0 1 0.0000000000000000e+00 1.9081515162121597e+01 1.4520486068453833e+01 4.8716048905437326e+00 0 0 0
+75 0 1 0.0000000000000000e+00 2.1001316897815400e+01 1.4663435697477979e+01 2.8252450531705864e+00 0 0 0
+87 0 1 0.0000000000000000e+00 4.1960687946634323e+00 1.8060169930145953e+01 3.7937240295522576e+00 0 0 0
+3 0 1 0.0000000000000000e+00 1.6351834382571506e+00 1.7705753490761730e+01 2.6627339374893051e+00 0 -1 0
+184 0 1 0.0000000000000000e+00 7.0231867104895551e+00 1.8373848403024894e+01 4.8001587793071199e+00 0 0 0
+469 0 1 0.0000000000000000e+00 6.5865360776858672e+00 1.8241796510467339e+01 1.6314700504230137e+00 0 0 1
+142 0 1 0.0000000000000000e+00 1.1327711804894259e+01 1.6486012183191651e+01 2.0950325032217987e+00 0 0 0
+13 0 1 0.0000000000000000e+00 9.3848387362731245e+00 1.8777924004225888e+01 2.5775684398473064e+00 0 -1 0
+70 0 1 0.0000000000000000e+00 1.1745491827679176e+01 1.8496877466666618e+01 4.4070543529856874e+00 0 0 0
+76 0 1 0.0000000000000000e+00 1.4004430483841830e+01 1.8821524941159787e+01 2.2584713449478375e+00 0 0 0
+480 0 1 0.0000000000000000e+00 1.6167095231882620e+01 1.6742523251552399e+01 1.6762649460903656e+00 0 0 1
+81 0 1 0.0000000000000000e+00 1.8994551591292655e+01 1.6911684551075183e+01 2.9636875349245964e+00 -1 0 0
+93 0 1 0.0000000000000000e+00 1.6736260439353586e+01 1.9617594822801635e+01 3.2360509892880938e+00 0 0 0
+154 0 1 0.0000000000000000e+00 2.1620759205676300e+01 1.7312544657259934e+01 4.6911042004612504e+00 0 0 0
+197 0 1 0.0000000000000000e+00 2.1659316731545097e+01 1.9782813963488529e+01 3.2237668059343960e+00 0 0 0
+223 0 1 0.0000000000000000e+00 1.8085637115255695e+00 2.0411075901563834e+01 4.3309073485175649e+00 0 -1 0
+102 0 1 0.0000000000000000e+00 4.1211391621116640e+00 2.0603555211455287e+01 2.1411151726302382e+00 0 -1 0
+98 0 1 0.0000000000000000e+00 1.7764162128329963e+00 2.2944322436441240e+01 2.3896002188110601e+00 1 0 0
+166 0 1 0.0000000000000000e+00 4.9914479502918958e+00 2.0800440733773762e+01 5.0899727919465256e+00 0 0 0
+406 0 1 0.0000000000000000e+00 4.8759325856612676e+00 2.3467155849897722e+01 3.0589913297120548e+00 0 -1 1
+67 0 1 0.0000000000000000e+00 7.0568042087343485e+00 2.0758815406888104e+01 2.9119377050528028e+00 0 0 0
+111 0 1 0.0000000000000000e+00 9.3768719384723980e+00 2.2999132832246268e+01 3.0854827803630336e+00 0 -1 0
+169 0 1 0.0000000000000000e+00 1.1746286795684734e+01 2.0888539245738350e+01 2.6800818048697925e+00 0 0 0
+110 0 1 0.0000000000000000e+00 1.4563923182560176e+01 2.1701767347171526e+01 3.4574164113003514e+00 0 -1 0
+97 0 1 0.0000000000000000e+00 1.9069484173769084e+01 2.1896803509320897e+01 3.7479982088835744e+00 0 0 0
+16 0 1 0.0000000000000000e+00 1.6792027579759392e+01 2.2360671966361956e+01 1.3937856206067747e+00 0 -1 0
+64 0 1 0.0000000000000000e+00 2.2175620263281246e+01 2.2529973901577677e+01 4.5950725378697950e+00 -1 0 0
+407 0 1 0.0000000000000000e+00 2.1304486932905839e+01 2.2278529471567765e+01 1.5561099762883717e+00 -1 -1 1
+159 0 1 0.0000000000000000e+00 3.6890207604558478e+00 1.5272154634270874e+01 5.7518709642070496e+00 1 0 0
+141 0 1 0.0000000000000000e+00 1.5599533396360596e+00 1.5075182686152155e+01 7.8858800714903117e+00 0 0 0
+344 0 1 0.0000000000000000e+00 4.7948413448176375e+00 1.5245326992955526e+01 8.4681725393537413e+00 0 0 0
+138 0 1 0.0000000000000000e+00 1.3688387065628072e+00 1.2702527577825602e+01 5.8079247595272090e+00 1 0 0
+128 0 1 0.0000000000000000e+00 6.0752249279722301e+00 1.2668707614653393e+01 5.3000392769451148e+00 0 0 0
+264 0 1 0.0000000000000000e+00 6.9137439966210366e+00 1.5665158254369919e+01 6.4921622314515313e+00 0 0 0
+248 0 1 0.0000000000000000e+00 6.9910712692810959e+00 1.3184885816079301e+01 8.3531800205036610e+00 0 0 0
+168 0 1 0.0000000000000000e+00 9.0554203878418900e+00 1.3196896799392711e+01 6.0243309148694726e+00 0 0 0
+147 0 1 0.0000000000000000e+00 1.1389894567650877e+01 1.3263539571814391e+01 7.7488050311565022e+00 0 0 0
+149 0 1 0.0000000000000000e+00 1.1442005579140901e+01 1.5860598692643308e+01 6.1736162494380995e+00 0 0 0
+269 0 1 0.0000000000000000e+00 9.0898727340213910e+00 1.5339825211682035e+01 8.5417509546812269e+00 0 0 0
+131 0 1 0.0000000000000000e+00 1.3855528902841614e+01 1.3638376106646565e+01 5.5113954292694238e+00 0 0 0
+277 0 1 0.0000000000000000e+00 1.6637730794892178e+01 1.4105743689232410e+01 6.6200411297320523e+00 0 0 0
+378 0 1 0.0000000000000000e+00 1.9113891441278689e+01 1.4144713174560207e+01 8.6273937942000885e+00 0 0 0
+183 0 1 0.0000000000000000e+00 2.1622889633910653e+01 1.4725689610566125e+01 6.1567258878122608e+00 -1 0 0
+158 0 1 0.0000000000000000e+00 1.8695261159825791e+00 1.7773371729579921e+01 5.8905129034432324e+00 1 0 0
+263 0 1 0.0000000000000000e+00 4.7563794692030950e+00 1.7862377978571317e+01 6.8569598316429534e+00 0 0 0
+56 0 1 0.0000000000000000e+00 9.2013085113701614e+00 1.8029635062362253e+01 6.9852166219191050e+00 0 0 0
+152 0 1 0.0000000000000000e+00 1.2057586536295648e+01 1.8611764574614391e+01 7.4440808585856653e+00 0 0 0
+189 0 1 0.0000000000000000e+00 1.4378840419835244e+01 1.6604623187912161e+01 7.3412694053987018e+00 0 0 0
+191 0 1 0.0000000000000000e+00 1.4709532000282232e+01 1.9153304782000298e+01 5.5083960697031218e+00 0 0 0
+94 0 1 0.0000000000000000e+00 1.6675904634110044e+01 1.6756471100513952e+01 5.0068225248087472e+00 0 0 0
+91 0 1 0.0000000000000000e+00 1.8981232358501181e+01 1.6707251697599101e+01 6.9963949401875745e+00 0 0 0
+174 0 1 0.0000000000000000e+00 1.9188717881747159e+01 1.9243796653721084e+01 5.2712184347841617e+00 0 0 0
+14 0 1 0.0000000000000000e+00 1.6865492891038478e+01 1.8750495439305084e+01 7.8181400502126248e+00 0 -1 0
+201 0 1 0.0000000000000000e+00 1.9865604502698936e+01 1.9290813559573373e+01 8.4169395725473475e+00 -1 -1 0
+475 0 1 0.0000000000000000e+00 2.1989372022194551e+01 1.6917410834294326e+01 8.0489554542772339e+00 0 0 1
+162 0 1 0.0000000000000000e+00 2.2235093712458273e+01 1.9975299762710215e+01 6.3257100610720807e+00 -1 0 0
+181 0 1 0.0000000000000000e+00 2.9032426177024684e+00 2.2982442819113061e+01 5.6290449052047737e+00 0 0 0
+164 0 1 0.0000000000000000e+00 2.7482453733319101e+00 2.0331614350380150e+01 7.2924279347432028e+00 0 0 0
+186 0 1 0.0000000000000000e+00 4.8330056905726746e+00 2.2291144498836452e+01 7.9685176056986418e+00 0 0 0
+109 0 1 0.0000000000000000e+00 7.0352598268572581e+00 2.0133084911814286e+01 7.2072619894563452e+00 0 -1 0
+286 0 1 0.0000000000000000e+00 7.1416084171876824e+00 2.2902523472547387e+01 5.4263671440490366e+00 0 0 0
+268 0 1 0.0000000000000000e+00 7.7530327810848716e+00 2.2968741112923432e+01 8.4356861449463167e+00 0 0 0
+193 0 1 0.0000000000000000e+00 9.3882915434864813e+00 2.0679703639407101e+01 4.9841273080322850e+00 0 0 0
+392 0 1 0.0000000000000000e+00 1.0085855333610695e+01 2.0800873099175526e+01 8.1420832138827315e+00 0 0 0
+291 0 1 0.0000000000000000e+00 1.2387698374361506e+01 2.2949368245320557e+01 8.2427618235828408e+00 0 0 0
+235 0 1 0.0000000000000000e+00 1.2230301784087287e+01 2.1209673062945988e+01 5.7105518390941103e+00 0 -1 0
+185 0 1 0.0000000000000000e+00 1.0280578026160596e+01 2.3460432007477714e+01 6.0813307435881265e+00 0 0 0
+471 0 1 0.0000000000000000e+00 1.4477639678478910e+01 2.0813253107323810e+01 8.1499111069249945e+00 0 0 1
+95 0 1 0.0000000000000000e+00 1.4560130390890862e+01 2.3526136397427848e+01 6.3054955397575583e+00 0 0 0
+420 0 1 0.0000000000000000e+00 1.6805901106302969e+01 2.1464335179160784e+01 5.9183061313450045e+00 0 -1 1
+217 0 1 0.0000000000000000e+00 1.7644960512939249e+01 2.1653914344340940e+01 8.8476378208783579e+00 0 -1 0
+84 0 1 0.0000000000000000e+00 1.9934233879914700e+01 2.2126036023252141e+01 6.9157988302026974e+00 -1 0 0
+282 0 1 0.0000000000000000e+00 2.3256652105090772e+01 2.2661506366898138e+01 7.6566680660412567e+00 -1 0 0
+377 0 1 0.0000000000000000e+00 2.3709751974503375e+00 1.4867027491999751e+01 1.0822922505375091e+01 1 0 0
+68 0 1 0.0000000000000000e+00 2.2956639802097520e+01 2.1653943973438196e+01 1.2351189644104315e+01 -1 0 0
+364 0 1 0.0000000000000000e+00 6.9163311401328027e+00 1.4965795909288968e+01 1.1013180947987161e+01 0 0 0
+252 0 1 0.0000000000000000e+00 1.2114877432600709e+01 1.3453449870878670e+01 1.0971793145073271e+01 0 0 0
+365 0 1 0.0000000000000000e+00 9.9056302461261794e+00 1.5531086731318105e+01 1.1620014169580084e+01 0 0 0
+249 0 1 0.0000000000000000e+00 1.2141042202984053e+01 1.6111673324677177e+01 9.2996290044055687e+00 0 0 0
+73 0 1 0.0000000000000000e+00 1.4451342121647302e+01 1.3608231091444674e+01 8.8442407867713015e+00 0 0 0
+292 0 1 0.0000000000000000e+00 1.4636325975583476e+01 1.5475466278708103e+01 1.1414641359958660e+01 0 0 0
+272 0 1 0.0000000000000000e+00 1.6960030413776600e+01 1.3281392832320902e+01 1.0794398004153919e+01 0 0 0
+199 0 1 0.0000000000000000e+00 1.6581316682652144e+01 1.5936609452881406e+01 9.2196377592027350e+00 0 0 0
+274 0 1 0.0000000000000000e+00 1.9805886254609675e+01 1.3825791884417724e+01 1.2085053087459332e+01 0 0 0
+285 0 1 0.0000000000000000e+00 9.2270215089245529e+00 1.2676372276898977e+01 1.0323664368400008e+01 0 0 0
+273 0 1 0.0000000000000000e+00 2.1963303118221305e+01 1.4289634560926016e+01 1.0051913529972719e+01 0 0 0
+283 0 1 0.0000000000000000e+00 2.3943055013326990e+00 1.7611617872263857e+01 9.2631989540897752e+00 0 0 0
+258 0 1 0.0000000000000000e+00 2.3847023555016813e+00 1.9232257342009554e+01 1.1804431484788262e+01 1 0 0
+399 0 1 0.0000000000000000e+00 4.5647078070751155e+00 1.6924249939779266e+01 1.1526722364439786e+01 1 0 0
+266 0 1 0.0000000000000000e+00 4.5344372518529923e+00 1.9724166304184358e+01 9.5689510744281936e+00 0 0 0
+301 0 1 0.0000000000000000e+00 6.7114745082704905e+00 1.7485657119415819e+01 9.0721903844651699e+00 0 -1 0
+262 0 1 0.0000000000000000e+00 7.6809257268833981e+00 1.7612489720990283e+01 1.2148483144135021e+01 0 0 0
+243 0 1 0.0000000000000000e+00 4.6897576907678733e+00 1.2613746276146458e+01 1.0313675318089901e+01 0 0 0
+210 0 1 0.0000000000000000e+00 9.9973406449220708e+00 1.9741616211553804e+01 1.2443073897896021e+01 0 -1 0
+170 0 1 0.0000000000000000e+00 1.0063769083171470e+01 1.8094258000937657e+01 9.9112227942823470e+00 0 0 0
+370 0 1 0.0000000000000000e+00 1.2409788616502112e+01 1.7647707113444831e+01 1.2276381518370812e+01 0 0 0
+176 0 1 0.0000000000000000e+00 1.4486576528655318e+01 1.8168929317055635e+01 1.0054425678368148e+01 0 0 0
+294 0 1 0.0000000000000000e+00 1.7523883094694888e+01 1.8960700811421582e+01 1.0666645413335688e+01 0 0 0
+198 0 1 0.0000000000000000e+00 1.9581731452641641e+01 1.6743281838897076e+01 1.0013481565401687e+01 0 0 0
+180 0 1 0.0000000000000000e+00 2.2677297501915454e+01 1.7180508940854452e+01 1.1159335444858829e+01 0 0 0
+278 0 1 0.0000000000000000e+00 2.0477018637930286e+01 1.9394186265464405e+01 1.1354945272899785e+01 0 0 0
+80 0 1 0.0000000000000000e+00 2.2980284099908971e+01 1.9876244809985252e+01 9.4858587740826650e+00 0 0 0
+218 0 1 0.0000000000000000e+00 2.4694673549873034e+00 2.1960485642137527e+01 1.0393085050180225e+01 1 -1 0
+289 0 1 0.0000000000000000e+00 7.6413227534446566e+00 2.0216319775222402e+01 1.0248796836495188e+01 0 0 0
+270 0 1 0.0000000000000000e+00 5.4560733162168109e+00 2.2277877601362157e+01 1.1184974309380779e+01 0 0 0
+187 0 1 0.0000000000000000e+00 9.8896373232284827e+00 2.2343333197168050e+01 1.0863663327167689e+01 0 0 0
+393 0 1 0.0000000000000000e+00 1.2215934419668212e+01 2.0166857440467091e+01 1.0174001949526126e+01 0 0 0
+196 0 1 0.0000000000000000e+00 1.5269664471629579e+01 2.3669147331951315e+01 9.2108146259993973e+00 0 0 0
+192 0 1 0.0000000000000000e+00 1.5305892732268060e+01 2.1048681646657577e+01 1.1223270775775617e+01 0 0 0
+209 0 1 0.0000000000000000e+00 1.2758340486973948e+01 2.3025635376918721e+01 1.1465289597119607e+01 0 -1 0
+281 0 1 0.0000000000000000e+00 1.8802288427255981e+01 2.1882120995737061e+01 1.1754834749916304e+01 -1 0 0
+381 0 1 0.0000000000000000e+00 2.0990905591294599e+01 2.2061923291211940e+01 9.8742865151221171e+00 -1 0 0
+105 0 1 0.0000000000000000e+00 1.2315123460772668e+01 2.3766118856929509e+01 3.7848881250321811e+00 0 -1 0
+476 0 1 0.0000000000000000e+00 1.9273178991621911e+01 2.0131470676545021e+01 1.4540570458479656e+00 0 0 1
+177 0 1 0.0000000000000000e+00 1.7604329601253212e+01 1.5987946953633388e+01 1.2201775350417634e+01 0 0 0
+134 0 1 0.0000000000000000e+00 1.6680394498366113e+01 2.3773793765720363e+01 4.1333609964011595e+00 0 -1 0
+463 0 1 0.0000000000000000e+00 2.1353840955671075e+01 1.7244611409488350e+01 1.2794505644599852e+00 -1 0 1
+358 0 1 0.0000000000000000e+00 2.3796313736793744e+00 1.3993222870208923e+01 1.5250389122944700e+01 1 0 0
+341 0 1 0.0000000000000000e+00 4.5718150199003311e+00 1.4195317420681317e+01 1.3090169677335169e+01 0 0 0
+346 0 1 0.0000000000000000e+00 7.8563456738914752e+00 1.5098018333797491e+01 1.3922292929702710e+01 0 0 0
+347 0 1 0.0000000000000000e+00 5.3939817328091371e+00 1.4575497665552126e+01 1.6368262546615149e+01 0 0 0
+376 0 1 0.0000000000000000e+00 1.2264645317235042e+01 1.4935439718085664e+01 1.3625386964872389e+01 0 0 0
+50 0 1 0.0000000000000000e+00 9.8254222131768127e+00 1.4309769376549102e+01 1.6081089725779250e+01 0 0 -1
+245 0 1 0.0000000000000000e+00 9.8608640795064755e+00 1.2957693395416440e+01 1.3331796434580232e+01 0 0 0
+371 0 1 0.0000000000000000e+00 1.5156846340038708e+01 1.5392193099252943e+01 1.4611442907856860e+01 0 0 0
+366 0 1 0.0000000000000000e+00 1.4545176013673009e+01 1.3011738580946751e+01 1.3141447035343857e+01 0 0 0
+389 0 1 0.0000000000000000e+00 1.7444984091081508e+01 1.3477621795274306e+01 1.4102927624738429e+01 0 0 0
+255 0 1 0.0000000000000000e+00 2.0185410038605752e+01 1.4314238948740959e+01 1.5211186756118344e+01 0 0 0
+397 0 1 0.0000000000000000e+00 2.2696517661671990e+01 1.5953274970843372e+01 1.5563398869600221e+01 0 0 0
+160 0 1 0.0000000000000000e+00 2.2505233387257434e+01 1.4268179922429193e+01 1.3056774389726494e+01 0 0 0
+220 0 1 0.0000000000000000e+00 2.2838365209593476e+00 1.6547285482594866e+01 1.3309643338804580e+01 1 -1 0
+385 0 1 0.0000000000000000e+00 2.9941082332141478e+00 1.9040765457704588e+01 1.5027540070933993e+01 0 0 0
+361 0 1 0.0000000000000000e+00 5.3313226051528781e+00 1.6847417022580288e+01 1.4390338557922135e+01 0 0 0
+470 0 1 0.0000000000000000e+00 7.6380917161430313e+00 1.9147342861193025e+01 1.4832000310509946e+01 0 0 0
+267 0 1 0.0000000000000000e+00 9.9310354597075623e+00 1.7157637876466509e+01 1.4057696305908330e+01 0 0 0
+372 0 1 0.0000000000000000e+00 1.0948894322217525e+01 1.9948945109735568e+01 1.5500269069454630e+01 0 0 0
+482 0 1 0.0000000000000000e+00 1.3155587452566913e+01 1.7579204236718432e+01 1.5210582299387827e+01 0 0 0
+295 0 1 0.0000000000000000e+00 1.5258433138368014e+01 1.8083348917756688e+01 1.3046572883641989e+01 0 0 0
+276 0 1 0.0000000000000000e+00 1.7417128620785363e+01 1.7475179464113914e+01 1.5208715019187075e+01 0 0 0
+493 0 1 0.0000000000000000e+00 2.0348676079685475e+01 1.6615006638380613e+01 1.2974818624929519e+01 0 0 0
+362 0 1 0.0000000000000000e+00 2.2426973211208541e+01 1.8567951099639146e+01 1.3913950971044999e+01 -1 0 0
+317 0 1 0.0000000000000000e+00 2.0325020279866472e+01 1.7823018657889222e+01 1.6123622253480178e+01 0 -1 0
+284 0 1 0.0000000000000000e+00 3.3218985356339896e+00 2.1662293570754706e+01 1.3410891709667165e+01 0 0 0
+382 0 1 0.0000000000000000e+00 3.0502108101610164e+00 2.3649562238160541e+01 1.5648072253638167e+01 0 0 0
+386 0 1 0.0000000000000000e+00 5.5630825809567446e+00 2.1526082372418522e+01 1.5345039994787060e+01 0 0 0
+387 0 1 0.0000000000000000e+00 7.7481761136662728e+00 2.1740150641581550e+01 1.3098044198687628e+01 0 0 0
+205 0 1 0.0000000000000000e+00 8.5640127726444799e+00 2.1775339524162149e+01 1.6294379720990907e+01 0 -1 0
+307 0 1 0.0000000000000000e+00 1.0596889622076159e+01 2.2404869549115311e+01 1.3823719219089623e+01 0 -1 0
+390 0 1 0.0000000000000000e+00 1.5355364933312678e+01 2.0017330762386962e+01 1.5668803558876656e+01 0 0 0
+462 0 1 0.0000000000000000e+00 1.2859041599764668e+01 2.0508531915277921e+01 1.3276851626398141e+01 0 0 0
+213 0 1 0.0000000000000000e+00 1.3000072929588196e+01 2.2093022025701245e+01 1.6046660650175610e+01 0 -1 0
+313 0 1 0.0000000000000000e+00 1.5006211684628921e+01 2.2628032797767275e+01 1.3775714174512059e+01 0 -1 0
+299 0 1 0.0000000000000000e+00 1.7327533117457278e+01 2.0100329423543911e+01 1.3519592112901595e+01 0 0 0
+195 0 1 0.0000000000000000e+00 1.8191733887067095e+01 2.3038835859166809e+01 1.4642694479753569e+01 0 0 0
+396 0 1 0.0000000000000000e+00 2.3530057870130925e+01 2.1443869941108943e+01 1.5420819216403231e+01 0 0 0
+394 0 1 0.0000000000000000e+00 2.0567209998126913e+01 2.1048460821287875e+01 1.4215601905335479e+01 0 0 0
+63 0 1 0.0000000000000000e+00 3.0456353176683404e+00 1.3946710528913172e+01 1.8449203042232028e+01 0 0 -1
+426 0 1 0.0000000000000000e+00 7.5146196757149353e+00 1.3923146315885417e+01 1.8461241285656605e+01 0 0 0
+450 0 1 0.0000000000000000e+00 1.1025716875205948e+01 1.4469154906001133e+01 1.9142300266557605e+01 0 0 0
+451 0 1 0.0000000000000000e+00 1.5319186674605065e+01 1.2784267821791929e+01 1.6398393129763353e+01 0 0 0
+494 0 1 0.0000000000000000e+00 1.3120062983303008e+01 1.5006795988938437e+01 1.6850020377664073e+01 0 0 0
+474 0 1 0.0000000000000000e+00 1.5193542474851457e+01 1.4424873232606149e+01 1.9331368731214802e+01 0 0 0
+275 0 1 0.0000000000000000e+00 1.7460749131290491e+01 1.4545310293409605e+01 1.6951607753148551e+01 0 0 0
+297 0 1 0.0000000000000000e+00 2.2682309732505196e+01 1.3365931315974560e+01 1.7295939458384176e+01 0 0 0
+58 0 1 0.0000000000000000e+00 2.0517094691633893e+01 1.5456252794944296e+01 1.8015992388044019e+01 0 0 -1
+348 0 1 0.0000000000000000e+00 2.3421280148583506e+01 1.5875112812048259e+01 1.9151777514069884e+01 -1 0 0
+457 0 1 0.0000000000000000e+00 2.0249718725466316e+01 1.2926230713980916e+01 1.9765157781492526e+01 0 0 0
+446 0 1 0.0000000000000000e+00 2.9452889242994984e+00 1.6491458368243777e+01 1.6679799541835472e+01 0 0 0
+498 0 1 0.0000000000000000e+00 2.9719351421609348e+00 1.8103475611021459e+01 1.9216606222929421e+01 1 0 0
+369 0 1 0.0000000000000000e+00 5.4401730226292910e+00 1.6255296708177433e+01 1.8726341929531884e+01 0 0 0
+367 0 1 0.0000000000000000e+00 7.7746841028981182e+00 1.6581142093319436e+01 1.6505267695353588e+01 0 0 0
+368 0 1 0.0000000000000000e+00 5.3882749023514434e+00 1.8721241829804015e+01 1.7220214011938040e+01 0 0 0
+54 0 1 0.0000000000000000e+00 8.4743350082442319e+00 1.6606560119095821e+01 1.9579141803208792e+01 0 0 -1
+207 0 1 0.0000000000000000e+00 8.4366508521487287e+00 1.9378100378060971e+01 1.7864641123166557e+01 0 -1 0
+352 0 1 0.0000000000000000e+00 1.0697486595350910e+01 1.7229825005025958e+01 1.7139046522033912e+01 0 0 0
+489 0 1 0.0000000000000000e+00 1.0894976886878796e+01 1.9018388683422586e+01 1.9817194805528054e+01 0 0 0
+486 0 1 0.0000000000000000e+00 1.5237262658602100e+01 1.7223033946547588e+01 1.7611233470360965e+01 0 0 0
+309 0 1 0.0000000000000000e+00 1.3075048451248840e+01 1.9222968425039362e+01 1.7799049484406481e+01 0 -1 0
+89 0 1 0.0000000000000000e+00 1.2912929316426249e+01 1.6633810820213050e+01 1.9451117375769456e+01 0 0 -1
+215 0 1 0.0000000000000000e+00 1.6099731796395872e+01 2.0092789752281341e+01 1.8792658620040470e+01 0 -1 0
+413 0 1 0.0000000000000000e+00 1.8326316970891710e+01 1.7397057499681381e+01 1.8302926419589539e+01 0 -1 0
+464 0 1 0.0000000000000000e+00 2.3485517769592711e+01 1.8783835004085624e+01 1.6999636627848741e+01 -1 0 0
+479 0 1 0.0000000000000000e+00 2.1281264918595539e+01 1.8028325588680318e+01 1.9268564299870938e+01 0 0 0
+418 0 1 0.0000000000000000e+00 2.3393007761057618e+01 2.0233248505378384e+01 1.9627161371790521e+01 0 -1 0
+363 0 1 0.0000000000000000e+00 3.1740957992520635e+00 2.0745894648447873e+01 1.7297491019927676e+01 0 0 0
+408 0 1 0.0000000000000000e+00 3.9107013526852099e+00 2.3426360707870970e+01 1.8743435122146487e+01 0 -1 0
+287 0 1 0.0000000000000000e+00 6.2106320115676859e+00 2.1510819093709088e+01 1.8129969805112239e+01 0 0 0
+417 0 1 0.0000000000000000e+00 2.1400781443259120e+01 2.0302826540234960e+01 2.1809274026902685e+01 0 -1 0
+411 0 1 0.0000000000000000e+00 1.0774994600848531e+01 2.1795172832846667e+01 1.8165446096259480e+01 0 -1 0
+395 0 1 0.0000000000000000e+00 1.3783062952020662e+01 2.2252599615064170e+01 1.8965021247319804e+01 0 0 0
+430 0 1 0.0000000000000000e+00 1.5891406110054881e+01 2.2834540524238960e+01 1.6712542708941818e+01 0 -1 0
+15 0 1 0.0000000000000000e+00 1.8378079579862543e+01 2.0302640868344703e+01 1.6554161925722447e+01 0 -1 -1
+495 0 1 0.0000000000000000e+00 1.8219652571595212e+01 2.2750563420406642e+01 1.8686390596250028e+01 0 0 0
+404 0 1 0.0000000000000000e+00 2.0415535155136567e+01 2.3295761697991111e+01 1.6682580191614260e+01 -1 -1 0
+319 0 1 0.0000000000000000e+00 2.3453579670967365e+01 2.3399322947503435e+01 1.7621590010246607e+01 0 -1 0
+398 0 1 0.0000000000000000e+00 2.1024652701961941e+01 2.0405421836779787e+01 1.7606344341074070e+01 0 0 0
+439 0 1 0.0000000000000000e+00 2.1105624602550883e+01 2.2925185926166037e+01 1.9632207110656573e+01 0 -1 0
+65 0 1 0.0000000000000000e+00 2.9812343334036111e+00 1.2979034703400711e+01 2.2772285498998869e+01 0 0 -1
+465 0 1 0.0000000000000000e+00 3.2278040266184989e+00 1.5705531114209821e+01 2.1199287980746305e+01 0 0 0
+448 0 1 0.0000000000000000e+00 5.3131275161011748e+00 1.3616317708070884e+01 2.0338174491909832e+01 0 0 0
+452 0 1 0.0000000000000000e+00 8.3546165891323909e+00 1.4075906311853505e+01 2.1281434646155340e+01 0 0 0
+487 0 1 0.0000000000000000e+00 6.1210920800849156e+00 1.3766659591002309e+01 2.3333090175891478e+01 0 0 0
+485 0 1 0.0000000000000000e+00 6.1835288120201435e+00 1.6272900537134582e+01 2.1781455739399512e+01 0 0 0
+456 0 1 0.0000000000000000e+00 1.0646043800142515e+01 1.3471999503609302e+01 2.3467527921578501e+01 0 0 0
+92 0 1 0.0000000000000000e+00 1.0726142423603338e+01 1.6355581118614474e+01 2.1699603642516422e+01 0 0 -1
+380 0 1 0.0000000000000000e+00 1.2878579990728824e+01 1.3955015644398182e+01 2.1508409658885903e+01 0 0 0
+36 0 1 0.0000000000000000e+00 1.5778574848446148e+01 1.4266499746173691e+01 2.2559181327591645e+01 0 0 -1
+449 0 1 0.0000000000000000e+00 1.8047855381753685e+01 1.4813547923846395e+01 2.0055889969010572e+01 0 0 0
+78 0 1 0.0000000000000000e+00 1.8723095669411094e+01 1.4971805926350864e+01 2.3341335218018486e+01 0 0 -1
+461 0 1 0.0000000000000000e+00 2.3410591316607700e+01 1.5145190307960714e+01 2.3494158547344512e+01 -1 0 0
+490 0 1 0.0000000000000000e+00 2.1009398163325748e+01 1.5434441328295106e+01 2.1159409656369760e+01 0 0 0
+497 0 1 0.0000000000000000e+00 2.3565279424735664e+01 1.3472429260331067e+01 2.0788839838350405e+01 0 0 0
+62 0 1 0.0000000000000000e+00 2.1208596978906229e+01 1.2779805966838744e+01 2.2669809155380420e+01 -1 0 -1
+298 0 1 0.0000000000000000e+00 3.9465863124408549e+00 1.8346599927118461e+01 2.2282249884418754e+01 1 0 -1
+468 0 1 0.0000000000000000e+00 6.4784308565702515e+00 1.8826847571702061e+01 1.9990216388624141e+01 0 0 0
+66 0 1 0.0000000000000000e+00 8.6798245690334994e+00 1.8511008752412621e+01 2.2111213034270804e+01 0 0 -1
+72 0 1 0.0000000000000000e+00 1.1706192984953427e+01 1.9009816642907786e+01 2.2760692435365890e+01 0 0 -1
+472 0 1 0.0000000000000000e+00 1.6235166439991541e+01 1.7217490445345746e+01 2.0464320387624433e+01 0 0 0
+130 0 1 0.0000000000000000e+00 1.3762264604174442e+01 1.6602350512252926e+01 2.2564452254192098e+01 0 0 -1
+500 0 1 0.0000000000000000e+00 1.3937931536225442e+01 1.9230430120813722e+01 2.0734868118571327e+01 0 0 0
+496 0 1 0.0000000000000000e+00 1.6738817195428386e+01 1.9445788509328096e+01 2.2428504061466093e+01 0 0 0
+415 0 1 0.0000000000000000e+00 1.1671659346475108e+01 2.3660932135477530e+01 2.3394724049943868e+01 0 -1 0
+473 0 1 0.0000000000000000e+00 1.9026927686864035e+01 1.7624912885374322e+01 2.1876151346523294e+01 0 0 0
+310 0 1 0.0000000000000000e+00 1.8986463678543238e+01 1.9985050398135570e+01 1.9855834424920914e+01 0 -1 0
+203 0 1 0.0000000000000000e+00 5.3344694113135267e+00 1.9663889265250653e+01 1.2688151943334111e+01 0 -1 0
+46 0 1 0.0000000000000000e+00 2.3477381316841459e+01 1.7596238247748786e+01 2.1425461608625881e+01 -1 0 -1
+481 0 1 0.0000000000000000e+00 2.3610650551845268e+01 2.2465887653344019e+01 2.1806936899918163e+01 -1 0 0
+478 0 1 0.0000000000000000e+00 1.3819751500107749e+00 2.0054403572969427e+01 2.3324834433928935e+01 1 0 0
+7 0 1 0.0000000000000000e+00 3.8327967866776191e+00 2.0842102790845111e+01 2.0569047325878728e+01 0 -1 -1
+5 0 1 0.0000000000000000e+00 3.9598999898154288e+00 2.3063546831364143e+01 2.2717719097762789e+01 0 -1 -1
+409 0 1 0.0000000000000000e+00 6.3090777833550273e+00 2.3475826538835122e+01 2.0637960298770359e+01 0 -1 0
+416 0 1 0.0000000000000000e+00 8.4194176440797293e+00 2.1316864152605028e+01 2.0251302119737908e+01 0 -1 0
+405 0 1 0.0000000000000000e+00 6.3724226426943407e+00 2.0818666958133200e+01 2.2531449776244116e+01 0 -1 0
+29 0 1 0.0000000000000000e+00 7.1056509924413662e+00 2.3744614188211401e+01 2.3471389802129536e+01 0 -1 -1
+499 0 1 0.0000000000000000e+00 1.9052766003634673e+01 2.2572417556677053e+01 2.1802638440517654e+01 0 0 0
+10 0 1 0.0000000000000000e+00 9.4622330659332050e+00 2.1259145064119927e+01 2.3222362377834557e+01 0 -1 -1
+491 0 1 0.0000000000000000e+00 1.1494836254190158e+01 2.1702526666679518e+01 2.1110388063563271e+01 0 0 0
+74 0 1 0.0000000000000000e+00 1.6257959263881745e+01 2.2076696425114044e+01 2.0978101209702174e+01 0 0 -1
+96 0 1 0.0000000000000000e+00 1.4121361265786044e+01 2.1612113603728311e+01 2.3071796521898158e+01 0 0 -1
+69 0 1 0.0000000000000000e+00 8.4596488379509029e+00 1.5782363892543104e+01 2.3778125943870890e+01 0 0 -1
+
+Velocities
+
+412 8.4286119400193797e-04 5.6756427891805012e-04 5.7803900068787784e-04
+9 -2.3467350353650693e-03 2.6469689309581634e-03 8.1506249811567303e-04
+432 -1.3393128028041364e-03 2.9640865519745211e-03 -3.5226424739328308e-04
+100 -3.4086536809048326e-04 1.3488012765152835e-03 -1.7178049749566712e-03
+40 -4.1815071735517850e-03 1.3564127142897996e-03 2.4405479675736366e-03
+440 1.6640230564713605e-03 1.3779806050113386e-03 5.5000687238014774e-04
+139 -1.3882071410456947e-03 -3.5935399552026459e-03 2.5667659511911067e-03
+114 3.6057871302325607e-04 -2.5839211765349836e-03 3.7626803759925219e-04
+35 -3.1130867677682432e-03 3.0706210133087156e-03 2.4578695041329482e-03
+1 -1.9066355338271490e-03 -4.5378760058723704e-04 2.7536808642121360e-03
+200 -6.1121410442496304e-04 2.2459470410388378e-04 1.0096658405259651e-03
+229 -4.1056295049265359e-03 -1.7853999968999814e-03 -1.3846134879594082e-03
+22 1.5785489923911969e-03 1.6042147459102629e-03 -9.5750733939023219e-04
+107 3.5598578017565384e-03 4.2331390266043840e-04 5.3732616393389995e-04
+144 1.5104352553234122e-03 -5.9429184078061586e-04 4.7528919583868129e-05
+51 1.9691138506331232e-03 -2.6290353325717449e-03 1.9445453221937417e-03
+427 -3.2040339295781044e-03 3.0449860972633059e-03 3.1984078462299302e-03
+32 1.5019834029648053e-03 2.9675301960723956e-03 -5.9330868513603005e-05
+429 -1.4899274348316187e-03 1.6336317714385027e-03 -6.8994129563747827e-04
+132 -1.2345852657629401e-03 1.7877058984633069e-03 -1.1660144391292687e-03
+26 -2.0257055160515245e-03 -9.5159224087549557e-05 -3.1230298062007480e-05
+30 -3.1685483102238993e-03 -3.3071059285427369e-03 2.1693364156886476e-03
+312 -6.5493514397613390e-04 1.1148141241084267e-03 -3.0979656210521322e-04
+232 2.3846045541038945e-03 1.4656514081074793e-03 -1.8267044854004445e-05
+33 2.8227172223661231e-03 -2.7477878817188592e-03 -4.0268195102204848e-03
+137 2.9032741715078999e-04 -9.1497418895910060e-05 4.5629253392298924e-05
+460 1.5576367991867765e-03 1.0117700206304582e-03 -2.3934206010355733e-04
+21 1.2889314200193751e-03 7.7075295316979785e-04 4.1404841381496800e-04
+8 2.3163610360862176e-03 1.1934485652052482e-04 -7.1117868561795866e-03
+61 5.1030468429506912e-04 6.1808299563597197e-05 2.3683640884770776e-03
+39 4.2385925819291959e-05 1.6730070653551597e-03 2.8259600722835283e-03
+121 1.6427654262907718e-03 -5.4302676093234087e-05 -3.0947322589915242e-03
+99 -3.8228461409063987e-04 -1.5574871455839498e-03 9.2796440134651807e-04
+48 2.2491933743321495e-03 4.1262474491719050e-03 2.0399148723467221e-03
+143 -1.2557901704219432e-03 3.7601631656208195e-04 -1.0126497213160906e-03
+153 -1.7160109522383791e-03 7.7768347507683121e-04 1.3280074798448689e-03
+226 3.9819793174139181e-03 -2.8463956787366405e-03 1.8450935456359773e-03
+120 6.2377488777032222e-04 7.5098270113058835e-04 -9.4571873039414232e-04
+113 1.9002265365549926e-03 9.7119892377067188e-04 -7.6512485417509454e-04
+44 1.3274711181145743e-03 1.2855355275118391e-03 -3.1369222871792461e-04
+60 -7.7899880703174735e-04 6.0979865748300515e-04 3.3398277486640380e-03
+239 9.6832458394408342e-04 -6.1504737975066220e-04 -1.6970100506538788e-03
+24 -5.6138609873883241e-04 1.8401662110472344e-03 1.9824808124439138e-03
+467 3.0818836835269513e-03 1.7207526127721039e-04 2.2333633040774693e-03
+157 2.8288771651336173e-03 -3.0187654982976746e-04 -2.2741119476293844e-03
+178 -3.4881866765401432e-03 -7.7447384166687001e-04 4.7050797734911467e-04
+28 2.5332905294527253e-03 2.2319572224589770e-04 -4.9803709407333940e-04
+108 1.4025628885580889e-03 5.2398986972294401e-05 -1.0554314391068190e-03
+25 -2.5933693160832658e-03 3.3884723809932179e-03 -2.6135315879654655e-03
+101 -5.1737081429769158e-03 6.7670606579576999e-04 -1.6830827481233864e-03
+103 5.8936405684057334e-03 -1.8852182804086513e-03 8.0386936233976640e-04
+112 -2.7879878064995655e-03 -1.5342748507812614e-03 3.5762803610301292e-03
+206 4.2256383143290119e-03 -1.5653282771055435e-03 -4.2326890776110649e-04
+214 -5.9795737844644517e-04 -8.3766782090573765e-04 -3.8750164834801157e-04
+2 1.0066165736820638e-03 4.9467964593320356e-04 -2.1870235319286419e-03
+17 4.8484345702300429e-04 1.2264245790870180e-03 8.8859252533491642e-04
+484 -1.7468616416958275e-03 9.1562753919132366e-04 -1.0653909647333894e-03
+82 2.2622802351233112e-03 -2.3706098806234878e-03 -1.9098182312588254e-04
+182 -1.9744125782795840e-03 -8.1133796126252409e-04 2.8362185771737365e-04
+194 -4.3548928278351308e-04 1.3010121593111997e-03 -1.2437101298715331e-03
+19 -3.7423599399789831e-04 9.4387224027848169e-04 -2.4820030871703369e-03
+27 -1.7759210967909671e-04 -2.7664408332187486e-03 -2.5029351077415721e-03
+126 -1.2273466874687655e-03 3.2156808728349261e-03 7.1499149346148066e-04
+11 -1.1778840504045134e-03 1.4099443223528517e-03 -2.2567306475514506e-03
+127 1.1220846564356515e-03 1.6437918890505427e-03 9.4098330631736042e-04
+129 3.3194627584004796e-03 1.6095744832089283e-03 6.3069671316276672e-04
+230 -1.4551628279160008e-03 -2.0801890777152328e-03 -1.6943392165101011e-03
+118 -1.8014099324025954e-03 -2.0209858503869825e-03 -1.2603844099164832e-03
+115 1.2703994770246173e-03 2.8968656091857671e-03 2.3894279379093318e-03
+355 -8.9080642805799601e-04 2.4718433020183106e-03 -1.0392119017545972e-03
+136 1.0333920323820970e-03 -1.4109305744728336e-03 1.9595387240869157e-03
+119 -9.2760807224913605e-04 8.9237717898204628e-04 6.7917337689015064e-04
+57 -3.8980820607493996e-03 -1.1927386014247087e-03 1.5542878414107502e-03
+37 2.5871988469204597e-03 2.7605163515922225e-03 -3.5732131668363182e-03
+233 2.1732759147828241e-04 -8.9643098857141855e-05 -1.0748008238886083e-03
+4 1.2098242116065890e-03 -1.3364433322779891e-03 2.1360967791134301e-03
+163 -2.2247464795746600e-03 1.4493522614278409e-03 2.3675719163591181e-03
+38 3.0707851392678255e-03 2.4839500743516129e-03 3.7697530624171446e-03
+145 -3.8323731896185289e-04 -3.7038363551173837e-03 -1.8798699657681325e-03
+47 -3.7728068716675247e-03 7.4199198888182918e-04 -1.2549322350423984e-04
+246 -2.7779730387409384e-03 1.2880156908232738e-04 3.0156623931861470e-03
+326 1.4947375257740440e-03 -2.4105838821941220e-03 -1.4665259672377053e-03
+151 -2.0851660529129456e-03 1.7322520724343073e-03 -6.1923385913709476e-04
+173 -1.6978802151965009e-03 -1.4281031974976413e-03 7.0830351730367751e-04
+234 1.0367889294979176e-04 3.2967670888225309e-03 -2.3562961407262001e-03
+171 -9.5571006176351750e-04 4.0629046770285915e-04 5.4316230989341781e-04
+238 -1.4236812451094222e-04 2.8541858461540200e-05 1.7011941161569517e-03
+140 3.1866847568796372e-04 -3.1220285652545894e-03 -1.5406149120947836e-03
+104 -9.8162382697152624e-04 1.5860448184853355e-03 6.2350044756768498e-04
+353 1.3339622763328086e-04 -1.3174059313092441e-03 2.0074281680878907e-03
+225 -1.3731382906749137e-03 -5.2067408278123613e-04 -4.2505870132888957e-04
+303 -4.1210998624570325e-03 -9.8506990607440874e-04 -4.8310463019178920e-03
+211 1.6391252828866017e-03 -2.1374883771485358e-03 -8.9892934056237542e-04
+290 -2.9598130736340335e-04 -2.1762071710334984e-03 1.1207206628208600e-03
+216 1.0782628444650276e-03 -7.9335194492065005e-04 2.1528891276272272e-03
+334 -4.6554676309553990e-03 5.3599866409063891e-05 -1.5293926002812144e-03
+190 1.1224294112169852e-04 -5.7557421903146509e-04 -2.8906278161156440e-04
+175 -3.0358585891138943e-04 -2.3940873044415627e-03 2.1456987531731754e-03
+337 -2.6831212638398377e-03 3.8993579027741684e-03 -1.7172587316899043e-03
+124 2.0742569279134687e-03 5.6868506708409781e-04 9.5018176588863054e-04
+155 5.2323906524318173e-04 -9.7977453246195678e-04 2.6187076442545781e-04
+42 -2.9538144644031725e-03 1.2037579389910368e-03 1.7310507634732491e-03
+321 -1.9414785013868714e-03 -9.9455367395890129e-04 3.3235905918243609e-05
+224 -8.4464431453144470e-04 7.8014860960871609e-04 -2.0054906433199121e-03
+106 -2.5424624182053095e-03 1.4592868328332719e-03 1.3505492804274674e-03
+204 -3.7715191435455713e-03 1.9270773156290803e-03 -1.1391284438554343e-03
+227 1.2853073495041212e-03 2.0641710870007530e-03 -1.5850050184728133e-03
+240 -1.3744173839420693e-03 -3.8505224771447147e-03 1.9274335658343261e-03
+265 -3.5104054758583990e-04 1.6739044146758014e-03 -3.5809306808342830e-04
+373 -9.0199980047609666e-04 1.5736300445205081e-03 2.8337337333995834e-03
+332 -1.3531381272669410e-04 9.4004266521733140e-04 1.8302622101640397e-04
+330 1.1963646980880220e-03 2.3385976953450788e-03 2.3531079053002789e-03
+231 -1.0868121587749397e-03 9.3876655061360224e-05 -2.6309873616575300e-04
+250 -2.9576722129335759e-05 -1.2971307284941869e-03 1.1438408798045046e-03
+221 1.5247761009450799e-04 -3.9091437703074909e-03 5.8190991599343901e-04
+237 -5.6692433661531896e-04 -2.2681092063480239e-04 -2.1973041827193208e-04
+261 -8.9212921630236705e-04 2.8391334983344715e-03 -1.0121319359906041e-03
+323 -2.2501850655262767e-03 1.9840418304964778e-03 -2.5906059915535946e-03
+122 -6.1523524351994011e-04 -8.8296304751872101e-04 1.4586473157851673e-03
+150 1.0486447875803662e-03 1.3459258799153645e-03 -5.6610825056787912e-04
+172 3.1264567398425962e-03 1.3243538084051723e-03 -2.5430109782545503e-03
+333 1.5657297249286515e-03 1.5895997789296631e-03 7.1482608114192142e-04
+488 -8.2829196138049213e-04 -1.5654258899864201e-03 -1.1345223477088264e-03
+324 -6.0893340256113762e-04 -2.2178334635365146e-04 2.0511942130136134e-03
+125 -4.3583101055841298e-03 -2.3123466034988970e-03 -1.2577826997418975e-03
+401 2.9408059594477080e-04 -2.8758838460691428e-03 7.6308359904418119e-05
+202 -1.9082300835146823e-03 -1.6331990600756052e-03 -1.5169936242001097e-03
+433 -5.2444139232380050e-03 -2.0398479049657894e-03 -1.6753249128216683e-04
+305 7.9244676528850589e-04 5.2565584310678543e-04 -7.4002344341937123e-04
+388 -3.1520663611496590e-03 -1.5801595584321705e-03 4.0562855328544594e-04
+492 -3.1357679867898328e-03 1.8725735549916631e-03 1.3084840078015005e-03
+331 3.8897327354894605e-03 -1.3439558717027792e-03 -3.9585802053156167e-03
+356 -8.4066948528104652e-04 -1.4424986176990486e-03 1.5088223462960809e-03
+314 -1.0461742853157556e-03 1.3191558098628086e-03 1.2611948231466337e-03
+311 8.4972362262847258e-04 2.0641833021085802e-03 2.4591559691090198e-03
+18 -1.4976183435264434e-03 3.2755846592849515e-03 8.8502853008813707e-04
+300 -1.3813508631649895e-03 -2.0873565879931865e-03 1.5242852659939779e-03
+188 -1.0650626108002594e-03 4.9980989939437184e-03 9.6240005755264784e-04
+117 2.3171646264727049e-03 4.7245820412639729e-03 7.0945430828390241e-04
+322 -7.2352269096156627e-04 -1.9629472476663809e-03 2.8292977748729624e-03
+228 -1.1998214523809402e-03 1.5005822326343949e-03 -2.1447809022912242e-03
+167 3.0014093748959186e-03 -7.7949294636633264e-04 -8.1566446494181445e-04
+340 -1.4661185527739761e-03 4.7637716822127125e-03 3.2014448128477170e-03
+455 -1.4382386451267590e-03 -1.7908017386444588e-03 1.4649304082155066e-04
+336 -2.3405258747247605e-03 4.0223907112471434e-04 6.2615479882593300e-04
+257 2.4696107833016264e-03 -9.8772739496698044e-04 -7.2669677358042810e-04
+458 9.5620771613251954e-04 1.9211673139843202e-03 3.6917551492538013e-04
+179 -2.2359181028337250e-03 1.0969781550005495e-03 1.2753109653927583e-03
+349 1.9454309533298764e-04 1.7024862189716861e-03 -1.7508213796586485e-03
+20 9.8065201632699514e-04 -3.9446080403231915e-03 2.1640594219189385e-03
+212 -2.7390533124906163e-03 1.9364499524071519e-03 -1.9935840135246038e-03
+123 2.1316528398875626e-03 1.2599099447267244e-03 -4.6535809185127292e-04
+242 1.4086214668135186e-04 1.4672703889995885e-03 1.2290292702959661e-03
+318 3.2720847839591122e-03 9.6394160042293311e-04 2.2075015183927269e-03
+343 4.2549556086328633e-04 2.6828133362899881e-03 -1.5362951822062553e-03
+443 -1.5921106160001180e-03 -1.1948177129346886e-03 5.0942239321649862e-06
+222 -3.0405852178307814e-03 -9.3907851257002363e-04 2.9682554644124215e-04
+345 -2.5860631176612835e-03 7.3172856223417053e-04 9.7168551895078688e-04
+306 1.3112612324222013e-04 5.9188259320764511e-05 3.5616430222178835e-03
+251 8.4003186278366860e-04 7.5378632261618886e-04 -3.1692311094446378e-04
+253 -2.0270549451688082e-03 1.4363833927257816e-03 4.9711478432808100e-04
+260 1.2616334666732398e-03 -1.0122035249346439e-03 -2.9153903830960951e-03
+256 7.7569525031640060e-04 -2.5268302419551043e-03 -1.3395842657986281e-03
+254 2.2897554321046785e-03 6.2428656926215428e-04 6.4965059033711902e-04
+244 9.7025213656866451e-05 -4.7386635247720060e-03 9.0049739790011183e-04
+236 -9.6170926216950902e-04 -2.9120738997967682e-03 1.4238321299621342e-03
+383 2.6280573622973731e-03 -2.8910002269521614e-03 7.0384922161129506e-04
+400 -4.6167989837683668e-04 1.9812530684649092e-03 6.6004047937684516e-04
+90 5.9877084249836154e-04 5.0554156072849920e-04 5.4967360809716028e-04
+316 1.2992341882672280e-03 -2.2142781156229175e-05 -8.9434394759540310e-04
+434 3.5065379306889639e-03 -7.0216439126217860e-04 -4.6779844334610002e-04
+375 1.3908036290805390e-04 -1.7807123356116986e-03 1.3275509654946764e-03
+410 -1.3373527371167979e-03 -1.5839436548233039e-03 2.5305143639386632e-04
+53 7.3561116024686938e-05 7.2112139485109184e-04 -1.9966125155315480e-03
+338 2.2530413378178621e-03 -7.4313241184864533e-04 -1.7889202238207801e-03
+357 -2.2599544327952126e-04 4.0513953446840055e-03 -2.8293464683951299e-03
+296 -4.3095996410943917e-04 -1.3545045158544502e-03 3.6061430173685832e-03
+34 1.0013750626348492e-03 -2.0779660897157298e-04 -2.0394975742703909e-04
+320 -5.7059489170149401e-04 1.1674649472643679e-03 8.0862089568234103e-04
+85 -4.5120926938768707e-04 -9.6503257985612199e-04 3.9029834375212472e-03
+384 7.8005363723206557e-04 1.9440221101127073e-04 -8.7136153999720556e-05
+259 -4.2518530049967295e-03 1.1280439166309584e-03 1.7174513855765779e-03
+302 5.5442229146579751e-04 2.6076276171747782e-03 1.6109572182573596e-03
+402 -7.4928159949161669e-04 3.3757901920427892e-05 -2.5758392599483861e-03
+308 -1.2849098558690198e-03 -2.2143513225525850e-04 1.4033830645188816e-03
+208 4.1797979774932522e-04 -5.4228497485364114e-04 5.4223780112655137e-04
+351 -3.4317790856458497e-05 8.9391703789391114e-04 -1.8425844955020545e-03
+271 -1.1755048983559355e-04 -3.3675781909689260e-03 -2.1719338469993851e-03
+335 -2.5624998127282595e-03 -2.9736531853081474e-04 -3.1250950451155047e-03
+379 1.0161693361640841e-03 -1.7492531403203271e-03 -3.2108171407069113e-03
+219 1.2358254557362708e-03 1.8336332893514897e-03 4.6462873683321350e-04
+304 1.0733542970994563e-03 -1.7059106564748033e-03 -8.0987061372721724e-04
+441 2.9805258302923660e-03 -1.4856034115332687e-03 2.2769870106036341e-03
+342 -4.3870848427095342e-04 -1.6244529834704207e-03 -2.3919781517936223e-03
+428 -3.7367938889248170e-03 1.7579237820616171e-03 1.6061820646084907e-03
+325 -2.5394614390368379e-03 -4.4269927510977801e-04 2.1805965072935695e-04
+49 -5.1097958796750787e-03 -7.6456816204882518e-04 -2.0670985455630347e-03
+328 2.3055484758548986e-03 -1.0101290350971114e-03 -1.9347897056358135e-04
+327 2.4105570447100684e-03 1.4844747994077914e-03 -5.4963213149596113e-04
+350 -2.0947304565639667e-03 -3.6885656520914086e-03 -1.0690104778988314e-03
+374 -3.5188620058470193e-03 -6.6044165582778986e-04 4.1513030109503581e-03
+453 2.7923728493847817e-03 -6.4549944002231156e-04 -6.6839819062554297e-04
+280 -2.5670967184334768e-03 7.1004465311620799e-04 2.3490476152512895e-04
+354 -5.3988399053780858e-03 -6.2359847355136712e-04 7.5142881033615132e-04
+444 6.2253189466183274e-04 1.5233286130232173e-03 -4.6471251678742225e-04
+437 3.6592648669165755e-04 -1.6420895217387683e-03 -2.1375649146414288e-03
+422 1.9999961630651573e-03 -1.0168067963324489e-03 -5.8477782146248135e-04
+421 8.7618053246298598e-04 -4.5321938643564952e-04 -3.5874839828614776e-04
+88 1.3271197814636790e-04 5.8890645833509971e-03 1.0952597587814276e-03
+431 -9.8071642827229411e-04 -1.3466839417590724e-03 -2.7448287441669199e-04
+391 7.3021270310136711e-04 -2.5704931194867765e-03 1.2056837734635095e-03
+12 6.4357629788906676e-03 -2.0780836506913815e-03 -3.7237487172856209e-03
+31 4.2765763561308188e-04 2.4033935022788579e-04 1.0701810380791480e-03
+435 2.3276762840074186e-03 -3.7620323102956739e-03 1.6089613641076510e-03
+279 1.0471678184178917e-03 -3.1117756356906952e-03 2.4748346879752150e-03
+414 -1.0097088735082557e-03 -2.4271598646900430e-03 -1.5661163732428476e-04
+459 8.9056209685909292e-04 -1.4049519433776340e-03 -1.7902596778731315e-03
+315 -3.5141783475151631e-04 -4.8579653209270694e-05 -3.9914346055475412e-03
+359 -2.8777514110059528e-03 -1.1057752299916969e-03 2.6603373556268665e-03
+483 -5.4847569004532815e-04 -2.1104050801568626e-03 -8.8837543254787822e-04
+403 -1.1392544440744436e-03 -8.5272282963945640e-04 -7.3426284369249679e-03
+329 -9.3560912948944662e-04 -1.2855105460480784e-03 1.8939408272809022e-03
+52 -4.9089242710618466e-04 -6.5701487616518905e-04 -6.8418150754938161e-04
+425 3.2855153893617812e-03 8.2477875553497678e-04 2.1547241853456687e-03
+133 3.4032022812690906e-03 -1.8132177743790715e-03 -1.4338707012610009e-03
+360 2.3767646939213254e-04 3.4868197865045259e-03 2.9553545516550522e-03
+454 4.9023092209279527e-03 -3.9293887441067153e-03 -1.8959184158723755e-03
+438 1.2158251461280995e-05 -5.4523576197898895e-04 -3.9372746375943506e-04
+424 2.2241749754760916e-03 1.2218276932596055e-03 -7.3858167280892563e-04
+419 -4.0369279013759514e-03 -1.5699532061696516e-04 3.6509512769402064e-03
+86 -3.5731551960982520e-03 -2.4320729054647688e-04 -2.3907180326437441e-03
+6 -1.5356554156621249e-04 -2.1688946426230687e-03 -2.7615272312168514e-03
+447 2.6370594007048480e-03 1.6648673869251339e-03 -6.6571938558634286e-04
+83 -2.2594134015575427e-04 5.5792156141151869e-04 -6.8557722791894678e-04
+41 2.4988168424259914e-03 -8.0438152937214416e-04 -7.3565671541173680e-04
+45 6.9672722922544707e-04 1.0178166571431610e-03 1.7443178602842308e-03
+55 1.7463539299927939e-03 1.6138363106509904e-03 -2.3897091136651084e-03
+477 -1.3497910961417976e-03 9.5461781100146059e-04 -2.7110374876501719e-03
+77 4.9705722371231221e-04 -1.6675302443804431e-03 -1.8280833059301700e-03
+442 -1.3988529225010776e-03 -1.8651635055488191e-03 3.0362451500836913e-04
+436 2.7888090943773542e-03 -2.4976486938737053e-03 -2.1279810412296756e-03
+59 4.9998289468484993e-03 -9.6597062036490682e-04 -7.1165003660673921e-04
+339 1.5867609144541786e-03 5.1037524227944388e-04 -4.3169799688147113e-04
+445 -1.6786193885418052e-03 8.3520323704903575e-04 -4.6665669760716753e-03
+23 4.2416768130803971e-03 9.8697545617334212e-04 7.1653959027927509e-04
+466 1.5716962599064503e-03 1.4896162571883726e-03 1.0454739718564500e-03
+116 -1.7080007458077564e-03 2.5380672649663199e-03 -8.9925239974295728e-04
+247 -4.5935888683869440e-03 -7.6050683383500634e-04 2.7135021340717624e-03
+423 2.7418424144864941e-03 3.9206450271333454e-03 -2.7354272730779382e-03
+43 -3.2884941071152516e-04 3.1551105130276828e-04 1.8416819685890941e-03
+165 -4.7038622764837974e-04 2.2066353507198492e-03 3.4848163936854895e-03
+161 -2.9523672223336132e-04 -1.5085883012785719e-03 -1.7168135846942498e-03
+79 -9.8804161697020002e-04 -1.1346864107299843e-03 -9.9893030731030923e-04
+288 -2.8650037574478680e-03 -8.8686707161972410e-04 1.0801038342463775e-03
+241 -2.9407649035835217e-04 -3.2075206122720017e-04 -3.8343183572686185e-03
+146 3.1096544959004929e-03 -1.3570555894848349e-04 1.8493543938783870e-03
+148 1.8215170882007971e-03 8.2135453902227413e-04 -1.0020444195405296e-03
+135 -1.1819286841755928e-03 4.0668146621632211e-03 2.7404412221402855e-03
+156 -3.5019880281405313e-03 -3.7018871794016568e-04 2.5033991488087118e-03
+71 3.7019518449098659e-04 -5.2335202410565664e-04 2.4319620789676490e-03
+293 -8.2737221879128874e-04 -5.2131599083014770e-05 3.6239696378262093e-03
+75 1.5732017615413250e-04 -1.8105362941805540e-03 -2.0377244082020779e-03
+87 -7.3558712444163576e-05 -1.8336998045158891e-03 -3.2547233704539784e-03
+3 2.1933577343042402e-03 1.3003066023241977e-03 -3.4481757212689620e-03
+184 2.3690254920805210e-04 -1.4120887265776042e-03 -6.3115592340100908e-04
+469 -6.8184170472768632e-06 -1.4976920230065362e-03 -2.4114151238034884e-03
+142 1.7282940539908355e-03 -8.4614867586482704e-05 -2.0567337835862147e-04
+13 1.6392851322380574e-03 -8.5420358531833188e-04 -2.5377616789999235e-03
+70 1.2085510165218841e-03 -1.1289632567643159e-03 2.8671112869770340e-03
+76 2.2775309823358739e-03 -7.9081544469146686e-04 9.9598763332417483e-04
+480 1.4089180225720880e-03 2.0936368014021758e-03 -2.3938506894036703e-03
+81 -5.4618335872334194e-04 1.2524867409072326e-03 -7.5567919536440346e-04
+93 -1.1300382969590260e-04 1.3840155922708701e-03 2.4069039283106789e-03
+154 -1.4163815225430589e-03 4.3427718076136036e-04 -2.9369259181572147e-03
+197 1.4012768992792662e-03 3.1564532049563093e-03 -3.7007205300207944e-04
+223 1.7058671660188601e-03 2.4433503601482809e-03 9.0890456406200816e-05
+102 8.0811234474825505e-04 1.0420290277970287e-04 -7.7322853680128638e-05
+98 1.7186468856537284e-03 -2.4205047592636020e-03 4.4897510340267399e-03
+166 3.4789400314122537e-05 3.8663254997142179e-04 1.3466023618242031e-03
+406 -8.5174126991250808e-04 -3.1961188693766436e-03 -1.7707037439614924e-03
+67 -2.3025947586717932e-03 -5.5987317213847373e-04 -3.8794649473243808e-04
+111 9.4837422588898014e-04 -2.2400399226799759e-03 -2.3508337509914063e-03
+169 3.7140750997181268e-03 -1.1907140270590263e-03 -2.3604938086651691e-03
+110 2.0209055467480981e-03 1.5238284558883534e-03 6.9464892655184509e-06
+97 -1.4504943728722269e-03 2.5885894147658428e-03 4.5036641626214555e-03
+16 -1.2771771985680288e-03 2.3565150423765294e-03 1.9040243601372377e-04
+64 6.8082536346730110e-04 6.3447918950016086e-04 8.1097640475703196e-04
+407 3.4757354473006052e-03 1.3230387840861468e-03 2.3746509281094030e-03
+159 -1.3819544142208043e-03 -1.7478348501917974e-03 3.3782891045535811e-04
+141 -5.2349571677352716e-04 1.1681400738343759e-03 3.1484554900782988e-03
+344 -1.7136934452594989e-04 -7.0214724531087336e-04 4.0602843418427150e-04
+138 -4.2184500388028241e-03 -1.4218833564186414e-03 1.2099663696057395e-03
+128 -5.4947975917361586e-04 1.8507701875085207e-03 1.4810240387328317e-03
+264 2.2229653352192296e-04 6.4930595839079238e-04 -3.2554920065074704e-03
+248 2.0788488311979875e-03 3.5636370947980276e-04 2.0295236953112136e-03
+168 -3.0282546686752807e-03 -1.6314065187497234e-04 -2.7921143906242717e-03
+147 -2.8867177982904704e-04 -3.1234839658421422e-03 -3.7278695691633106e-03
+149 1.1682668969125707e-03 -1.8732316895664998e-03 -4.6735292690597329e-03
+269 -2.4596162214379517e-03 2.1597895579468520e-03 2.3994175829963513e-03
+131 7.5204762254300938e-04 -1.1217863550723219e-03 -1.6362876686410923e-03
+277 2.0625403917289031e-03 -3.9547226418256566e-05 2.6596290988984950e-03
+378 -7.3229390820430632e-04 4.7242982455272383e-03 -1.1196844585087606e-03
+183 2.1598861082175818e-03 -1.0329949100891804e-03 1.7758904490270875e-04
+158 2.3169204449781454e-04 -9.9411699216435672e-04 -1.0379582682713824e-03
+263 2.3916684380207828e-03 -2.9801938279824811e-03 -6.6826469984730154e-04
+56 3.4491757804655152e-03 3.9003275473516500e-04 1.5766482219398180e-03
+152 1.6195245007965306e-03 1.3091868173805889e-03 -1.3425678424061134e-03
+189 1.6645310731967472e-03 1.1158571334700415e-03 -1.7326774793561199e-03
+191 2.3481539722969595e-03 1.9586787179227128e-03 2.6574267911114702e-03
+94 1.9050539761783058e-03 -8.6709773895884057e-04 -7.1308298592890869e-04
+91 -1.7668748421752266e-04 -3.2912172431763952e-03 -1.7026902973847310e-03
+174 -1.1661193431651013e-03 -3.5319972697289535e-04 -1.3315750122008031e-03
+14 -5.2595181367602172e-04 1.1431290122662847e-03 2.4106894985613686e-03
+201 1.2658632145990433e-03 -1.2886320195324009e-03 -9.3467772587169757e-04
+475 3.2233912983356425e-04 1.9693141915390448e-03 2.2554010377340557e-03
+162 -4.9063843591599140e-04 -3.7621277823036751e-03 -1.0705085242312278e-04
+181 2.3990852088529593e-03 -7.6523729873747691e-04 -2.0985388999264094e-04
+164 6.1973251580362270e-04 5.7427607572436187e-04 2.5366311696228681e-04
+186 9.2464980247025424e-05 5.4628104247487889e-04 2.1270612628997510e-03
+109 1.4637862452993842e-03 3.5347845612873700e-04 -4.6432492304694845e-04
+286 -2.5514748098149258e-03 -2.8472989197052849e-03 2.0889186854804710e-04
+268 -1.4346005360258024e-03 -1.8068838371540134e-03 1.2301435724002237e-03
+193 6.9152926821996813e-04 1.5090864460581420e-04 3.1831845449853109e-04
+392 -3.6731592449419317e-04 2.2876574663494753e-03 -1.6746929641426463e-03
+291 1.0194395747909139e-03 -9.7470982383962034e-05 8.4610824987622066e-04
+235 1.5755115503185916e-03 -1.4811298769526005e-03 -1.8173550285558175e-03
+185 2.1754826937109596e-03 -2.0088938086100967e-03 -1.2719397884646804e-03
+471 2.1576551349759840e-03 7.1760654217107602e-04 -3.2235355897113041e-03
+95 1.9654137148382889e-03 -4.2966344911101259e-04 -1.0442403443773533e-03
+420 -7.1616002575569453e-04 -8.1461991922554848e-04 2.8862076464991190e-03
+217 2.6337420798613079e-04 -6.3404202201246902e-04 2.2083506439515197e-03
+84 3.5879246880592559e-04 1.0912700400928393e-03 2.1339095114535256e-03
+282 1.3571780451865718e-03 -1.0492295597820452e-03 7.6061105992098496e-04
+377 1.4023198412462627e-03 5.1076806467561511e-04 6.4752015491146328e-04
+68 1.2908937421564955e-03 3.9448907397197881e-04 3.3452372599133344e-03
+364 -1.3852112619361734e-03 -3.3094709817050113e-05 -3.3046709365442562e-03
+252 -1.1699287438959154e-04 -2.6467281885280331e-03 -6.0853536765669361e-04
+365 1.3969129953481602e-03 1.3056707896651385e-04 -7.6994210959249396e-04
+249 -1.6114832162512476e-04 3.7919273283873044e-03 6.6721262248407398e-04
+73 4.5157438166126447e-03 2.4462182886101067e-03 2.1715910398914240e-03
+292 -3.5053127206462406e-03 -1.3041408383962006e-03 2.4271512169794160e-03
+272 4.4810873682039307e-04 -1.7472581625553668e-03 -1.2120653448785587e-03
+199 -2.9393666690277977e-03 -5.3914314787935997e-04 1.4479477047911391e-03
+274 -8.6549321224674438e-06 -6.2857077044829116e-04 1.7793651898281328e-03
+285 -2.8904074815844184e-03 1.7038795348472443e-03 4.4391798445514918e-03
+273 -1.6181785537542968e-03 -1.1632879899309654e-03 3.0252704006792589e-03
+283 -1.6469547581661925e-04 1.0003639145761702e-03 -5.4374234347372152e-04
+258 -2.9134685017394427e-03 1.4509735127992260e-03 -3.6042180657983947e-03
+399 -1.0152827239290417e-03 -1.3148664319104361e-03 -7.7068454804276720e-04
+266 -4.1944920609963609e-03 2.0461074967438115e-04 1.7779395035231451e-03
+301 -2.2234325144037128e-03 9.4763393070555876e-04 8.5645193019531329e-04
+262 -1.4134535901568961e-03 2.7777893283125318e-05 -7.9905029870981268e-04
+243 -1.7768924312963335e-03 -5.1780065472270445e-04 6.3115933115855431e-04
+210 3.0935886667146960e-03 -8.8286609235528407e-04 2.3783465955346706e-03
+170 -4.8774609122643743e-04 7.3592927628685089e-04 -1.4185372891626056e-03
+370 -4.1613336532243033e-03 9.5110912666730263e-04 1.4557360252710095e-03
+176 -6.6059633238080859e-04 -8.3366529286174682e-04 -1.3580067694482611e-03
+294 -1.4676416332527586e-03 -1.5099406679299023e-03 -4.7733028584155283e-04
+198 1.5230592991118023e-05 -1.7570707316145824e-03 1.9860269271510162e-03
+180 2.2971588666411461e-03 -2.7297523428542773e-03 -4.3232315643629602e-04
+278 -3.6113087986210226e-04 1.3395498705396484e-03 -1.4080787473670312e-03
+80 2.1186733421864092e-03 1.4915744351393864e-03 -4.5688733669673891e-04
+218 3.4380338856563292e-03 2.7110945097898824e-03 8.7968868293169383e-04
+289 -1.0963563386204292e-03 1.3472537473361143e-03 2.8761332805782489e-03
+270 -1.7294566249078742e-03 -6.0186624538568914e-03 -1.9716263673870195e-05
+187 -3.0336604195501803e-03 -1.1761543660647950e-03 -1.5359647430370836e-03
+393 1.9328498038345454e-04 2.0903641214727472e-03 -3.2886390484393123e-03
+196 1.3718034251788728e-03 1.1946620871864107e-04 -5.0445833567595707e-03
+192 -4.3737274074255909e-04 -1.9734491317674750e-04 -1.2531413060208950e-03
+209 -9.7076394796349853e-04 -1.5756541251932229e-03 -1.5332347472788372e-03
+281 -2.1107529938429676e-03 -4.7868466133990728e-03 -3.4120188470700766e-03
+381 1.8794348010031177e-03 1.3445705909693306e-03 7.4186637675165081e-04
+105 1.6108456741017452e-03 1.4578013278763568e-03 1.4272315903088118e-03
+476 -2.6760141010841168e-03 -3.5273720023802422e-03 -2.0526666776540759e-03
+177 2.9030439939542745e-04 -1.9300181559604075e-04 3.9858160052241810e-03
+134 2.8159624230873030e-03 6.5368284224583682e-04 -1.4150413123779280e-04
+463 2.4526246572352016e-03 -1.5455461152530242e-03 2.1592876564639433e-03
+358 2.5965916739738356e-03 -2.9518829059576260e-03 -1.2595128004078355e-03
+341 4.3273205314218683e-03 9.2815064478794860e-04 1.8334698068380160e-03
+346 -1.2736445682985874e-03 3.7035473868309504e-04 -1.1237922053260632e-03
+347 -1.5092776891138921e-03 -4.3635132006743215e-05 -4.2456039007661176e-03
+376 -2.9332507763668255e-04 2.5023096235013359e-03 2.1231361280982738e-04
+50 -4.8443931337626892e-04 -2.1087574544591328e-03 1.7423694447142369e-03
+245 -3.1707124206911373e-03 2.2839376303533730e-03 1.0261344561684135e-03
+371 2.9983301168404232e-03 1.7110192475665944e-03 1.5446663637897738e-03
+366 -1.5645228172018859e-03 -3.1564162738478229e-03 -1.5060272652826169e-03
+389 6.4890396494998398e-05 -1.7720895725949802e-03 -1.7194568586308492e-04
+255 -2.0084151233072923e-03 4.1311527765300245e-04 2.9197184584433488e-03
+397 1.4223220741603716e-03 -2.4969087211461436e-03 8.3796093405661422e-06
+160 -2.4824267232859253e-03 1.1260039760495988e-03 6.1471836594147872e-04
+220 1.1897761161998375e-04 -3.4516723746304116e-04 4.3393333289247135e-04
+385 1.5870905310248113e-03 -5.9062873642420704e-04 1.4176118662038849e-03
+361 -4.8700607504097013e-04 1.9061212885729268e-03 -1.1672800709420835e-03
+470 -3.4579857417920924e-03 -4.9178459181961111e-04 1.2371021881861176e-03
+267 -3.1998693267467860e-03 1.0766130374888984e-03 7.4576185802284684e-04
+372 1.9389451360005252e-03 -7.7572818439063313e-04 -3.7883133017856800e-03
+482 -7.7129136042397291e-04 3.1983757067866204e-03 -1.8873007820978767e-03
+295 -3.9004765881566492e-04 5.8396253466570260e-04 -2.9146965979377970e-03
+276 -3.6497657359197146e-03 3.0120022067812563e-03 3.0314567198400381e-04
+493 -6.9342474764410287e-04 4.9230413295656660e-03 -1.6962488460613562e-03
+362 3.8121054819252831e-04 -1.5915143538108769e-04 -1.5748017494219585e-03
+317 8.9921430650494877e-04 1.4942856388252528e-06 2.5529558379863851e-03
+284 2.3893578951559836e-03 -3.9896005955485855e-03 -2.1900627881877507e-03
+382 6.1860364678530480e-04 2.5580987783343158e-03 -1.5280527307682608e-03
+386 1.4296148162570837e-03 5.5858636886988724e-04 1.0540791609147493e-03
+387 7.1900638395175635e-04 -9.4295096787593263e-04 7.6366917128613526e-04
+205 8.9044660576719685e-04 4.8008012405150829e-04 1.1957128190686426e-03
+307 -2.4321697481620558e-03 1.1358101511155889e-04 1.9532915399521453e-03
+390 -2.4422700610271038e-03 2.9789037264909985e-05 -5.1668217679860951e-03
+462 -1.3491461054404988e-03 -2.5229387735756291e-03 -6.5659886677188277e-04
+213 2.8897134813506624e-03 -1.4538825606660009e-03 1.0407934828104311e-03
+313 -2.5874347195213422e-03 4.1135031130064802e-03 -7.4455741762508487e-04
+299 -8.2579086624402938e-04 -1.1463990181405804e-03 -7.1595194289189189e-04
+195 -2.1052962976269526e-06 1.2748378121864902e-03 -5.8988856591211762e-04
+396 8.3007368758911170e-04 2.0645378427933737e-03 1.3890732850210137e-03
+394 8.3720642678394809e-04 -4.1408896020437109e-03 -6.2468256304094524e-04
+63 1.0219861957092562e-03 2.8871188199476009e-03 -1.4720856869451639e-03
+426 1.6345898581512988e-03 1.9449603737579666e-03 4.9970995820095799e-03
+450 -2.0821284514084726e-03 -1.9458915811785234e-04 8.0498500932878951e-04
+451 1.1207563196030021e-05 -1.8119923134703915e-04 2.0713733793831460e-03
+494 2.4146021491778251e-03 -4.0103731658570487e-05 2.5791631244954398e-03
+474 2.9616959133554072e-03 -2.1887514380726754e-03 -2.7684948223792398e-04
+275 -1.1458164991529239e-03 -2.1534132583699277e-03 -1.7142513053066573e-03
+297 -2.2436122196673757e-03 -8.8309070587784197e-04 3.1363376473010430e-03
+58 1.2109667032609605e-03 1.8193770291639697e-03 -3.0950465621164304e-03
+348 3.1804847595363083e-03 2.3487340903363529e-03 -3.3832726301121600e-03
+457 2.0330794309448880e-03 1.9631526825666101e-03 7.3435571584547308e-04
+446 -2.2029102199205741e-03 -6.4206282890816356e-04 -4.4369481027628135e-03
+498 -1.0810331463070536e-03 9.2558384091221530e-04 8.1492417080758115e-04
+369 -1.8588643229757061e-03 2.0481326519527287e-04 9.4826500781231080e-04
+367 6.0824079793351442e-04 4.4552794473618224e-03 2.4443865460385757e-03
+368 -1.2825264701337295e-03 2.0888338236392618e-03 9.1067003926716865e-04
+54 2.6239015180646089e-04 -1.5110195647443253e-03 6.3658459029327101e-04
+207 4.2120998478961547e-03 -2.6556199683234827e-03 -9.3941245151677236e-04
+352 -3.1629687865019039e-03 -3.7720966607344294e-03 7.0926842416120929e-04
+489 9.5341376756497757e-04 1.4042431818218157e-03 1.8633429814071927e-03
+486 -1.2230115893916542e-03 -8.9550812483622018e-04 9.9100140219861429e-04
+309 4.3660702977339386e-04 -2.6336599413908607e-03 3.0773653153225188e-04
+89 -1.5750789094187332e-03 2.4967757885054173e-03 7.6944349291427642e-04
+215 -1.4160402719044490e-03 4.5316106746576728e-03 2.6727081227820278e-03
+413 3.5691387888902660e-03 -2.6003261739663531e-03 -2.1806855018539511e-03
+464 4.2898800051338450e-03 3.0040631806951394e-03 2.1390134316062624e-03
+479 6.3677187480659636e-04 -7.2238095183500741e-04 1.8515938426963818e-03
+418 2.0501766752643456e-03 3.8309610464502646e-04 -2.6005426866037400e-03
+363 3.3111878790056636e-03 1.7130079070644766e-03 -1.1146717191833414e-03
+408 -1.4139746610440306e-03 -4.8012015181753804e-04 -2.8205241536959284e-03
+287 -3.6047004219109355e-04 9.3250045360930881e-04 -1.4682709409450558e-03
+417 2.7654571809340874e-03 -2.2567057113238652e-03 -1.4429568929319027e-03
+411 -2.2171511551177703e-03 -1.2791955268517700e-03 3.2990773991432476e-03
+395 -4.1630039532400661e-03 1.2324140267177854e-03 3.1611904188846057e-03
+430 1.3422047720084779e-04 -9.8588737505787469e-04 -2.4331737029530797e-03
+15 -2.2561299270510210e-03 8.6919271874900169e-04 -1.1743150754162314e-03
+495 3.4435800772257327e-03 -8.3390202645275131e-04 -2.2228633052658601e-05
+404 -1.8753780337035870e-04 2.1473828173587373e-03 -2.1451898717566166e-03
+319 -1.5921122486238629e-03 2.0521137497507376e-03 1.3726472560260724e-03
+398 2.7323004748881973e-03 -1.2810936737413809e-03 -2.9926727196636451e-03
+439 5.0006151869435602e-04 9.5840243954956397e-04 -1.2307343362570592e-06
+65 -2.3636997875612918e-04 -1.4001278013405084e-03 4.4256726473941603e-03
+465 4.9074693111745237e-04 1.9056244517583686e-03 -9.9993637430179647e-04
+448 4.4687428564590629e-03 -4.1406563797760183e-03 -3.5257628160222267e-04
+452 -2.4185414468620458e-03 -2.7317369505139555e-03 -2.9699695214122799e-03
+487 -1.4693462760210674e-03 -1.8144735162935373e-03 6.2439974449037124e-04
+485 2.7089446271005607e-03 -1.4169100097914712e-03 -1.2849255975042565e-03
+456 8.1538117748347887e-04 -3.7029535530334206e-04 -1.9662982543003915e-03
+92 -8.0708050527740643e-05 1.9687357685894110e-03 -1.1635340911601267e-03
+380 4.5852017477907752e-03 -1.1024112079494697e-03 1.0971248122028931e-04
+36 6.8579983497773296e-04 2.1174512801565304e-04 3.4151975028724061e-03
+449 -1.3652687060310099e-03 5.1889813232423236e-04 -1.8235536914311290e-03
+78 -2.0869159159553715e-04 -1.8553460497331155e-03 -2.8484864357676857e-03
+461 7.4114895318666259e-04 -3.3762032584162225e-04 -1.7848351442040383e-03
+490 4.0602245695562558e-03 -1.4421193086408797e-03 3.0283775324889415e-03
+497 -3.0129759399937809e-03 -3.5593340203410204e-04 5.8373843411968756e-04
+62 -1.7661897189966140e-03 3.9969223242114721e-04 1.2439204809816360e-03
+298 3.0085210607217550e-03 -1.3652734424208699e-03 5.0914563649552666e-04
+468 -2.6613780517027934e-03 -1.3934432378293377e-03 -1.2790402520964355e-03
+66 8.6246142753849768e-04 6.1808952794892313e-04 2.5423298745659716e-03
+72 2.1970200267522433e-03 -4.6545833335308979e-04 3.7472076132700463e-04
+472 -9.8158836029607835e-06 -6.8852958765896609e-04 -4.0190932273440907e-04
+130 -9.1950088935480536e-04 -1.0703894976157560e-03 2.2887662659406100e-03
+500 2.4741513036331651e-04 -3.1459839149491839e-03 -1.3181192702699813e-03
+496 -9.7106313931915971e-04 -5.1897395733397625e-04 -5.6710626140607414e-04
+415 1.1490637944286247e-03 8.1644994425964467e-04 -1.2656952510187362e-03
+473 -2.6860316085913437e-03 -1.0089073249434472e-03 9.0258050367959331e-04
+310 9.5331217386026863e-05 1.5473289231608086e-03 9.8156122182075007e-04
+203 1.2813277592928513e-03 1.1002255109629625e-04 -3.0816642195053388e-03
+46 -7.8099238273725247e-04 -4.3568621833386121e-04 2.5013054186050730e-03
+481 -6.1927881482505588e-03 9.0736691698909460e-06 1.1911456497982339e-04
+478 -6.1314900784371061e-04 2.3644108102266977e-03 3.5357586746549133e-04
+7 2.3774520269587420e-03 -8.1404960468439507e-04 -1.8546849586069591e-03
+5 -6.2391313996858135e-04 1.6894881053135260e-03 -1.4239933321422012e-03
+409 -8.9330848365966971e-04 7.4554323105384126e-06 1.2873479493496827e-03
+416 1.7379195579200841e-03 1.3059727479075623e-03 2.1101782539738986e-03
+405 -7.7202288166826718e-04 3.9312157624633696e-04 5.4919011201852138e-04
+29 2.9651595322746308e-03 -5.2282194013013262e-04 1.2942166337832493e-03
+499 -1.5631230674512222e-03 2.4493072605842260e-03 1.6718566634083987e-03
+10 -4.2471756769856320e-04 2.1462436590513924e-03 3.5084843553657877e-04
+491 -1.8760875985833045e-03 -1.1413155551279128e-03 -2.3254023996251766e-03
+74 1.9680208346221353e-03 -4.6689606953441903e-04 1.2266355677870340e-03
+96 -4.8509635414693727e-04 1.3271819185999404e-03 -1.7497298715848438e-03
+69 2.7153337473280673e-05 1.1120532817462145e-03 1.5625385877500973e-03
diff --git a/examples/USER/misc/grem/lj-temper/3/log.lammps.3 b/examples/USER/misc/grem/lj-temper/3/log.lammps.3
new file mode 100644
index 000000000..6b3c064e7
--- /dev/null
+++ b/examples/USER/misc/grem/lj-temper/3/log.lammps.3
@@ -0,0 +1,1074 @@
+print "This is replica: ${rep}"
+This is replica: 3
+
+read_data ${rep}/lj.data
+read_data 3/lj.data
+ orthogonal box = (1.21798 1.21798 1.21798) to (23.782 23.782 23.782)
+ 1 by 1 by 1 MPI processor grid
+ reading atoms ...
+ 500 atoms
+ reading velocities ...
+ 500 velocities
+ 0 = max # of 1-2 neighbors
+ 0 = max # of 1-3 neighbors
+ 0 = max # of 1-4 neighbors
+ 1 = max # of special neighbors
+
+#dump dump all xyz 1000 ${rep}/dump.xyz
+
+thermo 10
+thermo_style custom step temp pe etotal press vol
+timestep 1.0
+
+fix fxnpt all npt temp ${T0} ${T0} 1000.0 iso ${press} ${press} 10000.0
+fix fxnpt all npt temp 300 ${T0} 1000.0 iso ${press} ${press} 10000.0
+fix fxnpt all npt temp 300 300 1000.0 iso ${press} ${press} 10000.0
+fix fxnpt all npt temp 300 300 1000.0 iso 0 ${press} 10000.0
+fix fxnpt all npt temp 300 300 1000.0 iso 0 0 10000.0
+fix fxgREM all grem ${lambda} -.03 -30000 fxnpt
+fix fxgREM all grem 930 -.03 -30000 fxnpt
+thermo_modify press fxgREM_press
+
+temper/grem 10000 100 ${lambda} fxgREM fxnpt 10294 98392 #${walker}
+temper/grem 10000 100 930 fxgREM fxnpt 10294 98392
+Neighbor list info ...
+ 1 neighbor list requests
+ update every 1 steps, delay 10 steps, check yes
+ max neighbors/atom: 2000, page size: 100000
+ master list distance cutoff = 7
+ ghost atom cutoff = 7
+ binsize = 3.5 -> bins = 7 7 7
+Memory usage per processor = 5.38075 Mbytes
+Step Temp PotEng TotEng Press Volume
+ 0 290.839 -3356.3647 -2923.7637 13.376266 11488.157
+ 10 298.49016 -3362.2456 -2918.2641 -139.01604 11488.157
+ 20 305.83037 -3365.5642 -2910.6647 -254.45224 11488.154
+ 30 310.23182 -3368.6884 -2907.2421 -332.60751 11488.147
+ 40 310.27284 -3368.3232 -2906.8159 -322.86391 11488.133
+ 50 306.53667 -3364.1878 -2908.2377 -229.32421 11488.113
+ 60 301.05575 -3362.0784 -2914.2808 -139.22921 11488.089
+ 70 295.62185 -3358.2958 -2918.5807 -30.488671 11488.062
+ 80 291.00386 -3354.1217 -2921.2755 71.019816 11488.035
+ 90 287.64085 -3351.684 -2923.84 136.24318 11488.009
+ 100 285.69508 -3350.6878 -2925.738 167.78531 11487.986
+ 110 285.01446 -3349.3259 -2925.3885 187.55076 11487.966
+ 120 285.5602 -3350.0709 -2925.3218 166.71919 11487.95
+ 130 287.3227 -3351.7321 -2924.3613 117.78775 11487.937
+ 140 290.25957 -3354.4147 -2922.6756 40.299682 11487.926
+ 150 294.42021 -3356.9709 -2919.0432 -49.667147 11487.916
+ 160 299.06616 -3359.9734 -2915.1351 -148.10202 11487.905
+ 170 302.27193 -3361.9138 -2912.3072 -219.90367 11487.892
+ 180 303.13784 -3362.2007 -2911.3062 -249.85871 11487.874
+ 190 302.80628 -3362.5024 -2912.101 -267.67656 11487.852
+ 200 303.33832 -3362.4442 -2911.2515 -285.77881 11487.825
+ 210 305.5023 -3363.3144 -2908.9029 -322.79381 11487.792
+ 220 307.85065 -3364.0411 -2906.1366 -351.67602 11487.753
+ 230 308.22104 -3364.406 -2905.9506 -348.91637 11487.707
+ 240 305.74564 -3363.9764 -2909.2029 -303.52406 11487.654
+ 250 301.78413 -3361.5326 -2912.6516 -216.19532 11487.596
+ 260 298.46788 -3359.9048 -2915.9565 -141.52764 11487.534
+ 270 296.63349 -3357.92 -2916.7002 -78.205751 11487.469
+ 280 295.89932 -3357.4406 -2917.3128 -46.177821 11487.402
+ 290 295.70212 -3356.7815 -2916.947 -22.759891 11487.335
+ 300 296.08102 -3356.4942 -2916.0962 -14.958212 11487.267
+ 310 297.44455 -3358.1599 -2915.7337 -42.692278 11487.199
+ 320 299.60732 -3360.4761 -2914.833 -85.527147 11487.13
+ 330 301.41392 -3361.5094 -2913.179 -109.23287 11487.059
+ 340 301.95602 -3362.3802 -2913.2435 -116.52949 11486.987
+ 350 301.04313 -3362.573 -2914.7942 -99.370101 11486.912
+ 360 298.75171 -3362.1319 -2917.7614 -61.477019 11486.836
+ 370 295.31919 -3360.0283 -2920.7634 2.7109805 11486.758
+ 380 292.01147 -3358.1391 -2923.7942 56.679543 11486.68
+ 390 291.02267 -3358.8039 -2925.9297 52.137334 11486.604
+ 400 293.47704 -3361.3097 -2924.7849 -10.620913 11486.528
+ 410 298.04072 -3363.4731 -2920.1601 -92.539319 11486.453
+ 420 302.65763 -3364.6201 -2914.4398 -161.34189 11486.375
+ 430 305.58577 -3364.9342 -2910.3985 -199.69054 11486.295
+ 440 306.15192 -3365.4217 -2910.0439 -210.24137 11486.211
+ 450 304.70394 -3365.0002 -2911.7761 -185.30124 11486.122
+ 460 302.72281 -3363.178 -2912.9008 -135.5125 11486.031
+ 470 301.565 -3362.4188 -2913.8637 -103.42872 11485.936
+ 480 301.09466 -3362.7649 -2914.9094 -90.679055 11485.84
+ 490 300.36785 -3362.8128 -2916.0384 -75.984213 11485.742
+ 500 299.4194 -3361.7955 -2916.4318 -50.507149 11485.642
+ 510 299.01319 -3361.7883 -2917.0289 -42.892731 11485.542
+ 520 299.3401 -3361.5982 -2916.3525 -40.095555 11485.441
+ 530 299.80119 -3360.7075 -2914.7759 -29.794671 11485.339
+ 540 299.83338 -3360.4575 -2914.4781 -22.047344 11485.237
+ 550 299.4037 -3360.3026 -2914.9623 -9.5687775 11485.134
+ 560 298.26531 -3360.3454 -2916.6984 6.360308 11485.031
+ 570 296.7951 -3358.1989 -2916.7387 46.627791 11484.928
+ 580 296.86944 -3358.3685 -2916.7977 42.347178 11484.827
+ 590 299.99401 -3358.9377 -2912.7193 1.8547224 11484.726
+ 600 305.29691 -3363.5524 -2909.4464 -108.7678 11484.625
+ 610 310.53262 -3367.7329 -2905.8391 -214.98857 11484.522
+ 620 313.26727 -3370.5559 -2904.5946 -282.25441 11484.415
+ 630 312.85585 -3370.6767 -2905.3274 -288.19236 11484.303
+ 640 311.07096 -3368.8551 -2906.1606 -255.80573 11484.185
+ 650 309.45998 -3367.4112 -2907.1129 -224.31879 11484.062
+ 660 307.97753 -3367.1047 -2909.0115 -203.40277 11483.936
+ 670 306.45975 -3365.0678 -2909.2321 -160.61231 11483.805
+ 680 305.20067 -3365.1719 -2911.2091 -144.94169 11483.671
+ 690 304.53788 -3363.5599 -2910.5829 -116.21585 11483.534
+ 700 303.76824 -3363.3253 -2911.493 -104.4867 11483.395
+ 710 302.08413 -3360.7855 -2911.4582 -59.828868 11483.254
+ 720 299.94321 -3360.5821 -2914.4393 -37.62374 11483.112
+ 730 298.41328 -3359.8529 -2915.9857 -15.228868 11482.97
+ 740 298.24134 -3359.4815 -2915.8701 -8.1016813 11482.827
+ 750 299.35763 -3361.261 -2915.9892 -34.63294 11482.684
+ 760 300.68466 -3362.7823 -2915.5367 -56.018851 11482.54
+ 770 300.46889 -3363.9604 -2917.0357 -58.629961 11482.395
+ 780 298.60969 -3361.5716 -2917.4123 -6.2774696 11482.25
+ 790 296.34564 -3360.1027 -2919.3111 38.355568 11482.104
+ 800 294.51417 -3359.4431 -2921.3756 69.012038 11481.959
+ 810 292.88964 -3358.5224 -2922.8713 100.11987 11481.815
+ 820 291.00259 -3356.1148 -2923.2705 149.04294 11481.674
+ 830 289.35715 -3355.1797 -2924.7829 177.16152 11481.535
+ 840 288.98728 -3354.6719 -2924.8252 184.02622 11481.399
+ 850 290.93491 -3357.9026 -2925.159 120.8681 11481.268
+ 860 295.66458 -3360.0429 -2920.2643 38.832849 11481.138
+ 870 302.5264 -3364.4891 -2914.504 -92.377319 11481.009
+ 880 309.52977 -3369.0313 -2908.6292 -225.81971 11480.879
+ 890 314.79857 -3374.2973 -2906.0583 -345.569 11480.744
+ 900 317.06683 -3376.5605 -2904.9476 -394.53967 11480.603
+ 910 315.46623 -3375.3882 -2906.1561 -358.20311 11480.454
+ 920 309.86806 -3370.9581 -2910.0529 -239.56321 11480.299
+ 930 301.86853 -3365.7644 -2916.7579 -84.084273 11480.139
+ 940 293.87732 -3358.6098 -2921.4896 99.699044 11479.978
+ 950 287.08521 -3354.3413 -2927.3238 241.77818 11479.819
+ 960 281.87799 -3351.2325 -2931.9603 352.23356 11479.664
+ 970 278.97756 -3350.2749 -2935.317 408.09623 11479.516
+ 980 279.5637 -3350.5149 -2934.6851 405.94257 11479.376
+ 990 285.08084 -3353.1586 -2929.1224 318.75105 11479.244
+ 1000 295.23442 -3359.4678 -2920.3289 140.84436 11479.118
+ 1010 306.39662 -3366.8348 -2911.093 -57.300039 11478.994
+ 1020 313.99268 -3372.4229 -2905.3825 -196.39271 11478.87
+ 1030 316.09081 -3372.4657 -2902.3045 -212.08799 11478.742
+ 1040 313.79676 -3370.5719 -2903.823 -154.55598 11478.611
+ 1050 309.25763 -3367.8795 -2907.8822 -60.074771 11478.476
+ 1060 304.39064 -3364.3202 -2911.5621 49.662879 11478.34
+ 1070 300.46253 -3362.9515 -2916.0363 125.17653 11478.205
+ 1080 297.4991 -3360.6323 -2918.125 196.95214 11478.073
+ 1090 295.54632 -3359.3627 -2919.76 239.22128 11477.944
+ 1100 295.40528 -3359.5295 -2920.1365 238.50053 11477.82
+ 1110 297.95408 -3361.7049 -2918.5208 183.78695 11477.701
+ 1120 302.00232 -3365.2501 -2916.0445 97.189305 11477.585
+ 1130 304.60024 -3367.5921 -2914.5223 37.346294 11477.471
+ 1140 303.80623 -3366.9401 -2915.0513 44.708909 11477.358
+ 1150 300.46145 -3363.449 -2916.5353 112.27252 11477.246
+ 1160 296.94083 -3361.29 -2919.613 172.17491 11477.136
+ 1170 294.37574 -3358.7032 -2920.8416 229.88782 11477.03
+ 1180 292.71093 -3356.8296 -2921.4443 265.86124 11476.928
+ 1190 292.90482 -3356.8165 -2921.1428 254.19865 11476.831
+ 1200 296.4057 -3358.2915 -2917.4104 187.0124 11476.739
+ 1210 302.45194 -3364.1797 -2914.3053 40.161125 11476.651
+ 1220 308.3282 -3367.8591 -2909.2443 -82.068523 11476.563
+ 1230 311.66885 -3370.4188 -2906.835 -163.94032 11476.475
+ 1240 311.46467 -3370.2803 -2907.0002 -175.20411 11476.383
+ 1250 308.80936 -3369.2086 -2909.8781 -142.6043 11476.287
+ 1260 305.85569 -3366.2346 -2911.2974 -76.438773 11476.19
+ 1270 304.35502 -3365.7847 -2913.0797 -45.262845 11476.09
+ 1280 303.96208 -3366.5817 -2914.4612 -35.282643 11475.99
+ 1290 303.32656 -3366.3007 -2915.1254 -10.999505 11475.889
+ 1300 301.90051 -3364.4524 -2915.3982 37.401199 11475.788
+ 1310 300.25344 -3361.6726 -2915.0684 96.658435 11475.688
+ 1320 299.48263 -3361.5664 -2916.1087 115.8203 11475.59
+ 1330 299.78757 -3361.3697 -2915.4584 123.59173 11475.494
+ 1340 300.29823 -3362.7551 -2916.0843 107.88605 11475.4
+ 1350 300.14288 -3363.0508 -2916.611 106.87383 11475.309
+ 1360 298.8976 -3361.1895 -2916.6019 135.89122 11475.219
+ 1370 296.68816 -3360.2802 -2918.9791 158.16094 11475.133
+ 1380 294.36704 -3359.4309 -2921.5823 177.02215 11475.049
+ 1390 292.94543 -3358.7718 -2923.0377 182.42177 11474.969
+ 1400 292.85338 -3358.8438 -2923.2466 166.77089 11474.892
+ 1410 293.5964 -3359.1929 -2922.4905 140.56649 11474.819
+ 1420 294.92318 -3359.3925 -2920.7166 111.83731 11474.748
+ 1430 297.41943 -3361.008 -2918.6192 59.562034 11474.68
+ 1440 301.23374 -3362.0338 -2913.9715 6.214788 11474.613
+ 1450 305.13101 -3363.6393 -2909.7801 -48.828293 11474.546
+ 1460 307.22712 -3365.5255 -2908.5484 -85.101507 11474.478
+ 1470 306.96483 -3366.6671 -2910.0802 -86.139204 11474.409
+ 1480 305.8449 -3366.1988 -2911.2776 -55.589876 11474.338
+ 1490 305.6905 -3366.7544 -2912.063 -40.882616 11474.266
+ 1500 306.57141 -3367.7234 -2911.7217 -37.617278 11474.193
+ 1510 306.95952 -3368.3709 -2911.7918 -27.410295 11474.12
+ 1520 305.73248 -3368.3635 -2913.6096 1.195061 11474.046
+ 1530 303.03251 -3366.4796 -2915.7417 59.099761 11473.972
+ 1540 300.15414 -3364.8742 -2918.4176 108.88078 11473.899
+ 1550 298.85693 -3363.5073 -2918.9802 135.20102 11473.829
+ 1560 300.13411 -3363.9432 -2917.5164 112.29006 11473.761
+ 1570 303.22588 -3366.0865 -2915.0609 50.329011 11473.696
+ 1580 305.89685 -3366.2478 -2911.2494 14.365342 11473.631
+ 1590 306.23031 -3366.5988 -2911.1044 1.2446683 11473.567
+ 1600 303.60667 -3363.5842 -2911.9923 59.354855 11473.503
+ 1610 299.03827 -3359.4433 -2914.6466 152.13579 11473.441
+ 1620 294.81902 -3355.1326 -2916.6117 247.34217 11473.381
+ 1630 292.42753 -3354.6405 -2919.6767 282.09527 11473.326
+ 1640 292.09794 -3355.7459 -2921.2723 272.26409 11473.276
+ 1650 294.32074 -3357.0549 -2919.2751 228.26827 11473.232
+ 1660 299.26386 -3360.5264 -2915.3941 128.57357 11473.192
+ 1670 305.64564 -3365.4596 -2910.8349 -1.8828442 11473.154
+ 1680 310.71597 -3369.0229 -2906.8564 -100.61886 11473.117
+ 1690 311.98908 -3369.3304 -2905.2703 -120.24223 11473.077
+ 1700 309.11038 -3368.2542 -2908.4759 -77.354272 11473.036
+ 1710 303.97711 -3365.3219 -2913.179 14.978929 11472.993
+ 1720 299.01252 -3363.2915 -2918.533 101.51893 11472.951
+ 1730 295.30596 -3360.4985 -2921.2533 185.79882 11472.91
+ 1740 293.43947 -3358.6385 -2922.1695 241.06449 11472.874
+ 1750 293.66468 -3359.185 -2922.381 245.47771 11472.841
+ 1760 295.6381 -3360.7341 -2920.9949 216.20049 11472.814
+ 1770 298.29248 -3361.1476 -2917.4601 188.52175 11472.79
+ 1780 300.34955 -3363.6722 -2916.925 138.40069 11472.77
+ 1790 301.23848 -3362.546 -2914.4766 138.99244 11472.753
+ 1800 300.88534 -3360.8762 -2913.3321 157.35644 11472.739
+ 1810 299.3665 -3360.2907 -2915.0057 175.12057 11472.728
+ 1820 297.0091 -3358.1093 -2916.3307 218.64624 11472.72
+ 1830 294.54143 -3357.5657 -2919.4576 244.70058 11472.716
+ 1840 292.15559 -3357.0772 -2922.5179 269.23523 11472.718
+ 1850 289.60023 -3355.0317 -2924.2733 310.65443 11472.724
+ 1860 287.41209 -3353.749 -2926.2453 336.4858 11472.737
+ 1870 287.17473 -3352.8065 -2925.6558 338.1041 11472.755
+ 1880 290.02881 -3354.2603 -2922.8644 282.10412 11472.781
+ 1890 295.29776 -3357.9371 -2918.7041 177.50768 11472.812
+ 1900 300.76857 -3362.1419 -2914.7714 64.474646 11472.846
+ 1910 304.49633 -3364.1639 -2911.2487 -6.1656434 11472.882
+ 1920 305.80688 -3364.6198 -2909.7552 -32.003556 11472.918
+ 1930 305.17371 -3364.7364 -2910.8136 -28.799682 11472.953
+ 1940 303.71908 -3364.5815 -2912.8224 -8.2385492 11472.988
+ 1950 302.77768 -3363.8389 -2913.48 20.026775 11473.023
+ 1960 303.11865 -3363.6657 -2912.7996 33.465685 11473.058
+ 1970 304.57575 -3364.087 -2911.0537 30.128888 11473.094
+ 1980 306.11061 -3365.2181 -2909.9018 16.371808 11473.131
+ 1990 306.46526 -3365.715 -2909.8711 18.380298 11473.168
+ 2000 304.83747 -3362.6904 -2909.2678 74.697763 11473.205
+ 2010 301.69967 -3362.6298 -2913.8744 106.07778 11473.244
+ 2020 299.17067 -3359.6779 -2914.6842 159.02318 11473.286
+ 2030 299.51037 -3360.6926 -2915.1937 138.17309 11473.33
+ 2040 301.5266 -3362.6648 -2914.1668 89.963429 11473.377
+ 2050 301.99504 -3363.5001 -2914.3053 66.472441 11473.425
+ 2060 300.14589 -3360.5951 -2914.1509 102.80165 11473.476
+ 2070 298.71217 -3358.7489 -2914.4372 121.482 11473.528
+ 2080 299.91031 -3358.8749 -2912.7811 95.062776 11473.583
+ 2090 302.49571 -3360.6893 -2910.7498 41.01224 11473.639
+ 2100 303.13383 -3361.2408 -2910.3522 23.427206 11473.697
+ 2110 300.40954 -3359.0836 -2912.2472 71.576117 11473.755
+ 2120 296.14255 -3355.1401 -2914.6505 158.29426 11473.815
+ 2130 293.09838 -3354.3585 -2918.3968 200.9025 11473.877
+ 2140 292.64931 -3355.2557 -2919.962 201.04168 11473.944
+ 2150 294.87742 -3356.9652 -2918.3573 166.24166 11474.014
+ 2160 298.87969 -3361.142 -2916.5811 86.526015 11474.088
+ 2170 303.45681 -3363.9846 -2912.6156 19.146581 11474.163
+ 2180 307.56553 -3366.6585 -2909.1781 -36.644732 11474.239
+ 2190 310.02966 -3368.3953 -2907.2497 -62.166387 11474.314
+ 2200 310.28177 -3369.0928 -2907.5722 -54.59024 11474.389
+ 2210 309.15718 -3368.7644 -2908.9166 -24.708919 11474.462
+ 2220 307.97358 -3368.6629 -2910.5755 -3.3583599 11474.535
+ 2230 307.65448 -3368.8606 -2911.2479 -1.6211 11474.608
+ 2240 308.22298 -3368.3214 -2909.8631 -7.9527772 11474.681
+ 2250 309.32404 -3369.7059 -2909.6098 -45.66514 11474.754
+ 2260 310.15986 -3368.5555 -2907.2162 -52.914932 11474.826
+ 2270 309.78841 -3368.1974 -2907.4106 -55.647873 11474.897
+ 2280 307.7735 -3367.6942 -2909.9045 -37.650301 11474.967
+ 2290 304.74577 -3367.0585 -2913.7723 -4.582535 11475.037
+ 2300 301.49445 -3364.3099 -2915.8597 57.698577 11475.107
+ 2310 297.881 -3361.0641 -2917.9887 129.32173 11475.177
+ 2320 293.52211 -3358.2571 -2921.6652 198.8544 11475.251
+ 2330 289.25398 -3355.3767 -2925.1334 259.51123 11475.328
+ 2340 287.50158 -3353.9941 -2926.3572 270.71895 11475.411
+ 2350 290.18977 -3355.7512 -2924.1159 198.68119 11475.498
+ 2360 296.3715 -3359.6436 -2918.8135 67.296756 11475.589
+ 2370 302.48158 -3363.4915 -2913.5731 -63.023443 11475.682
+ 2380 305.55626 -3364.9764 -2910.4847 -133.58402 11475.774
+ 2390 305.06472 -3364.5418 -2910.7812 -139.04918 11475.864
+ 2400 302.32605 -3363.1745 -2913.4874 -101.51258 11475.951
+ 2410 299.20708 -3361.4311 -2916.3832 -47.837723 11476.036
+ 2420 297.203 -3361.0701 -2919.0031 -15.463524 11476.12
+ 2430 296.73469 -3360.5204 -2919.15 4.0741132 11476.204
+ 2440 297.75847 -3361.2004 -2918.3072 -9.8604944 11476.288
+ 2450 299.96908 -3365.0194 -2918.8381 -75.48141 11476.372
+ 2460 302.42452 -3364.7902 -2914.9567 -101.23698 11476.455
+ 2470 304.77245 -3366.4635 -2913.1376 -150.61701 11476.536
+ 2480 307.33171 -3367.8784 -2910.7458 -200.31856 11476.614
+ 2490 310.10497 -3370.2266 -2908.9689 -261.0083 11476.688
+ 2500 312.1335 -3371.5673 -2907.2924 -298.61384 11476.757
+ 2510 311.75944 -3370.2973 -2906.5787 -278.09336 11476.821
+ 2520 307.90347 -3366.7652 -2908.7821 -193.38869 11476.879
+ 2530 301.46283 -3362.871 -2914.4679 -74.979163 11476.934
+ 2540 294.83614 -3357.8096 -2919.2632 61.98391 11476.987
+ 2550 290.19621 -3354.432 -2922.7871 159.34756 11477.042
+ 2560 289.26187 -3354.3786 -2924.1235 177.55175 11477.1
+ 2570 292.74168 -3357.4441 -2922.013 108.83249 11477.161
+ 2580 299.59155 -3361.1188 -2915.4991 -6.7110008 11477.224
+ 2590 306.86704 -3367.1794 -2910.7379 -158.98516 11477.288
+ 2600 311.48564 -3369.8118 -2906.5005 -248.29721 11477.348
+ 2610 311.88958 -3371.4149 -2907.5028 -279.43866 11477.404
+ 2620 307.76879 -3369.8161 -2912.0333 -220.33351 11477.454
+ 2630 300.02705 -3363.2363 -2916.9688 -61.29918 11477.5
+ 2640 291.53337 -3358.016 -2924.3823 94.448801 11477.546
+ 2650 285.66978 -3354.2456 -2929.3335 209.40953 11477.593
+ 2660 283.71498 -3354.0569 -2932.0524 241.44526 11477.644
+ 2670 285.16496 -3354.8865 -2930.7252 219.5018 11477.7
+ 2680 289.69134 -3358.6301 -2927.7362 125.80168 11477.76
+ 2690 296.39671 -3363.2642 -2922.3966 -4.044639 11477.823
+ 2700 302.70772 -3366.2003 -2915.9455 -112.41764 11477.885
+ 2710 306.21308 -3367.7108 -2912.2421 -176.3084 11477.946
+ 2720 306.58537 -3368.3704 -2912.3479 -195.88015 11478.003
+ 2730 304.81136 -3367.8995 -2914.5157 -176.33187 11478.057
+ 2740 302.11262 -3365.1182 -2915.7485 -115.45847 11478.107
+ 2750 299.17119 -3362.1823 -2917.1878 -46.555747 11478.155
+ 2760 296.28047 -3361.3839 -2920.6891 -2.4143151 11478.203
+ 2770 294.10063 -3358.9425 -2921.4901 51.715754 11478.25
+ 2780 293.35974 -3358.6168 -2922.2664 65.084083 11478.298
+ 2790 294.3672 -3361.1371 -2923.2882 27.210865 11478.348
+ 2800 296.91863 -3362.2907 -2920.6467 -11.436148 11478.398
+ 2810 300.43642 -3364.5978 -2917.7214 -72.939042 11478.448
+ 2820 303.75796 -3366.7804 -2914.9635 -129.86307 11478.497
+ 2830 305.43691 -3366.4502 -2912.1359 -138.8722 11478.543
+ 2840 304.32854 -3364.836 -2912.1703 -103.5191 11478.587
+ 2850 300.76892 -3362.8136 -2915.4426 -38.819536 11478.63
+ 2860 296.72672 -3361.3985 -2920.04 23.508817 11478.671
+ 2870 293.96011 -3360.1573 -2922.9139 69.227868 11478.713
+ 2880 292.78904 -3359.0296 -2923.5281 92.541744 11478.757
+ 2890 292.99538 -3357.8722 -2922.0638 93.286645 11478.802
+ 2900 295.20791 -3360.1207 -2921.0213 28.151935 11478.849
+ 2910 299.32216 -3363.3411 -2918.1221 -68.773951 11478.897
+ 2920 303.02174 -3364.4531 -2913.7312 -136.10445 11478.943
+ 2930 304.34696 -3365.4704 -2912.7774 -175.20189 11478.987
+ 2940 303.7276 -3363.6443 -2911.8725 -154.66599 11479.028
+ 2950 302.1532 -3364.2268 -2914.7968 -142.37405 11479.066
+ 2960 299.99771 -3361.2743 -2915.0505 -76.965317 11479.101
+ 2970 297.9876 -3360.6556 -2917.4216 -34.914508 11479.134
+ 2980 297.09445 -3361.5481 -2919.6427 -19.451046 11479.167
+ 2990 297.66828 -3363.3931 -2920.6341 -29.121314 11479.2
+ 3000 298.7181 -3363.3108 -2918.9903 -24.285938 11479.232
+ 3010 299.0098 -3363.657 -2918.9026 -22.182029 11479.264
+ 3020 298.28074 -3362.6827 -2919.0127 -1.0821783 11479.296
+ 3030 297.0716 -3362.8465 -2920.975 5.7985467 11479.327
+ 3040 296.16681 -3361.7601 -2921.2344 17.618492 11479.359
+ 3050 296.61863 -3362.0793 -2920.8815 -5.0533974 11479.391
+ 3060 298.88076 -3363.9678 -2919.4053 -65.659031 11479.423
+ 3070 301.66578 -3365.2777 -2916.5727 -123.02088 11479.454
+ 3080 302.52079 -3367.0428 -2917.0661 -164.61217 11479.483
+ 3090 301.11032 -3364.3109 -2916.4321 -128.84217 11479.509
+ 3100 299.63105 -3361.6655 -2915.987 -85.460877 11479.532
+ 3110 299.42967 -3361.3005 -2915.9216 -71.054569 11479.554
+ 3120 299.67316 -3363.0643 -2917.3232 -77.718472 11479.574
+ 3130 299.65925 -3363.2122 -2917.4917 -57.170356 11479.593
+ 3140 299.34393 -3362.903 -2917.6516 -25.782567 11479.611
+ 3150 298.35178 -3362.2877 -2918.5121 15.361343 11479.628
+ 3160 296.26907 -3361.4895 -2920.8117 64.970352 11479.646
+ 3170 293.5713 -3358.187 -2921.522 139.41891 11479.666
+ 3180 291.86165 -3358.4159 -2924.2938 151.47297 11479.688
+ 3190 293.33675 -3359.1351 -2922.819 116.04533 11479.713
+ 3200 299.2326 -3362.7204 -2917.6346 -1.4187391 11479.74
+ 3210 307.71653 -3368.6517 -2910.9467 -171.77245 11479.767
+ 3220 314.77001 -3372.3428 -2904.1463 -301.0368 11479.79
+ 3230 317.82191 -3374.6194 -2901.8834 -369.6049 11479.809
+ 3240 316.74953 -3374.7407 -2903.5998 -364.48531 11479.82
+ 3250 313.09527 -3371.3443 -2905.6389 -282.8935 11479.824
+ 3260 308.46587 -3368.6349 -2909.8153 -191.24287 11479.824
+ 3270 303.72023 -3365.8488 -2914.088 -95.248106 11479.819
+ 3280 299.15178 -3363.9728 -2919.0072 -14.495937 11479.813
+ 3290 295.04318 -3361.6074 -2922.753 60.195411 11479.806
+ 3300 292.01842 -3359.6831 -2925.3278 111.54019 11479.801
+ 3310 290.52318 -3357.3022 -2925.171 146.88153 11479.798
+ 3320 290.42542 -3357.9286 -2925.9428 129.48514 11479.798
+ 3330 291.568 -3360.2809 -2926.5956 79.888951 11479.8
+ 3340 293.60282 -3362.029 -2925.317 31.931234 11479.803
+ 3350 295.7318 -3362.7841 -2922.9054 -1.2153566 11479.808
+ 3360 297.58722 -3363.7564 -2921.118 -30.068107 11479.812
+ 3370 299.54946 -3364.9316 -2919.3745 -56.975377 11479.816
+ 3380 301.42185 -3365.7855 -2917.4433 -75.659903 11479.819
+ 3390 302.05306 -3365.7018 -2916.4208 -72.77122 11479.82
+ 3400 300.40417 -3364.1372 -2917.3087 -35.829416 11479.821
+ 3410 296.26066 -3361.7423 -2921.077 26.223681 11479.82
+ 3420 290.73171 -3356.7414 -2924.3 122.24943 11479.82
+ 3430 285.76751 -3353.8177 -2928.7601 180.12679 11479.823
+ 3440 283.7407 -3352.2703 -2930.2275 186.40432 11479.829
+ 3450 286.76354 -3355.3049 -2928.7658 91.43927 11479.839
+ 3460 293.42258 -3359.9126 -2923.4687 -51.518599 11479.85
+ 3470 299.95193 -3364.1746 -2918.0188 -182.31788 11479.86
+ 3480 304.11798 -3366.5116 -2914.1591 -256.09455 11479.868
+ 3490 305.03989 -3367.5323 -2913.8086 -269.23029 11479.87
+ 3500 303.01655 -3366.1156 -2915.4014 -213.6144 11479.867
+ 3510 299.61043 -3364.064 -2918.4162 -130.15675 11479.861
+ 3520 296.80003 -3362.5308 -2921.0633 -58.90307 11479.852
+ 3530 296.08565 -3362.0966 -2921.6917 -25.652986 11479.841
+ 3540 297.7315 -3364.1141 -2921.2611 -51.471 11479.831
+ 3550 300.76188 -3367.0317 -2919.6712 -108.18423 11479.819
+ 3560 302.99404 -3367.8533 -2917.1726 -138.56298 11479.806
+ 3570 302.8702 -3367.9317 -2917.4352 -140.30855 11479.789
+ 3580 301.21849 -3366.756 -2918.7163 -113.16149 11479.771
+ 3590 300.31923 -3366.989 -2920.2869 -106.2352 11479.75
+ 3600 300.80325 -3367.3344 -2919.9124 -108.94713 11479.727
+ 3610 301.14244 -3366.6637 -2918.7371 -95.105108 11479.702
+ 3620 300.05559 -3364.2819 -2917.9719 -45.399787 11479.675
+ 3630 297.94069 -3362.6765 -2919.5123 7.9145598 11479.648
+ 3640 295.96781 -3362.347 -2922.1173 45.581116 11479.621
+ 3650 294.71305 -3360.5093 -2922.146 89.403749 11479.595
+ 3660 294.19875 -3360.9938 -2923.3954 91.611011 11479.57
+ 3670 294.44084 -3360.6532 -2922.6948 86.169104 11479.547
+ 3680 295.43683 -3361.4596 -2922.0197 48.973182 11479.526
+ 3690 297.90051 -3362.0345 -2918.9301 -6.6180676 11479.506
+ 3700 301.93871 -3365.3419 -2916.231 -108.25614 11479.485
+ 3710 305.34973 -3367.4585 -2913.2739 -186.14295 11479.463
+ 3720 305.99126 -3368.2986 -2913.1598 -216.49993 11479.437
+ 3730 304.13309 -3366.4646 -2914.0896 -186.52294 11479.408
+ 3740 301.75982 -3366.5309 -2917.686 -167.55228 11479.374
+ 3750 300.5013 -3365.2178 -2918.2449 -139.84654 11479.338
+ 3760 300.8053 -3365.1832 -2917.7581 -139.85413 11479.299
+ 3770 302.10779 -3365.5377 -2916.1753 -151.07312 11479.258
+ 3780 302.93292 -3367.0295 -2916.4398 -167.58837 11479.213
+ 3790 301.79914 -3365.1442 -2916.2409 -125.39602 11479.166
+ 3800 298.59542 -3364.1482 -2920.0102 -73.755956 11479.116
+ 3810 294.45779 -3362.5467 -2924.5631 -9.5283189 11479.064
+ 3820 291.18165 -3360.4555 -2927.3449 46.749383 11479.013
+ 3830 290.71614 -3360.9731 -2928.5548 39.475256 11478.962
+ 3840 294.29087 -3362.1379 -2924.4026 -18.925024 11478.912
+ 3850 301.00088 -3366.525 -2918.809 -145.30363 11478.862
+ 3860 308.11767 -3370.7903 -2912.4887 -273.02479 11478.809
+ 3870 312.82048 -3374.2783 -2908.9815 -362.99836 11478.751
+ 3880 312.65898 -3374.2091 -2909.1526 -358.25591 11478.686
+ 3890 306.66293 -3371.3972 -2915.2593 -262.44889 11478.614
+ 3900 296.82227 -3366.2208 -2924.7202 -102.3413 11478.537
+ 3910 287.2544 -3360.1783 -2932.9091 61.826448 11478.458
+ 3920 282.43822 -3356.3005 -2936.195 152.36422 11478.38
+ 3930 284.34417 -3357.0416 -2934.1012 125.57177 11478.305
+ 3940 290.39852 -3361.1303 -2929.1845 20.650974 11478.233
+ 3950 295.95003 -3363.0547 -2922.8514 -55.290362 11478.161
+ 3960 297.73309 -3363.1899 -2920.3345 -77.315317 11478.088
+ 3970 295.98671 -3362.4831 -2922.2253 -60.81939 11478.014
+ 3980 294.0053 -3360.176 -2922.8654 -28.522737 11477.938
+ 3990 294.99199 -3360.8455 -2922.0673 -61.305861 11477.862
+ 4000 298.85366 -3363.1199 -2918.5977 -141.73373 11477.785
+ 4010 302.78774 -3367.5473 -2917.1735 -248.53999 11477.705
+ 4020 304.23424 -3369.175 -2916.6496 -298.60815 11477.62
+ 4030 302.61544 -3369.6013 -2919.4838 -302.14922 11477.53
+ 4040 299.71969 -3367.7505 -2921.9401 -261.03287 11477.434
+ 4050 298.18422 -3366.3903 -2922.8639 -229.71196 11477.332
+ 4060 298.8956 -3366.492 -2921.9075 -227.22972 11477.227
+ 4070 299.99908 -3369.7404 -2923.5145 -255.3286 11477.117
+ 4080 298.35947 -3367.6553 -2923.8682 -192.17463 11477.002
+ 4090 292.75349 -3365.0973 -2929.6487 -89.28638 11476.884
+ 4100 285.93508 -3361.0953 -2935.7885 33.105452 11476.764
+ 4110 282.7985 -3358.5605 -2937.9192 94.135627 11476.644
+ 4120 285.8656 -3358.4725 -2933.2691 62.810862 11476.526
+ 4130 292.20652 -3362.7467 -2928.1116 -54.607253 11476.41
+ 4140 296.9924 -3366.9293 -2925.1756 -158.73439 11476.292
+ 4150 298.0388 -3366.9761 -2923.6659 -177.36674 11476.171
+ 4160 296.70893 -3365.8721 -2924.54 -152.15357 11476.048
+ 4170 295.37789 -3366.2175 -2926.8653 -132.47649 11475.921
+ 4180 294.87064 -3367.4915 -2928.8938 -122.72641 11475.792
+ 4190 294.67543 -3367.9161 -2929.6087 -102.53126 11475.66
+ 4200 294.13198 -3366.6662 -2929.1672 -61.017319 11475.527
+ 4210 293.11419 -3364.9756 -2928.9905 -16.980228 11475.392
+ 4220 292.6765 -3363.6592 -2928.3251 7.5452974 11475.257
+ 4230 294.26558 -3365.1048 -2927.407 -26.516046 11475.123
+ 4240 297.98659 -3366.0933 -2922.8608 -80.580238 11474.987
+ 4250 302.32563 -3369.1995 -2919.513 -165.99612 11474.851
+ 4260 305.09156 -3370.6246 -2916.824 -215.25056 11474.711
+ 4270 304.70351 -3370.657 -2917.4337 -214.07107 11474.567
+ 4280 301.07235 -3367.4011 -2919.5788 -137.78603 11474.419
+ 4290 295.34863 -3364.8897 -2925.581 -45.016822 11474.268
+ 4300 289.62881 -3360.4118 -2929.6109 72.508715 11474.117
+ 4310 286.15929 -3356.9993 -2931.3591 155.63141 11473.966
+ 4320 286.17972 -3355.8493 -2930.1786 177.1863 11473.819
+ 4330 288.9101 -3358.9521 -2929.2202 121.15766 11473.675
+ 4340 292.34642 -3362.2508 -2927.4076 51.526417 11473.534
+ 4350 295.54369 -3363.9458 -2924.347 0.14273852 11473.393
+ 4360 298.4863 -3366.6606 -2922.6848 -59.174353 11473.253
+ 4370 300.53895 -3368.5369 -2921.508 -96.097134 11473.111
+ 4380 300.21324 -3366.7642 -2920.2197 -64.844663 11472.968
+ 4390 296.95771 -3365.7166 -2924.0145 -12.024469 11472.824
+ 4400 292.16548 -3363.2769 -2928.7029 69.460552 11472.679
+ 4410 288.49395 -3362.2209 -2933.1081 118.90158 11472.536
+ 4420 288.16332 -3362.149 -2933.5279 117.89137 11472.395
+ 4430 291.6436 -3363.5005 -2929.7028 57.972156 11472.256
+ 4440 297.66952 -3367.5551 -2924.7943 -60.502859 11472.118
+ 4450 304.09016 -3370.6868 -2918.3758 -171.41098 11471.979
+ 4460 308.5534 -3373.7323 -2914.7825 -258.9135 11471.837
+ 4470 309.48587 -3373.694 -2913.3573 -273.57827 11471.69
+ 4480 306.77989 -3372.7372 -2916.4254 -238.64856 11471.538
+ 4490 301.56146 -3368.9651 -2920.4152 -144.88084 11471.381
+ 4500 296.10391 -3364.7776 -2924.3455 -44.256514 11471.222
+ 4510 292.60484 -3363.8367 -2928.6092 -0.72306844 11471.061
+ 4520 291.75826 -3362.6426 -2928.6743 16.82528 11470.9
+ 4530 293.36463 -3364.355 -2927.9973 -25.58661 11470.74
+ 4540 296.89643 -3366.3967 -2924.7858 -91.228856 11470.579
+ 4550 301.44559 -3369.8911 -2921.5136 -180.95354 11470.416
+ 4560 305.45654 -3373.3025 -2918.959 -259.91193 11470.25
+ 4570 307.37517 -3374.1713 -2916.9741 -283.00323 11470.079
+ 4580 306.32829 -3373.373 -2917.7328 -252.96221 11469.902
+ 4590 302.84387 -3370.5935 -2920.1362 -171.64318 11469.721
+ 4600 298.19488 -3367.9838 -2924.4415 -79.787912 11469.536
+ 4610 294.12917 -3365.2251 -2927.7303 4.3581537 11469.35
+ 4620 292.3211 -3362.3559 -2927.5504 61.439978 11469.164
+ 4630 293.38764 -3364.6427 -2928.2508 25.27214 11468.978
+ 4640 296.47233 -3366.7902 -2925.81 -33.985853 11468.794
+ 4650 299.74757 -3368.2744 -2922.4226 -88.468533 11468.608
+ 4660 300.94964 -3369.463 -2921.8232 -116.29775 11468.421
+ 4670 298.75028 -3367.3882 -2923.0198 -67.323696 11468.232
+ 4680 293.86279 -3364.0934 -2926.9948 28.453601 11468.041
+ 4690 288.81593 -3361.2227 -2931.6309 125.96905 11467.851
+ 4700 285.80539 -3358.8854 -2933.7716 197.88821 11467.664
+ 4710 285.60651 -3358.5012 -2933.6832 215.64034 11467.48
+ 4720 287.98726 -3359.527 -2931.1678 187.07185 11467.3
+ 4730 291.58245 -3362.1287 -2928.4219 125.83544 11467.123
+ 4740 294.29771 -3363.6324 -2925.8868 83.804817 11466.949
+ 4750 295.66712 -3364.9189 -2925.1364 56.698622 11466.777
+ 4760 297.36575 -3366.2906 -2923.9816 27.083048 11466.606
+ 4770 300.4781 -3368.0541 -2921.1156 -18.299929 11466.435
+ 4780 304.08974 -3370.4046 -2918.0941 -74.333186 11466.263
+ 4790 306.53442 -3372.1323 -2916.1856 -110.15633 11466.091
+ 4800 306.36811 -3371.2406 -2915.5413 -88.96311 11465.916
+ 4810 303.63247 -3369.8624 -2918.2321 -35.479611 11465.739
+ 4820 299.49779 -3369.6779 -2924.1977 17.850254 11465.562
+ 4830 295.2261 -3366.5125 -2927.386 103.74338 11465.385
+ 4840 291.85433 -3363.6708 -2929.5596 172.07555 11465.21
+ 4850 290.58794 -3362.9824 -2930.7549 190.99507 11465.039
+ 4860 291.87236 -3363.1611 -2929.0231 174.70316 11464.871
+ 4870 294.12292 -3363.1789 -2925.6933 154.00303 11464.706
+ 4880 294.92133 -3363.6991 -2925.026 142.12291 11464.545
+ 4890 293.91622 -3361.9948 -2924.8167 171.99049 11464.386
+ 4900 292.49926 -3361.8643 -2926.7938 185.57775 11464.23
+ 4910 292.21299 -3361.6765 -2927.0318 183.5048 11464.078
+ 4920 294.3465 -3363.0576 -2925.2395 136.05449 11463.93
+ 4930 298.91621 -3366.9423 -2922.3271 36.222028 11463.783
+ 4940 304.2075 -3370.5083 -2918.0227 -64.58561 11463.638
+ 4950 308.02135 -3372.8539 -2914.6955 -131.3879 11463.491
+ 4960 308.90373 -3373.5587 -2914.0878 -141.96205 11463.342
+ 4970 306.52679 -3371.6191 -2915.6837 -80.691087 11463.191
+ 4980 301.51197 -3368.8856 -2920.4094 22.969986 11463.037
+ 4990 295.43275 -3365.4621 -2926.0283 146.8903 11462.885
+ 5000 290.88226 -3361.5861 -2928.9208 259.04414 11462.735
+ 5010 289.63823 -3362.3566 -2931.5417 281.85705 11462.59
+ 5020 290.86894 -3363.4182 -2930.7727 270.69373 11462.45
+ 5030 292.52764 -3365.017 -2929.9043 241.84573 11462.316
+ 5040 293.49658 -3365.245 -2928.6911 228.45229 11462.186
+ 5050 294.50147 -3366.9436 -2928.895 192.46946 11462.061
+ 5060 297.26288 -3368.2062 -2926.0502 142.82543 11461.939
+ 5070 302.05552 -3370.7886 -2921.5039 59.794349 11461.82
+ 5080 306.91444 -3373.8136 -2917.3016 -25.907428 11461.702
+ 5090 309.27791 -3375.61 -2915.5825 -68.087454 11461.584
+ 5100 307.58823 -3374.2434 -2916.7292 -29.448909 11461.464
+ 5110 302.22211 -3369.1695 -2919.6371 91.475217 11461.344
+ 5120 295.22929 -3363.8335 -2924.7023 233.42851 11461.226
+ 5130 289.21239 -3360.4494 -2930.2679 342.88034 11461.112
+ 5140 286.07619 -3358.5423 -2933.0256 405.07827 11461.005
+ 5150 286.18263 -3360.1821 -2934.5071 391.79791 11460.905
+ 5160 288.34455 -3361.971 -2933.0803 351.86919 11460.813
+ 5170 290.63945 -3363.714 -2931.4098 306.21253 11460.728
+ 5180 291.31142 -3365.454 -2932.1504 269.75255 11460.649
+ 5190 290.31855 -3365.059 -2933.2322 266.37406 11460.575
+ 5200 289.71418 -3363.2048 -2932.277 270.89968 11460.506
+ 5210 291.76498 -3363.7323 -2929.7541 222.71991 11460.442
+ 5220 296.3166 -3365.6184 -2924.8699 138.1859 11460.383
+ 5230 301.35066 -3369.3963 -2921.16 32.529985 11460.326
+ 5240 305.40426 -3370.5661 -2916.3004 -26.832667 11460.27
+ 5250 307.98363 -3371.1716 -2913.0693 -57.180837 11460.214
+ 5260 308.43511 -3372.104 -2913.3302 -65.95863 11460.156
+ 5270 306.89801 -3370.9536 -2914.4661 -31.877829 11460.098
+ 5280 305.2456 -3369.9952 -2915.9655 -0.55331272 11460.039
+ 5290 305.26168 -3369.2015 -2915.1479 13.46267 11459.98
+ 5300 305.92879 -3370.0168 -2914.9709 3.3555314 11459.921
+ 5310 305.08604 -3369.5889 -2915.7965 20.941058 11459.862
+ 5320 302.07971 -3368.8049 -2919.4842 61.631643 11459.804
+ 5330 298.08744 -3365.1449 -2921.7624 143.31463 11459.747
+ 5340 294.66312 -3362.3815 -2924.0924 208.27653 11459.693
+ 5350 292.02586 -3363.1587 -2928.7924 224.65383 11459.643
+ 5360 288.75464 -3362.7308 -2933.2302 257.58477 11459.597
+ 5370 284.36618 -3358.8164 -2935.8432 334.1989 11459.556
+ 5380 281.1587 -3356.8487 -2938.6464 370.37102 11459.522
+ 5390 282.03412 -3358.1861 -2938.6817 326.80014 11459.495
+ 5400 286.79267 -3359.411 -2932.8286 246.00141 11459.474
+ 5410 293.09138 -3362.9474 -2926.9962 125.33054 11459.458
+ 5420 298.54861 -3365.9372 -2921.8688 23.380302 11459.444
+ 5430 301.89516 -3367.2946 -2918.2484 -32.664978 11459.431
+ 5440 302.9613 -3369.2735 -2918.6415 -64.124877 11459.417
+ 5450 301.6816 -3368.4145 -2919.686 -30.492748 11459.403
+ 5460 297.95968 -3366.2293 -2923.0369 46.738907 11459.388
+ 5470 292.95402 -3362.9511 -2927.2041 147.01316 11459.374
+ 5480 289.24066 -3360.5088 -2930.2852 218.44046 11459.362
+ 5490 289.07313 -3360.2389 -2930.2645 221.43101 11459.355
+ 5500 292.80852 -3363.2902 -2927.7597 139.27316 11459.352
+ 5510 298.91176 -3366.826 -2922.2174 23.449419 11459.352
+ 5520 304.82309 -3371.4227 -2918.0215 -102.04856 11459.352
+ 5530 308.46437 -3374.0198 -2915.2025 -175.33989 11459.351
+ 5540 308.87916 -3373.4668 -2914.0325 -167.20124 11459.346
+ 5550 305.67902 -3370.0356 -2915.3613 -76.852194 11459.338
+ 5560 299.65813 -3365.4319 -2919.7132 64.972285 11459.329
+ 5570 292.65276 -3359.4067 -2924.1079 236.85346 11459.321
+ 5580 286.94222 -3355.0142 -2928.2094 374.95491 11459.318
+ 5590 284.63327 -3353.4826 -2930.1122 441.60931 11459.322
+ 5600 285.92984 -3354.5482 -2929.2492 434.64822 11459.334
+ 5610 288.75561 -3355.9473 -2926.4452 397.86783 11459.354
+ 5620 290.76209 -3358.3895 -2925.9029 346.81793 11459.383
+ 5630 291.31008 -3359.7542 -2926.4525 315.40565 11459.418
+ 5640 291.74904 -3360.5199 -2926.5653 288.97194 11459.459
+ 5650 294.13799 -3363.0744 -2925.5664 226.22295 11459.506
+ 5660 298.69376 -3364.9344 -2920.6501 158.13419 11459.558
+ 5670 302.99309 -3368.4687 -2917.7894 81.730575 11459.612
+ 5680 304.40871 -3368.8123 -2916.0275 75.204046 11459.669
+ 5690 302.40456 -3367.1943 -2917.3905 126.21042 11459.727
+ 5700 298.63787 -3365.0914 -2920.8902 197.69881 11459.787
+ 5710 295.72913 -3362.8907 -2923.016 257.38054 11459.852
+ 5720 295.47608 -3362.4125 -2922.9143 267.08144 11459.921
+ 5730 297.63534 -3362.8417 -2920.1317 239.65374 11459.996
+ 5740 300.14453 -3365.47 -2919.0278 180.4632 11460.075
+ 5750 301.41147 -3366.5011 -2918.1744 150.24037 11460.158
+ 5760 301.02162 -3365.2726 -2917.5258 160.24874 11460.244
+ 5770 299.90644 -3365.545 -2919.4569 160.57551 11460.334
+ 5780 299.55092 -3364.6012 -2919.0419 168.28427 11460.426
+ 5790 301.11982 -3366.8794 -2918.9865 121.62476 11460.522
+ 5800 304.40788 -3368.9607 -2916.1771 62.926404 11460.62
+ 5810 307.87943 -3371.8175 -2913.8702 -3.0097777 11460.72
+ 5820 309.94504 -3372.3146 -2911.2949 -23.185668 11460.819
+ 5830 309.79681 -3371.633 -2910.8337 -1.4962382 11460.919
+ 5840 307.51826 -3371.0129 -2913.6028 47.160516 11461.018
+ 5850 303.79662 -3369.0632 -2917.1887 128.65817 11461.119
+ 5860 299.5249 -3366.1007 -2920.5801 225.31181 11461.222
+ 5870 295.77446 -3364.5328 -2924.5907 294.42604 11461.329
+ 5880 293.55833 -3362.2504 -2925.6046 346.42156 11461.443
+ 5890 293.19719 -3360.9078 -2924.7992 357.8807 11461.563
+ 5900 293.95549 -3360.8154 -2923.5789 332.53011 11461.69
+ 5910 294.99923 -3359.8567 -2921.0677 305.09537 11461.823
+ 5920 296.20575 -3361.4975 -2920.9139 243.56767 11461.963
+ 5930 297.60147 -3361.6812 -2919.0215 200.8515 11462.107
+ 5940 298.78813 -3363.309 -2918.8843 151.16867 11462.256
+ 5950 299.19822 -3365.2189 -2920.1843 115.39604 11462.407
+ 5960 298.35268 -3365.3943 -2921.6173 119.28031 11462.561
+ 5970 296.73466 -3363.3561 -2921.9858 162.5607 11462.717
+ 5980 295.03737 -3362.1871 -2923.3414 201.29207 11462.877
+ 5990 293.66868 -3361.6259 -2924.816 229.77533 11463.041
+ 6000 293.68923 -3360.65 -2923.8095 246.56446 11463.209
+ 6010 296.47427 -3362.3886 -2921.4056 203.72872 11463.383
+ 6020 301.59109 -3364.8471 -2916.2532 128.94048 11463.56
+ 6030 306.43689 -3367.0021 -2911.2005 57.3711 11463.74
+ 6040 308.71634 -3369.1957 -2910.0036 6.0869815 11463.922
+ 6050 308.23788 -3367.8891 -2909.4086 20.741238 11464.103
+ 6060 305.58413 -3365.9609 -2911.4277 66.631345 11464.286
+ 6070 300.77418 -3364.2108 -2916.832 136.64846 11464.47
+ 6080 293.6218 -3359.3652 -2922.625 267.64272 11464.657
+ 6090 285.33445 -3356.0246 -2931.6113 393.20846 11464.849
+ 6100 278.80255 -3352.5107 -2937.813 502.82326 11465.049
+ 6110 276.81358 -3350.3614 -2938.6222 550.28188 11465.259
+ 6120 279.65626 -3351.5998 -2935.6324 506.90706 11465.479
+ 6130 285.34796 -3355.2039 -2930.7705 401.64739 11465.71
+ 6140 291.45241 -3358.2853 -2924.7719 289.25357 11465.948
+ 6150 297.10699 -3361.7312 -2919.807 171.17268 11466.192
+ 6160 302.55373 -3364.91 -2914.8843 55.437012 11466.44
+ 6170 307.866 -3368.6575 -2910.7301 -62.798705 11466.689
+ 6180 311.79303 -3370.4554 -2906.6869 -138.26266 11466.937
+ 6190 312.43774 -3371.1702 -2906.4427 -160.39532 11467.183
+ 6200 308.94389 -3368.1445 -2908.6139 -91.595173 11467.426
+ 6210 302.68447 -3364.3767 -2914.1565 17.750129 11467.668
+ 6220 296.78689 -3360.7177 -2919.2697 124.60174 11467.91
+ 6230 294.19421 -3358.0215 -2920.4299 187.0903 11468.155
+ 6240 295.7095 -3359.306 -2919.4605 161.17608 11468.404
+ 6250 299.39622 -3363.0467 -2917.7175 83.113923 11468.655
+ 6260 302.23128 -3365.4493 -2915.9032 26.719212 11468.909
+ 6270 302.25293 -3364.3116 -2914.7333 37.804969 11469.164
+ 6280 299.21203 -3362.2357 -2917.1805 91.083451 11469.42
+ 6290 294.19413 -3360.0662 -2922.4747 165.63369 11469.677
+ 6300 289.43186 -3357.272 -2926.764 244.53665 11469.939
+ 6310 287.16501 -3356.7543 -2929.6181 272.77835 11470.205
+ 6320 288.47784 -3356.8447 -2927.7558 260.53808 11470.477
+ 6330 292.69848 -3360.5305 -2925.1637 181.29313 11470.753
+ 6340 297.86072 -3362.8509 -2919.8057 109.65376 11471.034
+ 6350 302.5357 -3366.4303 -2916.4314 28.644638 11471.317
+ 6360 306.49698 -3369.0201 -2913.129 -34.931849 11471.601
+ 6370 309.94275 -3368.3825 -2907.3662 -55.20096 11471.884
+ 6380 312.62168 -3370.267 -2905.266 -93.801572 11472.167
+ 6390 314.14945 -3371.2743 -2904.0008 -108.8446 11472.448
+ 6400 314.34032 -3372.3317 -2904.7743 -112.34273 11472.728
+ 6410 313.25854 -3372.5638 -2906.6155 -98.21066 11473.005
+ 6420 311.07002 -3370.1064 -2907.4134 -48.478778 11473.281
+ 6430 308.2594 -3368.5615 -2910.049 -9.5961719 11473.556
+ 6440 305.97889 -3366.4414 -2911.321 26.875052 11473.832
+ 6450 305.2744 -3366.2669 -2912.1943 26.300361 11474.108
+ 6460 306.05516 -3365.2176 -2909.9838 25.932573 11474.385
+ 6470 306.59852 -3365.985 -2909.943 11.52653 11474.662
+ 6480 305.22425 -3364.1915 -2910.1936 47.530707 11474.941
+ 6490 301.73315 -3362.3411 -2913.5359 104.97644 11475.22
+ 6500 297.7103 -3361.0676 -2918.2461 159.22344 11475.502
+ 6510 295.57304 -3359.8371 -2920.1946 192.34093 11475.788
+ 6520 296.57455 -3360.2465 -2919.1143 173.26239 11476.077
+ 6530 300.16073 -3360.8842 -2914.4179 123.77824 11476.37
+ 6540 304.64027 -3362.7574 -2909.6281 51.115062 11476.665
+ 6550 307.73099 -3364.5148 -2906.7883 -7.5532795 11476.962
+ 6560 308.10139 -3365.4261 -2907.1486 -30.55659 11477.259
+ 6570 306.05912 -3363.5882 -2908.3484 2.0091116 11477.556
+ 6580 302.82604 -3362.2955 -2911.8648 41.1788 11477.853
+ 6590 299.53145 -3359.1242 -2913.5939 102.5509 11478.151
+ 6600 297.10412 -3358.2272 -2916.3073 128.8683 11478.451
+ 6610 296.34078 -3358.0136 -2917.2292 130.86929 11478.754
+ 6620 297.58033 -3357.5182 -2914.89 118.4964 11479.06
+ 6630 300.0413 -3357.5511 -2911.2624 90.858614 11479.368
+ 6640 302.22921 -3358.8537 -2909.3107 53.225053 11479.679
+ 6650 303.04975 -3358.4754 -2907.7119 49.027349 11479.991
+ 6660 302.79723 -3357.1378 -2906.7498 66.543491 11480.304
+ 6670 302.65576 -3357.4508 -2907.2733 65.687167 11480.618
+ 6680 302.43526 -3357.5844 -2907.7349 67.48788 11480.934
+ 6690 301.27254 -3356.8419 -2908.7218 85.18976 11481.252
+ 6700 300.12821 -3357.5596 -2911.1417 83.022207 11481.572
+ 6710 300.73458 -3356.6477 -2909.3278 83.483602 11481.893
+ 6720 302.46302 -3358.9638 -2909.073 39.127393 11482.217
+ 6730 303.09717 -3359.1213 -2908.2872 32.23007 11482.541
+ 6740 301.77894 -3357.7494 -2908.8761 64.08751 11482.867
+ 6750 299.36118 -3357.5072 -2912.2301 97.12434 11483.194
+ 6760 296.94353 -3356.2099 -2914.5289 143.02396 11483.523
+ 6770 296.19542 -3355.865 -2915.2968 159.91741 11483.855
+ 6780 299.10175 -3357.7571 -2912.8659 114.0156 11484.191
+ 6790 305.17298 -3358.9372 -2905.0155 43.956074 11484.529
+ 6800 311.13842 -3362.0226 -2899.2277 -48.733285 11484.868
+ 6810 313.92382 -3363.6989 -2896.761 -96.893386 11485.207
+ 6820 312.79205 -3362.5693 -2897.3149 -76.626377 11485.544
+ 6830 309.53117 -3359.666 -2899.2618 -16.524239 11485.88
+ 6840 306.97738 -3357.8851 -2901.2795 24.706916 11486.217
+ 6850 306.24042 -3357.8109 -2902.3015 30.587137 11486.554
+ 6860 306.39452 -3357.6562 -2901.9175 30.151857 11486.892
+ 6870 306.12975 -3357.0978 -2901.753 39.944278 11487.23
+ 6880 304.73964 -3356.4678 -2903.1907 63.750484 11487.57
+ 6890 302.40838 -3355.4926 -2905.6831 101.53845 11487.912
+ 6900 300.37253 -3352.8705 -2906.0891 154.9019 11488.256
+ 6910 299.71278 -3353.5074 -2907.7073 155 11488.603
+ 6920 300.21868 -3354.108 -2907.5554 137.29916 11488.953
+ 6930 300.91734 -3354.3053 -2906.7135 113.32879 11489.307
+ 6940 301.27561 -3354.0206 -2905.896 90.729603 11489.663
+ 6950 302.00043 -3355.4191 -2906.2163 43.65834 11490.021
+ 6960 304.20288 -3357.248 -2904.7692 -17.666728 11490.38
+ 6970 307.69288 -3359.1243 -2901.4544 -82.928732 11490.74
+ 6980 311.15676 -3362.4291 -2899.607 -153.15124 11491.098
+ 6990 313.24914 -3363.5292 -2897.5948 -175.55565 11491.454
+ 7000 313.46314 -3362.6223 -2896.3697 -149.93067 11491.806
+ 7010 311.83262 -3361.3064 -2897.479 -98.489539 11492.156
+ 7020 308.816 -3359.227 -2899.8866 -26.315683 11492.505
+ 7030 305.47513 -3357.3334 -2902.9623 42.516882 11492.854
+ 7040 303.12998 -3355.6934 -2904.8105 92.595049 11493.204
+ 7050 302.91416 -3354.2533 -2903.6915 113.72507 11493.555
+ 7060 304.68781 -3355.285 -2902.085 85.086208 11493.909
+ 7070 306.12871 -3356.1019 -2900.7587 60.727501 11494.266
+ 7080 304.92774 -3356.2588 -2902.7019 67.826378 11494.624
+ 7090 301.11291 -3354.5942 -2906.7116 119.86822 11494.983
+ 7100 296.72376 -3351.7671 -2910.413 187.70989 11495.345
+ 7110 294.75356 -3349.5884 -2911.1648 219.32443 11495.712
+ 7120 297.67567 -3350.839 -2908.069 158.07395 11496.082
+ 7130 305.70493 -3355.3958 -2900.6829 6.5977471 11496.457
+ 7140 315.50541 -3363.4729 -2894.1825 -203.39826 11496.831
+ 7150 322.62429 -3367.446 -2887.5668 -340.39897 11497.202
+ 7160 324.88828 -3368.6595 -2885.4128 -395.42687 11497.567
+ 7170 322.9769 -3367.2947 -2886.891 -375.52178 11497.925
+ 7180 319.19914 -3363.1461 -2888.3616 -301.33342 11498.276
+ 7190 315.61029 -3361.887 -2892.4406 -258.18079 11498.621
+ 7200 312.52925 -3360.0424 -2895.1788 -212.55239 11498.962
+ 7210 309.62627 -3356.4763 -2895.9307 -149.78909 11499.3
+ 7220 306.82253 -3354.8177 -2898.4425 -110.49657 11499.634
+ 7230 304.00608 -3352.3639 -2900.1779 -63.569298 11499.967
+ 7240 301.68734 -3351.5499 -2902.8128 -39.869291 11500.299
+ 7250 301.20823 -3351.5326 -2903.5082 -40.920975 11500.63
+ 7260 303.68075 -3352.8995 -2901.1974 -79.839547 11500.961
+ 7270 307.66947 -3354.5925 -2896.9574 -130.22118 11501.291
+ 7280 310.25108 -3356.0316 -2894.5566 -159.43861 11501.618
+ 7290 309.53903 -3355.8641 -2895.4482 -135.03747 11501.943
+ 7300 305.45335 -3352.7207 -2898.3819 -44.446255 11502.266
+ 7310 299.94404 -3351.289 -2905.145 37.045824 11502.588
+ 7320 295.83045 -3347.2163 -2907.1909 128.97343 11502.911
+ 7330 295.45671 -3346.6162 -2907.1468 137.94949 11503.237
+ 7340 299.85526 -3348.0483 -2902.0363 74.717304 11503.566
+ 7350 307.46536 -3352.3481 -2895.0166 -49.381536 11503.896
+ 7360 314.13806 -3356.0423 -2888.7857 -151.36444 11504.226
+ 7370 316.19094 -3357.5305 -2887.2204 -176.06356 11504.554
+ 7380 313.10271 -3354.7719 -2889.0554 -95.210097 11504.878
+ 7390 306.88569 -3351.0428 -2894.5736 31.195226 11505.201
+ 7400 300.28895 -3346.6808 -2900.0237 164.9538 11505.525
+ 7410 296.14492 -3345.2251 -2904.732 233.88975 11505.853
+ 7420 295.70378 -3344.7174 -2904.8805 245.9278 11506.185
+ 7430 297.99337 -3344.5274 -2901.2849 220.07678 11506.523
+ 7440 301.13366 -3344.4907 -2896.5772 179.9314 11506.865
+ 7450 304.13189 -3347.2541 -2894.8809 110.27383 11507.211
+ 7460 306.31414 -3349.226 -2893.607 61.562227 11507.559
+ 7470 306.99747 -3349.44 -2892.8045 49.678238 11507.91
+ 7480 306.21822 -3349.3651 -2893.8887 55.58614 11508.261
+ 7490 304.35208 -3348.4572 -2895.7566 77.115083 11508.614
+ 7500 302.9243 -3346.912 -2896.3351 94.889369 11508.969
+ 7510 304.26094 -3348.7339 -2896.1688 44.764974 11509.326
+ 7520 308.86742 -3352.016 -2892.5991 -52.207421 11509.684
+ 7530 314.80762 -3355.2384 -2886.9859 -157.18438 11510.042
+ 7540 319.19313 -3357.7221 -2882.9465 -233.45784 11510.397
+ 7550 319.60227 -3359.601 -2884.2169 -260.6929 11510.748
+ 7560 315.41536 -3355.7427 -2886.5862 -178.23973 11511.095
+ 7570 308.75704 -3350.6815 -2891.4288 -63.118976 11511.438
+ 7580 303.84735 -3346.2354 -2894.2855 20.645818 11511.781
+ 7590 303.92144 -3346.8585 -2894.7984 -7.7635156 11512.124
+ 7600 308.53261 -3350.1529 -2891.2341 -115.95083 11512.468
+ 7610 315.08094 -3354.0432 -2885.3842 -250.87262 11512.809
+ 7620 320.93329 -3357.8803 -2880.5163 -373.40584 11513.146
+ 7630 324.11351 -3360.2517 -2878.1574 -442.27062 11513.477
+ 7640 323.43635 -3359.7283 -2878.6413 -429.27299 11513.799
+ 7650 319.71592 -3358.5492 -2882.996 -372.59517 11514.113
+ 7660 315.82533 -3354.7687 -2885.0024 -281.67891 11514.421
+ 7670 313.99839 -3353.1183 -2886.0695 -235.21283 11514.723
+ 7680 314.31686 -3351.6752 -2884.1527 -214.78028 11515.021
+ 7690 315.2835 -3351.9697 -2883.0094 -222.44935 11515.316
+ 7700 314.61365 -3350.6786 -2882.7147 -197.02667 11515.606
+ 7710 310.72158 -3350.1989 -2888.024 -150.16724 11515.893
+ 7720 304.15057 -3346.0177 -2893.6168 -34.717194 11516.177
+ 7730 297.31281 -3342.1944 -2899.9642 79.848732 11516.462
+ 7740 293.26501 -3340.7041 -2904.4946 141.76051 11516.748
+ 7750 293.84064 -3341.412 -2904.3463 133.19423 11517.036
+ 7760 298.49089 -3343.5661 -2899.5835 68.36009 11517.328
+ 7770 304.47888 -3347.2405 -2894.3513 -27.399709 11517.621
+ 7780 309.14688 -3351.2474 -2891.4149 -113.7672 11517.914
+ 7790 311.07368 -3351.7724 -2889.0739 -133.23222 11518.206
+ 7800 310.3258 -3351.8828 -2890.2967 -121.32654 11518.495
+ 7810 307.9574 -3351.6022 -2893.5389 -90.381785 11518.782
+ 7820 305.43581 -3350.0399 -2895.7273 -44.531992 11519.068
+ 7830 303.7384 -3349.6714 -2897.8836 -21.94001 11519.353
+ 7840 303.09979 -3349.7234 -2898.8854 -15.848337 11519.639
+ 7850 302.93624 -3349.6904 -2899.0957 -14.385669 11519.924
+ 7860 302.65854 -3349.7153 -2899.5337 -14.747167 11520.209
+ 7870 302.86664 -3349.9225 -2899.4313 -26.795339 11520.494
+ 7880 305.38257 -3350.3056 -2896.0722 -68.826155 11520.779
+ 7890 311.72359 -3353.165 -2889.4998 -180.14303 11521.063
+ 7900 321.55808 -3360.0045 -2881.7112 -370.77031 11521.344
+ 7910 331.85809 -3366.5012 -2872.8874 -557.79202 11521.617
+ 7920 338.10994 -3370.1116 -2867.1987 -666.88374 11521.881
+ 7930 337.86647 -3370.4263 -2867.8756 -667.64651 11522.132
+ 7940 331.86795 -3367.0069 -2873.3785 -562.61234 11522.37
+ 7950 322.98764 -3360.2779 -2879.8583 -387.31784 11522.598
+ 7960 314.61616 -3354.2878 -2886.3201 -225.88351 11522.818
+ 7970 309.22509 -3351.5523 -2891.6035 -136.60516 11523.035
+ 7980 307.53212 -3351.2135 -2893.7828 -119.9803 11523.249
+ 7990 308.6522 -3351.3826 -2892.2858 -146.34991 11523.46
+ 8000 311.10839 -3352.4151 -2889.6649 -202.31202 11523.669
+ 8010 313.6714 -3353.3854 -2886.823 -260.34751 11523.875
+ 8020 315.51429 -3355.4694 -2886.1658 -321.103 11524.076
+ 8030 316.10417 -3357.2688 -2887.0878 -359.27335 11524.27
+ 8040 315.24064 -3356.8152 -2887.9186 -350.72975 11524.458
+ 8050 313.66316 -3355.2422 -2888.692 -314.74307 11524.64
+ 8060 312.09836 -3354.074 -2889.8513 -277.9751 11524.815
+ 8070 310.92505 -3353.6896 -2891.2121 -249.82225 11524.985
+ 8080 309.74362 -3352.2501 -2891.5299 -207.09531 11525.151
+ 8090 307.42157 -3352.309 -2895.0427 -170.25301 11525.313
+ 8100 303.10439 -3348.3168 -2897.472 -70.729221 11525.472
+ 8110 297.38051 -3344.6006 -2902.2696 32.550668 11525.629
+ 8120 292.69912 -3341.2979 -2905.9302 112.87675 11525.788
+ 8130 291.57542 -3339.1112 -2905.4149 139.63086 11525.949
+ 8140 294.16815 -3340.7698 -2903.217 83.563887 11526.112
+ 8150 297.6463 -3342.867 -2900.1407 13.030378 11526.278
+ 8160 298.6586 -3341.3986 -2897.1665 5.2224908 11526.444
+ 8170 296.9544 -3339.7519 -2898.0548 25.124235 11526.61
+ 8180 295.04168 -3338.7573 -2899.9051 36.477186 11526.777
+ 8190 296.00958 -3339.8866 -2899.5948 -7.7425821 11526.945
+ 8200 301.61902 -3345.5931 -2896.9577 -151.25682 11527.113
+ 8210 311.55533 -3350.4222 -2887.0072 -325.4528 11527.278
+ 8220 323.26779 -3358.9072 -2878.0709 -551.95234 11527.437
+ 8230 333.02072 -3363.6356 -2868.2926 -706.24499 11527.585
+ 8240 337.75868 -3365.2482 -2862.8577 -765.5497 11527.72
+ 8250 336.71264 -3364.9531 -2864.1186 -738.44175 11527.841
+ 8260 331.31945 -3361.971 -2869.1584 -632.40895 11527.947
+ 8270 323.82068 -3357.8969 -2876.2382 -491.06861 11528.042
+ 8280 316.70963 -3354.213 -2883.1315 -359.60696 11528.127
+ 8290 311.95286 -3352.1935 -2888.1872 -272.13299 11528.205
+ 8300 309.1869 -3350.4105 -2890.5184 -211.24226 11528.277
+ 8310 306.99003 -3349.0003 -2892.3759 -165.04701 11528.346
+ 8320 304.8242 -3348.0026 -2894.5997 -127.29959 11528.412
+ 8330 303.21292 -3345.5227 -2894.5165 -77.558764 11528.475
+ 8340 302.16058 -3344.8542 -2895.4133 -55.579038 11528.537
+ 8350 301.47629 -3346.3944 -2897.9713 -66.09961 11528.598
+ 8360 301.26334 -3346.5318 -2898.4254 -69.766965 11528.658
+ 8370 302.11633 -3346.5696 -2897.1944 -87.771656 11528.716
+ 8380 304.69562 -3347.9876 -2894.776 -143.45346 11528.773
+ 8390 309.03806 -3351.2052 -2891.5345 -239.90661 11528.827
+ 8400 314.22236 -3354.9709 -2887.589 -351.50275 11528.877
+ 8410 318.94753 -3357.2618 -2882.8516 -438.35192 11528.92
+ 8420 321.99727 -3358.7358 -2879.7893 -490.67335 11528.954
+ 8430 322.48884 -3359.2095 -2879.5318 -495.187 11528.979
+ 8440 320.16122 -3357.9898 -2881.7743 -442.66186 11528.995
+ 8450 315.6505 -3354.1772 -2884.671 -333.19064 11529.002
+ 8460 310.5895 -3351.7194 -2889.741 -233.13952 11529.003
+ 8470 306.89497 -3348.7034 -2892.2204 -143.50316 11528.999
+ 8480 305.14217 -3347.6056 -2893.7298 -101.50711 11528.993
+ 8490 304.52595 -3346.1924 -2893.2332 -75.065192 11528.984
+ 8500 304.11183 -3346.4853 -2894.142 -79.392459 11528.974
+ 8510 304.61174 -3345.6612 -2892.5743 -86.34914 11528.963
+ 8520 307.88405 -3347.9486 -2889.9944 -158.48461 11528.95
+ 8530 314.63894 -3352.4928 -2884.4912 -288.0114 11528.934
+ 8540 322.25931 -3358.1341 -2878.7978 -435.25627 11528.912
+ 8550 327.01844 -3361.2711 -2874.856 -524.24584 11528.882
+ 8560 327.34202 -3362.1929 -2875.2965 -541.08697 11528.842
+ 8570 323.85526 -3361.6998 -2879.9896 -498.81304 11528.791
+ 8580 318.22682 -3357.7176 -2884.3793 -389.60472 11528.731
+ 8590 312.24724 -3353.1177 -2888.6736 -266.35955 11528.663
+ 8600 307.3095 -3351.0387 -2893.9391 -182.3061 11528.589
+ 8610 304.18179 -3348.1622 -2895.7149 -110.96527 11528.512
+ 8620 303.32282 -3347.8067 -2896.637 -94.727775 11528.433
+ 8630 304.20989 -3348.4545 -2895.9653 -110.16439 11528.352
+ 8640 304.87942 -3347.5146 -2894.0296 -108.94149 11528.268
+ 8650 303.6619 -3347.0638 -2895.3898 -100.58056 11528.183
+ 8660 301.37198 -3345.789 -2897.521 -78.782282 11528.095
+ 8670 300.04415 -3345.3997 -2899.1068 -81.430053 11528.006
+ 8680 300.39948 -3347.1527 -2900.3312 -127.70106 11527.916
+ 8690 302.0573 -3348.8313 -2899.544 -185.54826 11527.822
+ 8700 304.67801 -3351.2688 -2898.0834 -255.24311 11527.726
+ 8710 307.27035 -3352.8996 -2895.8583 -306.0822 11527.624
+ 8720 308.65642 -3352.5692 -2893.4662 -314.3749 11527.516
+ 8730 308.66128 -3351.3467 -2892.2364 -292.13143 11527.402
+ 8740 307.74951 -3350.5864 -2892.8323 -262.84805 11527.282
+ 8750 306.70608 -3351.0581 -2894.8561 -247.4109 11527.157
+ 8760 306.58174 -3352.6507 -2896.6336 -258.99204 11527.027
+ 8770 308.31783 -3353.4836 -2894.8842 -285.41284 11526.893
+ 8780 311.48922 -3355.1171 -2891.8005 -338.56429 11526.752
+ 8790 314.09633 -3357.5743 -2890.3798 -397.06566 11526.605
+ 8800 314.25472 -3357.6588 -2890.2287 -405.99852 11526.45
+ 8810 312.1632 -3354.3149 -2889.9958 -352.6298 11526.287
+ 8820 309.14287 -3352.0829 -2892.2564 -301.75194 11526.117
+ 8830 306.62076 -3349.5162 -2893.4411 -251.6249 11525.941
+ 8840 305.55541 -3349.8697 -2895.3792 -249.90882 11525.76
+ 8850 306.61272 -3349.6262 -2893.563 -262.61965 11525.574
+ 8860 309.46903 -3351.7363 -2891.4245 -319.32166 11525.382
+ 8870 312.36899 -3354.0126 -2889.3874 -376.80729 11525.184
+ 8880 313.20342 -3355.8775 -2890.0112 -407.43006 11524.979
+ 8890 311.10745 -3355.3203 -2892.5715 -381.29046 11524.766
+ 8900 307.26106 -3352.7114 -2895.6838 -316.41308 11524.545
+ 8910 304.26247 -3351.8381 -2899.2707 -283.13119 11524.318
+ 8920 304.3996 -3350.8917 -2898.1204 -283.79477 11524.085
+ 8930 307.8689 -3351.5834 -2893.6517 -338.54338 11523.846
+ 8940 312.62913 -3355.7466 -2890.7345 -445.53697 11523.601
+ 8950 315.80299 -3359.0224 -2889.2894 -525.818 11523.346
+ 8960 315.88398 -3359.7745 -2889.921 -541.75986 11523.081
+ 8970 313.2025 -3358.606 -2892.741 -503.00064 11522.806
+ 8980 309.83322 -3356.2057 -2895.3523 -438.12601 11522.521
+ 8990 307.75264 -3354.7757 -2897.017 -392.17012 11522.227
+ 9000 307.40965 -3354.2102 -2896.9616 -369.61187 11521.925
+ 9010 308.09248 -3354.839 -2896.5747 -368.59021 11521.615
+ 9020 308.53578 -3355.5811 -2896.6575 -364.14449 11521.298
+ 9030 307.24075 -3353.3562 -2896.3588 -308.75491 11520.974
+ 9040 304.29503 -3351.25 -2898.6342 -241.06798 11520.643
+ 9050 301.80372 -3349.7028 -2900.7926 -191.1793 11520.308
+ 9060 302.4306 -3349.7821 -2899.9395 -199.74602 11519.968
+ 9070 307.16468 -3354.2341 -2897.3499 -309.15085 11519.624
+ 9080 314.72831 -3359.6142 -2891.4797 -465.93442 11519.273
+ 9090 322.37965 -3365.9898 -2886.4745 -638.2709 11518.913
+ 9100 327.16421 -3366.8339 -2880.202 -716.00069 11518.541
+ 9110 327.18118 -3369.195 -2882.5378 -753.42631 11518.154
+ 9120 322.26008 -3367.4288 -2888.0913 -683.51655 11517.753
+ 9130 314.58369 -3363.218 -2895.2986 -550.97628 11517.338
+ 9140 308.14737 -3360.0774 -2901.7315 -436.99754 11516.911
+ 9150 305.50965 -3359.6664 -2905.2439 -387.29682 11516.476
+ 9160 305.25737 -3358.1748 -2904.1276 -350.52217 11516.033
+ 9170 304.21321 -3358.4051 -2905.911 -333.00613 11515.583
+ 9180 301.30043 -3356.3724 -2908.2109 -279.08188 11515.125
+ 9190 297.70421 -3355.2106 -2912.3981 -234.60068 11514.662
+ 9200 294.72864 -3352.8745 -2914.4879 -190.01759 11514.194
+ 9210 293.52937 -3350.5029 -2913.9003 -171.12443 11513.722
+ 9220 295.56729 -3352.3325 -2912.6986 -234.14175 11513.245
+ 9230 300.16589 -3357.4066 -2910.9325 -356.14708 11512.764
+ 9240 304.43295 -3359.7747 -2906.9537 -437.6243 11512.275
+ 9250 305.70803 -3360.0752 -2905.3577 -458.53257 11511.777
+ 9260 303.83978 -3358.8637 -2906.925 -423.08933 11511.27
+ 9270 300.66142 -3356.0164 -2908.8053 -348.9794 11510.755
+ 9280 297.62179 -3354.8346 -2912.1447 -292.70075 11510.231
+ 9290 295.28593 -3352.2637 -2913.0483 -230.9581 11509.702
+ 9300 294.75163 -3352.3032 -2913.8825 -223.02087 11509.167
+ 9310 297.64337 -3354.431 -2911.709 -274.89398 11508.628
+ 9320 303.57215 -3359.5873 -2908.0467 -390.42084 11508.082
+ 9330 309.79552 -3364.5511 -2903.7538 -503.91945 11507.529
+ 9340 313.2733 -3368.2661 -2902.2958 -569.87496 11506.965
+ 9350 312.51189 -3367.786 -2902.9483 -538.43272 11506.389
+ 9360 308.18974 -3362.7557 -2904.3468 -410.87833 11505.803
+ 9370 301.64777 -3358.914 -2910.2358 -268.2767 11505.208
+ 9380 294.01535 -3354.0969 -2916.7713 -102.26455 11504.608
+ 9390 286.42885 -3349.6998 -2923.6586 51.691325 11504.005
+ 9400 280.79559 -3346.5602 -2928.898 161.85019 11503.402
+ 9410 278.51774 -3344.5321 -2930.258 214.09562 11502.801
+ 9420 279.98353 -3346.102 -2929.6477 175.5397 11502.204
+ 9430 285.3047 -3350.2985 -2925.9293 58.929268 11501.609
+ 9440 294.12097 -3355.9771 -2918.4945 -113.13272 11501.015
+ 9450 304.52346 -3364.1479 -2911.1923 -327.60612 11500.418
+ 9460 313.17065 -3370.4081 -2904.5905 -499.91157 11499.815
+ 9470 317.70096 -3373.6085 -2901.0524 -591.33903 11499.201
+ 9480 317.96088 -3374.5599 -2901.6172 -608.3187 11498.575
+ 9490 315.15546 -3372.4647 -2903.6948 -552.03024 11497.937
+ 9500 310.14563 -3369.1965 -2907.8783 -456.47625 11497.287
+ 9510 304.02294 -3365.332 -2913.1209 -345.09093 11496.628
+ 9520 298.64511 -3362.3416 -2918.1296 -253.58254 11495.962
+ 9530 295.35504 -3360.7 -2921.3818 -202.11227 11495.289
+ 9540 294.95012 -3361.8491 -2923.1332 -215.83415 11494.612
+ 9550 297.65034 -3363.9567 -2921.2244 -273.55846 11493.93
+ 9560 302.50211 -3368.2547 -2918.3057 -377.18332 11493.242
+ 9570 307.41371 -3370.4918 -2913.2373 -454.17068 11492.546
+ 9580 309.54755 -3371.0591 -2910.6306 -476.92796 11491.841
+ 9590 307.01513 -3370.6921 -2914.0304 -433.68138 11491.125
+ 9600 300.7544 -3365.6611 -2918.3117 -293.25954 11490.401
+ 9610 293.83973 -3361.6451 -2924.5808 -152.08169 11489.67
+ 9620 288.72838 -3357.746 -2928.2844 -29.79723 11488.935
+ 9630 286.46956 -3354.5058 -2928.404 49.429412 11488.199
+ 9640 287.18314 -3354.8959 -2927.7327 46.989267 11487.463
+ 9650 290.47734 -3357.742 -2925.679 -16.148741 11486.727
+ 9660 295.04968 -3360.1042 -2921.2402 -89.101723 11485.99
+ 9670 298.89774 -3363.3137 -2918.726 -163.41949 11485.25
+ 9680 300.53559 -3366.2722 -2919.2483 -210.72101 11484.506
+ 9690 300.21874 -3366.3815 -2919.8288 -201.85445 11483.757
+ 9700 298.63409 -3366.584 -2922.3885 -178.18559 11483.004
+ 9710 296.05685 -3366.0075 -2925.6454 -135.16147 11482.247
+ 9720 292.70828 -3364.2666 -2928.8852 -73.563179 11481.486
+ 9730 289.58604 -3362.5351 -2931.7978 -19.522852 11480.722
+ 9740 289.1845 -3363.3526 -2933.2126 -25.750398 11479.958
+ 9750 292.69332 -3365.1292 -2929.77 -82.067448 11479.192
+ 9760 297.26289 -3367.5963 -2925.4402 -156.30534 11478.424
+ 9770 300.17108 -3367.9325 -2921.4507 -186.0603 11477.652
+ 9780 300.90451 -3366.9822 -2919.4095 -169.43615 11476.875
+ 9790 299.24006 -3366.4471 -2921.3501 -124.78377 11476.095
+ 9800 295.56249 -3365.1255 -2925.4986 -48.818019 11475.311
+ 9810 292.10883 -3362.3646 -2927.8748 38.209423 11474.526
+ 9820 291.6892 -3363.1483 -2929.2827 49.070773 11473.74
+ 9830 294.80999 -3365.9657 -2927.4581 -5.18692 11472.954
+ 9840 299.01823 -3368.3079 -2923.5409 -71.924901 11472.167
+ 9850 301.21865 -3370.0005 -2921.9606 -118.83457 11471.378
+ 9860 300.44714 -3370.2869 -2923.3945 -125.01076 11470.586
+ 9870 298.10238 -3368.497 -2925.0923 -92.599089 11469.791
+ 9880 296.49009 -3368.8889 -2927.8824 -87.05363 11468.993
+ 9890 296.76867 -3370.5074 -2929.0865 -108.41595 11468.192
+ 9900 299.02008 -3372.0904 -2927.3207 -142.19146 11467.389
+ 9910 301.69925 -3372.9022 -2924.1474 -164.99169 11466.581
+ 9920 302.02903 -3373.2367 -2923.9914 -158.48598 11465.77
+ 9930 298.8742 -3370.2488 -2925.6961 -83.917419 11464.955
+ 9940 294.48045 -3367.8988 -2929.8814 -10.603467 11464.137
+ 9950 292.64582 -3367.2075 -2931.9191 17.258365 11463.318
+ 9960 294.32226 -3369.3233 -2931.5413 -19.926455 11462.498
+ 9970 297.41187 -3370.3834 -2928.0058 -56.315037 11461.678
+ 9980 299.45194 -3373.5209 -2928.1088 -100.19731 11460.855
+ 9990 299.07253 -3374.9531 -2930.1054 -94.065799 11460.029
+ 10000 296.53057 -3373.7946 -2932.7278 -32.299057 11459.201
+Loop time of 3.44538 on 1 procs for 10000 steps with 500 atoms
+
+Performance: 250.770 ns/day, 0.096 hours/ns, 2902.433 timesteps/s
+100.0% CPU use with 1 MPI tasks x no OpenMP threads
+
+MPI task timing breakdown:
+Section | min time | avg time | max time |%varavg| %total
+---------------------------------------------------------------
+Pair | 2.5497 | 2.5497 | 2.5497 | 0.0 | 74.00
+Bond | 0.00071812 | 0.00071812 | 0.00071812 | 0.0 | 0.02
+Neigh | 0.029731 | 0.029731 | 0.029731 | 0.0 | 0.86
+Comm | 0.088721 | 0.088721 | 0.088721 | 0.0 | 2.58
+Output | 0.0089715 | 0.0089715 | 0.0089715 | 0.0 | 0.26
+Modify | 0.34232 | 0.34232 | 0.34232 | 0.0 | 9.94
+Other | | 0.4253 | | | 12.34
+
+Nlocal: 500 ave 500 max 500 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Nghost: 1636 ave 1636 max 1636 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+Neighs: 14844 ave 14844 max 14844 min
+Histogram: 1 0 0 0 0 0 0 0 0 0
+
+Total # of neighbors = 14844
+Ave neighs/atom = 29.688
+Ave special neighs/atom = 0
+Neighbor list builds = 31
+Dangerous builds = 0
+
+#write_data ${rep}/lj-out.data
+Total wall time: 0:00:03
diff --git a/examples/USER/misc/grem/lj-temper/in.gREM-temper b/examples/USER/misc/grem/lj-temper/in.gREM-temper
new file mode 100644
index 000000000..9e94edec7
--- /dev/null
+++ b/examples/USER/misc/grem/lj-temper/in.gREM-temper
@@ -0,0 +1,31 @@
+# LJ particles
+variable lambda world 900 910 920 930
+variable rep world 0 1 2 3
+#variable walker world 0 1 3 2
+
+variable T0 equal 300.0
+variable press equal 0.0
+
+units real
+atom_style full
+pair_style lj/cut 5.0
+
+# LJ particles
+log ${rep}/log.lammps.${rep}
+print "This is replica: ${rep}"
+
+read_data ${rep}/lj.data
+
+#dump dump all xyz 1000 ${rep}/dump.xyz
+
+thermo 10
+thermo_style custom step temp pe etotal press vol
+timestep 1.0
+
+fix fxnpt all npt temp ${T0} ${T0} 1000.0 iso ${press} ${press} 10000.0
+fix fxgREM all grem ${lambda} -.03 -30000 fxnpt
+thermo_modify press fxgREM_press
+
+temper/grem 10000 100 ${lambda} fxgREM fxnpt 10294 98392 #${walker}
+
+#write_data ${rep}/lj-out.data
diff --git a/examples/USER/smd/aluminum_strip_pull/aluminum_strip_pull.lmp b/examples/USER/smd/aluminum_strip_pull/aluminum_strip_pull.lmp
index 10a81b191..b75bab10e 100644
--- a/examples/USER/smd/aluminum_strip_pull/aluminum_strip_pull.lmp
+++ b/examples/USER/smd/aluminum_strip_pull/aluminum_strip_pull.lmp
@@ -1,139 +1,139 @@
####################################################################################################
#
# TLSPH example: elongate a 2d strip of aluminum py pulling its ends apart
#
# unit sytem: GPa / mm / ms
#
####################################################################################################
####################################################################################################
# MATERIAL PARAMETERS
####################################################################################################
variable E equal 70.0 # Young's modulus
variable nu equal 0.3 # Poisson ratio
variable rho equal 1 # initial mass density
variable q1 equal 0.56 # standard artificial viscosity linear coefficient
variable q2 equal 0.0 # standard artificial viscosity quadratic coefficient
variable hg equal 10.0 # hourglass control coefficient
variable cp equal 1.0 # heat capacity of material -- not used here
variable JC_A equal 0.3241 # Johnson Cook arameters
variable JC_B equal 0.1138
variable JC_N equal 0.42
variable JC_C equal 0 #0.002
variable JC_M equal 1.34
variable JC_epsdot0 equal 1.0e-3 # 1/s = 1/(1000 ms)
variable Troom equal 298.15
variable Tmelt equal 500.15
variable eosC0 equal 0.0 # Polynomial EOS parameters
variable eosC1 equal 74.2
variable eosC2 equal 60.5
variable eosC3 equal 36.5
variable eosC4 equal 1.96
variable eosC5 equal 0.0
variable eosC6 equal 0.0
####################################################################################################
# INITIALIZE LAMMPS
####################################################################################################
dimension 2
units si
boundary sm sm p # simulation box boundaries
atom_style smd
atom_modify map array
comm_modify vel yes
neigh_modify every 10 delay 0 check yes # re-build neighbor list every 10 steps
newton off
####################################################################################################
# CREATE INITIAL GEOMETRY
####################################################################################################
variable l0 equal 1.0 # lattice spacing for creating particles
lattice sq ${l0}
region box block -10 10 -10 10 -0.1 0.1 units box
create_box 1 box
create_atoms 1 box
group tlsph type 1
####################################################################################################
# DISCRETIZATION PARAMETERS
####################################################################################################
variable h equal 2.01*${l0} # SPH smoothing kernel radius
variable vol_one equal ${l0}^2 # volume of one particle -- assuming unit thickness
variable skin equal ${h} # Verlet list range
neighbor ${skin} bin
set group all volume ${vol_one}
set group all smd/mass/density ${rho}
set group all diameter ${h} # set SPH kernel radius
####################################################################################################
# DEFINE VELOCITY BOUNDARY CONDITIONS
####################################################################################################
variable vel0 equal 0.02 # pull velocity
region top block EDGE EDGE 9.0 EDGE EDGE EDGE units box
region bot block EDGE EDGE EDGE -9.1 EDGE EDGE units box
group top region top
group bot region bot
variable vel_up equal ${vel0}*(1.0-exp(-0.01*time))
variable vel_down equal -v_vel_up
fix veltop_fix top smd/setvelocity 0 v_vel_up 0
fix velbot_fix bot smd/setvelocity 0 v_vel_down 0
####################################################################################################
# INTERACTION PHYSICS / MATERIAL MODEL
# We use polynomial EOS for the pressure and the Johnson Cook strength model
# An integration point fails (cannot support tension anymore) if the plastic strain exceeds 0.5.
####################################################################################################
pair_style smd/tlsph
pair_coeff 1 1 *COMMON ${rho} ${E} ${nu} ${q1} ${q2} ${hg} ${cp} &
*EOS_POLYNOMIAL ${eosC0} ${eosC1} ${eosC2} ${eosC3} ${eosC4} ${eosC5} ${eosC6} &
*JOHNSON_COOK ${JC_A} ${JC_B} ${JC_N} ${JC_C} ${JC_epsdot0} ${Troom} ${Tmelt} ${JC_M} &
*FAILURE_MAX_PLASTIC_STRAIN 1.2 &
*END
####################################################################################################
# TIME INTEGRATION
####################################################################################################
fix dtfix tlsph smd/adjust_dt 0.1 # dynamically adjust time increment every step
fix integration_fix tlsph smd/integrate_tlsph
####################################################################################################
# SPECIFY TRAJECTORY OUTPUT
####################################################################################################
-compute dt_atom all smd/tlsph_dt
-compute p all smd/plastic_strain
-compute epsdot all smd/plastic_strain_rate
-compute S all smd/tlsph_stress # Cauchy stress tensor
-compute D all smd/tlsph_strain_rate
-compute E all smd/tlsph_strain
-compute nn all smd/tlsph_num_neighs # number of neighbors for each particle
-compute shape all smd/tlsph_shape
+compute dt_atom all smd/tlsph/dt
+compute p all smd/plastic/strain
+compute epsdot all smd/plastic/strain/rate
+compute S all smd/tlsph/stress # Cauchy stress tensor
+compute D all smd/tlsph/strain/rate
+compute E all smd/tlsph/strain
+compute nn all smd/tlsph/num/neighs # number of neighbors for each particle
+compute shape all smd/tlsph/shape
compute damage all smd/damage
dump dump_id all custom 100 dump.LAMMPS id type x y z &
c_S[1] c_S[2] c_S[3] c_S[4] c_S[5] c_S[6] c_S[7] c_nn c_p &
c_E[1] c_E[2] c_E[3] c_E[4] c_E[5] c_E[6] &
c_shape[1] c_shape[2] c_shape[3] c_shape[4] c_shape[5] c_shape[6] c_shape[7] &
c_D[1] c_D[2] c_D[4] c_damage radius c_epsdot &
vx vy vz c_dt_atom
dump_modify dump_id first yes
####################################################################################################
# STATUS OUTPUT
####################################################################################################
variable stress equal 0.5*(f_velbot_fix[2]-f_veltop_fix[2])/20
variable length equal xcm(top,y)-xcm(bot,y)
variable strain equal (v_length-${length})/${length} # engineering strain
variable time equal f_dtfix
fix stress_curve all print 10 "${time} ${strain} ${stress}" file stress_strain.dat screen no
thermo 100
thermo_style custom step dt f_dtfix time v_strain
####################################################################################################
# RUN SIMULATION
####################################################################################################
#fix 2 all enforce2d
run 25000
diff --git a/examples/USER/smd/fluid_structure_interaction/fluid_structure_interaction.lmp b/examples/USER/smd/fluid_structure_interaction/fluid_structure_interaction.lmp
index 18b047417..5100a52d8 100644
--- a/examples/USER/smd/fluid_structure_interaction/fluid_structure_interaction.lmp
+++ b/examples/USER/smd/fluid_structure_interaction/fluid_structure_interaction.lmp
@@ -1,156 +1,156 @@
####################################################################################################
#
# combined TLSPH / ULSPH example
#
# A column of water is placed in a container and allowed to collapse unter the
# influence of gravity. Several solid objects are also placed in the container.
# The water flow pushes the solid objects around until the sytem comes to halt due to
# viscous damping. The solid objects have a lower mass density than water and finally float on
# the water surface.
#
# Water is modelled using the Updated Lagrangian formalism. Solid bodies are modelled using the
# Total Lagrangian formalism. Contact forces between container, solid bodies, and water prevent
# mutual penetration of these physical entities.
#
# unit sytem: GPa / mm / ms
#
####################################################################################################
####################################################################################################
# MATERIAL PARAMETERS
####################################################################################################
variable rho_water equal 1000 # mass density water
variable rho_obj equal 300 # mass density solid objects
variable c0 equal 10.0 # speed of sound for water
variable E equal 5*${c0}*${c0}*${rho_water} # Young's modulus for solid objects
variable nu equal 0.3 # Poisson ratio for solid objects
variable sigma_yield equal 0.1*${E} # plastic yield stress for solid objects
variable hardening_parameter equal 0 # plastic hardening parameter for solid objects
variable contact_stiffness equal 2.5*${c0}^2*${rho_water} # contact force amplitude
variable q1 equal 1.0 # artificial viscosity
variable q2 equal 0.0 # artificial viscosity
variable Hg equal 10 # Hourglass control coefficient for solid objects
variable Cp equal 1.0 # heat capacity -- not used here
####################################################################################################
# INITIALIZE LAMMPS
####################################################################################################
units si
dimension 2
boundary sm sm p
atom_style smd
neigh_modify every 5 delay 0 check yes
comm_modify vel yes
newton off
atom_modify map array
comm_style tiled
####################################################################################################
# CREATE INITIAL GEOMETRY
####################################################################################################
# create simulation box, a container, and a water column
variable l0 equal 0.05 # initial particle lattice spacing
region box block 0 6 0 8 -0.01 0.01 units box
create_box 3 box
region water block 0.25 1 0.25 4 EDGE EDGE units box
region container block 0.15 5.85 0.15 8 -0.01 0.01 units box side out # container
lattice sq ${l0}
create_atoms 1 region water
group water type 1
create_atoms 3 region container
group container type 3
# create some solid objects to be pushed around
region obj1 prism 2 2.6 0.25 0.85 EDGE EDGE 0.3 0 0 units box
region obj2 block 3 3.6 0.25 0.85 EDGE EDGE units box
region obj3 sphere 4.3 0.5 0 0.25 units box
create_atoms 2 region obj1
create_atoms 2 region obj2
create_atoms 2 region obj3
group solids type 2
group tlsph type 2
####################################################################################################
# DISCRETIZATION PARAMETERS
####################################################################################################
variable h equal 2.5*${l0} # SPH kernel diameter
variable vol_one equal ${l0}^2 # initial particle volume for 2d simulation
set group all diameter ${h}
set group all smd/contact/radius ${l0}
set group all volume ${vol_one}
set group all smd/mass/density ${rho_water}
set group solids smd/mass/density ${rho_obj}
variable contact_scale equal 1.5 # scale factor to increase contact gap between bodies
variable skin equal ${h} # Verlet list range
neighbor ${skin} bin
####################################################################################################
# DEFINE BOUNDARY CONDITIONS
#
# note that the the particles constituting the container are simply not integrated in time,
# thus these particles never move. This is equivalent to a fixed displacement boundary condition.
####################################################################################################
fix gfix all gravity -9.81 vector 0 1 0 # add gravity
####################################################################################################
# INTERACTION PHYSICS / MATERIAL MODEL
# 3 different pair styles are used:
# - updated Lagrangian SPH for water
# - total Lagrangian SPH for solid objects
# - a repulsive Hertzian potential for contact forces between different physical bodies
####################################################################################################
pair_style hybrid/overlay smd/ulsph *DENSITY_CONTINUITY *VELOCITY_GRADIENT *NO_GRADIENT_CORRECTION &
smd/tlsph smd/hertz ${contact_scale}
pair_coeff 1 1 smd/ulsph *COMMON ${rho_water} ${c0} ${q1} ${Cp} 0 &
*EOS_TAIT 7.0 &
*END
pair_coeff 2 2 smd/tlsph *COMMON ${rho_obj} ${E} ${nu} ${q1} ${q2} ${Hg} ${Cp} &
*STRENGTH_LINEAR_PLASTIC ${sigma_yield} ${hardening_parameter} &
*EOS_LINEAR &
*END
pair_coeff 3 3 none
pair_coeff 1 2 smd/hertz ${contact_stiffness}
pair_coeff 1 3 smd/hertz ${contact_stiffness}
pair_coeff 2 3 smd/hertz ${contact_stiffness}
pair_coeff 2 2 smd/hertz ${contact_stiffness}
####################################################################################################
# TIME INTEGRATION
####################################################################################################
fix dtfix tlsph smd/adjust_dt 0.1 # dynamically adjust time increment every step
fix integration_fix_water water smd/integrate_ulsph adjust_radius 1.01 10 15
fix integration_fix_solids solids smd/integrate_tlsph
####################################################################################################
# SPECIFY TRAJECTORY OUTPUT
####################################################################################################
-compute eint all smd/internal_energy
-compute contact_radius all smd/contact_radius
-compute S solids smd/tlsph_stress
-compute nn water smd/ulsph_num_neighs
-compute epl solids smd/plastic_strain
+compute eint all smd/internal/energy
+compute contact_radius all smd/contact/radius
+compute S solids smd/tlsph/stress
+compute nn water smd/ulsph/num/neighs
+compute epl solids smd/plastic/strain
compute vol all smd/volume
compute rho all smd/rho
dump dump_id all custom 100 dump.LAMMPS id type x y &
fx fy vx vy c_eint c_contact_radius mol &
c_S[1] c_S[2] c_S[4] mass radius c_epl c_vol c_rho c_nn proc
dump_modify dump_id first yes
####################################################################################################
# STATUS OUTPUT
####################################################################################################
compute alleint all reduce sum c_eint
variable etot equal pe+ke+c_alleint+f_gfix # total energy of the system
thermo 100
thermo_style custom step ke pe v_etot c_alleint f_dtfix dt
thermo_modify lost ignore
####################################################################################################
# RUN SIMULATION
####################################################################################################
fix balance_fix all balance 1000 0.9 rcb # load balancing for MPI
run 40000
diff --git a/examples/USER/smd/funnel_flow/funnel_flow.lmp b/examples/USER/smd/funnel_flow/funnel_flow.lmp
index 5195b55be..7cc1e13f4 100644
--- a/examples/USER/smd/funnel_flow/funnel_flow.lmp
+++ b/examples/USER/smd/funnel_flow/funnel_flow.lmp
@@ -1,130 +1,130 @@
####################################################################################################
#
# ULSPH example: water flow through a complex geometry read from a .STL file
#
# The boundary dump file (see below) can be converted into VTK format using the conversion
# tool dump2vtk_tris from the tools/smd directory.
#
# unit sytem: GPa / mm / ms
#
####################################################################################################
####################################################################################################
# MATERIAL PARAMETERS
####################################################################################################
variable c0 equal 10.0 # speed of sound for fluid
variable rho equal 1.0e-6 # initial mass density
variable q1 equal 0.06 # standard artificial viscosity linear coefficient
variable q2 equal 0.0 # standard artificial viscosity quadratic coefficient
variable hg equal 0.0 # hourglass control coefficient
variable cp equal 1.0 # heat capacity of material -- not used here
variable K equal ${c0}*${rho}^2
variable contact_stiffness equal 0.1*${K}
####################################################################################################
# INITIALIZE LAMMPS
####################################################################################################
dimension 3
units si
boundary f f f # simulation box boundaries
atom_style smd
atom_modify map array
comm_modify vel yes
comm_style tiled
neigh_modify every 10 delay 0 check yes exclude type 2 2 one 10000
newton off
####################################################################################################
# CREATE INITIAL GEOMETRY
####################################################################################################
variable l0 equal 5.0 # lattice spacing for creating particles
lattice sc ${l0}
region box block -110 60 -30 220 -90 130 units box
create_box 2 box
region particles cylinder y 0 -30 47 135 200 units box
create_atoms 1 region particles
group water type 1
####################################################################################################
# DISCRETIZATION PARAMETERS
####################################################################################################
variable h equal 2.01*${l0} # SPH smoothing kernel radius
variable vol_one equal ${l0}^3 # volume of one particle -- assuming unit thickness
variable skin equal 0.1*${h} # Verlet list range
neighbor ${skin} bin
variable cr equal ${l0}/2
set group all smd/contact/radius ${cr}
set group all volume ${vol_one}
set group all smd/mass/density ${rho}
set group all diameter ${h} # set SPH kernel radius
####################################################################################################
# DEFINE GRAVITY BOUNDARY CONDITION
####################################################################################################
fix gfix all gravity 0.01 vector 0.0 -1. 0.0
####################################################################################################
# INTERACTION PHYSICS / MATERIAL MODEL
# We use polynomial EOS for the pressure and the Johnson Cook strength model
# An integration point fails (cannot support tension anymore) if the plastic strain exceeds 0.5.
####################################################################################################
pair_style hybrid/overlay smd/tri_surface 1.0 &
smd/ulsph *DENSITY_CONTINUITY *VELOCITY_GRADIENT *NO_GRADIENT_CORRECTION
pair_coeff 1 1 smd/ulsph *COMMON ${rho} ${c0} ${q1} ${cp} ${hg} &
*EOS_TAIT 2 &
*END
pair_coeff 2 2 none
pair_coeff 1 2 smd/tri_surface ${contact_stiffness}
####################################################################################################
# LOAD STL SURFACE
####################################################################################################
fix stl_surface_fix all smd/wall_surface boundary.stl 2 65535
run 0 # This is important! Always run for 0 timesteps directly after loading STL file!
group surface type 2
####################################################################################################
# TIME INTEGRATION
####################################################################################################
fix force_fix surface setforce 0 0 0
fix dtfix all smd/adjust_dt 0.1 # dynamically adjust time increment every step
fix integration_fix all smd/integrate_ulsph adjust_radius 1.01 10 15
####################################################################################################
# SPECIFY TRAJECTORY OUTPUT
####################################################################################################
variable dumpFreq equal 100
compute rho all smd/rho
-compute nn all smd/ulsph_num_neighs # number of neighbors for each particle
-compute contact_radius all smd/contact_radius
-compute surface_coords surface smd/triangle_vertices
+compute nn all smd/ulsph/num/neighs # number of neighbors for each particle
+compute contact_radius all smd/contact/radius
+compute surface_coords surface smd/triangle/vertices
dump dump_id water custom ${dumpFreq} dump.LAMMPS id type x y z vx vy vz &
c_rho c_nn c_contact_radius proc
dump_modify dump_id first yes
dump surf_dump surface custom 999999999 surface.LAMMPS id type mol x y z &
c_surface_coords[1] c_surface_coords[2] c_surface_coords[3] &
c_surface_coords[4] c_surface_coords[5] c_surface_coords[6] &
c_surface_coords[7] c_surface_coords[8] c_surface_coords[9]
dump_modify surf_dump first yes
####################################################################################################
# STATUS OUTPUT
####################################################################################################
-compute eint all smd/internal_energy
+compute eint all smd/internal/energy
compute alleint all reduce sum c_eint
variable etot equal pe+ke+c_alleint+f_gfix # total energy of the system
thermo 100
thermo_style custom step dt f_dtfix pe ke v_etot
####################################################################################################
# RUN SIMULATION
####################################################################################################
balance 1.1 rcb
fix balance_fix all balance 1000 1.1 rcb
run 20000
diff --git a/examples/USER/smd/rubber_rings_3d/rubber_rings_3d.lmp b/examples/USER/smd/rubber_rings_3d/rubber_rings_3d.lmp
index d2ede85c0..956abd6c4 100644
--- a/examples/USER/smd/rubber_rings_3d/rubber_rings_3d.lmp
+++ b/examples/USER/smd/rubber_rings_3d/rubber_rings_3d.lmp
@@ -1,112 +1,112 @@
####################################################################################################
#
# TLSPH example: Two rubber rings impact each other.
#
# unit sytem: GPa / mm / ms
#
####################################################################################################
####################################################################################################
# MATERIAL PARAMETERS
####################################################################################################
variable rho equal 1 # initial mass density
variable E equal 1.0 # Young's modulus
variable nu equal 0.3 # Poisson ratio
variable sigma_yield equal 0.051 # plastic yield stress
variable contact_stiffness equal 0.2 # contact stress for contact force between rings
variable q1 equal 0.06 # standard artificial viscosity linear coefficient
variable q2 equal 0.0 # standard artificial viscosity quadratic coefficient
variable hg equal 10.0 # hourglass control coefficient
variable cp equal 1.0 # heat capacity of material -- not used here
####################################################################################################
# INITIALIZE LAMMPS
####################################################################################################
dimension 3
units si
boundary sm sm sm # simulation box boundaries
atom_style smd
atom_modify map array
comm_modify vel yes
neigh_modify every 10 delay 0 check yes # re-build neighbor list every 10 steps
newton off
####################################################################################################
# READ GEOMETRY
####################################################################################################
read_data washer_hex_adjusted.data # read geometry of one rubber ring from file
replicate 2 1 1
region right block 12.2 EDGE EDGE EDGE EDGE EDGE units box
group right region right
group left subtract all right
set group left type 1
set group right type 2
group tlsph union left right
####################################################################################################
# DISCRETIZATION PARAMETERS
####################################################################################################
variable l0 equal 0.3 # we need to set a length scale for the neighbor list skin
variable skin equal 4.0*${l0} # Verlet list range
neighbor ${skin} bin
set group all smd/contact/radius 1.0
####################################################################################################
# DEFINE INITIAL VELOCITY BOUNDARY CONDITIONS
####################################################################################################
variable vel equal 100.0 # initial velocity
velocity left set ${vel} 0 0 sum no units box
velocity right set -${vel} 0 0 sum no units box
####################################################################################################
# INTERACTION PHYSICS / MATERIAL MODEL
# One rubber ring is linear elastic, the other rubber ring is elastic-ideal plastic.
# Contact forces between both rubber rings are used to realize physical contact.
####################################################################################################
pair_style hybrid/overlay smd/tlsph smd/hertz 1.0 # activate Total-Lagrangian SPH
pair_coeff 1 1 smd/tlsph *COMMON ${rho} ${E} ${nu} ${q1} ${q2} ${hg} ${cp} &
*STRENGTH_LINEAR &
*EOS_LINEAR &
*END
pair_coeff 2 2 smd/tlsph *COMMON ${rho} ${E} ${nu} ${q1} ${q2} ${hg} ${cp} &
*STRENGTH_LINEAR_PLASTIC ${sigma_yield} 0.0 &
*EOS_LINEAR &
*END
pair_coeff 1 1 smd/hertz ${contact_stiffness}
pair_coeff 2 2 smd/hertz ${contact_stiffness}
pair_coeff 1 2 smd/hertz ${contact_stiffness}
####################################################################################################
# TIME INTEGRATION
####################################################################################################
fix dtfix tlsph smd/adjust_dt 0.1 # dynamically adjust time increment every step
fix integration_fix tlsph smd/integrate_tlsph
####################################################################################################
# SPECIFY TRAJECTORY OUTPUT
####################################################################################################
variable dumpFreq equal 30
-compute S all smd/tlsph_stress # Cauchy stress tensor
-compute nn all smd/tlsph_num_neighs # number of neighbors for each particle
-compute cr all smd/contact_radius
-compute p all smd/plastic_strain
-compute eint all smd/internal_energy
+compute S all smd/tlsph/stress # Cauchy stress tensor
+compute nn all smd/tlsph/num/neighs # number of neighbors for each particle
+compute cr all smd/contact/radius
+compute p all smd/plastic/strain
+compute eint all smd/internal/energy
compute alleint all reduce sum c_eint
variable etot equal c_alleint+ke+pe
dump dump_id all custom ${dumpFreq} dump.LAMMPS id type x y z vx vy vz &
c_S[1] c_S[2] c_S[3] c_S[4] c_S[5] c_S[6] c_S[7] c_nn c_cr proc c_p radius
dump_modify dump_id first yes
####################################################################################################
# STATUS OUTPUT
####################################################################################################
thermo 100
thermo_style custom step dt f_dtfix ke pe c_alleint v_etot
####################################################################################################
# PERFORM INITIAL LOAD BALANCING AND RUN SIMULATION
####################################################################################################
run 5000
diff --git a/examples/USER/smd/rubber_strip_pull/rubber_strip_pull.lmp b/examples/USER/smd/rubber_strip_pull/rubber_strip_pull.lmp
index 88a7c896a..4e53daf99 100644
--- a/examples/USER/smd/rubber_strip_pull/rubber_strip_pull.lmp
+++ b/examples/USER/smd/rubber_strip_pull/rubber_strip_pull.lmp
@@ -1,109 +1,109 @@
####################################################################################################
#
# TLSPH example: elongate a 2d strip of a linear elastic material py pulling its ends apart
#
# unit sytem: GPa / mm / ms
#
####################################################################################################
####################################################################################################
# MATERIAL PARAMETERS
####################################################################################################
variable E equal 1.0 # Young's modulus
variable nu equal 0.3 # Poisson ratio
variable rho equal 1 # initial mass density
variable q1 equal 0.06 # standard artificial viscosity linear coefficient
variable q2 equal 0.0 # standard artificial viscosity quadratic coefficient
variable hg equal 10.0 # hourglass control coefficient
variable cp equal 1.0 # heat capacity of material -- not used here
####################################################################################################
# INITIALIZE LAMMPS
####################################################################################################
dimension 2
units si
boundary sm sm p # simulation box boundaries
atom_style smd
atom_modify map array
comm_modify vel yes
neigh_modify every 10 delay 0 check yes # re-build neighbor list every 10 steps
newton off
####################################################################################################
# CREATE INITIAL GEOMETRY
####################################################################################################
variable l0 equal 1.0 # lattice spacing for creating particles
lattice sq ${l0}
region box block -10 10 -10 10 -0.1 0.1 units box
create_box 1 box
create_atoms 1 box
group tlsph type 1
####################################################################################################
# DISCRETIZATION PARAMETERS
####################################################################################################
variable h equal 2.01*${l0} # SPH smoothing kernel radius
variable vol_one equal ${l0}^2 # volume of one particle -- assuming unit thickness
variable skin equal ${h} # Verlet list range
neighbor ${skin} bin
set group all volume ${vol_one}
-set group all smd_mass_density ${rho}
+set group all smd/mass/density ${rho}
set group all diameter ${h} # set SPH kernel radius
####################################################################################################
# DEFINE VELOCITY BOUNDARY CONDITIONS
####################################################################################################
variable vel0 equal 0.005 # pull velocity
region top block EDGE EDGE 9.0 EDGE EDGE EDGE units box
region bot block EDGE EDGE EDGE -9.1 EDGE EDGE units box
group top region top
group bot region bot
variable vel_up equal ${vel0}*(1.0-exp(-0.01*time))
variable vel_down equal -v_vel_up
fix veltop_fix top smd/setvelocity 0 v_vel_up 0
fix velbot_fix bot smd/setvelocity 0 v_vel_down 0
####################################################################################################
# INTERACTION PHYSICS / MATERIAL MODEL
####################################################################################################
pair_style smd/tlsph
pair_coeff 1 1 *COMMON ${rho} ${E} ${nu} ${q1} ${q2} ${hg} ${cp} &
*STRENGTH_LINEAR &
*EOS_LINEAR &
*END
####################################################################################################
# TIME INTEGRATION
####################################################################################################
fix dtfix tlsph smd/adjust_dt 0.1 # dynamically adjust time increment every step
fix integration_fix tlsph smd/integrate_tlsph
####################################################################################################
# SPECIFY TRAJECTORY OUTPUT
####################################################################################################
-compute S all smd/tlsph_stress # Cauchy stress tensor
-compute E all smd/tlsph_strain # Green-Lagrange strain tensor
-compute nn all smd/tlsph_num_neighs # number of neighbors for each particle
+compute S all smd/tlsph/stress # Cauchy stress tensor
+compute E all smd/tlsph/strain # Green-Lagrange strain tensor
+compute nn all smd/tlsph/num/neighs # number of neighbors for each particle
dump dump_id all custom 10 dump.LAMMPS id type x y z vx vy vz &
c_S[1] c_S[2] c_S[4] c_nn &
c_E[1] c_E[2] c_E[4] &
vx vy vz
dump_modify dump_id first yes
####################################################################################################
# STATUS OUTPUT
####################################################################################################
variable stress equal 0.5*(f_velbot_fix[2]-f_veltop_fix[2])/20 # stress = force / initial width
variable length equal xcm(top,y)-xcm(bot,y)
variable strain equal (v_length-${length})/${length} # engineering strain
fix stress_curve all print 10 "${strain} ${stress}" file stress_strain.dat screen no
thermo 100
thermo_style custom step dt f_dtfix v_strain
####################################################################################################
# RUN SIMULATION
####################################################################################################
run 2500
diff --git a/python/examples/ipython/.gitignore b/python/examples/pylammps/.gitignore
similarity index 100%
rename from python/examples/ipython/.gitignore
rename to python/examples/pylammps/.gitignore
diff --git a/python/examples/pylammps/README b/python/examples/pylammps/README
new file mode 100644
index 000000000..ac6962228
--- /dev/null
+++ b/python/examples/pylammps/README
@@ -0,0 +1,28 @@
+# Compile LAMMPS as shared library
+
+git clone https://github.com/lammps/lammps.git
+cd lammps/src
+python Make.py -m mpi -png -s ffmpeg exceptions -a file
+
+make -j 4 mode=shlib auto
+cd ../..
+
+# Install Python package
+
+virtualenv testing
+source testing/bin/activate
+
+(testing) cd lammps/python
+(testing) python install.py
+(testing) pip install jupyter matplotlib mpi4py
+
+(testing) cd ../../examples
+
+# Launch jupter and work inside browser
+
+(testing) jupyter notebook
+
+# Use Ctrl+c to stop jupyter
+
+# finally exit the virtualenv
+(testing) deactivate
diff --git a/python/examples/pylammps/dihedrals/data.dihedral b/python/examples/pylammps/dihedrals/data.dihedral
new file mode 100644
index 000000000..2ab745c3f
--- /dev/null
+++ b/python/examples/pylammps/dihedrals/data.dihedral
@@ -0,0 +1,34 @@
+Comment line
+
+4 atoms
+0 bonds
+0 angles
+1 dihedrals
+0 impropers
+
+1 atom types
+0 bond types
+0 angle types
+1 dihedral types
+0 improper types
+
+-5.0 5.0 xlo xhi
+-5.0 5.0 ylo yhi
+-5.0 5.0 zlo zhi
+0.0 0.0 0.0 xy xz yz
+
+Atoms # molecular
+
+1 1 1 -1.00000 1.00000 0.00000
+2 1 1 -0.50000 0.00000 0.00000
+3 1 1 0.50000 0.00000 0.00000
+4 1 1 1.00000 1.00000 0.00000
+
+Dihedral Coeffs
+
+1 80.0 1 2
+
+Dihedrals
+
+1 1 1 2 3 4
+
diff --git a/python/examples/pylammps/dihedrals/dihedral.ipynb b/python/examples/pylammps/dihedrals/dihedral.ipynb
new file mode 100644
index 000000000..db7e81aaf
--- /dev/null
+++ b/python/examples/pylammps/dihedrals/dihedral.ipynb
@@ -0,0 +1,1168 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Validating a dihedral potential"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "%matplotlib notebook"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "import matplotlib.pyplot as plt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "from lammps import IPyLammps"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "LAMMPS output is captured by PyLammps wrapper\n"
+ ]
+ }
+ ],
+ "source": [
+ "L = IPyLammps()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "import math\n",
+ "\n",
+ "L.units(\"real\")\n",
+ "L.atom_style(\"molecular\")\n",
+ "\n",
+ "L.boundary(\"f f f\")\n",
+ "L.neighbor(0.3, \"bin\")\n",
+ "\n",
+ "L.dihedral_style(\"harmonic\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['Reading data file ...',\n",
+ " ' triclinic box = (-5 -5 -5) to (5 5 5) with tilt (0 0 0)',\n",
+ " ' 1 by 1 by 1 MPI processor grid',\n",
+ " ' reading atoms ...',\n",
+ " ' 4 atoms',\n",
+ " ' scanning dihedrals ...',\n",
+ " ' 1 = max dihedrals/atom',\n",
+ " ' reading dihedrals ...',\n",
+ " ' 1 dihedrals',\n",
+ " 'Finding 1-2 1-3 1-4 neighbors ...',\n",
+ " ' Special bond factors lj: 0 0 0 ',\n",
+ " ' Special bond factors coul: 0 0 0 ',\n",
+ " ' 0 = max # of 1-2 neighbors',\n",
+ " ' 0 = max # of 1-3 neighbors',\n",
+ " ' 0 = max # of 1-4 neighbors',\n",
+ " ' 1 = max # of special neighbors']"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "L.read_data(\"data.dihedral\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "L.pair_style(\"zero\", 5)\n",
+ "L.pair_coeff(\"*\", \"*\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "L.mass(1, 1.0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "L.velocity(\"all\", \"set\", 0.0, 0.0, 0.0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "L.run(0);"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n/x+AnPCD2jXp5gAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ "<IPython.core.display.Image object>"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "L.image(zoom=1.0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(1.0000000000000009, 1.0000000000000009, 0.0)"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "L.atoms[3].position"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "L.atoms[3].position = (1.0, 0.0, 1.0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\nTwwAovvK6w3dMisv362uXtPr12TZoVD8TKtNS01VAmeAi8DvA18HRnJybubkNACFXu+sw7HV3o6n\nnrpvS/PdfreJCQwMwGZjvxsxAIj2395bZklJ4urVzbKyGbV6RqFoVyq/pVTmB6uqLwJPAGuxsd0G\nQ73BcAdInpxct9l8V668q2X6br/b+DhsNjid7HcjBgBR2K2thbYFp075O+lWZXlAkt7U6dITE1XB\nTrqvAfGAMz+/OT+/Ecjb2Jh3Orfb2t5xVbXFImJjMT+PsTFYLJiYwPo6urthNHL1JwYA0UFvCzIy\n/J10UyrVlCTdUSr/TaEoAE4CtcB7gd8BVhISOkpL60tL24BEl8ttsfje857//wru73ebm8PwMPr7\nMTfHfjdiABAdJgsLoW3B2bM7VVUrOt2KJNkk6XW9PjMuTh3spPtLIAYYLCxsKixsAnLW1hYdju2O\njl9bVX23381oxOoqlpbw0ktc/en+E3t/oiGidyk3V1y8iNJSqFRQKCJVqqSioiKgAqgDqoF8YAFo\nB+qBdmBsbMxjNvvm5xETIyYnfWYzPB489RSGhmA0wuPBwgL73YgBQHS0ppYQNTU4dQpaLSRJyHKs\nXp8VHa0Nbgv0QCRgAxqB5uvXW/YGQHU1+vuxuYnpafzoR5yhxAAgOrJOnBA1NSgthVIJhSJKrU7O\nzz8RrKo+A+Rcv160NwASEuD1YmwMv/gFpyftI54BEO27sbHAOh4ZKerqtisrF7VafyfdyyUl2ULo\n7vnzbjdsNty+zdWfGABED4qdndCarlSKCxfcBsOoUjkqy1Eu187d3/qP/+DST+HA/wIiOmDR0eLS\nJZSUYGUFGxts+CEGABER7bMIfgRERAwAIiJiABAREQOAiIgYAERExAAgIiIGABERMQCIiIgBQERE\nDAAiImIAEBERA4CIiBgARETEACAiIgYAERExAIiIiAFAREQMACIiYgAQEREDgIiIGABERMQAICIi\nBgARETEAiIgYAERExAAgIiIGABERMQCIiIgBQEREDAAiImIAEBERA4CIiBgARETEACAiIgYAEREx\nAIiIiAFAREQMACIiYgAQEREDgIiIGABERMQAICIiBgARETEAiIiIAUBERAwAIiJiABARMQCIiIgB\nQEREDAAiImIAEBERA4CIiBgARETEACAiIgYAEREdFf8PkjHA9hViIbwAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "<IPython.core.display.Image object>"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "L.image(zoom=1.0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "160.0"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "L.eval(\"pe\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "L.atoms[3].position = (1.0, 0.0, -1.0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "L.run(0);"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "phi = [d * math.pi / 180 for d in range(360)]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "pos = [(1.0, math.cos(p), math.sin(p)) for p in phi]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "K = 80.0\n",
+ "d = 1\n",
+ "n = 2\n",
+ "E_analytical = [K * (1 + d * math.cos(n*p)) for p in phi]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "pe = []\n",
+ "for p in pos:\n",
+ " L.atoms[3].position = p\n",
+ " L.run(0);\n",
+ " pe.append(L.eval(\"pe\"))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "application/javascript": [
+ "/* Put everything inside the global mpl namespace */\n",
+ "window.mpl = {};\n",
+ "\n",
+ "mpl.get_websocket_type = function() {\n",
+ " if (typeof(WebSocket) !== 'undefined') {\n",
+ " return WebSocket;\n",
+ " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
+ " return MozWebSocket;\n",
+ " } else {\n",
+ " alert('Your browser does not have WebSocket support.' +\n",
+ " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
+ " 'Firefox 4 and 5 are also supported but you ' +\n",
+ " 'have to enable WebSockets in about:config.');\n",
+ " };\n",
+ "}\n",
+ "\n",
+ "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
+ " this.id = figure_id;\n",
+ "\n",
+ " this.ws = websocket;\n",
+ "\n",
+ " this.supports_binary = (this.ws.binaryType != undefined);\n",
+ "\n",
+ " if (!this.supports_binary) {\n",
+ " var warnings = document.getElementById(\"mpl-warnings\");\n",
+ " if (warnings) {\n",
+ " warnings.style.display = 'block';\n",
+ " warnings.textContent = (\n",
+ " \"This browser does not support binary websocket messages. \" +\n",
+ " \"Performance may be slow.\");\n",
+ " }\n",
+ " }\n",
+ "\n",
+ " this.imageObj = new Image();\n",
+ "\n",
+ " this.context = undefined;\n",
+ " this.message = undefined;\n",
+ " this.canvas = undefined;\n",
+ " this.rubberband_canvas = undefined;\n",
+ " this.rubberband_context = undefined;\n",
+ " this.format_dropdown = undefined;\n",
+ "\n",
+ " this.image_mode = 'full';\n",
+ "\n",
+ " this.root = $('<div/>');\n",
+ " this._root_extra_style(this.root)\n",
+ " this.root.attr('style', 'display: inline-block');\n",
+ "\n",
+ " $(parent_element).append(this.root);\n",
+ "\n",
+ " this._init_header(this);\n",
+ " this._init_canvas(this);\n",
+ " this._init_toolbar(this);\n",
+ "\n",
+ " var fig = this;\n",
+ "\n",
+ " this.waiting = false;\n",
+ "\n",
+ " this.ws.onopen = function () {\n",
+ " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
+ " fig.send_message(\"send_image_mode\", {});\n",
+ " fig.send_message(\"refresh\", {});\n",
+ " }\n",
+ "\n",
+ " this.imageObj.onload = function() {\n",
+ " if (fig.image_mode == 'full') {\n",
+ " // Full images could contain transparency (where diff images\n",
+ " // almost always do), so we need to clear the canvas so that\n",
+ " // there is no ghosting.\n",
+ " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
+ " }\n",
+ " fig.context.drawImage(fig.imageObj, 0, 0);\n",
+ " };\n",
+ "\n",
+ " this.imageObj.onunload = function() {\n",
+ " this.ws.close();\n",
+ " }\n",
+ "\n",
+ " this.ws.onmessage = this._make_on_message_function(this);\n",
+ "\n",
+ " this.ondownload = ondownload;\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._init_header = function() {\n",
+ " var titlebar = $(\n",
+ " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
+ " 'ui-helper-clearfix\"/>');\n",
+ " var titletext = $(\n",
+ " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
+ " 'text-align: center; padding: 3px;\"/>');\n",
+ " titlebar.append(titletext)\n",
+ " this.root.append(titlebar);\n",
+ " this.header = titletext[0];\n",
+ "}\n",
+ "\n",
+ "\n",
+ "\n",
+ "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
+ "\n",
+ "}\n",
+ "\n",
+ "\n",
+ "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
+ "\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._init_canvas = function() {\n",
+ " var fig = this;\n",
+ "\n",
+ " var canvas_div = $('<div/>');\n",
+ "\n",
+ " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
+ "\n",
+ " function canvas_keyboard_event(event) {\n",
+ " return fig.key_event(event, event['data']);\n",
+ " }\n",
+ "\n",
+ " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
+ " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
+ " this.canvas_div = canvas_div\n",
+ " this._canvas_extra_style(canvas_div)\n",
+ " this.root.append(canvas_div);\n",
+ "\n",
+ " var canvas = $('<canvas/>');\n",
+ " canvas.addClass('mpl-canvas');\n",
+ " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
+ "\n",
+ " this.canvas = canvas[0];\n",
+ " this.context = canvas[0].getContext(\"2d\");\n",
+ "\n",
+ " var rubberband = $('<canvas/>');\n",
+ " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
+ "\n",
+ " var pass_mouse_events = true;\n",
+ "\n",
+ " canvas_div.resizable({\n",
+ " start: function(event, ui) {\n",
+ " pass_mouse_events = false;\n",
+ " },\n",
+ " resize: function(event, ui) {\n",
+ " fig.request_resize(ui.size.width, ui.size.height);\n",
+ " },\n",
+ " stop: function(event, ui) {\n",
+ " pass_mouse_events = true;\n",
+ " fig.request_resize(ui.size.width, ui.size.height);\n",
+ " },\n",
+ " });\n",
+ "\n",
+ " function mouse_event_fn(event) {\n",
+ " if (pass_mouse_events)\n",
+ " return fig.mouse_event(event, event['data']);\n",
+ " }\n",
+ "\n",
+ " rubberband.mousedown('button_press', mouse_event_fn);\n",
+ " rubberband.mouseup('button_release', mouse_event_fn);\n",
+ " // Throttle sequential mouse events to 1 every 20ms.\n",
+ " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
+ "\n",
+ " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
+ " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
+ "\n",
+ " canvas_div.on(\"wheel\", function (event) {\n",
+ " event = event.originalEvent;\n",
+ " event['data'] = 'scroll'\n",
+ " if (event.deltaY < 0) {\n",
+ " event.step = 1;\n",
+ " } else {\n",
+ " event.step = -1;\n",
+ " }\n",
+ " mouse_event_fn(event);\n",
+ " });\n",
+ "\n",
+ " canvas_div.append(canvas);\n",
+ " canvas_div.append(rubberband);\n",
+ "\n",
+ " this.rubberband = rubberband;\n",
+ " this.rubberband_canvas = rubberband[0];\n",
+ " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
+ " this.rubberband_context.strokeStyle = \"#000000\";\n",
+ "\n",
+ " this._resize_canvas = function(width, height) {\n",
+ " // Keep the size of the canvas, canvas container, and rubber band\n",
+ " // canvas in synch.\n",
+ " canvas_div.css('width', width)\n",
+ " canvas_div.css('height', height)\n",
+ "\n",
+ " canvas.attr('width', width);\n",
+ " canvas.attr('height', height);\n",
+ "\n",
+ " rubberband.attr('width', width);\n",
+ " rubberband.attr('height', height);\n",
+ " }\n",
+ "\n",
+ " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
+ " // upon first draw.\n",
+ " this._resize_canvas(600, 600);\n",
+ "\n",
+ " // Disable right mouse context menu.\n",
+ " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
+ " return false;\n",
+ " });\n",
+ "\n",
+ " function set_focus () {\n",
+ " canvas.focus();\n",
+ " canvas_div.focus();\n",
+ " }\n",
+ "\n",
+ " window.setTimeout(set_focus, 100);\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._init_toolbar = function() {\n",
+ " var fig = this;\n",
+ "\n",
+ " var nav_element = $('<div/>')\n",
+ " nav_element.attr('style', 'width: 100%');\n",
+ " this.root.append(nav_element);\n",
+ "\n",
+ " // Define a callback function for later on.\n",
+ " function toolbar_event(event) {\n",
+ " return fig.toolbar_button_onclick(event['data']);\n",
+ " }\n",
+ " function toolbar_mouse_event(event) {\n",
+ " return fig.toolbar_button_onmouseover(event['data']);\n",
+ " }\n",
+ "\n",
+ " for(var toolbar_ind in mpl.toolbar_items) {\n",
+ " var name = mpl.toolbar_items[toolbar_ind][0];\n",
+ " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
+ " var image = mpl.toolbar_items[toolbar_ind][2];\n",
+ " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
+ "\n",
+ " if (!name) {\n",
+ " // put a spacer in here.\n",
+ " continue;\n",
+ " }\n",
+ " var button = $('<button/>');\n",
+ " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
+ " 'ui-button-icon-only');\n",
+ " button.attr('role', 'button');\n",
+ " button.attr('aria-disabled', 'false');\n",
+ " button.click(method_name, toolbar_event);\n",
+ " button.mouseover(tooltip, toolbar_mouse_event);\n",
+ "\n",
+ " var icon_img = $('<span/>');\n",
+ " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
+ " icon_img.addClass(image);\n",
+ " icon_img.addClass('ui-corner-all');\n",
+ "\n",
+ " var tooltip_span = $('<span/>');\n",
+ " tooltip_span.addClass('ui-button-text');\n",
+ " tooltip_span.html(tooltip);\n",
+ "\n",
+ " button.append(icon_img);\n",
+ " button.append(tooltip_span);\n",
+ "\n",
+ " nav_element.append(button);\n",
+ " }\n",
+ "\n",
+ " var fmt_picker_span = $('<span/>');\n",
+ "\n",
+ " var fmt_picker = $('<select/>');\n",
+ " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
+ " fmt_picker_span.append(fmt_picker);\n",
+ " nav_element.append(fmt_picker_span);\n",
+ " this.format_dropdown = fmt_picker[0];\n",
+ "\n",
+ " for (var ind in mpl.extensions) {\n",
+ " var fmt = mpl.extensions[ind];\n",
+ " var option = $(\n",
+ " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
+ " fmt_picker.append(option)\n",
+ " }\n",
+ "\n",
+ " // Add hover states to the ui-buttons\n",
+ " $( \".ui-button\" ).hover(\n",
+ " function() { $(this).addClass(\"ui-state-hover\");},\n",
+ " function() { $(this).removeClass(\"ui-state-hover\");}\n",
+ " );\n",
+ "\n",
+ " var status_bar = $('<span class=\"mpl-message\"/>');\n",
+ " nav_element.append(status_bar);\n",
+ " this.message = status_bar[0];\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
+ " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
+ " // which will in turn request a refresh of the image.\n",
+ " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.send_message = function(type, properties) {\n",
+ " properties['type'] = type;\n",
+ " properties['figure_id'] = this.id;\n",
+ " this.ws.send(JSON.stringify(properties));\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.send_draw_message = function() {\n",
+ " if (!this.waiting) {\n",
+ " this.waiting = true;\n",
+ " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
+ " }\n",
+ "}\n",
+ "\n",
+ "\n",
+ "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
+ " var format_dropdown = fig.format_dropdown;\n",
+ " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
+ " fig.ondownload(fig, format);\n",
+ "}\n",
+ "\n",
+ "\n",
+ "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
+ " var size = msg['size'];\n",
+ " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
+ " fig._resize_canvas(size[0], size[1]);\n",
+ " fig.send_message(\"refresh\", {});\n",
+ " };\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
+ " var x0 = msg['x0'];\n",
+ " var y0 = fig.canvas.height - msg['y0'];\n",
+ " var x1 = msg['x1'];\n",
+ " var y1 = fig.canvas.height - msg['y1'];\n",
+ " x0 = Math.floor(x0) + 0.5;\n",
+ " y0 = Math.floor(y0) + 0.5;\n",
+ " x1 = Math.floor(x1) + 0.5;\n",
+ " y1 = Math.floor(y1) + 0.5;\n",
+ " var min_x = Math.min(x0, x1);\n",
+ " var min_y = Math.min(y0, y1);\n",
+ " var width = Math.abs(x1 - x0);\n",
+ " var height = Math.abs(y1 - y0);\n",
+ "\n",
+ " fig.rubberband_context.clearRect(\n",
+ " 0, 0, fig.canvas.width, fig.canvas.height);\n",
+ "\n",
+ " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
+ " // Updates the figure title.\n",
+ " fig.header.textContent = msg['label'];\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
+ " var cursor = msg['cursor'];\n",
+ " switch(cursor)\n",
+ " {\n",
+ " case 0:\n",
+ " cursor = 'pointer';\n",
+ " break;\n",
+ " case 1:\n",
+ " cursor = 'default';\n",
+ " break;\n",
+ " case 2:\n",
+ " cursor = 'crosshair';\n",
+ " break;\n",
+ " case 3:\n",
+ " cursor = 'move';\n",
+ " break;\n",
+ " }\n",
+ " fig.rubberband_canvas.style.cursor = cursor;\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
+ " fig.message.textContent = msg['message'];\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
+ " // Request the server to send over a new figure.\n",
+ " fig.send_draw_message();\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
+ " fig.image_mode = msg['mode'];\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.updated_canvas_event = function() {\n",
+ " // Called whenever the canvas gets updated.\n",
+ " this.send_message(\"ack\", {});\n",
+ "}\n",
+ "\n",
+ "// A function to construct a web socket function for onmessage handling.\n",
+ "// Called in the figure constructor.\n",
+ "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
+ " return function socket_on_message(evt) {\n",
+ " if (evt.data instanceof Blob) {\n",
+ " /* FIXME: We get \"Resource interpreted as Image but\n",
+ " * transferred with MIME type text/plain:\" errors on\n",
+ " * Chrome. But how to set the MIME type? It doesn't seem\n",
+ " * to be part of the websocket stream */\n",
+ " evt.data.type = \"image/png\";\n",
+ "\n",
+ " /* Free the memory for the previous frames */\n",
+ " if (fig.imageObj.src) {\n",
+ " (window.URL || window.webkitURL).revokeObjectURL(\n",
+ " fig.imageObj.src);\n",
+ " }\n",
+ "\n",
+ " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
+ " evt.data);\n",
+ " fig.updated_canvas_event();\n",
+ " fig.waiting = false;\n",
+ " return;\n",
+ " }\n",
+ " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
+ " fig.imageObj.src = evt.data;\n",
+ " fig.updated_canvas_event();\n",
+ " fig.waiting = false;\n",
+ " return;\n",
+ " }\n",
+ "\n",
+ " var msg = JSON.parse(evt.data);\n",
+ " var msg_type = msg['type'];\n",
+ "\n",
+ " // Call the \"handle_{type}\" callback, which takes\n",
+ " // the figure and JSON message as its only arguments.\n",
+ " try {\n",
+ " var callback = fig[\"handle_\" + msg_type];\n",
+ " } catch (e) {\n",
+ " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
+ " return;\n",
+ " }\n",
+ "\n",
+ " if (callback) {\n",
+ " try {\n",
+ " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
+ " callback(fig, msg);\n",
+ " } catch (e) {\n",
+ " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
+ " }\n",
+ " }\n",
+ " };\n",
+ "}\n",
+ "\n",
+ "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
+ "mpl.findpos = function(e) {\n",
+ " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
+ " var targ;\n",
+ " if (!e)\n",
+ " e = window.event;\n",
+ " if (e.target)\n",
+ " targ = e.target;\n",
+ " else if (e.srcElement)\n",
+ " targ = e.srcElement;\n",
+ " if (targ.nodeType == 3) // defeat Safari bug\n",
+ " targ = targ.parentNode;\n",
+ "\n",
+ " // jQuery normalizes the pageX and pageY\n",
+ " // pageX,Y are the mouse positions relative to the document\n",
+ " // offset() returns the position of the element relative to the document\n",
+ " var x = e.pageX - $(targ).offset().left;\n",
+ " var y = e.pageY - $(targ).offset().top;\n",
+ "\n",
+ " return {\"x\": x, \"y\": y};\n",
+ "};\n",
+ "\n",
+ "/*\n",
+ " * return a copy of an object with only non-object keys\n",
+ " * we need this to avoid circular references\n",
+ " * http://stackoverflow.com/a/24161582/3208463\n",
+ " */\n",
+ "function simpleKeys (original) {\n",
+ " return Object.keys(original).reduce(function (obj, key) {\n",
+ " if (typeof original[key] !== 'object')\n",
+ " obj[key] = original[key]\n",
+ " return obj;\n",
+ " }, {});\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.mouse_event = function(event, name) {\n",
+ " var canvas_pos = mpl.findpos(event)\n",
+ "\n",
+ " if (name === 'button_press')\n",
+ " {\n",
+ " this.canvas.focus();\n",
+ " this.canvas_div.focus();\n",
+ " }\n",
+ "\n",
+ " var x = canvas_pos.x;\n",
+ " var y = canvas_pos.y;\n",
+ "\n",
+ " this.send_message(name, {x: x, y: y, button: event.button,\n",
+ " step: event.step,\n",
+ " guiEvent: simpleKeys(event)});\n",
+ "\n",
+ " /* This prevents the web browser from automatically changing to\n",
+ " * the text insertion cursor when the button is pressed. We want\n",
+ " * to control all of the cursor setting manually through the\n",
+ " * 'cursor' event from matplotlib */\n",
+ " event.preventDefault();\n",
+ " return false;\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
+ " // Handle any extra behaviour associated with a key event\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.key_event = function(event, name) {\n",
+ "\n",
+ " // Prevent repeat events\n",
+ " if (name == 'key_press')\n",
+ " {\n",
+ " if (event.which === this._key)\n",
+ " return;\n",
+ " else\n",
+ " this._key = event.which;\n",
+ " }\n",
+ " if (name == 'key_release')\n",
+ " this._key = null;\n",
+ "\n",
+ " var value = '';\n",
+ " if (event.ctrlKey && event.which != 17)\n",
+ " value += \"ctrl+\";\n",
+ " if (event.altKey && event.which != 18)\n",
+ " value += \"alt+\";\n",
+ " if (event.shiftKey && event.which != 16)\n",
+ " value += \"shift+\";\n",
+ "\n",
+ " value += 'k';\n",
+ " value += event.which.toString();\n",
+ "\n",
+ " this._key_event_extra(event, name);\n",
+ "\n",
+ " this.send_message(name, {key: value,\n",
+ " guiEvent: simpleKeys(event)});\n",
+ " return false;\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
+ " if (name == 'download') {\n",
+ " this.handle_save(this, null);\n",
+ " } else {\n",
+ " this.send_message(\"toolbar_button\", {name: name});\n",
+ " }\n",
+ "};\n",
+ "\n",
+ "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
+ " this.message.textContent = tooltip;\n",
+ "};\n",
+ "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
+ "\n",
+ "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n",
+ "\n",
+ "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
+ " // Create a \"websocket\"-like object which calls the given IPython comm\n",
+ " // object with the appropriate methods. Currently this is a non binary\n",
+ " // socket, so there is still some room for performance tuning.\n",
+ " var ws = {};\n",
+ "\n",
+ " ws.close = function() {\n",
+ " comm.close()\n",
+ " };\n",
+ " ws.send = function(m) {\n",
+ " //console.log('sending', m);\n",
+ " comm.send(m);\n",
+ " };\n",
+ " // Register the callback with on_msg.\n",
+ " comm.on_msg(function(msg) {\n",
+ " //console.log('receiving', msg['content']['data'], msg);\n",
+ " // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
+ " ws.onmessage(msg['content']['data'])\n",
+ " });\n",
+ " return ws;\n",
+ "}\n",
+ "\n",
+ "mpl.mpl_figure_comm = function(comm, msg) {\n",
+ " // This is the function which gets called when the mpl process\n",
+ " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
+ "\n",
+ " var id = msg.content.data.id;\n",
+ " // Get hold of the div created by the display call when the Comm\n",
+ " // socket was opened in Python.\n",
+ " var element = $(\"#\" + id);\n",
+ " var ws_proxy = comm_websocket_adapter(comm)\n",
+ "\n",
+ " function ondownload(figure, format) {\n",
+ " window.open(figure.imageObj.src);\n",
+ " }\n",
+ "\n",
+ " var fig = new mpl.figure(id, ws_proxy,\n",
+ " ondownload,\n",
+ " element.get(0));\n",
+ "\n",
+ " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
+ " // web socket which is closed, not our websocket->open comm proxy.\n",
+ " ws_proxy.onopen();\n",
+ "\n",
+ " fig.parent_element = element.get(0);\n",
+ " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
+ " if (!fig.cell_info) {\n",
+ " console.error(\"Failed to find cell for figure\", id, fig);\n",
+ " return;\n",
+ " }\n",
+ "\n",
+ " var output_index = fig.cell_info[2]\n",
+ " var cell = fig.cell_info[0];\n",
+ "\n",
+ "};\n",
+ "\n",
+ "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
+ " fig.root.unbind('remove')\n",
+ "\n",
+ " // Update the output cell to use the data from the current canvas.\n",
+ " fig.push_to_output();\n",
+ " var dataURL = fig.canvas.toDataURL();\n",
+ " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
+ " // the notebook keyboard shortcuts fail.\n",
+ " IPython.keyboard_manager.enable()\n",
+ " $(fig.parent_element).html('<img src=\"' + dataURL + '\">');\n",
+ " fig.close_ws(fig, msg);\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.close_ws = function(fig, msg){\n",
+ " fig.send_message('closing', msg);\n",
+ " // fig.ws.close()\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
+ " // Turn the data on the canvas into data in the output cell.\n",
+ " var dataURL = this.canvas.toDataURL();\n",
+ " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.updated_canvas_event = function() {\n",
+ " // Tell IPython that the notebook contents must change.\n",
+ " IPython.notebook.set_dirty(true);\n",
+ " this.send_message(\"ack\", {});\n",
+ " var fig = this;\n",
+ " // Wait a second, then push the new image to the DOM so\n",
+ " // that it is saved nicely (might be nice to debounce this).\n",
+ " setTimeout(function () { fig.push_to_output() }, 1000);\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._init_toolbar = function() {\n",
+ " var fig = this;\n",
+ "\n",
+ " var nav_element = $('<div/>')\n",
+ " nav_element.attr('style', 'width: 100%');\n",
+ " this.root.append(nav_element);\n",
+ "\n",
+ " // Define a callback function for later on.\n",
+ " function toolbar_event(event) {\n",
+ " return fig.toolbar_button_onclick(event['data']);\n",
+ " }\n",
+ " function toolbar_mouse_event(event) {\n",
+ " return fig.toolbar_button_onmouseover(event['data']);\n",
+ " }\n",
+ "\n",
+ " for(var toolbar_ind in mpl.toolbar_items){\n",
+ " var name = mpl.toolbar_items[toolbar_ind][0];\n",
+ " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
+ " var image = mpl.toolbar_items[toolbar_ind][2];\n",
+ " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
+ "\n",
+ " if (!name) { continue; };\n",
+ "\n",
+ " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
+ " button.click(method_name, toolbar_event);\n",
+ " button.mouseover(tooltip, toolbar_mouse_event);\n",
+ " nav_element.append(button);\n",
+ " }\n",
+ "\n",
+ " // Add the status bar.\n",
+ " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
+ " nav_element.append(status_bar);\n",
+ " this.message = status_bar[0];\n",
+ "\n",
+ " // Add the close button to the window.\n",
+ " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
+ " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
+ " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
+ " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
+ " buttongrp.append(button);\n",
+ " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
+ " titlebar.prepend(buttongrp);\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._root_extra_style = function(el){\n",
+ " var fig = this\n",
+ " el.on(\"remove\", function(){\n",
+ "\tfig.close_ws(fig, {});\n",
+ " });\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._canvas_extra_style = function(el){\n",
+ " // this is important to make the div 'focusable\n",
+ " el.attr('tabindex', 0)\n",
+ " // reach out to IPython and tell the keyboard manager to turn it's self\n",
+ " // off when our div gets focus\n",
+ "\n",
+ " // location in version 3\n",
+ " if (IPython.notebook.keyboard_manager) {\n",
+ " IPython.notebook.keyboard_manager.register_events(el);\n",
+ " }\n",
+ " else {\n",
+ " // location in version 2\n",
+ " IPython.keyboard_manager.register_events(el);\n",
+ " }\n",
+ "\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
+ " var manager = IPython.notebook.keyboard_manager;\n",
+ " if (!manager)\n",
+ " manager = IPython.keyboard_manager;\n",
+ "\n",
+ " // Check for shift+enter\n",
+ " if (event.shiftKey && event.which == 13) {\n",
+ " this.canvas_div.blur();\n",
+ " event.shiftKey = false;\n",
+ " // Send a \"J\" for go to next cell\n",
+ " event.which = 74;\n",
+ " event.keyCode = 74;\n",
+ " manager.command_mode();\n",
+ " manager.handle_keydown(event);\n",
+ " }\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
+ " fig.ondownload(fig, null);\n",
+ "}\n",
+ "\n",
+ "\n",
+ "mpl.find_output_cell = function(html_output) {\n",
+ " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
+ " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
+ " // IPython event is triggered only after the cells have been serialised, which for\n",
+ " // our purposes (turning an active figure into a static one), is too late.\n",
+ " var cells = IPython.notebook.get_cells();\n",
+ " var ncells = cells.length;\n",
+ " for (var i=0; i<ncells; i++) {\n",
+ " var cell = cells[i];\n",
+ " if (cell.cell_type === 'code'){\n",
+ " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
+ " var data = cell.output_area.outputs[j];\n",
+ " if (data.data) {\n",
+ " // IPython >= 3 moved mimebundle to data attribute of output\n",
+ " data = data.data;\n",
+ " }\n",
+ " if (data['text/html'] == html_output) {\n",
+ " return [cell, data, j];\n",
+ " }\n",
+ " }\n",
+ " }\n",
+ " }\n",
+ "}\n",
+ "\n",
+ "// Register the function which deals with the matplotlib target/channel.\n",
+ "// The kernel may be null if the page has been refreshed.\n",
+ "if (IPython.notebook.kernel != null) {\n",
+ " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
+ "}\n"
+ ],
+ "text/plain": [
+ "<IPython.core.display.Javascript object>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4nOzde5yMBf//8c+erF1nQtJRiZJOCqmkg853pzt3yl3qTre0aq6ZPc8eHSJySOQQyamiJCpaIimVkMNN7hJKkiixLba1O/v+/TGr7/723sXuNTOfa67r/Xw89nFbu2Zeau/mvbPXdY0IEREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREYWnB0TkExHJFxGfiERW+HgtERkiIj+IyCER+V5E/lnhcwaIyG4RKRCRj0WkXdBqiYiIiMi07uIfgY9J5QPwXRFZLCLnlL1/ioi0LvfxZBHZKSIXikis+MfiTyISH7xkIiIiIgqE6+R/B+CNInJY/KOvKjtEpH+596NEZJ+I9Ap0IBEREREFVmUDcKiIbBKRgSLys/if6ZsqIk3KPl5fREpFpFOF21osIiOCGUtERERE5lU2ACeLf+C9KCK1RaSpiCwRkUVlHz+97ONtKtzWbBF5OZixRERERGReZQNwpIiUiP/YvmM6l/1enNTsGcAIEWlZ9mf5xje+8Y1vfONb+Ly1FP/jONlIZQOwl4gUi//Zv2OuKvu9uLL3KzsGcK9UfQxgSxEB3/jGN77xjW98C8u3lkK2ECn+Z/huFv8AjC97P6Ls1ztFZFTZ7zURkTwRmV/uzyeJ/xIx7cQ/Cp8VkV1S9VnA9UUEu3btwrLVX6ON61+QxHg8MHQM8vPzbf2WkJCg3sC/tzP+3s/Oeg8RzzRDk343YerCT//n45u3/Yhu3kxIYjwu9SRg76/7bfH3duq/b/69rfP3fufjdYjt1w6x/dohc+rbOHDgoHproN527dp1bADWD+gKITW9xf9jXF/Z27Ffdy37+PniP+6vQPyXd5kkIg0r3EauiOwR/3UCP5bjXwewvoggPz8fx4yc9xEiUpvgCm8SfL5S2JXb7dZO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\">"
+ ],
+ "text/plain": [
+ "<IPython.core.display.HTML object>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ "<matplotlib.text.Text at 0x7f191b1628d0>"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "plt.plot(range(360), pe, range(360), E_analytical)\n",
+ "plt.xlabel('angle')\n",
+ "plt.ylabel('E')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.5.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/python/examples/ipython/interface_usage.ipynb b/python/examples/pylammps/interface_usage.ipynb
similarity index 100%
rename from python/examples/ipython/interface_usage.ipynb
rename to python/examples/pylammps/interface_usage.ipynb
diff --git a/python/examples/ipython/interface_usage_bonds.ipynb b/python/examples/pylammps/interface_usage_bonds.ipynb
similarity index 100%
rename from python/examples/ipython/interface_usage_bonds.ipynb
rename to python/examples/pylammps/interface_usage_bonds.ipynb
diff --git a/python/examples/pylammps/montecarlo/mc.ipynb b/python/examples/pylammps/montecarlo/mc.ipynb
new file mode 100644
index 000000000..8906e3add
--- /dev/null
+++ b/python/examples/pylammps/montecarlo/mc.ipynb
@@ -0,0 +1,1303 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Monte Carlo Relaxation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "from __future__ import print_function"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "%matplotlib notebook\n",
+ "import matplotlib.pyplot as plt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "import random, math"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Setup perfect system"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "from lammps import IPyLammps"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "LAMMPS output is captured by PyLammps wrapper\n"
+ ]
+ }
+ ],
+ "source": [
+ "L = IPyLammps()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "L.units(\"lj\")\n",
+ "L.atom_style(\"atomic\")\n",
+ "L.atom_modify(\"map array sort\", 0, 0.0)\n",
+ "\n",
+ "L.dimension(2)\n",
+ "\n",
+ "L.lattice(\"hex\", 1.0)\n",
+ "L.region(\"box block\", 0, 10, 0, 5, -0.5, 0.5)\n",
+ "\n",
+ "L.create_box(1, \"box\")\n",
+ "L.create_atoms(1, \"box\")\n",
+ "L.mass(1, 1.0)\n",
+ "\n",
+ "L.pair_style(\"lj/cut\", 2.5)\n",
+ "L.pair_coeff(1, 1, 1.0, 1.0, 2.5)\n",
+ "L.pair_modify(\"shift\", \"yes\")\n",
+ "\n",
+ "L.neighbor(0.3, \"bin\")\n",
+ "L.neigh_modify(\"delay\", 0, \"every\", 1, \"check\", \"yes\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAAAG3RFWHRTb2Z0d2FyZQBMQU1NUFMg\nMTMgQXVnIDIwMTZFN+maAAAgAElEQVR42uy9ebBty13f9/31GvZ09pnuve/dpyficgY7EwmxseOB\nSYy2E5w/MtnBDJWKMVCAAJMql01AIGKSACIMNkh2YSwQOImHMhgZ0Pykp/FNmhCzKCMQku5whr33\nGrt/+eO3uk+vaZ997r16flfqb516dXlcvc/5/rr79+vVq7sXMTOCgoKCgj79pEIIgoKCgkIBCAoK\nCgoKBSAoKCgoKBSAoKCgoKBQAIKCgoKCQgEICgoKCgoFICgoKCgoFICgoKCgoFAAgoKCgoJCAQgK\nCgoKCgUgKCgoKCgUgKCgoKCgUACCgoKCgkIBCAoKCgoKBSAoKCgoKBSAoKCgoKBQAIKCgoKCQgEI\nCgoKCgoFICgoKCgoFICgoKCgoFAAgoKCgoJCAQgKCgoKCgUgKCgoKCgUgKCgoKBQAIKCgoKCQgEI\nCgoKCgoFICgoKCgoFICgoKCgoFAAgoKCgoJCAQgKCgoKCgUgKCgoKCgUgKCgoKCgUACCgoKCgkIB\nCAoKCgoKBSAoKCgoKBSAoKCgoKBQAIKCgoKCQgEICgoKCgoFICgoKCgoFICgoKCgoFAAgoKCgoJC\nAQgKCgoKCgUgKCgoKCgUgKCgoKCgUACCgoKCgkIBCAoKCgoKBSAoKCgoFICgoKCgoFAAgoKCgoJC\nAQgKCgoKCgUgKCgoKCgUgKCgoKCgUACCgoKCgkIBCAoKCgoKBSAoKCgoKBSAoKCgoKBQAIKCgoKC\nQgEICgoKCgoFICgoKCgoFICgoKCgoFAAgoKCgoJCAQgKCgoKCgUgKCgoKCgUgKCgoKCgUACCgoKC\ngkIBCAoKCgoKBSAoKCgoKBSAoKCgoKBQAIKCgoKCQgEICgoKCgoFICgoKCgUgKCgoKCgUACCgoKC\ngkIBCAoKCgr6lFX8AvydnnuOPuuz9oHaGB1aKCgo6GFXnutnnqlf9Sq8+tUcCsAl+qzP+hPAtwO/\noNQfhq4TFBT0sGs+v/XiF3/wcz7HhCeAS/TUU/TZn/01wGcCbwbOQ9cJCgp6+LUqS2LGV3wFveY1\nL6CHgBdcATg9BfBrwGuA95Xl74SOExQU9LArTdM7d8zJCeIXWMaNX8hR+8hHTj74wSr0nqCgoIdX\n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\n",
+ "text/plain": [
+ "<IPython.core.display.Image object>"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "L.image(zoom=1.6)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "L.run(0);"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "emin = L.eval(\"pe\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "L.dump(\"3 all movie 25 movie.mp4 type type zoom 1.6 adiam 1.0\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Disorder system"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "random.seed(27848)\n",
+ "deltaperturb = 0.2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "for i in range(L.system.natoms):\n",
+ " x, y = L.atoms[i].position\n",
+ " dx = deltaperturb * random.uniform(-1, 1)\n",
+ " dy = deltaperturb * random.uniform(-1, 1)\n",
+ " L.atoms[i].position = (x+dx, y+dy)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "L.run(0);"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAAAG3RFWHRTb2Z0d2FyZQBMQU1NUFMg\nMTMgQXVnIDIwMTZFN+maAAAgAElEQVR42uy9abBl2VUe+K19hjvfN+XwsqokaDo6wtE2bky4o/mB\nDTRgDJiAbruDxiFjGnfgwDjADdhqQGGQg0lAAx4wIDPJSJhJIBASAo2lWapSlVQaQAaEmaSSqirz\nDffeM+29V/9YZ++3zz33vnxZlaXKLPYXNypKpYy895yzz/rW+tZEzIyIiIiIiL98UPEWREREREQC\niIiIiIiIBBAREREREQkgIiIiIiISQEREREREJICIiIiIiEgAERERERGRACIiIiIiIgFEREREREQC\niIiIiIiIBBAREREREQkgIiIiIiISQEREREREJICIiIiIiEgAERERERGRACIiIiIiIgFEREREREQC\niIiIiIiIBBAREREREQkgIiIiIiISQEREREREJICIiIiIiEgAERERERGRACIiIiIiAURERERERAKI\niIiIiIgEEBERERERCSAiIiIiIhJAREREREQkgIiIiIiISAAREREREZEAIiIiIiIiAURERERERAKI\niIiIiIgEEBERERERCSAiIiIiIhJAREREREQkgIiIiIiISAAREREREZEAIiIiIiIiAURERERERAKI\niIiIiIgEEBERERERCSAiIiIiIhJAREREREQkgIiIiIiISAARERERkQAiIiIiIiIBREREREREAoiI\niIiIiAQQEREREREJICIiIiIiEkBERERERCSAiIiIiIhIABERERERkQAiIiIiIiIBREREREREAoiI\niIiIiAQQEREREREJICLiLyV+nSjehIhnEMTM8S5ERHwS8ADRKWCABCCAAQ00QAmsgCXQABXwrfGV\njIgEEPGXBK8nMoB21lD+KZ+ve7YczncT1cAYyIEUELffAAaogRoogBWwAI6Bx4EC+O74YkZEAoh4\ntuJtRA0wAlInRFpnECugAJbAKXAdqIEX3LWn9BGiApgBY6IcSInkYhkwzBqomWugdJcsHHAd+Dhw\nDPx4fD1vEW8k0s6fEMeidv5EDfyzeD8jAUQ84+4wARNgAGREyukhYhBFBhGDuABOgSPgMeAI+OG7\n7ay+m2gM7BCNlRoqlRGlRGcXa23DXDNXzCVz4YSgU8cBnwD+DPjP8Q29AB4gWgJDIHcKmwWss/tl\n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\n",
+ "text/plain": [
+ "<IPython.core.display.Image object>"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "L.image(zoom=1.6)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Minimize using Monte Carlo moves"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "estart = L.eval(\"pe\")\n",
+ "elast = estart"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "naccept = 0"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "energies = [estart]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "niterations = 3000\n",
+ "deltamove = 0.1\n",
+ "kT = 0.05"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "natoms = L.system.natoms\n",
+ "\n",
+ "for i in range(niterations):\n",
+ " iatom = random.randrange(0, natoms)\n",
+ " current_atom = L.atoms[iatom]\n",
+ " \n",
+ " x0, y0 = current_atom.position\n",
+ " \n",
+ " dx = deltamove * random.uniform(-1, 1)\n",
+ " dy = deltamove * random.uniform(-1, 1)\n",
+ " \n",
+ " current_atom.position = (x0+dx, y0+dy)\n",
+ " \n",
+ " L.run(1, \"pre no post no\")\n",
+ " \n",
+ " e = L.eval(\"pe\")\n",
+ " energies.append(e)\n",
+ " \n",
+ " if e <= elast:\n",
+ " naccept += 1\n",
+ " elast = e\n",
+ " elif random.random() <= math.exp(natoms*(elast-e)/kT):\n",
+ " naccept += 1\n",
+ " elast = e\n",
+ " else:\n",
+ " current_atom.position = (x0, y0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "application/javascript": [
+ "/* Put everything inside the global mpl namespace */\n",
+ "window.mpl = {};\n",
+ "\n",
+ "mpl.get_websocket_type = function() {\n",
+ " if (typeof(WebSocket) !== 'undefined') {\n",
+ " return WebSocket;\n",
+ " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
+ " return MozWebSocket;\n",
+ " } else {\n",
+ " alert('Your browser does not have WebSocket support.' +\n",
+ " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
+ " 'Firefox 4 and 5 are also supported but you ' +\n",
+ " 'have to enable WebSockets in about:config.');\n",
+ " };\n",
+ "}\n",
+ "\n",
+ "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
+ " this.id = figure_id;\n",
+ "\n",
+ " this.ws = websocket;\n",
+ "\n",
+ " this.supports_binary = (this.ws.binaryType != undefined);\n",
+ "\n",
+ " if (!this.supports_binary) {\n",
+ " var warnings = document.getElementById(\"mpl-warnings\");\n",
+ " if (warnings) {\n",
+ " warnings.style.display = 'block';\n",
+ " warnings.textContent = (\n",
+ " \"This browser does not support binary websocket messages. \" +\n",
+ " \"Performance may be slow.\");\n",
+ " }\n",
+ " }\n",
+ "\n",
+ " this.imageObj = new Image();\n",
+ "\n",
+ " this.context = undefined;\n",
+ " this.message = undefined;\n",
+ " this.canvas = undefined;\n",
+ " this.rubberband_canvas = undefined;\n",
+ " this.rubberband_context = undefined;\n",
+ " this.format_dropdown = undefined;\n",
+ "\n",
+ " this.image_mode = 'full';\n",
+ "\n",
+ " this.root = $('<div/>');\n",
+ " this._root_extra_style(this.root)\n",
+ " this.root.attr('style', 'display: inline-block');\n",
+ "\n",
+ " $(parent_element).append(this.root);\n",
+ "\n",
+ " this._init_header(this);\n",
+ " this._init_canvas(this);\n",
+ " this._init_toolbar(this);\n",
+ "\n",
+ " var fig = this;\n",
+ "\n",
+ " this.waiting = false;\n",
+ "\n",
+ " this.ws.onopen = function () {\n",
+ " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
+ " fig.send_message(\"send_image_mode\", {});\n",
+ " fig.send_message(\"refresh\", {});\n",
+ " }\n",
+ "\n",
+ " this.imageObj.onload = function() {\n",
+ " if (fig.image_mode == 'full') {\n",
+ " // Full images could contain transparency (where diff images\n",
+ " // almost always do), so we need to clear the canvas so that\n",
+ " // there is no ghosting.\n",
+ " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
+ " }\n",
+ " fig.context.drawImage(fig.imageObj, 0, 0);\n",
+ " };\n",
+ "\n",
+ " this.imageObj.onunload = function() {\n",
+ " this.ws.close();\n",
+ " }\n",
+ "\n",
+ " this.ws.onmessage = this._make_on_message_function(this);\n",
+ "\n",
+ " this.ondownload = ondownload;\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._init_header = function() {\n",
+ " var titlebar = $(\n",
+ " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
+ " 'ui-helper-clearfix\"/>');\n",
+ " var titletext = $(\n",
+ " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
+ " 'text-align: center; padding: 3px;\"/>');\n",
+ " titlebar.append(titletext)\n",
+ " this.root.append(titlebar);\n",
+ " this.header = titletext[0];\n",
+ "}\n",
+ "\n",
+ "\n",
+ "\n",
+ "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
+ "\n",
+ "}\n",
+ "\n",
+ "\n",
+ "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
+ "\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._init_canvas = function() {\n",
+ " var fig = this;\n",
+ "\n",
+ " var canvas_div = $('<div/>');\n",
+ "\n",
+ " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
+ "\n",
+ " function canvas_keyboard_event(event) {\n",
+ " return fig.key_event(event, event['data']);\n",
+ " }\n",
+ "\n",
+ " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
+ " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
+ " this.canvas_div = canvas_div\n",
+ " this._canvas_extra_style(canvas_div)\n",
+ " this.root.append(canvas_div);\n",
+ "\n",
+ " var canvas = $('<canvas/>');\n",
+ " canvas.addClass('mpl-canvas');\n",
+ " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
+ "\n",
+ " this.canvas = canvas[0];\n",
+ " this.context = canvas[0].getContext(\"2d\");\n",
+ "\n",
+ " var rubberband = $('<canvas/>');\n",
+ " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
+ "\n",
+ " var pass_mouse_events = true;\n",
+ "\n",
+ " canvas_div.resizable({\n",
+ " start: function(event, ui) {\n",
+ " pass_mouse_events = false;\n",
+ " },\n",
+ " resize: function(event, ui) {\n",
+ " fig.request_resize(ui.size.width, ui.size.height);\n",
+ " },\n",
+ " stop: function(event, ui) {\n",
+ " pass_mouse_events = true;\n",
+ " fig.request_resize(ui.size.width, ui.size.height);\n",
+ " },\n",
+ " });\n",
+ "\n",
+ " function mouse_event_fn(event) {\n",
+ " if (pass_mouse_events)\n",
+ " return fig.mouse_event(event, event['data']);\n",
+ " }\n",
+ "\n",
+ " rubberband.mousedown('button_press', mouse_event_fn);\n",
+ " rubberband.mouseup('button_release', mouse_event_fn);\n",
+ " // Throttle sequential mouse events to 1 every 20ms.\n",
+ " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
+ "\n",
+ " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
+ " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
+ "\n",
+ " canvas_div.on(\"wheel\", function (event) {\n",
+ " event = event.originalEvent;\n",
+ " event['data'] = 'scroll'\n",
+ " if (event.deltaY < 0) {\n",
+ " event.step = 1;\n",
+ " } else {\n",
+ " event.step = -1;\n",
+ " }\n",
+ " mouse_event_fn(event);\n",
+ " });\n",
+ "\n",
+ " canvas_div.append(canvas);\n",
+ " canvas_div.append(rubberband);\n",
+ "\n",
+ " this.rubberband = rubberband;\n",
+ " this.rubberband_canvas = rubberband[0];\n",
+ " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
+ " this.rubberband_context.strokeStyle = \"#000000\";\n",
+ "\n",
+ " this._resize_canvas = function(width, height) {\n",
+ " // Keep the size of the canvas, canvas container, and rubber band\n",
+ " // canvas in synch.\n",
+ " canvas_div.css('width', width)\n",
+ " canvas_div.css('height', height)\n",
+ "\n",
+ " canvas.attr('width', width);\n",
+ " canvas.attr('height', height);\n",
+ "\n",
+ " rubberband.attr('width', width);\n",
+ " rubberband.attr('height', height);\n",
+ " }\n",
+ "\n",
+ " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
+ " // upon first draw.\n",
+ " this._resize_canvas(600, 600);\n",
+ "\n",
+ " // Disable right mouse context menu.\n",
+ " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
+ " return false;\n",
+ " });\n",
+ "\n",
+ " function set_focus () {\n",
+ " canvas.focus();\n",
+ " canvas_div.focus();\n",
+ " }\n",
+ "\n",
+ " window.setTimeout(set_focus, 100);\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._init_toolbar = function() {\n",
+ " var fig = this;\n",
+ "\n",
+ " var nav_element = $('<div/>')\n",
+ " nav_element.attr('style', 'width: 100%');\n",
+ " this.root.append(nav_element);\n",
+ "\n",
+ " // Define a callback function for later on.\n",
+ " function toolbar_event(event) {\n",
+ " return fig.toolbar_button_onclick(event['data']);\n",
+ " }\n",
+ " function toolbar_mouse_event(event) {\n",
+ " return fig.toolbar_button_onmouseover(event['data']);\n",
+ " }\n",
+ "\n",
+ " for(var toolbar_ind in mpl.toolbar_items) {\n",
+ " var name = mpl.toolbar_items[toolbar_ind][0];\n",
+ " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
+ " var image = mpl.toolbar_items[toolbar_ind][2];\n",
+ " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
+ "\n",
+ " if (!name) {\n",
+ " // put a spacer in here.\n",
+ " continue;\n",
+ " }\n",
+ " var button = $('<button/>');\n",
+ " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
+ " 'ui-button-icon-only');\n",
+ " button.attr('role', 'button');\n",
+ " button.attr('aria-disabled', 'false');\n",
+ " button.click(method_name, toolbar_event);\n",
+ " button.mouseover(tooltip, toolbar_mouse_event);\n",
+ "\n",
+ " var icon_img = $('<span/>');\n",
+ " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
+ " icon_img.addClass(image);\n",
+ " icon_img.addClass('ui-corner-all');\n",
+ "\n",
+ " var tooltip_span = $('<span/>');\n",
+ " tooltip_span.addClass('ui-button-text');\n",
+ " tooltip_span.html(tooltip);\n",
+ "\n",
+ " button.append(icon_img);\n",
+ " button.append(tooltip_span);\n",
+ "\n",
+ " nav_element.append(button);\n",
+ " }\n",
+ "\n",
+ " var fmt_picker_span = $('<span/>');\n",
+ "\n",
+ " var fmt_picker = $('<select/>');\n",
+ " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
+ " fmt_picker_span.append(fmt_picker);\n",
+ " nav_element.append(fmt_picker_span);\n",
+ " this.format_dropdown = fmt_picker[0];\n",
+ "\n",
+ " for (var ind in mpl.extensions) {\n",
+ " var fmt = mpl.extensions[ind];\n",
+ " var option = $(\n",
+ " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
+ " fmt_picker.append(option)\n",
+ " }\n",
+ "\n",
+ " // Add hover states to the ui-buttons\n",
+ " $( \".ui-button\" ).hover(\n",
+ " function() { $(this).addClass(\"ui-state-hover\");},\n",
+ " function() { $(this).removeClass(\"ui-state-hover\");}\n",
+ " );\n",
+ "\n",
+ " var status_bar = $('<span class=\"mpl-message\"/>');\n",
+ " nav_element.append(status_bar);\n",
+ " this.message = status_bar[0];\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
+ " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
+ " // which will in turn request a refresh of the image.\n",
+ " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.send_message = function(type, properties) {\n",
+ " properties['type'] = type;\n",
+ " properties['figure_id'] = this.id;\n",
+ " this.ws.send(JSON.stringify(properties));\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.send_draw_message = function() {\n",
+ " if (!this.waiting) {\n",
+ " this.waiting = true;\n",
+ " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
+ " }\n",
+ "}\n",
+ "\n",
+ "\n",
+ "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
+ " var format_dropdown = fig.format_dropdown;\n",
+ " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
+ " fig.ondownload(fig, format);\n",
+ "}\n",
+ "\n",
+ "\n",
+ "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
+ " var size = msg['size'];\n",
+ " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
+ " fig._resize_canvas(size[0], size[1]);\n",
+ " fig.send_message(\"refresh\", {});\n",
+ " };\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
+ " var x0 = msg['x0'];\n",
+ " var y0 = fig.canvas.height - msg['y0'];\n",
+ " var x1 = msg['x1'];\n",
+ " var y1 = fig.canvas.height - msg['y1'];\n",
+ " x0 = Math.floor(x0) + 0.5;\n",
+ " y0 = Math.floor(y0) + 0.5;\n",
+ " x1 = Math.floor(x1) + 0.5;\n",
+ " y1 = Math.floor(y1) + 0.5;\n",
+ " var min_x = Math.min(x0, x1);\n",
+ " var min_y = Math.min(y0, y1);\n",
+ " var width = Math.abs(x1 - x0);\n",
+ " var height = Math.abs(y1 - y0);\n",
+ "\n",
+ " fig.rubberband_context.clearRect(\n",
+ " 0, 0, fig.canvas.width, fig.canvas.height);\n",
+ "\n",
+ " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
+ " // Updates the figure title.\n",
+ " fig.header.textContent = msg['label'];\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
+ " var cursor = msg['cursor'];\n",
+ " switch(cursor)\n",
+ " {\n",
+ " case 0:\n",
+ " cursor = 'pointer';\n",
+ " break;\n",
+ " case 1:\n",
+ " cursor = 'default';\n",
+ " break;\n",
+ " case 2:\n",
+ " cursor = 'crosshair';\n",
+ " break;\n",
+ " case 3:\n",
+ " cursor = 'move';\n",
+ " break;\n",
+ " }\n",
+ " fig.rubberband_canvas.style.cursor = cursor;\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
+ " fig.message.textContent = msg['message'];\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
+ " // Request the server to send over a new figure.\n",
+ " fig.send_draw_message();\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
+ " fig.image_mode = msg['mode'];\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.updated_canvas_event = function() {\n",
+ " // Called whenever the canvas gets updated.\n",
+ " this.send_message(\"ack\", {});\n",
+ "}\n",
+ "\n",
+ "// A function to construct a web socket function for onmessage handling.\n",
+ "// Called in the figure constructor.\n",
+ "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
+ " return function socket_on_message(evt) {\n",
+ " if (evt.data instanceof Blob) {\n",
+ " /* FIXME: We get \"Resource interpreted as Image but\n",
+ " * transferred with MIME type text/plain:\" errors on\n",
+ " * Chrome. But how to set the MIME type? It doesn't seem\n",
+ " * to be part of the websocket stream */\n",
+ " evt.data.type = \"image/png\";\n",
+ "\n",
+ " /* Free the memory for the previous frames */\n",
+ " if (fig.imageObj.src) {\n",
+ " (window.URL || window.webkitURL).revokeObjectURL(\n",
+ " fig.imageObj.src);\n",
+ " }\n",
+ "\n",
+ " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
+ " evt.data);\n",
+ " fig.updated_canvas_event();\n",
+ " fig.waiting = false;\n",
+ " return;\n",
+ " }\n",
+ " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
+ " fig.imageObj.src = evt.data;\n",
+ " fig.updated_canvas_event();\n",
+ " fig.waiting = false;\n",
+ " return;\n",
+ " }\n",
+ "\n",
+ " var msg = JSON.parse(evt.data);\n",
+ " var msg_type = msg['type'];\n",
+ "\n",
+ " // Call the \"handle_{type}\" callback, which takes\n",
+ " // the figure and JSON message as its only arguments.\n",
+ " try {\n",
+ " var callback = fig[\"handle_\" + msg_type];\n",
+ " } catch (e) {\n",
+ " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
+ " return;\n",
+ " }\n",
+ "\n",
+ " if (callback) {\n",
+ " try {\n",
+ " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
+ " callback(fig, msg);\n",
+ " } catch (e) {\n",
+ " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
+ " }\n",
+ " }\n",
+ " };\n",
+ "}\n",
+ "\n",
+ "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
+ "mpl.findpos = function(e) {\n",
+ " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
+ " var targ;\n",
+ " if (!e)\n",
+ " e = window.event;\n",
+ " if (e.target)\n",
+ " targ = e.target;\n",
+ " else if (e.srcElement)\n",
+ " targ = e.srcElement;\n",
+ " if (targ.nodeType == 3) // defeat Safari bug\n",
+ " targ = targ.parentNode;\n",
+ "\n",
+ " // jQuery normalizes the pageX and pageY\n",
+ " // pageX,Y are the mouse positions relative to the document\n",
+ " // offset() returns the position of the element relative to the document\n",
+ " var x = e.pageX - $(targ).offset().left;\n",
+ " var y = e.pageY - $(targ).offset().top;\n",
+ "\n",
+ " return {\"x\": x, \"y\": y};\n",
+ "};\n",
+ "\n",
+ "/*\n",
+ " * return a copy of an object with only non-object keys\n",
+ " * we need this to avoid circular references\n",
+ " * http://stackoverflow.com/a/24161582/3208463\n",
+ " */\n",
+ "function simpleKeys (original) {\n",
+ " return Object.keys(original).reduce(function (obj, key) {\n",
+ " if (typeof original[key] !== 'object')\n",
+ " obj[key] = original[key]\n",
+ " return obj;\n",
+ " }, {});\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.mouse_event = function(event, name) {\n",
+ " var canvas_pos = mpl.findpos(event)\n",
+ "\n",
+ " if (name === 'button_press')\n",
+ " {\n",
+ " this.canvas.focus();\n",
+ " this.canvas_div.focus();\n",
+ " }\n",
+ "\n",
+ " var x = canvas_pos.x;\n",
+ " var y = canvas_pos.y;\n",
+ "\n",
+ " this.send_message(name, {x: x, y: y, button: event.button,\n",
+ " step: event.step,\n",
+ " guiEvent: simpleKeys(event)});\n",
+ "\n",
+ " /* This prevents the web browser from automatically changing to\n",
+ " * the text insertion cursor when the button is pressed. We want\n",
+ " * to control all of the cursor setting manually through the\n",
+ " * 'cursor' event from matplotlib */\n",
+ " event.preventDefault();\n",
+ " return false;\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
+ " // Handle any extra behaviour associated with a key event\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.key_event = function(event, name) {\n",
+ "\n",
+ " // Prevent repeat events\n",
+ " if (name == 'key_press')\n",
+ " {\n",
+ " if (event.which === this._key)\n",
+ " return;\n",
+ " else\n",
+ " this._key = event.which;\n",
+ " }\n",
+ " if (name == 'key_release')\n",
+ " this._key = null;\n",
+ "\n",
+ " var value = '';\n",
+ " if (event.ctrlKey && event.which != 17)\n",
+ " value += \"ctrl+\";\n",
+ " if (event.altKey && event.which != 18)\n",
+ " value += \"alt+\";\n",
+ " if (event.shiftKey && event.which != 16)\n",
+ " value += \"shift+\";\n",
+ "\n",
+ " value += 'k';\n",
+ " value += event.which.toString();\n",
+ "\n",
+ " this._key_event_extra(event, name);\n",
+ "\n",
+ " this.send_message(name, {key: value,\n",
+ " guiEvent: simpleKeys(event)});\n",
+ " return false;\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
+ " if (name == 'download') {\n",
+ " this.handle_save(this, null);\n",
+ " } else {\n",
+ " this.send_message(\"toolbar_button\", {name: name});\n",
+ " }\n",
+ "};\n",
+ "\n",
+ "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
+ " this.message.textContent = tooltip;\n",
+ "};\n",
+ "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
+ "\n",
+ "mpl.extensions = [\"eps\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\"];\n",
+ "\n",
+ "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
+ " // Create a \"websocket\"-like object which calls the given IPython comm\n",
+ " // object with the appropriate methods. Currently this is a non binary\n",
+ " // socket, so there is still some room for performance tuning.\n",
+ " var ws = {};\n",
+ "\n",
+ " ws.close = function() {\n",
+ " comm.close()\n",
+ " };\n",
+ " ws.send = function(m) {\n",
+ " //console.log('sending', m);\n",
+ " comm.send(m);\n",
+ " };\n",
+ " // Register the callback with on_msg.\n",
+ " comm.on_msg(function(msg) {\n",
+ " //console.log('receiving', msg['content']['data'], msg);\n",
+ " // Pass the mpl event to the overriden (by mpl) onmessage function.\n",
+ " ws.onmessage(msg['content']['data'])\n",
+ " });\n",
+ " return ws;\n",
+ "}\n",
+ "\n",
+ "mpl.mpl_figure_comm = function(comm, msg) {\n",
+ " // This is the function which gets called when the mpl process\n",
+ " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
+ "\n",
+ " var id = msg.content.data.id;\n",
+ " // Get hold of the div created by the display call when the Comm\n",
+ " // socket was opened in Python.\n",
+ " var element = $(\"#\" + id);\n",
+ " var ws_proxy = comm_websocket_adapter(comm)\n",
+ "\n",
+ " function ondownload(figure, format) {\n",
+ " window.open(figure.imageObj.src);\n",
+ " }\n",
+ "\n",
+ " var fig = new mpl.figure(id, ws_proxy,\n",
+ " ondownload,\n",
+ " element.get(0));\n",
+ "\n",
+ " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
+ " // web socket which is closed, not our websocket->open comm proxy.\n",
+ " ws_proxy.onopen();\n",
+ "\n",
+ " fig.parent_element = element.get(0);\n",
+ " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
+ " if (!fig.cell_info) {\n",
+ " console.error(\"Failed to find cell for figure\", id, fig);\n",
+ " return;\n",
+ " }\n",
+ "\n",
+ " var output_index = fig.cell_info[2]\n",
+ " var cell = fig.cell_info[0];\n",
+ "\n",
+ "};\n",
+ "\n",
+ "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
+ " fig.root.unbind('remove')\n",
+ "\n",
+ " // Update the output cell to use the data from the current canvas.\n",
+ " fig.push_to_output();\n",
+ " var dataURL = fig.canvas.toDataURL();\n",
+ " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
+ " // the notebook keyboard shortcuts fail.\n",
+ " IPython.keyboard_manager.enable()\n",
+ " $(fig.parent_element).html('<img src=\"' + dataURL + '\">');\n",
+ " fig.close_ws(fig, msg);\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.close_ws = function(fig, msg){\n",
+ " fig.send_message('closing', msg);\n",
+ " // fig.ws.close()\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
+ " // Turn the data on the canvas into data in the output cell.\n",
+ " var dataURL = this.canvas.toDataURL();\n",
+ " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\">';\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.updated_canvas_event = function() {\n",
+ " // Tell IPython that the notebook contents must change.\n",
+ " IPython.notebook.set_dirty(true);\n",
+ " this.send_message(\"ack\", {});\n",
+ " var fig = this;\n",
+ " // Wait a second, then push the new image to the DOM so\n",
+ " // that it is saved nicely (might be nice to debounce this).\n",
+ " setTimeout(function () { fig.push_to_output() }, 1000);\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._init_toolbar = function() {\n",
+ " var fig = this;\n",
+ "\n",
+ " var nav_element = $('<div/>')\n",
+ " nav_element.attr('style', 'width: 100%');\n",
+ " this.root.append(nav_element);\n",
+ "\n",
+ " // Define a callback function for later on.\n",
+ " function toolbar_event(event) {\n",
+ " return fig.toolbar_button_onclick(event['data']);\n",
+ " }\n",
+ " function toolbar_mouse_event(event) {\n",
+ " return fig.toolbar_button_onmouseover(event['data']);\n",
+ " }\n",
+ "\n",
+ " for(var toolbar_ind in mpl.toolbar_items){\n",
+ " var name = mpl.toolbar_items[toolbar_ind][0];\n",
+ " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
+ " var image = mpl.toolbar_items[toolbar_ind][2];\n",
+ " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
+ "\n",
+ " if (!name) { continue; };\n",
+ "\n",
+ " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
+ " button.click(method_name, toolbar_event);\n",
+ " button.mouseover(tooltip, toolbar_mouse_event);\n",
+ " nav_element.append(button);\n",
+ " }\n",
+ "\n",
+ " // Add the status bar.\n",
+ " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
+ " nav_element.append(status_bar);\n",
+ " this.message = status_bar[0];\n",
+ "\n",
+ " // Add the close button to the window.\n",
+ " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
+ " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
+ " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
+ " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
+ " buttongrp.append(button);\n",
+ " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
+ " titlebar.prepend(buttongrp);\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._root_extra_style = function(el){\n",
+ " var fig = this\n",
+ " el.on(\"remove\", function(){\n",
+ "\tfig.close_ws(fig, {});\n",
+ " });\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._canvas_extra_style = function(el){\n",
+ " // this is important to make the div 'focusable\n",
+ " el.attr('tabindex', 0)\n",
+ " // reach out to IPython and tell the keyboard manager to turn it's self\n",
+ " // off when our div gets focus\n",
+ "\n",
+ " // location in version 3\n",
+ " if (IPython.notebook.keyboard_manager) {\n",
+ " IPython.notebook.keyboard_manager.register_events(el);\n",
+ " }\n",
+ " else {\n",
+ " // location in version 2\n",
+ " IPython.keyboard_manager.register_events(el);\n",
+ " }\n",
+ "\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
+ " var manager = IPython.notebook.keyboard_manager;\n",
+ " if (!manager)\n",
+ " manager = IPython.keyboard_manager;\n",
+ "\n",
+ " // Check for shift+enter\n",
+ " if (event.shiftKey && event.which == 13) {\n",
+ " this.canvas_div.blur();\n",
+ " event.shiftKey = false;\n",
+ " // Send a \"J\" for go to next cell\n",
+ " event.which = 74;\n",
+ " event.keyCode = 74;\n",
+ " manager.command_mode();\n",
+ " manager.handle_keydown(event);\n",
+ " }\n",
+ "}\n",
+ "\n",
+ "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
+ " fig.ondownload(fig, null);\n",
+ "}\n",
+ "\n",
+ "\n",
+ "mpl.find_output_cell = function(html_output) {\n",
+ " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
+ " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
+ " // IPython event is triggered only after the cells have been serialised, which for\n",
+ " // our purposes (turning an active figure into a static one), is too late.\n",
+ " var cells = IPython.notebook.get_cells();\n",
+ " var ncells = cells.length;\n",
+ " for (var i=0; i<ncells; i++) {\n",
+ " var cell = cells[i];\n",
+ " if (cell.cell_type === 'code'){\n",
+ " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
+ " var data = cell.output_area.outputs[j];\n",
+ " if (data.data) {\n",
+ " // IPython >= 3 moved mimebundle to data attribute of output\n",
+ " data = data.data;\n",
+ " }\n",
+ " if (data['text/html'] == html_output) {\n",
+ " return [cell, data, j];\n",
+ " }\n",
+ " }\n",
+ " }\n",
+ " }\n",
+ "}\n",
+ "\n",
+ "// Register the function which deals with the matplotlib target/channel.\n",
+ "// The kernel may be null if the page has been refreshed.\n",
+ "if (IPython.notebook.kernel != null) {\n",
+ " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
+ "}\n"
+ ],
+ "text/plain": [
+ "<IPython.core.display.Javascript object>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4nO3dedhUdf3/8RdokGiYZZghlaY/11TM1BQ3XEoz96WyJC0zvc28v64Yikkq7kXue6bkguWat5a45JI7KqCigICIqOxws973+/fHe8Y5s3LD59xzzsw8H9d1rpk559yHj6fp5smZOedIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOrAhZLekDRH0lRJwyWtV7DO+5IWSporaV7mcd/qDREAAABxOl9SX0mrSuop6Q5JrxWsM1HS0VUeFwAAAKpkK0ltktaMzJso6ZhkhgMAAIDOdrqkCQXzJkr6SNKn8o+LT5MfMQQAAECN21P+Hb+9CubvLGl1SV0l7SgPwgvLbKOLpN7yj5OZmJiYmJiYamfqLf97HA1kP0mzJO3fgXUHSPqgzLLekoyJiYmJiYmpJqfeQsM4Uh5/e3Zw/aPkZwyX0lOSTZkyxebMmcMUODU1NSU+hnqY2I/syzRO7Ev2Y5qmKVOmZAOwZ3hWoBacKI+/ncos31BSP0nd5YeFd5A0XtIlZdbvKckef3yOffKJIVBzc3PSQ6gL7Mf4sC/jw76MB/sxHnPmzCEAG0y7pMXya/tFr/OXDcLvSholv07gbEljJJ0haZUy2+spyaQ5tu++Sb+dax+/2OLBfowP+zI+7Mt4sB/jQQAi1GcBuNtuSb+da19LS0vSQ6gL7Mf4sC/jw76MB/sxHgQgQn0WgLvvnvTbGQAAdAQBiFCfBWD//km/nQEAQEcQgAhFAAIAUGMIQIT6LAAls9dfT/otDQAAlocARKi8ADz00KTf0gAAYHkIQITKC8Df/CbptzQAAFgeAhCh8gLwhBOSfksDAIDlIQARigAEAKDGEIAIlReAxx+f9FsaAAAsDwGIUAQgAAA1hgBEKAIQAIAaQwAiFAEIAECNIQARKi8AjzzS31htbWa3357smxsAAJRGACJUXgBK/sZ6/nl/3taW7BscAAAUIwARqmQAPvecP1+2LNk3OAAAKEYAIlRRAM6fnwvApUuTfosDAIBCBCBCFQXghAm5AFyyJOm3OAAAKEQAIlRPSfb883Psf//z6Pvf/3IBuHhx0m9xAABQiABEqJ6SbM6cOWZmtuWWZg88kAvARYsSfocDAIAiBCBC5QXgnnua3XhjLgBbWxN+hwMAgCIEIELlBWD2e4DZAFywIOF3OAAAKEIAIlReAA4a5OE3cmTujGAAAJAuBCBC5QXg4sUefldd5Y/z5iX8DgcAAEUIQITKC0Azs169zIYN8wCcOzfBdzcAACiJAESoogBcd12zK67wAJw9O8F3NwAAKIkARKiiAFxvPbNLL/UAnDUrwXc3AAAoiQBEqKIA/MY3zC66yANw5szk3twAAKA0AhChigJwgw3MLrjAA3DYsATf3QAAoCQCEKGKAnCjjcyGDMldExAAAKQLAYhQRQG4ySZm555LAAIAkFYEIEIVBeDmm+cuCE0AAgCQPgQgQhUF4JZbmg0cSAACAJBWBCBCFQVg375mp59OAAIAkFYEIEIVBeC225qdcgoBCABAWhGACFUUgNtvb3byyQQgAABpRQAiVFEA7rSTWVMTAQgAQFoRgAhVFIA//KHZz35GAAIAkFYEIEIVBeBRR5l9//sEIAAAaUUAIlRRAP7617n4IwABAEgfAhChigJwxx0JQAAA0owARKiiANx5ZwIQAIA0IwARqigAd9uNAAQAIM0IQIQqCsA99iAAAQBIMwIQoYoCcK+9CEAAANKMAESoogDs358ABAAgzQhAhCoKwL598wNwypQE3+EAAKAIAYhQRQF49dX5AfiPfyT4DgcAAEUIQIQqCkAzs298gwAEACCtCECEKhmA//xnLgDvvTehdzcAACiJAESokgFoRgACAJBWBCBClQ3AP/+ZAAQAII0IQIQqG4AjRngADh1q1q9fAu9uAABQEgGIUGUD8LHHKl8P8OGHzdrbq/AuBwAAeQhAhCobgEuXevh17+6PbW25ZUuW+LxXXqniux0AAJgZAdiILpT0hqQ5kqZKGi5pvYJ1+kh6UNJcSR9L+oukVctsr2wAmpndfnvuCODixbn5ixf7vBdfrNI7HQAAfIYAbDznS+orD7qeku6Q9FpkeRd5IN4iaXV5DL4u6Yoy26sYgFOn5gJwwYLc/EWLCEAAAJJCAGIrSW2S1sy83lXSYklrRdbZX9I8SZ8r8fMVA9AsF4DRVVpbCUAAAJJCAOJ0SRMir0+S9FbBOutKape0RYmf73AAzpiRmzd/PgEIAEBSCMDGtqf8yN5ekXmDJD1fsN7n5QG4Y4ltdDgAp0/PzZs7lwAEACApBGDj2k/SLPnHu1ErdQSwqanJmpubrbm52VpaWvLeZNkAnDrVXw8bZnbssQQgAADV1NLS8tnf1U1NTQRgAzpSHn97lli2i6RFKv0dwG4l1u/wEcCbb85/TQACAJAMjgA2nhPl8bdTmeVdJI2SdLOkNSR9XX6W8EqdBWyWi71DDsl/TQACAJAMArDxtMvP8p2bmeZlHqNB2EfSQ5lln0j6s0qfASx1IADNPPauuy73nAAEACA5BCBCdTgAs3cDIQABAEgWAYhQKxSAhdOjj1bpnQ4AAD5DACJUhwJw9OjSAditW5Xe6QAA4DMEIEJ1KADNzIYOLR2BAACgughAhOpwAM6cSQACAJAGBCBCdTgAFywgAAEASAMCEKE6HIDLlhGAAACkAQGIUB0OQDMCEACANCAAEWqFAnDaNAIQAICkEYAItUIBaEYAAgCQNAIQoVY4ANvbzfbfnwAEACApBCBCrXAAmpldeCEBCABAUghAhFqpABw+nAAEACApBCBCrVQAtrV5/PXv30nvbAAAUBYBiFArFYBmZkOGmA0YEP+bGgAAVEYAItRKB+CFF5p17262/fad8M4GAABlEYAItdIBeNFFfA8QAIAkEIAItdIBeP75BCAAAEkgABGKAAQAoMYQgAgVdBIIAQgAQPURgAi10gH4hz8QgAAAJIEARKiVDsBzzyUAAQBIAgGIUCsdgOecQwACAJAEAhChVjoAzzuPAAQAIAkEIEKtdACOG5cLQMls/vxOeIcDAIAiBCBCrXQAmplNnpwLwNtvj/ndDQAASiIAESooAM3MrrmGj4IBAKgmAhChggOwrY0ABACgmghAhAoOQDMCEACAaiIAESqWAOzViwAEAKBaCECEiiUAX3/dbK21YnpXAwCAighAhIolAMeONVt99Zje1QAAoCICEKFiCcD33jPr1i2mdzUAAKiIAESoWAJw0iT/DmB7e0zv7IjFi80OOMBsyZL4tw0AQC0iABEqlgCcNs0DsDMi7f33fdsffBD/tgEAqEUEIELFEoAzZniknX12TO/sCAIQAIB8BCBCxRKAc+d23rUACUAAAPIRgAgVSwAuWlQcgC+/bDZqVOA73AhAAAAKEYAIFUsAlrodXFxHBAlAAADyEYAIFUsAmhGAAABUCwGIUAQgAAA1hgBEKAIQAIAaQwAiVOwBuHRp/utQBCAAAPkIQISKPQBnzMh/HYoABAAgHwGIULEH4EMPmQ0fTgACANBZCECEii0AzczWXjsXfgQgAACdgwBEqFgDsF8/AhAAgM5GACJUrAF41lkEIAAAnY0ARKhYA3C//QhAAAA6GwGIULEG4N//XhyAbW1mkyat/DYJQAAA8hGACBVrAJqZXX652brr5gLwyivDjgQSgAAA5CMAESr2ABw5Mv8I4MCBBCAAAHEiABEq9gB89tn8AMyeGLKyCEAAAPIRgAgVewC2t5sNGkQAAgDQWQhAhIo9ALO22cZs110JQAAA4kYANqYjJD0taY6kNkldC5a3S2qVNFfSvMzj5mW21WkBeOGFZj/9Kd8BBAAgbgRgY9pLHoFHq3wA7t7BbXVaAF50kdmPf0wAAgAQNwKwse2q8gHYv4Pb6LQAvPhis8MPNzv1VAIQAIA4EYCNrVIAfijpE0kvS/pVhW10WgBeeqnZYYeF3xEkG4BTpsQ3NgAAahkB2NjKBeDukrpLWlXSPpJmSjquzDY6LQAvv9zskEPyA/Cyy8zefnvFtkMAAgCQjwBsbOUCsNBgSc+UWdZTkjU1NVlzc7M1NzdbS0tLLG/OK64oview5B8Lr4hsAE6eHMuwAACoSS0tLZ/9Xd3U1EQANrCOBuA5kp4ts6zTjgD++c+lA/Cww1ZsOwQgAAD5OALYmLrKP+LdWx6APTKvu0jqK2kbSZ+TtEpmnRmSmspsq9MCcNiweAJw4kT/uUmTYh8iAAA1iQBsTAPkJ3q0Zabs810k7SdprPz6fzMlvSbp2Arb6rQAjJ4AEg3AQw9dse1MmOA/9/77sQ8RAICaRAAiVKcF4D335AfgsmXlA3Dq1PLbIQABAMhHACJUpwWgmdnSpWZrreUB9+KLpQPwqacqXyZm/HhfPnFipwwRAICaQwAiVKcGYNZ3vmM2YoSH3CGH5C/Lzi+HAAQAIB8BiFBVCcADDzQbPHjlAvC993z5hAmdOkQAAGoGAYhQVQnAM87IfRfw4IPzlxGAAACsGAIQoaoSgEuW5ALwoIPyly0vAN9915ePH9+pQwQAoGYQgOl3r6S9kh5EBVUJQLPiS8JkEYAAAKwYAjD9rpQ0S9J7kk6X9JVkh1OkagHYs2cuAJcuzc1fXgCOG+fL33uv04cIAEBNIABrw2qSjpH0P0mLJN0pv41bGlQtANddNxeA8+fn5i8vAN95x5e/+26nDxEAgJpAANaerSS9LL9zx9uSfq3l38u3MyXyEfCQIbn5BCAAACuGAKwda0k6WdIYSZ9IuljSbyS9JT8imJSqBeCpp+ZH4LhxPn95Afj22/nrAwDQ6AjA9Osn6W+SWiU9K+nnkrpHln9J0oIExpVVtQA0M2trywXgvvv6PAIQAIAVQwCm3zxJ10rausI6F1RpLKVUNQDNzI4/3oNugw38dTYA29tLr//WW778nXeqNkQAAFKNAEy/tP8PU/UANDN75BGzzTbz5/fe64HX1lZ6XQIQAIB8BGD6fb3M1CvJQUUkEoD//rfZ//t//jx7BHDZstLrjh3ry99+u3rjAwAgzQjA9GuXn/FbamqVdIOkLyQ2uoQC8MknzdZf359nA3DJktLrjhnjy996q3rjAwAgzQjA9PuVpOck/VDS5pnHZyQdL+lASa9Luiax0SUUgM88Y9anjz/PBuDixaXXJQABAMhHAKbfGEnrFsz7Wma+JG0saXJVR5QvkQB84QWzr37Vn2cDcNGi0uuOHu3Lx46t3vgAAEgzAjD95ij/si+S3xlkbuT1/OoNp0giAfjKK2Zrr+3PsyeBLFxYel0CEACAfARg+o2Uf8TbI/N6dUlXSXoi83ojSRMTGFdWIgH4xhtma67pz7NHAFtbS6/75pu+fMyY6o0PAIA0IwDTbyP5Ld+WSpqeeXw7M1+SdpB0UDJDk5RQAL71ltnqq/vzbABG7w8cRQACAJCPAKwNq0jaSdLhmcdVkh1OnkQC8P33Peo+/DAXgPPmlV73jTd8+ejRVR0iAACpRQCm2+ckjZb0+aQHUkEiAWiWuyVc9juAc+eWXi8bgG++Wd3xAQCQVgRg+k2V1C3pQVSQWAD26uVhd9dd/lhuCK+/TgACABBFAKbfeZJ+n/QgKkgsACdP9rDbait/nD279HqjRvnyN96o7vgAAEgrAjD9/itpiaQp8gtAPx2Z0iCxAJw+3cPuC1/wx5kzS69HAAIAkI8ATL/BFaY0SCwAZ83ysOvWzR9nzCi93muv+fLXX6/u+AAASCsCEKESC8DW1tyJIJLZp5+WXo8ABAAgHwFYG9aU9FNJp2deryPpq8kNJ09iAbhsWX4AfvJJ6fVefdWXjxpV3fEBAJBWBGD6bS2/APQ45W759gNJIxIbUb7EAtDMw27VVf3x449Lr0MAAgCQjwBMvyclnZB5Pivz+AVJHyQymmKJBuCxx5p98YseeNOnl17nlVd8+WuvVXdsAACkFQGYfjMkdc08nxmZPyeBsZSSaABefXXuI+Bp08wWLcote/FFn//yy/746quJDBEAgNQhANPvPUnrZp5nA/Drkt5JZjhFEg3Ae+4pviNI1jXXEIAAAJRCAKbfBZIek7ShPADXk3S/pHOSHFREogH4+OO5ALzkklzwmZndcIO/fuklf3zllUSGCABA6hCA6ddd0q2S2jNTm6R7M/PTINEAHDMmF4AXX+yP3/qWL7vlFgIQAIBSCMDa8WVJ28k//k2TRAPQLBeA553njxtu6PNvu81fP/98/pFBAAAaHQGIUKkJwOz01a/6NQKHD/fXTzxBAAIAEEUApt+6km6RNEbS5IIpDRIPwDFjzNZeOz8Cjz7a7K67/HlLS+6jYAAAQADWgsckPSO/FuCAgikNEg9AM7OlS/MD8Fvfyp0VfN99/vjii4kOEQCA1CAA02+O/MLPaZWKADTLD8BvfjMXgNddRwACABBFAKbfO5LWSHoQFaQyAKXcR8DZ6YUXkh4hAADpQACm3yGS/iapt/yOINEpDVITgDNmmL39ttkvf+nB9+MfE4AAAJRCAKZf9Pp/hVMapCYAs+bNKz4aKJn9739JjwwAgHQgANNv1wpTGqQuAM3Mxo4tHYCjRvnyCRPM2tuTHSMAAEkhABEqlQFo5mcGT5tmNnSoB+A66/jjxx/74wMPJD1CAACSQQDWhh0lXS/pwczrbST1S244eVIbgFEDB+aOBI4e7Y/XX5/0qAAASAYBmH5HyC8Fc72kuZl520oamdiI8tVEAJrlAvCcc/zx9NP9cdq0pEcGAEB1EYDp96b8CKAkzco8dpf0cTLDKVJzAZidDj889xwAgEZCAKbf7MjzmZnHLpHnSauZADQzu+KKXPQdeGDuOSeEAAAaCQGYfqMk9c08z0bftpJeTmY4RWoqAM3Mliwx22ST/KOBixYlPSoAAKqHAEy/oyS9L+lX8u8A/kx+d5CfJDimqJoLQDOz9dbLD8D//Ce3bPp0s2XLkhsbAACdjQCsDb+Q9LqkVknjJZ2U6Gjy1WQAzpxpNmhQfgSusop/FCyZ3XBD0iMEAKDzEIAIVZMBmFV4Ysill/rj5ZcnPTIAADoPAYhQNR2AI0aY3XdfcQhefXXSIwMAoPMQgAhV0wGYtWxZ7uifZHbVVUmPCACAzkMANqYjJD0tv8B0m6SuBcu3lPSUpPmSPpA0uMK26iIAs5YuNfvOd8yGDEl6JAAAdB4CsDHtJY/Ao1UcgGtI+lDSHyV1k7SFpCmSfldmW3UVgGZml1zi1wgEAKBeEYCNbVcVB+AASR8VzDtJ0rtltlF3AfjAA2ZrrOG3iHvppaRHAwBA/AjAdPqv/CPa5U2hSgXg5ZIeKVjve5n11iixjboLwEmT8k8IAQCg3hCA6TS4g1OoUgF4o6S/F6y3SWa9r5XYRt0FoBkBCACobwRgY4vtCGBTU5M1Nzdbc3OztbS0JP2+Dvbyy7kAXLgw6dEAABCupaXls7+rm5qaCMAa0kUea9kpVKkAPEoN/h1AM7O2tlwAPv980qMBACBeHAFMvy9LukPSJ/JYi04rq6uk7pL2zmynR+Z1F/lRvqmShkj6vPws4ElqoLOAs0rdJxgAgHpAAKbfbZKel3SgpHmZxxcknRiwzQGS2pULyezzXTLLt5CfZLJAfkmYsytsq24D8NFHzb74RbM6+EQbAIA8BGD6fSipT+b57MzjRpKeSWY4Reo2AM3MNt2UAAQA1B8CMP3mRJ5Pl/S5EvOTVPcB+MgjSY8CAIB4EYDp96akDTPPn5V0uKQ95EcG06CuA3Czzcz+9a+kRwEAQLwIwPQ7QdJBmecHS1om/77e6YmNKF9dB+DmmxOAAID6QwDWnt6SNk56EBF1HYBbbGH28MNJjwIAgHgRgAhV9wH40ENJjwIAgHgRgOnUEnle6b7AaVDXAfjtb5s9+GDSowAAIF4EYDoNjDw/V513L+A41HUAbrklAQgAqD8EIELVdQButZXZAw8kPQoAAOJFAKbfm2Xmj6rqKMqr+wC8//6kRwEAQLwIwPSbV2b+rKqOory6DsCttza7776kRwEAQLwIwPQ6JjO1Sjo68voYSRdJeju5oeWp6wDs25cABADUHwIwvSZmprbI84mSxsvvCPL95IaWp64DcJttzP75z6RHAQBAvAjA9PtX0gNYjroPwH/8I+lRAAAQLwIQoeo6AL/zHQIQAFB/CMD0W0N+zb+HxYWgq27bbc3uvTfpUQAAEC8CMP3uljRO0sXiQtBVt+22ZiNGJD0KAADiRQCm3yxJ6yQ9iArqOgC/+12ze+5JehQAAMSLAEy/iZK6JT2ICuo6ALfbjgAEANQfAjD9fi3pMkldkx5IGXUdgNtvb3b33UmPAgCAeBGA6TdF0lL5BaEnF0xpUPcBeNddSY8CAIB4EYDpN6DClAZ1HYA77GB2551JjwIAgHgRgAhV1wH4ve8RgACA+kMA1ob1JZ0l6crM6w0lbZrccPLUdQDuuKPZ3/+e9CgAAIgXAZh+/SXNl/SYpHmZeTvLLwydBnUfgMOHJz0KAADiRQCm30uSDsg8n5V5XE3StGSGU6SuA3CnnczuuCPpUQAAEC8CMP1mR57PjDyfVbhiQuo6APv1IwABAPWHAEy/sfLv/Em5ANxE0pvJDKdIXQfgzjub3X570qMAACBeBGD6nSLpVUl7yo8G9pP0nKTfJjmoiLoPwL/9LelRAAAQLwIw/bpKOlcef+2SFihddwap6wDcZRcCEABQfwjA2tJL6bsvcF0H4K67mt12W9KjAAAgXgRg+pW73MsDVR1FeXUdgLvtZvbXvyY9CgAA4kUApt/cMvNnlplfbXUfgLfemvQoAACIFwGYXv0z0wJJu0de95d0vKRJyQ0tT10H4O67E4AAgPpDAKZXe2ZqizzPvv5A0s+TG1qeug7A/v3Nbrkl6VEAABAvAjD9Ric9gOWo6wDcYw+zm29OehQAAMSLAESoug/Am25KehQAAMSLAKwNJ8nvCDI/8/g7SV0SHVFOXQfgnnsSgACA+kMApt8pkqZKOlnSfpnHDySdmuSgIuo6APfay+zGG5MeBQAA8SIA0+9tSdsUzOsraVwCYymlrgNw773Nbrgh6VEAABAvAjD9Zqv4tm9dM/PTgAAEAKDGEIDp95KkQwrmHSTplQTGUkpdB+D3v292/fVJjwIAgHgRgOn3Q0mLJd0r6eLM4yL59wHToK4D8Ac/MLvuuqRHAQBAvAjA2vBdSdfK7wt8raTtkh1OnroOwH32Mbv22qRHAQBAvAhAhCIAAQCoMQRgbfiepBsktUi6UdKOyQ4nT10H4L77ml1zTdKjAAAgXgRg+v1c/h3AOyVdmHlcKOmoJAcVUdcB+MMfml19dcfW/e1vzc47r3PHAwBAHAjA9HtH0j4F834g6d0ExlJKXQfgfvuZXXVVx9aVfAIAIO0IwPSbq9LXAZybwFhKIQAzCEAAQK0gANPvXkn7FszbJzM/Deo6AH/0I7Mrr+zYugQgAKBWEIDp9xdJCyTdI+kiSXdLmi9pmKTzIlNS6joA99/f7C9/6di6BCAAoFYQgOn3RAemkYmNrs4D8IADCEAAQP0hABGq7gNw2LCOrUsAAgBqBQGIUHUdgAceaPbnP3dsXQIQAFArCECEqusAPOggsz/9qWPrEoAAgFpBAKKUwZKWyS81My/zeEeZdes6AA8+2ANw6dLlr0sAAgBqBQGIUgZLerqD69Z1AB57bC7s3n+/8roEIACgVhCAKIUAzHj22VzYnXlm5XUJQABArSAAUcpg+Ue/0yVNlH/8+80y69Z1AJqZtbebHXaY2dChldcjAAEAtYIARCmbSeqTeb6upNslvSepR4l16z4Azfyj4EGDKq9DAAIAagUBiI7oJmmhpD1LLOspyZqamqy5udmam5utpaUl6fd17E4+2ay5ufI6BCAAIM1aWlo++7u6qamJAMRydZPUKmmvEssa4gjgwIFmxx1XeR0CEABQKzgCiFIOk/TlzPN1JN0maYKk1Uus2xABeM45Zr/6VeV1CEAAQK0gAFHK/fITQOZLmiI/CWSDMus2RACed57ZL35RetmHH/ojAQgAqBUEIEI1RABecIHZz35WPP+DDzz65s0jAAEAtYMARKiGCMCLLzY74oji+W+95dE3cyYBCACoHQQgQjVEAF5+udkhhxTPHzuWAAQA1B4CEKEaIgCHDTM74IDi+WPGePR98gkBCACoHQQgQjVEAF59tdn22/tdQaJGj/bo++gjAhAAUDsIQIRqiAC8/nqPu1tvzc0bPNjshBN8fvZkEAIQAFALCECEaogAvPFGj7uNN/boW7IkF3yS2aRJBCAAoHYQgAjVEAE4fHh+8PXpk/96/HgCEABQOwhAhGqIAGxvN5s/3+zuu/PDLzuNG0cAAgBqBwGIUA0RgFHjx5ttt11+AG62GQEIAKgdBCBCNVwARpU6GggAQNoRgAjV0AE4YwYBCACoPQQgQjV0AJoRgACA2kMAIlTDB+DChfkB+OKLSY8IAIDKCECEavgANDObPt1sq608AO++O+nRAABQGQGIUARgRlub2T77mP3hD0mPBACAyghAhCIAI4491mzQoKRHAQBAZQQgQhGAEb/+tdlZZyU9CgAAKiMAEYoAjDjuOLOBA5MeBQAAlRGACEUARhx/vNmZZyY9CgAAKiMAEYoAjDjhBLMzzkh6FAAAVEYAIhQBGNHUZHbaaUmPAgCAyghAhCIAI0480ezUU5MeBQAAlRGACEUARpx0ktkppyQ9CgAAKiMAEYoAjPjd78yam/pcEicAABbhSURBVJMeBQAAlRGACEUARpx8sk8AAKQZAYhQBGDE//2fHwUEACDNCECEIgAjTjnFvwcIAECaEYAIRQBGnHqqnwkMAECaEYAIRQBGnH66XwsQAIA0IwARigCMOOMMvxsIAABpRgAiFAEYceaZfj9gAADSjABEKAIw4qyzzI47LulRAABQGQGIUARgxO9/b/brXyc9CgAAKiMAEYoAjBg0yGzTTc223DLpkQAAUB4BiFAEYMTZZ5tJPgEAkFYEIEIRgBGDBxOAAID0IwARigCMOPdcAhAAkH4EIEIRgBF/+AMBCABIPwIQoQjAiCFDigNw6dLkxgMAQCkEIEIRgBF//GNxAEpmY8YkNyYAAAoRgAhFAEacf35+ALa3+/NHH012XAAARBGACEUARlx4YX4ALltGAAIA0ocARCgCMGLo0FwALlzoEwEIAEgbAhChCMCIiy7KBeB555nNnUsAAgDShwBEKAIw4pJLcgH4+9+bzZzpzx980D8OBgAgDQhAhCIAIy69NBeAgwebTZ+ee33EEUmPDgAARwAiFAEYcdll+cH3t7/lXme/F1joww/NPvig+mMFADQuAhChCMCIxx7LD77CadNNzQ45xGzbbXM/06MHdw4BAFQXAYhQBGAJc+aY9epVOQZHjzZbtIhbxwEAqo8ARCgCsIJXXjE7+ujSAbj99vmvAQCoFgIQoQjAFTR9utmqqxYH4fJMm2Y2dmznjw8AUP8IQIQiAFdCe7vZ8OH5ARi9TMzo0WYjRuT/zCabcKQQABAPAhChCMBA0QhcsMDnZWNv6dLcemuvTQACAOJBACIUARjorLPyI/A3vzHbeGN/ftppufUIQABAXAhAVPIHSVMlzZP0pKTNS6xDAMZk4UKzfv088rKXhtl6a7OPP/blBCAAIC4EIMo5TdIkSZtJ6i7pAkkfSOpRsB4BGKNPPy0+OWT99X3ZV77SeQH4s5+Zvfxy52wbAJA+BCDKmSDpxMjrVSR9LOnIgvUIwJiNG2f2r3/lR+Chh+aev/de/H+mZPbLX8a/XQBAOhGAKKWnpHZJ2xfMf1TSpSXWJQA7wdixpa8f2KtX/H8WAQgAjYUARCnryQNw44L5d0q6vmAeAVgFL72UC8AePeLfPgEIAI2FAEQpK3wEsKmpyZqbm625udlaWlqSfl/XnVmzct8B/Na34t8+AQgA9a+lpeWzv6ubmpoIQJRU6juA08V3ABN1440ea/fdV3m91tYV2y4BCACNhSOAKOdUSe/LL/2ymqTzJU0RZwEn6qGHSt85JGruXF8+fXrHt9vRAPza18xGjer4dgEA6UQAopJzJU2TNF9cBzAV2tpy9xEeMsRjb9Gi/HWmT1/xs4VLBaBUfDs6yeySS1Zu7ACA9CAAEYoArLInn8w/K/jgg/OXT53q8999t/w2zjnH4zGrXACeeWbxvEsvDRs/ACB5BCBCEYAJmDgxPwLnzfOgGzcud4TwrbfK/3zh5WQks2OOKV6HAASA+kQAIhQBmJDBg83WWqv0tQIls1dfNfvRj/yI4S9+YXb//f5zCxbk1skiAAGgsRCACEUAJmzJkvIRWDi98kr+69mzc0FYKgAHDiyeRwACQO0jABGKAEyR6683W2edjgehZLbTTgQgADQaAhChCMAa8dFH/rHw44/nB2D37gQgADQaAhChCMAaFA3Abt3KB+BZZxXPIwABoPYRgAhFANag9dcv/ig4G4C//KXZLrsUB2B7OwEIAPWCAEQoArAGtbaaHXBAfgAeeaRfaDo6L/oR8LJlPm+jjTwGAQC1iwBEKAKwhs2aZbbZZpVPEtl5Z7+ryOLFuXkffOA/P2OGn1kMAKgtBCBCEYB1YMwYs5tu8o98t93WrHdvs333zQXf+uubffvb+WE4ZUru+fz5K3brOQBAsghAhCIA61hHLyXz0EP+WHhfYgBAOhGACEUA1rHx4/2ewv/4h9nNN5t973tmO+xQPgS7dPELS1cyb151xg4AKI8ARCgCsEEtXVo6As87r/zPjByZfws6AEAyCECEIgAb3H//a3bPPWaPPOJHCI8/3uzBB80uucSsa1ezIUPMpk71M4dvuskD8NZbza69NumRA0DjIgARigDEZ371qxW7Dd3ll5ttumn57U2ZUr2xA0AjIQARigDEZ6ZNM7vgAg+7hx/27w2OGOGXmtlkk/IheNhhftTwvffMbrjBjyTedpsvu/9+vz4hACA+BCBCEYBYIe+/b/a3v3koHn10x44UfulLZr/4hdkqq3T8z1mwwD96BgAUIwARigBEsMWL/eLSjzzi3x288EKzDTdcfhjuuqvZ737nQfn007ntjR6dWwcAUIwARCgCEJ1m1iyzF180u+sus7PPNjvooMpB+OqrHpHReXPnJv1fAQDpQwAiFAGIqmtt9aN8kyebnXba8o8U3nST2WuvmTU3m02Y4Nc2BIBGRgAiFAGIVHjhhRU7A3nvvXMXtT74YLNhw8xOOcXvanL//f584ECzH/3I7Kmn/M94/XWz3Xf354sX+6VtyrnqKl8HANKIAEQoAhCplD1zePZss//8x2zAALNttjHbaKPl39FkZaa5c80mTjSbOdNs4UKf9+ijSe6B0lpb/dqMABobAYhQBCBqUnu7fyz80EN+h5JrrvGzhk85xWzddXNh99WvhoXhKaeYrbee2U9+Yta7t1nfvmZ//7ufpdzaavbGG2bTp5s9/7xH6+LFZjNmFI938mTf3pIl+f8NUdOnm730UuX/7pYW387SpeH7EEDtIgARigBEw/r4Yz/x5IorzPbZJ94jiqutZrbbbmbduhUv23dfsxNOyL1+7jmzY47JvX75ZbNJk/zkmWefNbv7brOLLvIjoRtt5OtssIHZoYfmrrX45pv+32OWH5Zdu/pZ1jNn+tHU2bPNli0rv09efz33kfncub5dAOlDACIUAQiUsGyZH61btMiP6j39tNlHH5k98YRfA3GHHfyj6PXXjzcc45pWXbXy8j339Lu4ZF8fdlj+8p12yj3ffXeP0Keeyh2BPOEEv4SP5AHdr5/ZfvuZDR9uNn9+LkIXLiz/XcoZM3xfroxnnvHrUAKNigBEKAIQqJLZs/0j48mT/ePrN9/0s6GfeMLsn//0M5w/+cQ/Tn7qKY+cO+7w+HziCb/LytVX+91ZbrrJ7Prrc+v88IfJR2elaeBAsz59/BqRDzzg95zu0sWXXXWVH/UcNMhff/nLZltv7Sf6XHONr79ggZ/oc9ppZn/6k9kPfuDrzpqV/5H7kiV+NDX6UXtHrczPAEkhABGKAAQaWHt78XcRW1s9uMw8sBYt8nmTJ/vt/t54w2z8eP94+p13/Kjff//r34087TT/nuTWW5sdckj1Q3PNNf2xRw8P6lGjzJ580uzaa81uucU/Lh8xwsd+000epo8/7pPkFycfMsTs9NN9+bBhxfvsuef8+6YLF1b+OL0jli3jVolYOQQgQhGAAKpm/nx/XLIkd8LMvHkelQ8/nDsy+tJLfsT0ued8/vXXmw0d6kf/jjjCP6I+4ACzL3wh+aObhx/uH6kPG2b2l7+YnXii3/4wu3zrrf1xxx3NmprMrrzSbO21/eNvyYO5d2+P5wce8Hl9+vg9uc8+OxfX//63B+tdd/l9ug86yC+0fvPNZvfd56F7770e5EuXepwfcYSPr60td5LS4sV+wpGZr3fxxR74Tz1l9vOf+/az6y9aZPbYY/746af5sdrW5t9LXbQoN6/UyUnjx/s/HkaO9P+2xx/3+e3tHsDt7bnxmPktIydM8OczZqxcIH/4oX+/Nwlvvpn/39NZCECEIgAB1JWlS30aM8aPWL71lp/c8tprfhHxceP8upMvvODRc/fdHiUPP+xx9qc/mf3mN6XvXLPeemabbGK2/fZmPXuabbaZfxdU8hN0ttvO7JvfTD5Kyx0ZjU6rrbZy21p7bbO11sqfl/04X/ITj7baqvI2ot8/LTf16lU8r0cPs732yoX//vv7CVHZ5dtsk7/+T37ijwce6Ed0Jf/+6j//6e+DoUM9TF9+2Y/6PvaYnzC1ZIl//WDyZLONN/b3xNNP575uMGOGh+tHH/njnXf6UfPp03NRH/XII758zhy/baaZB/q11/qfN3Wqb2fhwvwTr954w2O2FAIQoQhAAKiC7Eft2cfsUbZp03Ifu7e25pa3tvrR0dbW3NG4adP8KGr2CFNbm0fIp5965H76qX/s/cgjZrfe6vfmvvNOsxtv9MAdNMjsl7/0o5TnnutHIR96yI8SHnCAn8zz3e+anXSSWf/+ZscdZ3byyT5v++09vrbc0j/eP+IIP/J50klmu+xits46Hpp77OFHEtdZx0Oxb18/kUjymOrf3+yMM/wEquhlmnr2LH3W/Fe+4sH45S/78t69c8vWWCP5uK40fetbyz8hq9T0uc+Zde+ee73ddmbHHpu/znHHEYAIQwACAOpC4fdZs69nzfILvY8c6UfbZs82e/tt/y7oE0/k7ll+9dV+VHjECI/oq6/2I3L//rcfJf7rXz2mb77ZP5YfOtRPbPr97z3QHnjAT2q6/Xaz3/7Wz5C/4w6zyy7za4qeeabZT3/q0XzPPWbXXeevzzjD4/rww4tjcK21PLqLQ5IARBgCEACAGjNzJgGIMAQgAAA1hu8AIhQBCABAjSEAEYoABACgxhCACEUAAgBQYwhAhCIAAQCoMQQgQhGAAADUGAIQoQhAAABqDAGIUAQgAAA1hgBEKAIQAIAaQwAiFAEIAECNIQARigAEAKDGEIAIRQACAFBjCECEIgABAKgxBCBCEYAAANQYAhChCEAAAGoMAYhQBCAAADWGAEQoAhAAgBpDACIUAQgAQI0hABGKAAQAoMYQgAhFAAIAUGMIQIQiAAEAqDEEIEIRgAAA1BgCEIV2ldQuaW5mmidpcoX1CUAAAGoMAYhCu0pqk9Slg+sTgDFqaWlJegh1gf0YH/ZlfNiX8WA/xoMARKFsAK7SwfUJwBg1NzcnPYS6wH6MD/syPuzLeLAf40EAolA2ACdJ+kjSvyXtUmF9AjBG/GKLB/sxPuzL+LAv48F+jAcB2DhukX+3ry3zWDiNzKy3jqRvS+oqaXVJp0haKGnLMtvtKcmmTJlic+bMYQqcmpqaEh9DPUzsR/ZlGif2JfsxTdOUKVMIwAbRQ9KXKkxfqPCzT0j6Y5llveVvICYmJiYmJqbam3oLKONxSeeXWdZF/ubpycTExMTExFRTU291/KRP1Lm9JX1T/oZYTdLv5B8Bb5PgmAAAANCJBslPAJkv6WP50b9dEx0RAAAAAAAAgOT8QdJU+R1DnpS0eaKjSZ/BkpYpd1eVuZLuiCzfUtJT8iOuH2TWL9So+/gISU9LmiM/e71rwfI49l1HtlHrlrcf2yW1Kv89Wrif2I/uQklvyPflVEnDJa1XsE4fSQ/K9+PHkv4iadWCdZokTZTvr5cl7bwS26hlHdmP78u/fhR9X+5bsE6j70dJOkfSe5Jmy/8bH5G0VcE6/K5E7E6Tf1y8maTuki6QvzF6JDmolBks/8u3lDUkfSg/w7qbpC0kTZF/7zKrkffxXvJ4OVrF4RLHvuvINupBpf0oeQDuXuHn2Y8550vqK4+InvJ/zL0WWd5FHja3yC+j1UfS65KuiKxzmKRZkvpltnOC/C/d3iuwjVq3vP0oedgdXWEb7Ee3kaQ1M89XlfR/8mv4Zk/s4HclOsUESSdGXq8i/xfIkckMJ5UqBeAA+f9Ro38hnyTp3chr9nHu4uTR/RTHvuvINupJqf0oeQD2r/Bz7MfytpLv0+xfwLtKWixprcg6+8vD5HOZ1yMlXVawnVcl/X4FtlFvCvej5AF4TIWfYT8W6y7pZPm+/HJmHr8rEbue8r84ti+Y/6ikS6s/nNQaLP+FM13+C+0O+VnWknS5/HB91Pfk/+ddQ+zjrFLhEse+W9426k2lAPxQ0ifyj9F+FVnGfqzsdPlfnlknSXqrYJ115ftwi8zrmfIjslHXSRqxAtuoN4X7UfLflx9J+lR+JO805X98y37M2Vd+NLRd/pWjSyLL+F2J2K0nf9NsXDD/TknXV384qbWZ/KMHyX/53C7/V1MPSTdK+nvB+pvI/0/1NbGPs0qFSxz7bnnbqDflAnB3+ZGDVSXtI/+L9bjMMvZjeXvK/3G3V2TeIEnPF6z3efk+3DHzepmk7xesM1TSYyuwjXpSaj9K/n2+1eXv1x3lQXhhZDn7sdgX5R/LHhKZx+9KxI6jUyunm/yLzXuKI4AdxRHAeJQLwEKDJT2Tec5+LG0/+RGX/QvmVzrqlP1SPUeucsrtx1IGyL+XlsV+LK2L/ISQb2de87sSnaLU9wamq7G+n7aiusnPuNxL0lFaue9mNNo+LhUuIfvupyuwjXrS0QA8R9Kzkdfsx3xHyqNlzxLLdpG0SKW/d9Yt83qkiv8B94py313ryDbqQaX9WMpR8rNUs9iPpa0qaYGkgzOv+V2JTnGq/FT9zeV3DTlffmZQI5yh2lGHKfdl3HUk3Sb/P9vq8n85TZU0RP7RxBbyM7GiZ1Y18j7uKv9ocm95uPTIvO6iePZdR7ZRDyrtx77yu/x8Tv5Lf29JM+SX18hiP+acKI+Wncos7yJplKSb5fvl6/KzW6Nnnh4qP3rVT77fj5dfpqT3Cmyj1i1vP24o3z/Z9+kOksYr/7tt7Ed3kqRemedfkX9sO1P+943E70p0onMlTZNfG+hJNc416jrqfvm/pObL/w91h6QNIsu3kJ8lvED+RfyzS2zjXDXmPh4g/2iiLTNln++SWR7HvuvINmpdpf24n6Sx8qMiM+V/QR5bYhvniv0o+b5bLA+N6PXpoiHTR9JDmWWfSPqzis86PUH+F+4C+Yk3/QqWd2QbtWx5+/G78nibI/84c4ykM+T/SIlq9P0o+XUOp8n/G6dKuk/Ft27ldyUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJX8S7l7niatj/wuDt9MeBwAAAANo11S/yr9WYMl/bdKfxYAAADKiCMAO3p/1MHy+4ECAACgyp6QNETSaHkALpB/DPtwZnlXSadIGitptqSXlB+JAyRNkXSCpImZn1Xm9ZuS5shv+H6bpC9llv1U0mJJS+U3np8raSdJ38iMYYPI9n+R2c5sSW9IOiqyLLv+UZJGZbbznKRNVngvAAAANJAnJJ2Xed4uafeC5edKelXShpnXB0iaL2n9zOsB8pC7VlIPSZ/PzD8o8jN9JD0v6Y7IdksdAfyGpDblAvAQeUDuJqmLpD3kwbh/ZP12SY9J6iWpm6R7Mv9NAAAAKKMwAAs/Ap4tac+CeY9JOivzfICkJZK6L+fPOVDSJ5HX5QIwegSwRdJlBev8SX7iSnT9nSLL95UHKgAAAMqoFIC9MvNmS5qZmWbJj8JdmVlngKQPSmz3YEnPSpqe+fl58qN7XTLLOxKAY+QfJUedKP+4Ort+9IihJO2amde1xJgAAACg/ABsU34AdpN/J7BfhZ8fIGlywbzekpZJOly5k0IOVH6Yna3lfwTckSOABCAAAMAKigbgVEnHFyy/TPknVqwmaWflvt9XKgA3lkfYHpnXG0l6Qflhdqyk95X/0XHhEcBD5Uccd838XH/5dwIPKLO+RAACAAAs10jlAvAoSZPkH/U+kJnXVdJv5WfizpI0TX6G8KaZ5aUCUJJOl5/9O0fSM/KPbqNh1lPSo5JmZP68HVX6iN4x8o+C52TGMCCyjCOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1fP/AW2tZQPkGdPwAAAAAElFTkSuQmCC\">"
+ ],
+ "text/plain": [
+ "<IPython.core.display.HTML object>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ "[<matplotlib.lines.Line2D at 0x7f26a40123c8>]"
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "plt.xlabel('iteration')\n",
+ "plt.ylabel('potential energy')\n",
+ "plt.plot(energies)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "-2.7617330706844485"
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "L.eval(\"pe\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "-2.9871561644794546"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "emin"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "23.597375873270526"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "estart"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "534"
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "naccept"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\ntWGcGckAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ "<IPython.core.display.Image object>"
+ ]
+ },
+ "execution_count": 25,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "L.image(zoom=1.6)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "# close dump file to access it\n",
+ "L.undump(3)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "<video controls><source src=\"movie.mp4\"></video>"
+ ],
+ "text/plain": [
+ "<IPython.core.display.HTML object>"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "L.video(\"movie.mp4\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.5.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 1
+}
diff --git a/python/examples/pylammps/mpi4py/hello.py b/python/examples/pylammps/mpi4py/hello.py
new file mode 100644
index 000000000..887a13f48
--- /dev/null
+++ b/python/examples/pylammps/mpi4py/hello.py
@@ -0,0 +1,4 @@
+from mpi4py import MPI
+
+comm=MPI.COMM_WORLD
+print("Hello from rank %d of %d" % (comm.rank, comm.size))
diff --git a/python/examples/pylammps/mpi4py/in.melt b/python/examples/pylammps/mpi4py/in.melt
new file mode 100644
index 000000000..8431a4344
--- /dev/null
+++ b/python/examples/pylammps/mpi4py/in.melt
@@ -0,0 +1,33 @@
+# 3d Lennard-Jones melt
+
+units lj
+atom_style atomic
+
+lattice fcc 0.8442
+region box block 0 10 0 10 0 10
+create_box 1 box
+create_atoms 1 box
+mass 1 1.0
+
+velocity all create 3.0 87287
+
+pair_style lj/cut 2.5
+pair_coeff 1 1 1.0 1.0 2.5
+
+neighbor 0.3 bin
+neigh_modify every 20 delay 0 check no
+
+fix 1 all nve
+
+#dump id all atom 50 dump.melt
+
+#dump 2 all image 25 image.*.jpg type type &
+# axes yes 0.8 0.02 view 60 -30
+#dump_modify 2 pad 3
+
+#dump 3 all movie 25 movie.mpg type type &
+# axes yes 0.8 0.02 view 60 -30
+#dump_modify 3 pad 3
+
+thermo 50
+run 250
diff --git a/python/examples/pylammps/mpi4py/melt.py b/python/examples/pylammps/mpi4py/melt.py
new file mode 100644
index 000000000..ad9c54c0b
--- /dev/null
+++ b/python/examples/pylammps/mpi4py/melt.py
@@ -0,0 +1,10 @@
+from mpi4py import MPI
+from lammps import PyLammps
+
+L = PyLammps()
+L.file('in.melt')
+
+
+if MPI.COMM_WORLD.rank == 0:
+ pe = L.eval("pe")
+ print("Potential Energy:", pe)
diff --git a/python/examples/ipython/simple.ipynb b/python/examples/pylammps/simple.ipynb
similarity index 100%
rename from python/examples/ipython/simple.ipynb
rename to python/examples/pylammps/simple.ipynb
diff --git a/src/.gitignore b/src/.gitignore
index cb9656184..a7c647e27 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -1,1029 +1,1037 @@
/Makefile.package
/Makefile.package.settings
/MAKE/MINE
/Make.py.last
/lmp_*
/style_*.h
/*_gpu.h
/*_gpu.cpp
/*_intel.h
/*_intel.cpp
/*_kokkos.h
/*_kokkos.cpp
/*_omp.h
/*_omp.cpp
/*_tally.h
/*_tally.cpp
/*_rx.h
/*_rx.cpp
/kokkos.cpp
/kokkos.h
/kokkos_type.h
/manifold*.cpp
/manifold*.h
/fix_*manifold*.cpp
/fix_*manifold*.h
/fix_qeq*.cpp
/fix_qeq*.h
/compute_test_nbl.cpp
/compute_test_nbl.h
/pair_multi_lucy.cpp
/pair_multi_lucy.h
/colvarproxy_lammps.cpp
/colvarproxy_lammps.h
/fix_colvars.cpp
/fix_colvars.h
/dump_molfile.cpp
/dump_molfile.h
/molfile_interface.cpp
/molfile_interface.h
/molfile_plugin.h
/vmdplugin.h
/type_detector.h
/intel_buffers.cpp
/intel_buffers.h
/intel_intrinsics.h
/intel_preprocess.h
/intel_simd.h
/compute_sna_atom.cpp
/compute_sna_atom.h
/compute_snad_atom.cpp
/compute_snad_atom.h
/compute_snav_atom.cpp
/compute_snav_atom.h
/openmp_snap.h
/pair_snap.cpp
/pair_snap.h
/sna.cpp
/sna.h
/atom_vec_wavepacket.cpp
/atom_vec_wavepacket.h
/fix_nve_awpmd.cpp
/fix_nve_awpmd.h
/pair_awpmd_cut.cpp
/pair_awpmd_cut.h
/angle_cg_cmm.cpp
/angle_cg_cmm.h
/angle_charmm.cpp
/angle_charmm.h
/angle_class2.cpp
/angle_class2.h
/angle_cosine.cpp
/angle_cosine.h
/angle_cosine_delta.cpp
/angle_cosine_delta.h
/angle_cosine_periodic.cpp
/angle_cosine_periodic.h
/angle_cosine_shift.cpp
/angle_cosine_shift.h
/angle_cosine_shift_exp.cpp
/angle_cosine_shift_exp.h
/angle_cosine_squared.cpp
/angle_cosine_squared.h
/angle_dipole.cpp
/angle_dipole.h
/angle_fourier.cpp
/angle_fourier.h
/angle_fourier_simple.cpp
/angle_fourier_simple.h
/angle_harmonic.cpp
/angle_harmonic.h
/angle_quartic.cpp
/angle_quartic.h
/angle_sdk.cpp
/angle_sdk.h
/angle_table.cpp
/angle_table.h
/atom_vec_angle.cpp
/atom_vec_angle.h
/atom_vec_bond.cpp
/atom_vec_bond.h
/atom_vec_colloid.cpp
/atom_vec_colloid.h
/atom_vec_dipole.cpp
/atom_vec_dipole.h
/atom_vec_dpd.cpp
/atom_vec_dpd.h
/atom_vec_electron.cpp
/atom_vec_electron.h
/atom_vec_ellipsoid.cpp
/atom_vec_ellipsoid.h
/atom_vec_full.cpp
/atom_vec_full.h
/atom_vec_full_hars.cpp
/atom_vec_full_hars.h
/atom_vec_granular.cpp
/atom_vec_granular.h
/atom_vec_meso.cpp
/atom_vec_meso.h
/atom_vec_molecular.cpp
/atom_vec_molecular.h
/atom_vec_peri.cpp
/atom_vec_peri.h
/atom_vec_template.cpp
/atom_vec_template.h
/body_nparticle.cpp
/body_nparticle.h
/bond_class2.cpp
/bond_class2.h
/bond_fene.cpp
/bond_fene.h
/bond_fene_expand.cpp
/bond_fene_expand.h
/bond_harmonic.cpp
/bond_harmonic.h
/bond_harmonic_shift.cpp
/bond_harmonic_shift.h
/bond_harmonic_shift_cut.cpp
/bond_harmonic_shift_cut.h
/bond_morse.cpp
/bond_morse.h
/bond_nonlinear.cpp
/bond_nonlinear.h
/bond_quartic.cpp
/bond_quartic.h
/bond_table.cpp
/bond_table.h
/cg_cmm_parms.cpp
/cg_cmm_parms.h
/commgrid.cpp
/commgrid.h
/compute_ackland_atom.cpp
/compute_ackland_atom.h
/compute_basal_atom.cpp
/compute_basal_atom.h
/compute_body_local.cpp
/compute_body_local.h
/compute_cna_atom2.cpp
/compute_cna_atom2.h
/compute_damage_atom.cpp
/compute_damage_atom.h
/compute_dilatation_atom.cpp
/compute_dilatation_atom.h
/compute_dpd.cpp
/compute_dpd.h
/compute_dpd_atom.cpp
/compute_dpd_atom.h
/compute_erotate_asphere.cpp
/compute_erotate_asphere.h
/compute_erotate_rigid.cpp
/compute_erotate_rigid.h
/compute_event_displace.cpp
/compute_event_displace.h
/compute_fep.cpp
/compute_fep.h
/compute_force_tally.cpp
/compute_force_tally.h
/compute_heat_flux_tally.cpp
/compute_heat_flux_tally.h
/compute_ke_atom_eff.cpp
/compute_ke_atom_eff.h
/compute_ke_eff.cpp
/compute_ke_eff.h
/compute_ke_rigid.cpp
/compute_ke_rigid.h
/compute_meso_e_atom.cpp
/compute_meso_e_atom.h
/compute_meso_rho_atom.cpp
/compute_meso_rho_atom.h
/compute_meso_t_atom.cpp
/compute_meso_t_atom.h
/compute_msd_nongauss.cpp
/compute_msd_nongauss.h
/compute_pe_tally.cpp
/compute_pe_tally.h
/compute_plasticity_atom.cpp
/compute_plasticity_atom.h
+/compute_pressure_grem.cpp
+/compute_pressure_grem.h
/compute_rigid_local.cpp
/compute_rigid_local.h
/compute_spec_atom.cpp
/compute_spec_atom.h
/compute_stress_tally.cpp
/compute_stress_tally.h
/compute_temp_asphere.cpp
/compute_temp_asphere.h
/compute_temp_body.cpp
/compute_temp_body.h
/compute_temp_deform_eff.cpp
/compute_temp_deform_eff.h
/compute_temp_eff.cpp
/compute_temp_eff.h
/compute_temp_region_eff.cpp
/compute_temp_region_eff.h
/compute_temp_rotate.cpp
/compute_temp_rotate.h
/compute_ti.cpp
/compute_ti.h
/compute_voronoi_atom.cpp
/compute_voronoi_atom.h
/dihedral_charmm.cpp
/dihedral_charmm.h
/dihedral_class2.cpp
/dihedral_class2.h
/dihedral_cosine_shift_exp.cpp
/dihedral_cosine_shift_exp.h
/dihedral_fourier.cpp
/dihedral_fourier.h
/dihedral_harmonic.cpp
/dihedral_harmonic.h
/dihedral_helix.cpp
/dihedral_helix.h
/dihedral_hybrid.cpp
/dihedral_hybrid.h
/dihedral_multi_harmonic.cpp
/dihedral_multi_harmonic.h
/dihedral_nharmonic.cpp
/dihedral_nharmonic.h
/dihedral_opls.cpp
/dihedral_opls.h
/dihedral_quadratic.cpp
/dihedral_quadratic.h
/dihedral_spherical.cpp
/dihedral_spherical.h
/dihedral_table.cpp
/dihedral_table.h
/dump_atom_gz.cpp
/dump_atom_gz.h
/dump_xyz_gz.cpp
/dump_xyz_gz.h
/dump_atom_mpiio.cpp
/dump_atom_mpiio.h
/dump_cfg_gz.cpp
/dump_cfg_gz.h
/dump_cfg_mpiio.cpp
/dump_cfg_mpiio.h
/dump_custom_gz.cpp
/dump_custom_gz.h
/dump_custom_mpiio.cpp
/dump_custom_mpiio.h
/dump_custom_vtk.cpp
/dump_custom_vtk.h
/dump_h5md.cpp
/dump_h5md.h
/dump_nc.cpp
/dump_nc.h
/dump_nc_mpiio.cpp
/dump_nc_mpiio.h
/dump_xtc.cpp
/dump_xtc.h
/dump_xyz_mpiio.cpp
/dump_xyz_mpiio.h
/ewald.cpp
/ewald.h
/ewald_cg.cpp
/ewald_cg.h
/ewald_disp.cpp
/ewald_disp.h
/ewald_n.cpp
/ewald_n.h
/fft3d.cpp
/fft3d.h
/fft3d_wrap.cpp
/fft3d_wrap.h
/fix_adapt_fep.cpp
/fix_adapt_fep.h
/fix_addtorque.cpp
/fix_addtorque.h
/fix_append_atoms.cpp
/fix_append_atoms.h
/fix_atc.cpp
/fix_atc.h
/fix_ave_correlate_long.cpp
/fix_ave_correlate_long.h
/fix_bond_break.cpp
/fix_bond_break.h
/fix_bond_create.cpp
/fix_bond_create.h
/fix_bond_swap.cpp
/fix_bond_swap.h
/fix_cmap.cpp
/fix_cmap.h
/fix_deposit.cpp
/fix_deposit.h
/fix_dpd_energy.cpp
/fix_dpd_energy.h
/fix_efield.cpp
/fix_efield.h
/fix_eos_cv.cpp
/fix_eos_cv.h
/fix_eos_table.cpp
/fix_eos_table.h
/fix_evaporate.cpp
/fix_evaporate.h
/fix_viscosity.cpp
/fix_viscosity.h
/fix_ehex.cpp
/fix_ehex.h
/fix_event.cpp
/fix_event.h
/fix_event_prd.cpp
/fix_event_prd.h
/fix_event_tad.cpp
/fix_event_tad.h
/fix_flow_gauss.cpp
/fix_flow_gauss.h
/fix_freeze.cpp
/fix_freeze.h
/fix_gcmc.cpp
/fix_gcmc.h
/fix_gld.cpp
/fix_gld.h
/fix_gle.cpp
/fix_gle.h
/fix_gpu.cpp
/fix_gpu.h
+/fix_grem.cpp
+/fix_grem.h
/fix_imd.cpp
/fix_imd.h
/fix_ipi.cpp
/fix_ipi.h
/fix_lambdah_calc.cpp
/fix_lambdah_calc.h
/fix_langevin_eff.cpp
/fix_langevin_eff.h
/fix_lb_fluid.cpp
/fix_lb_fluid.h
/fix_lb_momentum.cpp
/fix_lb_momentum.h
/fix_lb_pc.cpp
/fix_lb_pc.h
/fix_lb_rigid_pc_sphere.cpp
/fix_lb_rigid_pc_sphere.h
/fix_lb_viscous.cpp
/fix_lb_viscous.h
/fix_load_report.cpp
/fix_load_report.h
/fix_meso.cpp
/fix_meso.h
/fix_meso_stationary.cpp
/fix_meso_stationary.h
/fix_msst.cpp
/fix_msst.h
/fix_neb.cpp
/fix_neb.h
/fix_nh_asphere.cpp
/fix_nh_asphere.h
/fix_nph_asphere.cpp
/fix_nph_asphere.h
/fix_npt_asphere.cpp
/fix_npt_asphere.h
/fix_nve_asphere.cpp
/fix_nve_asphere.h
/fix_nve_asphere_noforce.cpp
/fix_nve_asphere_noforce.h
/fix_nh_body.cpp
/fix_nh_body.h
/fix_nph_body.cpp
/fix_nph_body.h
/fix_npt_body.cpp
/fix_npt_body.h
/fix_nvt_body.cpp
/fix_nvt_body.h
/fix_nve_body.cpp
/fix_nve_body.h
/fix_nvt_asphere.cpp
/fix_nvt_asphere.h
/fix_nh_eff.cpp
/fix_nh_eff.h
/fix_nph_eff.cpp
/fix_nph_eff.h
/fix_nphug.cpp
/fix_nphug.h
/fix_npt_eff.cpp
/fix_npt_eff.h
/fix_nve_eff.cpp
/fix_nve_eff.h
/fix_nve_line.cpp
/fix_nve_line.h
/fix_nvt_eff.cpp
/fix_nvt_eff.h
/fix_nvt_sllod_eff.cpp
/fix_nvt_sllod_eff.h
/fix_nve_tri.cpp
/fix_nve_tri.h
/fix_oneway.cpp
/fix_oneway.h
/fix_orient_bcc.cpp
/fix_orient_bcc.h
/fix_orient_fcc.cpp
/fix_orient_fcc.h
/fix_peri_neigh.cpp
/fix_peri_neigh.h
/fix_phonon.cpp
/fix_phonon.h
/fix_poems.cpp
/fix_poems.h
/fix_pour.cpp
/fix_pour.h
/fix_qeq_comb.cpp
/fix_qeq_comb.h
/fix_qeq_reax.cpp
/fix_qeq_fire.cpp
/fix_qeq_fire.h
/fix_qeq_reax.h
/fix_qmmm.cpp
/fix_qmmm.h
/fix_reax_bonds.cpp
/fix_reax_bonds.h
/fix_reax_c.cpp
/fix_reax_c.h
/fix_reaxc_bonds.cpp
/fix_reaxc_bonds.h
/fix_reaxc_species.cpp
/fix_reaxc_species.h
/fix_rigid.cpp
/fix_rigid.h
/fix_rigid_nh.cpp
/fix_rigid_nh.h
/fix_rigid_nph.cpp
/fix_rigid_nph.h
/fix_rigid_npt.cpp
/fix_rigid_npt.h
/fix_rigid_nve.cpp
/fix_rigid_nve.h
/fix_rigid_nvt.cpp
/fix_rigid_nvt.h
/fix_rigid_nh_small.cpp
/fix_rigid_nh_small.h
/fix_rigid_nph_small.cpp
/fix_rigid_nph_small.h
/fix_rigid_npt_small.cpp
/fix_rigid_npt_small.h
/fix_rigid_nve_small.cpp
/fix_rigid_nve_small.h
/fix_rigid_nvt_small.cpp
/fix_rigid_nvt_small.h
/fix_rigid_small.cpp
/fix_rigid_small.h
/fix_shake.cpp
/fix_shake.h
/fix_shardlow.cpp
/fix_shardlow.h
/fix_smd.cpp
/fix_smd.h
/fix_species.cpp
/fix_species.h
/fix_spring_pull.cpp
/fix_spring_pull.h
/fix_srd.cpp
/fix_srd.h
/fix_temp_rescale_eff.cpp
/fix_temp_rescale_eff.h
/fix_thermal_conductivity.cpp
/fix_thermal_conductivity.h
/fix_ti_rs.cpp
/fix_ti_rs.h
/fix_ti_spring.cpp
/fix_ti_spring.h
/fix_ttm.cpp
/fix_ttm.h
/fix_tune_kspace.cpp
/fix_tune_kspace.h
/fix_wall_colloid.cpp
/fix_wall_colloid.h
/fix_wall_gran.cpp
/fix_wall_gran.h
/fix_wall_gran_region.cpp
/fix_wall_gran_region.h
/fix_wall_piston.cpp
/fix_wall_piston.h
/fix_wall_srd.cpp
/fix_wall_srd.h
/gpu_extra.h
/gridcomm.cpp
/gridcomm.h
/group_ndx.cpp
/group_ndx.h
/ndx_group.cpp
/ndx_group.h
/improper_class2.cpp
/improper_class2.h
/improper_cossq.cpp
/improper_cossq.h
/improper_cvff.cpp
/improper_cvff.h
/improper_distance.cpp
/improper_distance.h
/improper_fourier.cpp
/improper_fourier.h
/improper_harmonic.cpp
/improper_harmonic.h
/improper_hybrid.cpp
/improper_hybrid.h
/improper_ring.cpp
/improper_ring.h
/improper_umbrella.cpp
/improper_umbrella.h
/kissfft.h
/lj_sdk_common.h
/math_complex.h
/math_vector.h
/mgpt_*.cpp
/mgpt_*.h
/msm.cpp
/msm.h
/msm_cg.cpp
/msm_cg.h
/neb.cpp
/neb.h
/pair_adp.cpp
/pair_adp.h
/pair_agni.cpp
/pair_agni.h
/pair_airebo.cpp
/pair_airebo.h
/pair_airebo_morse.cpp
/pair_airebo_morse.h
/pair_body.cpp
/pair_body.h
/pair_bop.cpp
/pair_bop.h
/pair_born_coul_long.cpp
/pair_born_coul_long.h
/pair_born_coul_msm.cpp
/pair_born_coul_msm.h
/pair_brownian.cpp
/pair_brownian.h
/pair_brownian_poly.cpp
/pair_brownian_poly.h
/pair_buck_coul_long.cpp
/pair_buck_coul_long.h
/pair_buck_coul_msm.cpp
/pair_buck_coul_msm.h
/pair_buck_coul.cpp
/pair_buck_coul.h
/pair_buck_long_coul_long.cpp
/pair_buck_long_coul_long.h
/pair_cdeam.cpp
/pair_cdeam.h
/pair_cg_cmm.cpp
/pair_cg_cmm.h
/pair_cg_cmm_coul_cut.cpp
/pair_cg_cmm_coul_cut.h
/pair_cg_cmm_coul_long.cpp
/pair_cg_cmm_coul_long.h
/pair_cmm_common.cpp
/pair_cmm_common.h
/pair_cg_cmm_coul_msm.cpp
/pair_cg_cmm_coul_msm.h
/pair_comb.cpp
/pair_comb.h
/pair_comb3.cpp
/pair_comb3.h
/pair_colloid.cpp
/pair_colloid.h
/pair_coul_diel.cpp
/pair_coul_diel.h
/pair_coul_long.cpp
/pair_coul_long.h
/pair_coul_msm.cpp
/pair_coul_msm.h
/pair_dipole_cut.cpp
/pair_dipole_cut.h
/pair_dipole_sf.cpp
/pair_dipole_sf.h
/pair_dpd_mt.cpp
/pair_dpd_mt.h
/pair_dsmc.cpp
/pair_dsmc.h
/pair_eam.cpp
/pair_eam.h
/pair_eam_opt.cpp
/pair_eam_opt.h
/pair_eam_alloy.cpp
/pair_eam_alloy.h
/pair_eam_alloy_opt.cpp
/pair_eam_alloy_opt.h
/pair_eam_fs.cpp
/pair_eam_fs.h
/pair_eam_fs_opt.cpp
/pair_eam_fs_opt.h
/pair_edip.cpp
/pair_edip.h
/pair_eff_cut.cpp
/pair_eff_cut.h
/pair_eff_inline.h
/pair_eim.cpp
/pair_eim.h
/pair_gauss_cut.cpp
/pair_gauss_cut.h
/pair_gayberne.cpp
/pair_gayberne.h
/pair_gran_easy.cpp
/pair_gran_easy.h
/pair_gran_hertz_history.cpp
/pair_gran_hertz_history.h
/pair_gran_hooke.cpp
/pair_gran_hooke.h
/pair_gran_hooke_history.cpp
/pair_gran_hooke_history.h
/pair_gw.cpp
/pair_gw.h
/pair_gw_zbl.cpp
/pair_gw_zbl.h
/pair_hbond_dreiding_lj.cpp
/pair_hbond_dreiding_lj.h
/pair_hbond_dreiding_morse.cpp
/pair_hbond_dreiding_morse.h
/pair_lcbop.cpp
/pair_lcbop.h
/pair_line_lj.cpp
/pair_line_lj.h
/pair_list.cpp
/pair_list.h
/pair_lj_charmm_coul_charmm.cpp
/pair_lj_charmm_coul_charmm.h
/pair_lj_charmm_coul_charmm_implicit.cpp
/pair_lj_charmm_coul_charmm_implicit.h
/pair_lj_charmm_coul_long.cpp
/pair_lj_charmm_coul_long.h
/pair_lj_charmm_coul_long_opt.cpp
/pair_lj_charmm_coul_long_opt.h
/pair_lj_charmm_coul_long_soft.cpp
/pair_lj_charmm_coul_long_soft.h
/pair_lj_charmm_coul_msm.cpp
/pair_lj_charmm_coul_msm.h
/pair_lj_class2.cpp
/pair_lj_class2.h
/pair_lj_class2_coul_cut.cpp
/pair_lj_class2_coul_cut.h
/pair_lj_class2_coul_long.cpp
/pair_lj_class2_coul_long.h
/pair_lj_coul.cpp
/pair_lj_coul.h
/pair_coul_cut_soft.cpp
/pair_coul_cut_soft.h
/pair_coul_long_soft.cpp
/pair_coul_long_soft.h
/pair_lj_cut_coul_cut_soft.cpp
/pair_lj_cut_coul_cut_soft.h
/pair_lj_cut_tip4p_cut.cpp
/pair_lj_cut_tip4p_cut.h
/pair_lj_cut_coul_long.cpp
/pair_lj_cut_coul_long.h
/pair_lj_cut_coul_long_opt.cpp
/pair_lj_cut_coul_long_opt.h
/pair_lj_cut_coul_long_soft.cpp
/pair_lj_cut_coul_long_soft.h
/pair_lj_cut_coul_msm.cpp
/pair_lj_cut_coul_msm.h
/pair_lj_cut_dipole_cut.cpp
/pair_lj_cut_dipole_cut.h
/pair_lj_cut_dipole_long.cpp
/pair_lj_cut_dipole_long.h
/pair_lj_cut_*hars_*.cpp
/pair_lj_cut_*hars_*.h
/pair_lj_cut_soft.cpp
/pair_lj_cut_soft.h
/pair_lj_cut_tip4p_long.cpp
/pair_lj_cut_tip4p_long.h
/pair_lj_cut_tip4p_long_opt.cpp
/pair_lj_cut_tip4p_long_opt.h
/pair_lj_cut_tip4p_long_soft.cpp
/pair_lj_cut_tip4p_long_soft.h
/pair_lj_long_coul_long.cpp
/pair_lj_long_coul_long.h
/pair_lj_long_coul_long_opt.cpp
/pair_lj_long_coul_long_opt.h
/pair_lj_long_dipole_long.cpp
/pair_lj_long_dipole_long.h
/pair_lj_long_tip4p_long.cpp
/pair_lj_long_tip4p_long.h
/pair_lj_cut_opt.cpp
/pair_lj_cut_opt.h
/pair_lj_cut_tgpu.cpp
/pair_lj_cut_tgpu.h
/pair_lj_sdk.cpp
/pair_lj_sdk.h
/pair_lj_sdk_coul_long.cpp
/pair_lj_sdk_coul_long.h
/pair_lj_sdk_coul_msm.cpp
/pair_lj_sdk_coul_msm.h
/pair_lj_sf.cpp
/pair_lj_sf.h
/pair_lj_sf_dipole_sf.cpp
/pair_lj_sf_dipole_sf.h
/pair_lubricateU.cpp
/pair_lubricateU.h
/pair_lubricateU_poly.cpp
/pair_lubricateU_poly.h
/pair_lubricate_poly.cpp
/pair_lubricate_poly.h
/pair_lubricate.cpp
/pair_lubricate.h
/pair_meam.cpp
/pair_meam.h
/pair_meam_spline.cpp
/pair_meam_spline.h
/pair_meam_sw_spline.cpp
/pair_meam_sw_spline.h
/pair_morse_opt.cpp
/pair_morse_opt.h
/pair_morse_soft.cpp
/pair_morse_soft.h
/pair_nb3b_harmonic.cpp
/pair_nb3b_harmonic.h
/pair_nm_cut.cpp
/pair_nm_cut.h
/pair_nm_cut_coul_cut.cpp
/pair_nm_cut_coul_cut.h
/pair_nm_cut_coul_long.cpp
/pair_nm_cut_coul_long.h
/pair_peri_eps.cpp
/pair_peri_eps.h
/pair_peri_lps.cpp
/pair_peri_lps.h
/pair_peri_pmb.cpp
/pair_peri_pmb.h
/pair_peri_ves.cpp
/pair_peri_ves.h
/pair_reax.cpp
/pair_reax.h
/pair_reax_fortran.h
/pair_reax_c.cpp
/pair_reax_c.h
/pair_rebo.cpp
/pair_rebo.h
/pair_resquared.cpp
/pair_resquared.h
/pair_sph_heatconduction.cpp
/pair_sph_heatconduction.h
/pair_sph_idealgas.cpp
/pair_sph_idealgas.h
/pair_sph_lj.cpp
/pair_sph_lj.h
/pair_sph_rhosum.cpp
/pair_sph_rhosum.h
/pair_sph_taitwater.cpp
/pair_sph_taitwater.h
/pair_sph_taitwater_morris.cpp
/pair_sph_taitwater_morris.h
/pair_sw.cpp
/pair_sw.h
/pair_tersoff.cpp
/pair_tersoff.h
/pair_tersoff_mod.cpp
/pair_tersoff_mod.h
+/pair_tersoff_mod_c.cpp
+/pair_tersoff_mod_c.h
/pair_tersoff_table.cpp
/pair_tersoff_table.h
/pair_tersoff_zbl.cpp
/pair_tersoff_zbl.h
/pair_tip4p_cut.cpp
/pair_tip4p_cut.h
/pair_tip4p_long.cpp
/pair_tip4p_long.h
/pair_tip4p_long_soft.cpp
/pair_tip4p_long_soft.h
/pair_tri_lj.cpp
/pair_tri_lj.h
/pair_yukawa_colloid.cpp
/pair_yukawa_colloid.h
/pppm.cpp
/pppm.h
/pppm_cg.cpp
/pppm_cg.h
/pppm_disp.cpp
/pppm_disp.h
/pppm_disp_tip4p.cpp
/pppm_disp_tip4p.h
/pppm_old.cpp
/pppm_old.h
/pppm_proxy.cpp
/pppm_proxy.h
/pppm_stagger.cpp
/pppm_stagger.h
/pppm_tip4p.cpp
/pppm_tip4p.h
/pppm_tip4p_proxy.cpp
/pppm_tip4p_proxy.h
/pppm_tip4p_cg.cpp
/pppm_tip4p_cg.h
/prd.cpp
/prd.h
/python.cpp
/python.h
/reader_molfile.cpp
/reader_molfile.h
/reaxc_allocate.cpp
/reaxc_allocate.h
/reaxc_basic_comm.cpp
/reaxc_basic_comm.h
/reaxc_bond_orders.cpp
/reaxc_bond_orders.h
/reaxc_bonds.cpp
/reaxc_bonds.h
/reaxc_control.cpp
/reaxc_control.h
/reaxc_defs.h
/reaxc_ffield.cpp
/reaxc_ffield.h
/reaxc_forces.cpp
/reaxc_forces.h
/reaxc_hydrogen_bonds.cpp
/reaxc_hydrogen_bonds.h
/reaxc_init_md.cpp
/reaxc_init_md.h
/reaxc_io_tools.cpp
/reaxc_io_tools.h
/reaxc_list.cpp
/reaxc_list.h
/reaxc_lookup.cpp
/reaxc_lookup.h
/reaxc_multi_body.cpp
/reaxc_multi_body.h
/reaxc_nonbonded.cpp
/reaxc_nonbonded.h
/reaxc_reset_tools.cpp
/reaxc_reset_tools.h
/reaxc_system_props.cpp
/reaxc_system_props.h
/reaxc_tool_box.cpp
/reaxc_tool_box.h
/reaxc_torsion_angles.cpp
/reaxc_torsion_angles.h
/reaxc_traj.cpp
/reaxc_traj.h
/reaxc_types.h
/reaxc_valence_angles.cpp
/reaxc_valence_angles.h
/reaxc_vector.cpp
/reaxc_vector.h
/remap.cpp
/remap.h
/remap_wrap.cpp
/remap_wrap.h
/restart_mpiio.cpp
/restart_mpiio.h
/smd_kernels.h
/smd_material_models.cpp
/smd_material_models.h
/smd_math.h
/tad.cpp
/tad.h
/temper.cpp
/temper.h
+/temper_grem.cpp
+/temper_grem.h
/thr_data.cpp
/thr_data.h
/verlet_split.cpp
/verlet_split.h
/write_dump.cpp
/write_dump.h
/xdr_compat.cpp
/xdr_compat.h
/atom_vec_smd.cpp
/atom_vec_smd.h
/compute_saed.cpp
/compute_saed.h
/compute_saed_consts.h
/compute_smd_contact_radius.cpp
/compute_smd_contact_radius.h
/compute_smd_damage.cpp
/compute_smd_damage.h
/compute_smd_hourglass_error.cpp
/compute_smd_hourglass_error.h
/compute_smd_internal_energy.cpp
/compute_smd_internal_energy.h
/compute_smd_plastic_strain.cpp
/compute_smd_plastic_strain.h
/compute_smd_plastic_strain_rate.cpp
/compute_smd_plastic_strain_rate.h
/compute_smd_rho.cpp
/compute_smd_rho.h
/compute_smd_tlsph_defgrad.cpp
/compute_smd_tlsph_defgrad.h
/compute_smd_tlsph_dt.cpp
/compute_smd_tlsph_dt.h
/compute_smd_tlsph_num_neighs.cpp
/compute_smd_tlsph_num_neighs.h
/compute_smd_tlsph_shape.cpp
/compute_smd_tlsph_shape.h
/compute_smd_tlsph_strain.cpp
/compute_smd_tlsph_strain.h
/compute_smd_tlsph_strain_rate.cpp
/compute_smd_tlsph_strain_rate.h
/compute_smd_tlsph_stress.cpp
/compute_smd_tlsph_stress.h
/compute_smd_triangle_mesh_vertices.cpp
/compute_smd_triangle_mesh_vertices.h
/compute_smd_ulsph_effm.cpp
/compute_smd_ulsph_effm.h
/compute_smd_ulsph_num_neighs.cpp
/compute_smd_ulsph_num_neighs.h
/compute_smd_ulsph_strain.cpp
/compute_smd_ulsph_strain.h
/compute_smd_ulsph_strain_rate.cpp
/compute_smd_ulsph_strain_rate.h
/compute_smd_ulsph_stress.cpp
/compute_smd_ulsph_stress.h
/compute_smd_vol.cpp
/compute_smd_vol.h
/compute_temp_cs.cpp
/compute_temp_cs.h
/compute_temp_drude.cpp
/compute_temp_drude.h
/compute_xrd.cpp
/compute_xrd.h
/compute_xrd_consts.h
/fix_atom_swap.cpp
/fix_atom_swap.h
/fix_ave_spatial_sphere.cpp
/fix_ave_spatial_sphere.h
/fix_drude.cpp
/fix_drude.h
/fix_drude_transform.cpp
/fix_drude_transform.h
/fix_langevin_drude.cpp
/fix_langevin_drude.h
/fix_pimd.cpp
/fix_pimd.h
/fix_qbmsst.cpp
/fix_qbmsst.h
/fix_qtb.cpp
/fix_qtb.h
/fix_rattle.cpp
/fix_rattle.h
/fix_saed_vtk.cpp
/fix_saed_vtk.h
/fix_smd_adjust_dt.cpp
/fix_smd_adjust_dt.h
/fix_smd_integrate_tlsph.cpp
/fix_smd_integrate_tlsph.h
/fix_smd_integrate_ulsph.cpp
/fix_smd_integrate_ulsph.h
/fix_smd_move_triangulated_surface.cpp
/fix_smd_move_triangulated_surface.h
/fix_smd_setvel.cpp
/fix_smd_setvel.h
/fix_smd_tlsph_reference_configuration.cpp
/fix_smd_tlsph_reference_configuration.h
/fix_smd_wall_surface.cpp
/fix_smd_wall_surface.h
/fix_srp.cpp
/fix_srp.h
/fix_tfmc.cpp
/fix_tfmc.h
/fix_ttm_mod.cpp
/fix_ttm_mod.h
/pair_born_coul_long_cs.cpp
/pair_born_coul_long_cs.h
/pair_born_coul_dsf_cs.cpp
/pair_born_coul_dsf_cs.h
/pair_buck_coul_long_cs.cpp
/pair_buck_coul_long_cs.h
/pair_coul_long_cs.cpp
/pair_coul_long_cs.h
/pair_lj_cut_thole_long.cpp
/pair_lj_cut_thole_long.h
/pair_plum_hb.cpp
/pair_plum_hb.h
/pair_plum_hp.cpp
/pair_plum_hp.h
/pair_polymorphic.cpp
/pair_polymorphic.h
/pair_smd_hertz.cpp
/pair_smd_hertz.h
/pair_smd_tlsph.cpp
/pair_smd_tlsph.h
/pair_smd_triangulated_surface.cpp
/pair_smd_triangulated_surface.h
/pair_smd_ulsph.cpp
/pair_smd_ulsph.h
/pair_srp.cpp
/pair_srp.h
/pair_thole.cpp
/pair_thole.h
/pair_buck_mdf.cpp
/pair_buck_mdf.h
/pair_dpd_conservative.cpp
/pair_dpd_conservative.h
/pair_dpd_fdt.cpp
/pair_dpd_fdt.h
/pair_dpd_fdt_energy.cpp
/pair_dpd_fdt_energy.h
/pair_lennard_mdf.cpp
/pair_lennard_mdf.h
/pair_lj_cut_coul_long_cs.cpp
/pair_lj_cut_coul_long_cs.h
/pair_lj_mdf.cpp
/pair_lj_mdf.h
/pair_mgpt.cpp
/pair_mgpt.h
/pair_morse_smooth_linear.cpp
/pair_morse_smooth_linear.h
/pair_smtbq.cpp
/pair_smtbq.h
/pair_vashishta*.cpp
/pair_vashishta*.h
diff --git a/src/MOLECULE/fix_cmap.cpp b/src/MOLECULE/fix_cmap.cpp
index eedb9bf55..da7d337b9 100644
--- a/src/MOLECULE/fix_cmap.cpp
+++ b/src/MOLECULE/fix_cmap.cpp
@@ -1,1451 +1,1451 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
- Implementation of the CHARMM CMAP; adds an extra energy term for the
- peptide backbone dihedrals. The tools/ch2lmp/charmm2lammps.pl
- conversion script, which generates an extra section in the LAMMPS data
- file, is needed in order to generate the info used by this fix style.
-
Contributing authors:
Xiaohu Hu, CMB/ORNL (hux2@ornl.gov)
David Hyde-Volpe, Tigran Abramyan, and Robert A. Latour (Clemson University)
Chris Lorenz (Kings College-London)
+ Implementation of the CHARMM CMAP; adds an extra energy term for the
+ peptide backbone dihedrals. The tools/ch2lmp/charmm2lammps.pl
+ conversion script, which generates an extra section in the LAMMPS data
+ file, is needed in order to generate the info used by this fix style.
+
References:
- MacKerell et al., J. Am. Chem. Soc. 126(2004):698-699.
- MacKerell et al., J. Comput. Chem. 25(2004):1400-1415.
- -------------------------------------------------------------------------*/
+------------------------------------------------------------------------- */
#include <mpi.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "fix_cmap.h"
#include "atom.h"
#include "atom_vec.h"
#include "update.h"
#include "respa.h"
#include "modify.h"
#include "domain.h"
#include "force.h"
#include "group.h"
#include "comm.h"
#include "math_const.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
using namespace FixConst;
using namespace MathConst;
#define MAXLINE 256
#define LISTDELTA 10000
#define LB_FACTOR 1.5
#define CMAPMAX 6 // max # of CMAP terms stored by one atom
#define CMAPDIM 24 // grid map dimension is 24 x 24
#define CMAPXMIN -360.0
#define CMAPXMIN2 -180.0
#define CMAPDX 15.0 // 360/CMAPDIM
/* ---------------------------------------------------------------------- */
FixCMAP::FixCMAP(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg),
crosstermlist(NULL), num_crossterm(NULL), crossterm_type(NULL), crossterm_atom1(NULL),
crossterm_atom2(NULL), crossterm_atom3(NULL), crossterm_atom4(NULL), crossterm_atom5(NULL),
g_axis(NULL), cmapgrid(NULL), d1cmapgrid(NULL), d2cmapgrid(NULL), d12cmapgrid(NULL)
{
if (narg != 4) error->all(FLERR,"Illegal fix cmap command");
restart_global = 1;
restart_peratom = 1;
peatom_flag = 1;
virial_flag = 1;
peratom_freq = 1;
scalar_flag = 1;
global_freq = 1;
extscalar = 1;
extvector = 1;
wd_header = 1;
wd_section = 1;
MPI_Comm_rank(world,&me);
MPI_Comm_size(world,&nprocs);
// allocate memory for CMAP data
memory->create(g_axis,CMAPDIM,"cmap:g_axis");
memory->create(cmapgrid,6,CMAPDIM,CMAPDIM,"cmap:grid");
memory->create(d1cmapgrid,6,CMAPDIM,CMAPDIM,"cmap:d1grid");
memory->create(d2cmapgrid,6,CMAPDIM,CMAPDIM,"cmap:d2grid");
memory->create(d12cmapgrid,6,CMAPDIM,CMAPDIM,"cmap:d12grid");
// read and setup CMAP data
read_grid_map(arg[3]);
// perform initial allocation of atom-based arrays
// register with Atom class
num_crossterm = NULL;
crossterm_type = NULL;
crossterm_atom1 = NULL;
crossterm_atom2 = NULL;
crossterm_atom3 = NULL;
crossterm_atom4 = NULL;
crossterm_atom5 = NULL;
nmax_previous = 0;
grow_arrays(atom->nmax);
atom->add_callback(0);
atom->add_callback(1);
// local list of crossterms
ncmap = 0;
maxcrossterm = 0;
crosstermlist = NULL;
}
/* --------------------------------------------------------------------- */
FixCMAP::~FixCMAP()
{
// unregister callbacks to this fix from Atom class
atom->delete_callback(id,0);
atom->delete_callback(id,1);
memory->destroy(g_axis);
memory->destroy(cmapgrid);
memory->destroy(d1cmapgrid);
memory->destroy(d2cmapgrid);
memory->destroy(d12cmapgrid);
memory->destroy(crosstermlist);
memory->destroy(num_crossterm);
memory->destroy(crossterm_type);
memory->destroy(crossterm_atom1);
memory->destroy(crossterm_atom2);
memory->destroy(crossterm_atom3);
memory->destroy(crossterm_atom4);
memory->destroy(crossterm_atom5);
}
/* ---------------------------------------------------------------------- */
int FixCMAP::setmask()
{
int mask = 0;
mask |= PRE_NEIGHBOR;
mask |= PRE_REVERSE;
mask |= POST_FORCE;
mask |= THERMO_ENERGY;
mask |= POST_FORCE_RESPA;
mask |= MIN_POST_FORCE;
return mask;
}
/* ---------------------------------------------------------------------- */
void FixCMAP::init()
{
int i;
double angle;
i = 0;
angle = -180.0;
while (angle < 180.0) {
g_axis[i] = angle;
angle += CMAPDX;
i++;
}
// pre-compute the derivatives of the maps
for (i = 0; i < 6; i++)
set_map_derivatives(cmapgrid[i],d1cmapgrid[i],d2cmapgrid[i],d12cmapgrid[i]);
// define newton_bond here in case restart file was read (not data file)
newton_bond = force->newton_bond;
}
/* --------------------------------------------------------------------- */
void FixCMAP::setup(int vflag)
{
pre_neighbor();
if (strstr(update->integrate_style,"verlet"))
post_force(vflag);
else {
((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1);
post_force_respa(vflag,nlevels_respa-1,0);
((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1);
}
}
/* --------------------------------------------------------------------- */
void FixCMAP::setup_pre_neighbor()
{
pre_neighbor();
}
/* --------------------------------------------------------------------- */
void FixCMAP::min_setup(int vflag)
{
pre_neighbor();
post_force(vflag);
}
/* ----------------------------------------------------------------------
store local neighbor list as if newton_bond = OFF, even if actually ON
------------------------------------------------------------------------- */
void FixCMAP::pre_neighbor()
{
int i,m,itype,atom1,atom2,atom3,atom4,atom5;
// guesstimate initial length of local crossterm list
// if ncmap was not set (due to read_restart, no read_data),
// then list will grow by LISTDELTA chunks
if (maxcrossterm == 0) {
if (nprocs == 1) maxcrossterm = ncmap;
else maxcrossterm = static_cast<int> (LB_FACTOR*ncmap/nprocs);
memory->create(crosstermlist,maxcrossterm,6,"cmap:crosstermlist");
}
int nlocal = atom->nlocal;
ncrosstermlist = 0;
for (i = 0; i < nlocal; i++) {
for (m = 0; m < num_crossterm[i]; m++) {
atom1 = atom->map(crossterm_atom1[i][m]);
atom2 = atom->map(crossterm_atom2[i][m]);
atom3 = atom->map(crossterm_atom3[i][m]);
atom4 = atom->map(crossterm_atom4[i][m]);
atom5 = atom->map(crossterm_atom5[i][m]);
if (atom1 == -1 || atom2 == -1 || atom3 == -1 ||
atom4 == -1 || atom5 == -1) {
char str[128];
sprintf(str,"CMAP atoms "
TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT " "
TAGINT_FORMAT " " TAGINT_FORMAT
" missing on proc %d at step " BIGINT_FORMAT,
crossterm_atom1[i][m],crossterm_atom2[i][m],
crossterm_atom3[i][m],crossterm_atom4[i][m],
crossterm_atom5[i][m],me,update->ntimestep);
error->one(FLERR,str);
}
atom1 = domain->closest_image(i,atom1);
atom2 = domain->closest_image(i,atom2);
atom3 = domain->closest_image(i,atom3);
atom4 = domain->closest_image(i,atom4);
atom5 = domain->closest_image(i,atom5);
if (i <= atom1 && i <= atom2 && i <= atom3 &&
i <= atom4 && i <= atom5) {
if (ncrosstermlist == maxcrossterm) {
maxcrossterm += LISTDELTA;
memory->grow(crosstermlist,maxcrossterm,6,"cmap:crosstermlist");
}
crosstermlist[ncrosstermlist][0] = atom1;
crosstermlist[ncrosstermlist][1] = atom2;
crosstermlist[ncrosstermlist][2] = atom3;
crosstermlist[ncrosstermlist][3] = atom4;
crosstermlist[ncrosstermlist][4] = atom5;
crosstermlist[ncrosstermlist][5] = crossterm_type[i][m];
ncrosstermlist++;
}
}
}
}
/* ----------------------------------------------------------------------
store eflag, so can use it in post_force to tally per-atom energies
------------------------------------------------------------------------- */
void FixCMAP::pre_reverse(int eflag, int vflag)
{
eflag_caller = eflag;
}
/* ----------------------------------------------------------------------
compute CMAP terms as if newton_bond = OFF, even if actually ON
------------------------------------------------------------------------- */
void FixCMAP::post_force(int vflag)
{
int n,i1,i2,i3,i4,i5,type,nlist;
int li1, li2, mli1,mli2,mli11,mli21,t1,li3,li4,mli3,mli4,mli31,mli41;
int list[5];
// vectors needed to calculate the cross-term dihedral angles
double vb21x,vb21y,vb21z,vb32x,vb32y,vb32z,vb34x,vb34y,vb34z;
double vb23x,vb23y,vb23z;
double vb43x,vb43y,vb43z,vb45x,vb45y,vb45z,a1x,a1y,a1z,b1x,b1y,b1z;
double a2x,a2y,a2z,b2x,b2y,b2z,r32,a1sq,b1sq,a2sq,b2sq,dpr21r32,dpr34r32;
double dpr32r43,dpr45r43,r43,vb12x,vb12y,vb12z,vb54x,vb54y,vb54z;
// cross-term dihedral angles
double phi,psi,phi1,psi1;
double f1[3],f2[3],f3[3],f4[3],f5[3],vcmap[6];
double gs[4],d1gs[4],d2gs[4],d12gs[4];
double engfraction;
// vectors needed for the gradient/force calculation
double dphidr1x,dphidr1y,dphidr1z,dphidr2x,dphidr2y,dphidr2z;
double dphidr3x,dphidr3y,dphidr3z,dphidr4x,dphidr4y,dphidr4z;
double dpsidr1x,dpsidr1y,dpsidr1z,dpsidr2x,dpsidr2y,dpsidr2z;
double dpsidr3x,dpsidr3y,dpsidr3z,dpsidr4x,dpsidr4y,dpsidr4z;
// Definition of cross-term dihedrals
// phi dihedral
// |--------------------|
// a1-----a2-----a3-----a4-----a5 cross-term atoms
// C N CA C N cross-term atom types
// |--------------------|
// psi dihedral
double **x = atom->x;
double **f = atom->f;
int nlocal = atom->nlocal;
ecmap = 0.0;
int eflag = eflag_caller;
if (eflag || vflag) ev_setup(eflag,vflag);
else evflag = 0;
for (n = 0; n < ncrosstermlist; n++) {
i1 = crosstermlist[n][0];
i2 = crosstermlist[n][1];
i3 = crosstermlist[n][2];
i4 = crosstermlist[n][3];
i5 = crosstermlist[n][4];
type = crosstermlist[n][5];
if (type == 0) continue;
// calculate bond vectors for both dihedrals
// phi
// vb21 = r2 - r1
vb21x = x[i2][0] - x[i1][0];
vb21y = x[i2][1] - x[i1][1];
vb21z = x[i2][2] - x[i1][2];
vb12x = -1.0*vb21x;
vb12y = -1.0*vb21y;
vb12z = -1.0*vb21z;
vb32x = x[i3][0] - x[i2][0];
vb32y = x[i3][1] - x[i2][1];
vb32z = x[i3][2] - x[i2][2];
vb23x = -1.0*vb32x;
vb23y = -1.0*vb32y;
vb23z = -1.0*vb32z;
vb34x = x[i3][0] - x[i4][0];
vb34y = x[i3][1] - x[i4][1];
vb34z = x[i3][2] - x[i4][2];
// psi
// bond vectors same as for phi: vb32
vb43x = -1.0*vb34x;
vb43y = -1.0*vb34y;
vb43z = -1.0*vb34z;
vb45x = x[i4][0] - x[i5][0];
vb45y = x[i4][1] - x[i5][1];
vb45z = x[i4][2] - x[i5][2];
vb54x = -1.0*vb45x;
vb54y = -1.0*vb45y;
vb54z = -1.0*vb45z;
// calculate normal vectors for planes that define the dihedral angles
a1x = vb12y*vb23z - vb12z*vb23y;
a1y = vb12z*vb23x - vb12x*vb23z;
a1z = vb12x*vb23y - vb12y*vb23x;
b1x = vb43y*vb23z - vb43z*vb23y;
b1y = vb43z*vb23x - vb43x*vb23z;
b1z = vb43x*vb23y - vb43y*vb23x;
a2x = vb23y*vb34z - vb23z*vb34y;
a2y = vb23z*vb34x - vb23x*vb34z;
a2z = vb23x*vb34y - vb23y*vb34x;
b2x = vb45y*vb43z - vb45z*vb43y;
b2y = vb45z*vb43x - vb45x*vb43z;
b2z = vb45x*vb43y - vb45y*vb43x;
// calculate terms used later in calculations
r32 = sqrt(vb32x*vb32x + vb32y*vb32y + vb32z*vb32z);
a1sq = a1x*a1x + a1y*a1y + a1z*a1z;
b1sq = b1x*b1x + b1y*b1y + b1z*b1z;
r43 = sqrt(vb43x*vb43x + vb43y*vb43y + vb43z*vb43z);
a2sq = a2x*a2x + a2y*a2y + a2z*a2z;
b2sq = b2x*b2x + b2y*b2y + b2z*b2z;
//if (a1sq<0.0001 || b1sq<0.0001 || a2sq<0.0001 || b2sq<0.0001)
// printf("a1sq b1sq a2sq b2sq: %f %f %f %f \n",a1sq,b1sq,a2sq,b2sq);
if (a1sq<0.0001 || b1sq<0.0001 || a2sq<0.0001 || b2sq<0.0001) continue;
dpr21r32 = vb21x*vb32x + vb21y*vb32y + vb21z*vb32z;
dpr34r32 = vb34x*vb32x + vb34y*vb32y + vb34z*vb32z;
dpr32r43 = vb32x*vb43x + vb32y*vb43y + vb32z*vb43z;
dpr45r43 = vb45x*vb43x + vb45y*vb43y + vb45z*vb43z;
// calculate the backbone dihedral angles as VMD and GROMACS
phi = dihedral_angle_atan2(vb21x,vb21y,vb21z,a1x,a1y,a1z,b1x,b1y,b1z,r32);
psi = dihedral_angle_atan2(vb32x,vb32y,vb32z,a2x,a2y,a2z,b2x,b2y,b2z,r43);
if (phi == 180.0) phi= -180.0;
if (psi == 180.0) psi= -180.0;
phi1 = phi;
if (phi1 < 0.0) phi1 += 360.0;
psi1 = psi;
if (psi1 < 0.0) psi1 += 360.0;
// find the neighbor grid point index
li1 = int(((phi1+CMAPXMIN2)/CMAPDX)+((CMAPDIM*1.0)/2.0));
li2 = int(((psi1+CMAPXMIN2)/CMAPDX)+((CMAPDIM*1.0)/2.0));
li3 = int((phi-CMAPXMIN2)/CMAPDX);
li4 = int((psi-CMAPXMIN2)/CMAPDX);
mli3 = li3 % CMAPDIM;
mli4 = li4 % CMAPDIM;
mli31 = (li3+1) % CMAPDIM;
mli41 = (li4+1) %CMAPDIM;
mli1 = li1 % CMAPDIM;
mli2 = li2 % CMAPDIM;
mli11 = (li1+1) % CMAPDIM;
mli21 = (li2+1) %CMAPDIM;
t1 = type-1;
if (t1 < 0 || t1 > 5) error->all(FLERR,"Invalid CMAP crossterm_type");
// determine the values and derivatives for the grid square points
gs[0] = cmapgrid[t1][mli3][mli4];
gs[1] = cmapgrid[t1][mli31][mli4];
gs[2] = cmapgrid[t1][mli31][mli41];
gs[3] = cmapgrid[t1][mli3][mli41];
d1gs[0] = d1cmapgrid[t1][mli1][mli2];
d1gs[1] = d1cmapgrid[t1][mli11][mli2];
d1gs[2] = d1cmapgrid[t1][mli11][mli21];
d1gs[3] = d1cmapgrid[t1][mli1][mli21];
d2gs[0] = d2cmapgrid[t1][mli1][mli2];
d2gs[1] = d2cmapgrid[t1][mli11][mli2];
d2gs[2] = d2cmapgrid[t1][mli11][mli21];
d2gs[3] = d2cmapgrid[t1][mli1][mli21];
d12gs[0] = d12cmapgrid[t1][mli1][mli2];
d12gs[1] = d12cmapgrid[t1][mli11][mli2];
d12gs[2] = d12cmapgrid[t1][mli11][mli21];
d12gs[3] = d12cmapgrid[t1][mli1][mli21];
// calculate the cmap energy and the gradient (dE/dphi,dE/dpsi)
bc_interpol(phi,psi,li3,li4,gs,d1gs,d2gs,d12gs);
// sum up cmap energy contributions
engfraction = 0.2 * E;
if (i1 < nlocal) ecmap += engfraction;
if (i2 < nlocal) ecmap += engfraction;
if (i3 < nlocal) ecmap += engfraction;
if (i4 < nlocal) ecmap += engfraction;
if (i5 < nlocal) ecmap += engfraction;
// calculate the derivatives dphi/dr_i
dphidr1x = 1.0*r32/a1sq*a1x;
dphidr1y = 1.0*r32/a1sq*a1y;
dphidr1z = 1.0*r32/a1sq*a1z;
dphidr2x = -1.0*r32/a1sq*a1x - dpr21r32/a1sq/r32*a1x +
dpr34r32/b1sq/r32*b1x;
dphidr2y = -1.0*r32/a1sq*a1y - dpr21r32/a1sq/r32*a1y +
dpr34r32/b1sq/r32*b1y;
dphidr2z = -1.0*r32/a1sq*a1z - dpr21r32/a1sq/r32*a1z +
dpr34r32/b1sq/r32*b1z;
dphidr3x = dpr34r32/b1sq/r32*b1x - dpr21r32/a1sq/r32*a1x - r32/b1sq*b1x;
dphidr3y = dpr34r32/b1sq/r32*b1y - dpr21r32/a1sq/r32*a1y - r32/b1sq*b1y;
dphidr3z = dpr34r32/b1sq/r32*b1z - dpr21r32/a1sq/r32*a1z - r32/b1sq*b1z;
dphidr4x = r32/b1sq*b1x;
dphidr4y = r32/b1sq*b1y;
dphidr4z = r32/b1sq*b1z;
// calculate the derivatives dpsi/dr_i
dpsidr1x = 1.0*r43/a2sq*a2x;
dpsidr1y = 1.0*r43/a2sq*a2y;
dpsidr1z = 1.0*r43/a2sq*a2z;
dpsidr2x = r43/a2sq*a2x + dpr32r43/a2sq/r43*a2x - dpr45r43/b2sq/r43*b2x;
dpsidr2y = r43/a2sq*a2y + dpr32r43/a2sq/r43*a2y - dpr45r43/b2sq/r43*b2y;
dpsidr2z = r43/a2sq*a2z + dpr32r43/a2sq/r43*a2z - dpr45r43/b2sq/r43*b2z;
dpsidr3x = dpr45r43/b2sq/r43*b2x - dpr32r43/a2sq/r43*a2x - r43/b2sq*b2x;
dpsidr3y = dpr45r43/b2sq/r43*b2y - dpr32r43/a2sq/r43*a2y - r43/b2sq*b2y;
dpsidr3z = dpr45r43/b2sq/r43*b2z - dpr32r43/a2sq/r43*a2z - r43/b2sq*b2z;
dpsidr4x = r43/b2sq*b2x;
dpsidr4y = r43/b2sq*b2y;
dpsidr4z = r43/b2sq*b2z;
// calculate forces on cross-term atoms: F = -(dE/dPhi)*(dPhi/dr)
f1[0] = dEdPhi*dphidr1x;
f1[1] = dEdPhi*dphidr1y;
f1[2] = dEdPhi*dphidr1z;
f2[0] = dEdPhi*dphidr2x + dEdPsi*dpsidr1x;
f2[1] = dEdPhi*dphidr2y + dEdPsi*dpsidr1y;
f2[2] = dEdPhi*dphidr2z + dEdPsi*dpsidr1z;
f3[0] = -dEdPhi*dphidr3x - dEdPsi*dpsidr2x;
f3[1] = -dEdPhi*dphidr3y - dEdPsi*dpsidr2y;
f3[2] = -dEdPhi*dphidr3z - dEdPsi*dpsidr2z;
f4[0] = -dEdPhi*dphidr4x - dEdPsi*dpsidr3x;
f4[1] = -dEdPhi*dphidr4y - dEdPsi*dpsidr3y;
f4[2] = -dEdPhi*dphidr4z - dEdPsi*dpsidr3z;
f5[0] = -dEdPsi*dpsidr4x;
f5[1] = -dEdPsi*dpsidr4y;
f5[2] = -dEdPsi*dpsidr4z;
// apply force to each of the 5 atoms
if (i1 < nlocal) {
f[i1][0] += f1[0];
f[i1][1] += f1[1];
f[i1][2] += f1[2];
}
if (i2 < nlocal) {
f[i2][0] += f2[0];
f[i2][1] += f2[1];
f[i2][2] += f2[2];
}
if (i3 < nlocal) {
f[i3][0] += f3[0];
f[i3][1] += f3[1];
f[i3][2] += f3[2];
}
if (i4 < nlocal) {
f[i4][0] += f4[0];
f[i4][1] += f4[1];
f[i4][2] += f4[2];
}
if (i5 < nlocal) {
f[i5][0] += f5[0];
f[i5][1] += f5[1];
f[i5][2] += f5[2];
}
// tally energy and/or virial
if (evflag) {
nlist = 0;
if (i1 < nlocal) list[nlist++] = i1;
if (i2 < nlocal) list[nlist++] = i2;
if (i3 < nlocal) list[nlist++] = i3;
if (i4 < nlocal) list[nlist++] = i4;
if (i5 < nlocal) list[nlist++] = i5;
vcmap[0] = (vb12x*f1[0])+(vb32x*f3[0])+((vb43x+vb32x)*f4[0])+
((vb54x+vb43x+vb32x)*f5[0]);
vcmap[1] = (vb12y*f1[1])+(vb32y*f3[1])+((vb43y+vb32y)*f4[1])+
((vb54y+vb43y+vb32y)*f5[1]);
vcmap[2] = (vb12z*f1[2])+(vb32z*f3[2])+((vb43z+vb32z)*f4[2])+
((vb54z+vb43z+vb32z)*f5[2]);
vcmap[3] = (vb12x*f1[1])+(vb32x*f3[1])+((vb43x+vb32x)*f4[1])+
((vb54x+vb43x+vb32x)*f5[1]);
vcmap[4] = (vb12x*f1[2])+(vb32x*f3[2])+((vb43x+vb32x)*f4[2])+
((vb54x+vb43x+vb32x)*f5[2]);
vcmap[5] = (vb12y*f1[2])+(vb32y*f3[2])+((vb43y+vb32y)*f4[2])+
((vb54y+vb43y+vb32y)*f5[2]);
ev_tally(nlist,list,5.0,E,vcmap);
//ev_tally(5,list,nlocal,newton_bond,E,vcmap);
}
}
}
/* ---------------------------------------------------------------------- */
void FixCMAP::post_force_respa(int vflag, int ilevel, int iloop)
{
if (ilevel == nlevels_respa-1) post_force(vflag);
}
/* ---------------------------------------------------------------------- */
void FixCMAP::min_post_force(int vflag)
{
post_force(vflag);
}
/* ----------------------------------------------------------------------
energy of CMAP term
------------------------------------------------------------------------- */
double FixCMAP::compute_scalar()
{
double all;
MPI_Allreduce(&ecmap,&all,1,MPI_DOUBLE,MPI_SUM,world);
return all;
}
// ----------------------------------------------------------------------
// ----------------------------------------------------------------------
// methods to read CMAP potential file, perform interpolation
// ----------------------------------------------------------------------
// ----------------------------------------------------------------------
void FixCMAP::read_grid_map(char *cmapfile)
{
char linebuf[MAXLINE];
char *chunk,*line;
int i1, i2, i3, i4, i5, i6, j1, j2, j3, j4, j5, j6, counter;
FILE *fp = NULL;
if (comm->me == 0) {
fp = force->open_potential(cmapfile);
if (fp == NULL) {
char str[128];
sprintf(str,"Cannot open fix cmap file %s",cmapfile);
error->one(FLERR,str);
}
}
for (int ix1 = 0; ix1 < 6; ix1++)
for (int ix2 = 0; ix2 < CMAPDIM; ix2++)
for (int ix3 = 0; ix3 < CMAPDIM; ix3++)
cmapgrid[ix1][ix2][ix3] = 0.0;
counter = 0;
i1 = i2 = i3 = i4 = i5 = i6 = 0;
j1 = j2 = j3 = j4 = j5 = j6 = 0;
int done = 0;
while (!done) {
// only read on rank 0 and broadcast to all other ranks
if (comm->me == 0)
done = (fgets(linebuf,MAXLINE,fp) == NULL);
MPI_Bcast(&done,1,MPI_INT,0,world);
if (done) continue;
MPI_Bcast(linebuf,MAXLINE,MPI_CHAR,0,world);
// remove leading whitespace
line = linebuf;
while (line && (*line == ' ' || *line == '\t' || *line == '\r')) ++line;
// skip if empty line or comment
if (!line || *line =='\n' || *line == '\0' || *line == '#') continue;
// read in the cmap grid point values
// NOTE: The order to read the 6 grid maps is HARD-CODED, thus errors
// will occur if content of the file "cmap.data" is altered
//
// Reading order of the maps:
// 1. Alanine map
// 2. Alanine before proline map
// 3. Proline map
// 4. Two adjacent prolines map
// 5. Glycine map
// 6. Glycine before proline map
chunk = strtok(line, " \r\n");
while (chunk != NULL) {
// alanine map
if (counter < CMAPDIM*CMAPDIM) {
cmapgrid[0][i1][j1] = atof(chunk);
chunk = strtok(NULL, " \r\n");
j1++;
if (j1 == CMAPDIM) {
j1 = 0;
i1++;
}
counter++;
}
// alanine-proline map
else if (counter >= CMAPDIM*CMAPDIM &&
counter < 2*CMAPDIM*CMAPDIM) {
cmapgrid[1][i2][j2]= atof(chunk);
chunk = strtok(NULL, " \r\n");
j2++;
if (j2 == CMAPDIM) {
j2 = 0;
i2++;
}
counter++;
}
// proline map
else if (counter >= 2*CMAPDIM*CMAPDIM &&
counter < 3*CMAPDIM*CMAPDIM) {
cmapgrid[2][i3][j3] = atof(chunk);
chunk = strtok(NULL, " \r\n");
j3++;
if (j3 == CMAPDIM) {
j3 = 0;
i3++;
}
counter++;
}
// 2 adjacent prolines map
else if (counter >= 3*CMAPDIM*CMAPDIM &&
counter < 4*CMAPDIM*CMAPDIM) {
cmapgrid[3][i4][j4] = atof(chunk);
chunk = strtok(NULL, " \r\n");
j4++;
if (j4 == CMAPDIM) {
j4 = 0;
i4++;
}
counter++;
}
// glycine map
else if (counter >= 4*CMAPDIM*CMAPDIM &&
counter < 5*CMAPDIM*CMAPDIM) {
cmapgrid[4][i5][j5] = atof(chunk);
chunk = strtok(NULL, " \r\n");
j5++;
if (j5 == CMAPDIM) {
j5 = 0;
i5++;
}
counter++;
}
// glycine-proline map
else if (counter >= 5*CMAPDIM*CMAPDIM &&
counter < 6*CMAPDIM*CMAPDIM) {
cmapgrid[5][i6][j6] = atof(chunk);
chunk = strtok(NULL, " \r\n");
j6++;
if (j6 == CMAPDIM) {
j6 = 0;
i6++;
}
counter++;
}
else break;
}
}
if (comm->me == 0) fclose(fp);
}
/* ---------------------------------------------------------------------- */
void FixCMAP::spline(double *y, double *ddy, int n)
{
// create the 2nd dervatives of a taublated function y_i(x_i)
// at the tabulated points
int i, j;
double p, *u;
memory->create(u,n-1,"cmap:u");
ddy[0] = u[0] = 0.0;
for (i = 1; i <= n-2; i++) {
p = 1.0/(ddy[i-1]+4.0);
ddy[i] = -p;
u[i] = ((((6.0*y[i+1])-(12.0*y[i])+(6.0*y[i-1]))/(CMAPDX*CMAPDX))-u[i-1])*p;
}
ddy[n-1] = 0.0;
for (j = n-2; j >= 0; j--)
ddy[j] = ddy[j]*ddy[j+1] + u[j];
memory->destroy(u);
}
/* ---------------------------------------------------------------------- */
void FixCMAP::spl_interpolate(double x, double *y, double *ddy, double &yo,
double &dyo)
{
// perform a 1D cubic spline interpolation
int ix;
double a,b,a1,b1,a2,b2;
ix = int((x-CMAPXMIN)/CMAPDX-(1./2.));
a = (CMAPXMIN+(ix*1.0)*CMAPDX-x)/CMAPDX;
b = (x-CMAPXMIN-(((ix-1)*1.0)*CMAPDX))/CMAPDX;
a1 = a*a*a-a;
b1 = b*b*b-b;
a2 = 3.0*a*a-1.0;
b2 = 3.0*b*b-1.0;
yo = a*y[ix]+b*y[ix+1]+(a1*ddy[ix]+b1*ddy[ix+1])*(CMAPDX*CMAPDX)/6.0;
dyo = (y[ix+1]-y[ix])/CMAPDX-a2/6.0*CMAPDX*ddy[ix]+b2/6.0*CMAPDX*ddy[ix+1];
}
/* ---------------------------------------------------------------------- */
void FixCMAP::set_map_derivatives(double **map, double **d1yo, double **d2yo,
double **d12yo)
{
// precompute the gradient and cross-derivatives of the map grid points.
// use the bicubic spline to calculate the derivatives
int i, j, k, ii, jj, xm, p;
double phi, psi, y, d1y, d2y, d12y, tyyk,tdyk;
double *tmp_y, *tmp_dy, *tmp_ddy, **tmap, **tddmap;
int ix;
double a,b,a1,b1,a2,b2;
xm = CMAPDIM/2;
p = CMAPDIM;
y = 0.;
d1y = 0.;
d2y = 0.;
d12y = 0.;
memory->create(tmp_y,CMAPDIM*2,"cmap:tmp_y");
memory->create(tmp_dy,CMAPDIM*2,"cmap:tmp_dy");
memory->create(tmp_ddy,CMAPDIM*2,"cmap:tmp_ddy");
memory->create(tmap,CMAPDIM*2,CMAPDIM*2,"cmap:tmap");
memory->create(tddmap,CMAPDIM*2,CMAPDIM*2,"cmap:tddmap");
// periodically expand the original map
// use the expanded map for bicubic spline interpolation,
// which is used to obtain the derivatives
// actual interpolation is done with bicubic interpolation
for (i = 0; i < CMAPDIM*2; i++) {
ii = ((i+CMAPDIM-xm)%CMAPDIM);
for (j = 0; j < CMAPDIM*2; j++) {
jj = ((j+CMAPDIM-xm)%CMAPDIM);
tmap[i][j] = map[ii][jj];
}
}
for (i = 0; i < CMAPDIM*2; i++)
spline(tmap[i], tddmap[i], CMAPDIM*2);
for (i = xm; i < CMAPDIM+xm; i++) {
phi = (i-xm)*CMAPDX-180.0;
for (j = xm; j < CMAPDIM+xm; j++) {
psi = (j-xm)*CMAPDX-180.0;
ix = int((psi-CMAPXMIN)/CMAPDX);
a = (CMAPXMIN+((ix+1)*1.0)*CMAPDX-psi)/CMAPDX;
b = (psi-CMAPXMIN-((ix)*1.0)*CMAPDX)/CMAPDX;
a1 = a*a*a-a;
b1 = b*b*b-b;
a2 = 3.0*a*a-1.0;
b2 = 3.0*b*b-1.0;
for (k = 0; k < CMAPDIM*2; k++) {
tyyk = tmp_y[k];
tdyk = tmp_dy[k];
tyyk = a*tmap[k][ix]+b*tmap[k][ix+1]+
(a1*tddmap[k][ix]+b1*tddmap[k][ix+1])*(CMAPDX*CMAPDX)/6.0;
tdyk = (tmap[k][ix+1]-tmap[k][ix])/CMAPDX-
(a2/6.0*CMAPDX*tddmap[k][ix])+(b2/6.0*CMAPDX*tddmap[k][ix+1]);
tmp_y[k] = tyyk;
tmp_dy[k] = tdyk;
}
spline(tmp_y,tmp_ddy,CMAPDIM+xm+xm);
ix = int((phi-CMAPXMIN)/CMAPDX);
a = (CMAPXMIN+((ix+1)*1.0)*CMAPDX-phi)/CMAPDX;
b = (phi-CMAPXMIN-(ix*1.0)*CMAPDX)/CMAPDX;
a1 = a*a*a-a;
b1 = b*b*b-b;
a2 = 3.0*a*a-1.0;
b2 = 3.0*b*b-1.0;
y = a*tmp_y[ix]+b*tmp_y[ix+1]+
(a1*tmp_ddy[ix]+b1*tmp_ddy[ix+1])*(CMAPDX*CMAPDX)/6.0;
d1y = (tmp_y[ix+1]-tmp_y[ix])/CMAPDX-
a2/6.0*CMAPDX*tmp_ddy[ix]+b2/6.0*CMAPDX*tmp_ddy[ix+1];
spline(tmp_dy,tmp_ddy,CMAPDIM+xm+xm);
ix = int((phi-CMAPXMIN)/CMAPDX);
a = (CMAPXMIN+((ix+1)*1.0)*CMAPDX-phi)/CMAPDX;
b = (phi-CMAPXMIN-(ix*1.0)*CMAPDX)/CMAPDX;
a1 = a*a*a-a;
b1 = b*b*b-b;
a2 = 3.0*a*a-1.0;
b2 = 3.0*b*b-1.0;
d2y = a*tmp_dy[ix]+b*tmp_dy[ix+1]+
(a1*tmp_ddy[ix]+b1*tmp_ddy[ix+1])*(CMAPDX*CMAPDX)/6.0;
d12y = (tmp_dy[ix+1]-tmp_dy[ix])/CMAPDX-
a2/6.0*CMAPDX*tmp_ddy[ix]+b2/6.0*CMAPDX*tmp_ddy[ix+1];
d1yo[i%p][j%p] = d1y;
d2yo[i%p][j%p] = d2y;
d12yo[i%p][j%p] = d12y;
}
}
memory->destroy(tmp_y);
memory->destroy(tmp_dy);
memory->destroy(tmp_ddy);
memory->destroy(tmap);
memory->destroy(tddmap);
}
/* ---------------------------------------------------------------------- */
double FixCMAP::dihedral_angle_atan2(double fx, double fy, double fz,
double ax, double ay, double az,
double bx, double by, double bz,
double absg)
{
// calculate the dihedral angle
double angle, arg1, arg2;
arg1 = absg*(fx*bx+fy*by+fz*bz);
arg2 = ax*bx+ay*by+az*bz;
if (arg1 == 0 && arg2 == 0)
error->all(FLERR,"CMAP: atan2 function cannot take 2 zero arguments");
else {
angle = atan2(arg1,arg2);
angle = angle*180.0/MY_PI;
}
return angle;
}
/* ---------------------------------------------------------------------- */
void FixCMAP::bc_coeff(double *gs, double *d1gs, double *d2gs, double *d12gs)
{
// calculate the bicubic interpolation coefficients c_ij
static int wt[16][16] =
{ 1, 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, 0, 0, 0, 0, 0, 0,
-3, 0, 0, 3, 0, 0, 0, 0,-2, 0, 0,-1, 0, 0, 0, 0,
2, 0, 0,-2, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 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, 0, 0,
0, 0, 0, 0,-3, 0, 0, 3, 0, 0, 0, 0,-2, 0, 0,-1,
0, 0, 0, 0, 2, 0, 0,-2, 0, 0, 0, 0, 1, 0, 0, 1,
-3, 3, 0, 0,-2,-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,-3, 3, 0, 0,-2,-1, 0, 0,
9,-9, 9,-9, 6, 3,-3,-6, 6,-6,-3, 3, 4, 2, 1, 2,
-6, 6,-6, 6,-4,-2, 2, 4,-3, 3, 3,-3,-2,-1,-1,-2,
2,-2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 2,-2, 0, 0, 1, 1, 0, 0,
-6, 6,-6, 6,-3,-3, 3, 3,-4, 4, 2,-2,-2,-2,-1,-1,
4,-4, 4,-4, 2, 2,-2,-2, 2,-2,-2, 2, 1, 1, 1, 1
};
int i, j, k, in;
double xx, x[16];
for (i = 0; i < 4; i++) {
x[i] = gs[i];
x[i+4] = d1gs[i]*CMAPDX;
x[i+8] = d2gs[i]*CMAPDX;
x[i+12] = d12gs[i]*CMAPDX*CMAPDX;
}
in = 0;
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
xx = 0.0;
for (k = 0; k < 16; k++) xx += wt[in][k]*x[k];
in++;
cij[i][j] = xx;
}
}
}
/* ---------------------------------------------------------------------- */
void FixCMAP::bc_interpol(double x1, double x2, int low1, int low2, double *gs,
double *d1gs, double *d2gs, double *d12gs)
{
// for a given point of interest and its corresponding grid square values,
// gradients and cross-derivatives
// calculate the interpolated value of the point of interest (POI)
int i, p=12;
double t, u, fac, gs1l, gs2l, gs1u, gs2u;
// set the interpolation coefficients
bc_coeff(gs,d1gs,d2gs,d12gs);
gs1l = g_axis[low1];
gs2l = g_axis[low2];
t = (x1-gs1l)/CMAPDX;
u = (x2-gs2l)/CMAPDX;
E = dEdPhi = dEdPsi = 0.0;
for (i = 3; i >= 0; i--) {
E = t*E + ((cij[i][3]*u+cij[i][2])*u+cij[i][1])*u+cij[i][0];
dEdPhi = u*dEdPhi + (3.0*cij[3][i]*t+2.0*cij[2][i])*t+cij[1][i];
dEdPsi = t*dEdPsi + (3.0*cij[i][3]*u+2.0*cij[i][2])*u+cij[i][1];
}
dEdPhi *= (180.0/MY_PI/CMAPDX);
dEdPsi *= (180.0/MY_PI/CMAPDX);
}
// ----------------------------------------------------------------------
// ----------------------------------------------------------------------
// methods to read and write data file
// ----------------------------------------------------------------------
// ----------------------------------------------------------------------
void FixCMAP::read_data_header(char *line)
{
if (strstr(line,"crossterms")) {
sscanf(line,BIGINT_FORMAT,&ncmap);
} else error->all(FLERR,"Invalid read data header line for fix cmap");
// didn't set in constructor b/c this fix could be defined
// before newton command
newton_bond = force->newton_bond;
}
/* ----------------------------------------------------------------------
unpack N lines in buf from section of data file labeled by keyword
id_offset is applied to atomID fields if multiple data files are read
store CMAP interactions as if newton_bond = OFF, even if actually ON
------------------------------------------------------------------------- */
void FixCMAP::read_data_section(char *keyword, int n, char *buf,
tagint id_offset)
{
int m,tmp,itype;
tagint atom1,atom2,atom3,atom4,atom5;
char *next;
next = strchr(buf,'\n');
*next = '\0';
int nwords = atom->count_words(buf);
*next = '\n';
if (nwords != 7) {
char str[128];
sprintf(str,"Incorrect %s format in data file",keyword);
error->all(FLERR,str);
}
// loop over lines of CMAP crossterms
// tokenize the line into values
// add crossterm to one of my atoms, depending on newton_bond
for (int i = 0; i < n; i++) {
next = strchr(buf,'\n');
*next = '\0';
sscanf(buf,"%d %d " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT
" " TAGINT_FORMAT " " TAGINT_FORMAT,
&tmp,&itype,&atom1,&atom2,&atom3,&atom4,&atom5);
atom1 += id_offset;
atom2 += id_offset;
atom3 += id_offset;
atom4 += id_offset;
atom5 += id_offset;
if ((m = atom->map(atom1)) >= 0) {
if (num_crossterm[m] == CMAPMAX)
error->one(FLERR,"Too many CMAP crossterms for one atom");
crossterm_type[m][num_crossterm[m]] = itype;
crossterm_atom1[m][num_crossterm[m]] = atom1;
crossterm_atom2[m][num_crossterm[m]] = atom2;
crossterm_atom3[m][num_crossterm[m]] = atom3;
crossterm_atom4[m][num_crossterm[m]] = atom4;
crossterm_atom5[m][num_crossterm[m]] = atom5;
num_crossterm[m]++;
}
if ((m = atom->map(atom2)) >= 0) {
if (num_crossterm[m] == CMAPMAX)
error->one(FLERR,"Too many CMAP crossterms for one atom");
crossterm_type[m][num_crossterm[m]] = itype;
crossterm_atom1[m][num_crossterm[m]] = atom1;
crossterm_atom2[m][num_crossterm[m]] = atom2;
crossterm_atom3[m][num_crossterm[m]] = atom3;
crossterm_atom4[m][num_crossterm[m]] = atom4;
crossterm_atom5[m][num_crossterm[m]] = atom5;
num_crossterm[m]++;
}
if ((m = atom->map(atom3)) >= 0) {
if (num_crossterm[m] == CMAPMAX)
error->one(FLERR,"Too many CMAP crossterms for one atom");
crossterm_type[m][num_crossterm[m]] = itype;
crossterm_atom1[m][num_crossterm[m]] = atom1;
crossterm_atom2[m][num_crossterm[m]] = atom2;
crossterm_atom3[m][num_crossterm[m]] = atom3;
crossterm_atom4[m][num_crossterm[m]] = atom4;
crossterm_atom5[m][num_crossterm[m]] = atom5;
num_crossterm[m]++;
}
if ((m = atom->map(atom4)) >= 0) {
if (num_crossterm[m] == CMAPMAX)
error->one(FLERR,"Too many CMAP crossterms for one atom");
crossterm_type[m][num_crossterm[m]] = itype;
crossterm_atom1[m][num_crossterm[m]] = atom1;
crossterm_atom2[m][num_crossterm[m]] = atom2;
crossterm_atom3[m][num_crossterm[m]] = atom3;
crossterm_atom4[m][num_crossterm[m]] = atom4;
crossterm_atom5[m][num_crossterm[m]] = atom5;
num_crossterm[m]++;
}
if ((m = atom->map(atom5)) >= 0) {
if (num_crossterm[m] == CMAPMAX)
error->one(FLERR,"Too many CMAP crossterms for one atom");
crossterm_type[m][num_crossterm[m]] = itype;
crossterm_atom1[m][num_crossterm[m]] = atom1;
crossterm_atom2[m][num_crossterm[m]] = atom2;
crossterm_atom3[m][num_crossterm[m]] = atom3;
crossterm_atom4[m][num_crossterm[m]] = atom4;
crossterm_atom5[m][num_crossterm[m]] = atom5;
num_crossterm[m]++;
}
buf = next + 1;
}
}
/* ---------------------------------------------------------------------- */
bigint FixCMAP::read_data_skip_lines(char *keyword)
{
return ncmap;
}
/* ----------------------------------------------------------------------
write Mth header line to file
only called by proc 0
------------------------------------------------------------------------- */
void FixCMAP::write_data_header(FILE *fp, int mth)
{
fprintf(fp,BIGINT_FORMAT " cmap crossterms\n",ncmap);
}
/* ----------------------------------------------------------------------
return size I own for Mth data section
# of data sections = 1 for this fix
nx = # of crossterms owned by my local atoms
if newton_bond off, atom only owns crossterm if it is atom3
ny = columns = type + 5 atom IDs
------------------------------------------------------------------------- */
void FixCMAP::write_data_section_size(int mth, int &nx, int &ny)
{
int i,m;
tagint *tag = atom->tag;
int nlocal = atom->nlocal;
nx = 0;
for (i = 0; i < nlocal; i++)
for (m = 0; m < num_crossterm[i]; m++)
if (crossterm_atom3[i][m] == tag[i]) nx++;
ny = 6;
}
/* ----------------------------------------------------------------------
pack values for Mth data section into 2d buf
buf allocated by caller as owned crossterms by 6
------------------------------------------------------------------------- */
void FixCMAP::write_data_section_pack(int mth, double **buf)
{
int i,m;
// 1st column = CMAP type
// 2nd-6th columns = 5 atom IDs
tagint *tag = atom->tag;
int nlocal = atom->nlocal;
int n = 0;
for (i = 0; i < nlocal; i++) {
for (m = 0; m < num_crossterm[i]; m++) {
if (crossterm_atom3[i][m] != tag[i]) continue;
buf[n][0] = ubuf(crossterm_type[i][m]).d;
buf[n][1] = ubuf(crossterm_atom1[i][m]).d;
buf[n][2] = ubuf(crossterm_atom2[i][m]).d;
buf[n][3] = ubuf(crossterm_atom3[i][m]).d;
buf[n][4] = ubuf(crossterm_atom4[i][m]).d;
buf[n][5] = ubuf(crossterm_atom5[i][m]).d;
n++;
}
}
}
/* ----------------------------------------------------------------------
write section keyword for Mth data section to file
use Molecules or Charges if that is only field, else use fix ID
only called by proc 0
------------------------------------------------------------------------- */
void FixCMAP::write_data_section_keyword(int mth, FILE *fp)
{
fprintf(fp,"\nCMAP\n\n");
}
/* ----------------------------------------------------------------------
write N lines from buf to file
convert buf fields to int or double depending on styles
index can be used to prepend global numbering
only called by proc 0
------------------------------------------------------------------------- */
void FixCMAP::write_data_section(int mth, FILE *fp,
int n, double **buf, int index)
{
for (int i = 0; i < n; i++)
fprintf(fp,"%d %d " TAGINT_FORMAT " " TAGINT_FORMAT
" " TAGINT_FORMAT " " TAGINT_FORMAT " " TAGINT_FORMAT "\n",
index+i,(int) ubuf(buf[i][0]).i,(tagint) ubuf(buf[i][1]).i,
(tagint) ubuf(buf[i][2]).i,(tagint) ubuf(buf[i][3]).i,
(tagint) ubuf(buf[i][4]).i,(tagint) ubuf(buf[i][5]).i);
}
// ----------------------------------------------------------------------
// ----------------------------------------------------------------------
// methods for restart and communication
// ----------------------------------------------------------------------
// ----------------------------------------------------------------------
/* ----------------------------------------------------------------------
pack entire state of Fix into one write
------------------------------------------------------------------------- */
void FixCMAP::write_restart(FILE *fp)
{
if (comm->me == 0) {
int size = sizeof(bigint);
fwrite(&size,sizeof(int),1,fp);
fwrite(&ncmap,sizeof(bigint),1,fp);
}
}
/* ----------------------------------------------------------------------
use state info from restart file to restart the Fix
------------------------------------------------------------------------- */
void FixCMAP::restart(char *buf)
{
ncmap = *((bigint *) buf);
}
/* ----------------------------------------------------------------------
pack values in local atom-based arrays for restart file
------------------------------------------------------------------------- */
int FixCMAP::pack_restart(int i, double *buf)
{
int n = 1;
for (int m = 0; m < num_crossterm[i]; m++) {
buf[n++] = ubuf(MAX(crossterm_type[i][m],-crossterm_type[i][m])).d;
buf[n++] = ubuf(crossterm_atom1[i][m]).d;
buf[n++] = ubuf(crossterm_atom2[i][m]).d;
buf[n++] = ubuf(crossterm_atom3[i][m]).d;
buf[n++] = ubuf(crossterm_atom4[i][m]).d;
buf[n++] = ubuf(crossterm_atom5[i][m]).d;
}
buf[0] = n;
return n;
}
/* ----------------------------------------------------------------------
unpack values from atom->extra array to restart the fix
------------------------------------------------------------------------- */
void FixCMAP::unpack_restart(int nlocal, int nth)
{
double **extra = atom->extra;
// skip to Nth set of extra values
int n = 0;
for (int i = 0; i < nth; i++) n += static_cast<int> (extra[nlocal][n]);
int count = static_cast<int> (extra[nlocal][n++]);
num_crossterm[nlocal] = (count-1)/6;
for (int m = 0; m < num_crossterm[nlocal]; m++) {
crossterm_type[nlocal][m] = (int) ubuf(extra[nlocal][n++]).i;
crossterm_atom1[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i;
crossterm_atom2[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i;
crossterm_atom3[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i;
crossterm_atom4[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i;
crossterm_atom5[nlocal][m] = (tagint) ubuf(extra[nlocal][n++]).i;
}
}
/* ----------------------------------------------------------------------
maxsize of any atom's restart data
------------------------------------------------------------------------- */
int FixCMAP::maxsize_restart()
{
return 1 + CMAPMAX*6;
}
/* ----------------------------------------------------------------------
size of atom nlocal's restart data
------------------------------------------------------------------------- */
int FixCMAP::size_restart(int nlocal)
{
return 1 + num_crossterm[nlocal]*6;
}
/* ----------------------------------------------------------------------
allocate atom-based array
------------------------------------------------------------------------- */
void FixCMAP::grow_arrays(int nmax)
{
num_crossterm = memory->grow(num_crossterm,nmax,"cmap:num_crossterm");
crossterm_type = memory->grow(crossterm_type,nmax,CMAPMAX,
"cmap:crossterm_type");
crossterm_atom1 = memory->grow(crossterm_atom1,nmax,CMAPMAX,
"cmap:crossterm_atom1");
crossterm_atom2 = memory->grow(crossterm_atom2,nmax,CMAPMAX,
"cmap:crossterm_atom2");
crossterm_atom3 = memory->grow(crossterm_atom3,nmax,CMAPMAX,
"cmap:crossterm_atom3");
crossterm_atom4 = memory->grow(crossterm_atom4,nmax,CMAPMAX,
"cmap:crossterm_atom4");
crossterm_atom5 = memory->grow(crossterm_atom5,nmax,CMAPMAX,
"cmap:crossterm_atom5");
// must initialize num_crossterm to 0 for added atoms
// may never be set for some atoms when data file is read
for (int i = nmax_previous; i < nmax; i++) num_crossterm[i] = 0;
nmax_previous = nmax;
}
/* ----------------------------------------------------------------------
copy values within local atom-based array
------------------------------------------------------------------------- */
void FixCMAP::copy_arrays(int i, int j, int delflag)
{
num_crossterm[j] = num_crossterm[i];
for (int k = 0; k < num_crossterm[j]; k++){
crossterm_type[j][k] = crossterm_type[i][k];
crossterm_atom1[j][k] = crossterm_atom1[i][k];
crossterm_atom2[j][k] = crossterm_atom2[i][k];
crossterm_atom3[j][k] = crossterm_atom3[i][k];
crossterm_atom4[j][k] = crossterm_atom4[i][k];
crossterm_atom5[j][k] = crossterm_atom5[i][k];
}
}
/* ----------------------------------------------------------------------
initialize one atom's array values, called when atom is created
------------------------------------------------------------------------- */
void FixCMAP::set_arrays(int i)
{
num_crossterm[i] = 0;
}
/* ----------------------------------------------------------------------
pack values in local atom-based array for exchange with another proc
------------------------------------------------------------------------- */
int FixCMAP::pack_exchange(int i, double *buf)
{
int n = 0;
buf[n++] = ubuf(num_crossterm[i]).d;
for (int m = 0; m < num_crossterm[i]; m++) {
buf[n++] = ubuf(crossterm_type[i][m]).d;
buf[n++] = ubuf(crossterm_atom1[i][m]).d;
buf[n++] = ubuf(crossterm_atom2[i][m]).d;
buf[n++] = ubuf(crossterm_atom3[i][m]).d;
buf[n++] = ubuf(crossterm_atom4[i][m]).d;
buf[n++] = ubuf(crossterm_atom5[i][m]).d;
}
return n;
}
/* ----------------------------------------------------------------------
unpack values in local atom-based array from exchange with another proc
------------------------------------------------------------------------- */
int FixCMAP::unpack_exchange(int nlocal, double *buf)
{
int n = 0;
num_crossterm[nlocal] = (int) ubuf(buf[n++]).i;
for (int m = 0; m < num_crossterm[nlocal]; m++) {
crossterm_type[nlocal][m] = (int) ubuf(buf[n++]).i;
crossterm_atom1[nlocal][m] = (tagint) ubuf(buf[n++]).i;
crossterm_atom2[nlocal][m] = (tagint) ubuf(buf[n++]).i;
crossterm_atom3[nlocal][m] = (tagint) ubuf(buf[n++]).i;
crossterm_atom4[nlocal][m] = (tagint) ubuf(buf[n++]).i;
crossterm_atom5[nlocal][m] = (tagint) ubuf(buf[n++]).i;
}
return n;
}
/* ----------------------------------------------------------------------
memory usage of local atom-based arrays
------------------------------------------------------------------------- */
double FixCMAP::memory_usage()
{
int nmax = atom->nmax;
double bytes = nmax * sizeof(int); // num_crossterm
bytes += nmax*CMAPMAX * sizeof(int); // crossterm_type
bytes += 5*nmax*CMAPMAX * sizeof(int); // crossterm_atom 12345
bytes += maxcrossterm*6 * sizeof(int); // crosstermlist
return bytes;
}
diff --git a/src/REPLICA/temper.cpp b/src/REPLICA/temper.cpp
index ebc26d606..667f2893c 100644
--- a/src/REPLICA/temper.cpp
+++ b/src/REPLICA/temper.cpp
@@ -1,386 +1,388 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain 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: Mark Sears (SNL)
------------------------------------------------------------------------- */
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include "temper.h"
#include "universe.h"
#include "domain.h"
#include "atom.h"
#include "update.h"
#include "integrate.h"
#include "modify.h"
#include "compute.h"
#include "force.h"
#include "output.h"
#include "thermo.h"
#include "fix.h"
#include "random_park.h"
#include "finish.h"
#include "timer.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
// #define TEMPER_DEBUG 1
/* ---------------------------------------------------------------------- */
Temper::Temper(LAMMPS *lmp) : Pointers(lmp) {}
/* ---------------------------------------------------------------------- */
Temper::~Temper()
{
MPI_Comm_free(&roots);
if (ranswap) delete ranswap;
delete ranboltz;
delete [] set_temp;
delete [] temp2world;
delete [] world2temp;
delete [] world2root;
}
/* ----------------------------------------------------------------------
perform tempering with inter-world swaps
------------------------------------------------------------------------- */
void Temper::command(int narg, char **arg)
{
if (universe->nworlds == 1)
error->all(FLERR,"Must have more than one processor partition to temper");
if (domain->box_exist == 0)
error->all(FLERR,"Temper command before simulation box is defined");
if (narg != 6 && narg != 7)
error->universe_all(FLERR,"Illegal temper command");
int nsteps = force->inumeric(FLERR,arg[0]);
nevery = force->inumeric(FLERR,arg[1]);
double temp = force->numeric(FLERR,arg[2]);
for (whichfix = 0; whichfix < modify->nfix; whichfix++)
if (strcmp(arg[3],modify->fix[whichfix]->id) == 0) break;
if (whichfix == modify->nfix)
error->universe_all(FLERR,"Tempering fix ID is not defined");
seed_swap = force->inumeric(FLERR,arg[4]);
seed_boltz = force->inumeric(FLERR,arg[5]);
my_set_temp = universe->iworld;
if (narg == 7) my_set_temp = force->inumeric(FLERR,arg[6]);
+ if ((my_set_temp < 0) || (my_set_temp >= universe->nworlds))
+ error->universe_one(FLERR,"Illegal temperature index");
// swap frequency must evenly divide total # of timesteps
if (nevery <= 0)
error->universe_all(FLERR,"Invalid frequency in temper command");
nswaps = nsteps/nevery;
if (nswaps*nevery != nsteps)
error->universe_all(FLERR,"Non integer # of swaps in temper command");
// fix style must be appropriate for temperature control, i.e. it needs
// to provide a working Fix::reset_target() and must not change the volume.
if ((strcmp(modify->fix[whichfix]->style,"nvt") != 0) &&
(strcmp(modify->fix[whichfix]->style,"nvt/asphere") != 0) &&
(strcmp(modify->fix[whichfix]->style,"nvt/asphere/omp") != 0) &&
(strcmp(modify->fix[whichfix]->style,"nvt/body") != 0) &&
(strcmp(modify->fix[whichfix]->style,"nvt/eff") != 0) &&
(strcmp(modify->fix[whichfix]->style,"nvt/intel") != 0) &&
(strcmp(modify->fix[whichfix]->style,"nvt/kk") != 0) &&
(strcmp(modify->fix[whichfix]->style,"nvt/kk/host") != 0) &&
(strcmp(modify->fix[whichfix]->style,"nvt/kk/device") != 0) &&
(strcmp(modify->fix[whichfix]->style,"nvt/omp") != 0) &&
(strcmp(modify->fix[whichfix]->style,"nvt/sphere") != 0) &&
(strcmp(modify->fix[whichfix]->style,"nvt/sphere/omp") != 0) &&
(strcmp(modify->fix[whichfix]->style,"langevin") != 0) &&
(strcmp(modify->fix[whichfix]->style,"langevin/drude") != 0) &&
(strcmp(modify->fix[whichfix]->style,"langevin/eff") != 0) &&
(strcmp(modify->fix[whichfix]->style,"gld") != 0) &&
(strcmp(modify->fix[whichfix]->style,"gle") != 0) &&
(strcmp(modify->fix[whichfix]->style,"rigid/nvt") != 0) &&
(strcmp(modify->fix[whichfix]->style,"rigid/nvt/small") != 0) &&
(strcmp(modify->fix[whichfix]->style,"rigid/nvt/omp") != 0) &&
(strcmp(modify->fix[whichfix]->style,"rigid/nvt/small/omp") != 0) &&
(strcmp(modify->fix[whichfix]->style,"temp/berendsen") != 0) &&
(strcmp(modify->fix[whichfix]->style,"temp/berendsen/cuda") != 0) &&
(strcmp(modify->fix[whichfix]->style,"temp/csvr") != 0) &&
(strcmp(modify->fix[whichfix]->style,"temp/csld") != 0) &&
(strcmp(modify->fix[whichfix]->style,"temp/rescale") != 0) &&
(strcmp(modify->fix[whichfix]->style,"temp/rescale/cuda") != 0) &&
(strcmp(modify->fix[whichfix]->style,"temp/rescale/eff") != 0))
error->universe_all(FLERR,"Tempering temperature fix is not supported");
// setup for long tempering run
update->whichflag = 1;
update->nsteps = nsteps;
update->beginstep = update->firststep = update->ntimestep;
update->endstep = update->laststep = update->firststep + nsteps;
if (update->laststep < 0)
error->all(FLERR,"Too many timesteps");
lmp->init();
// local storage
me_universe = universe->me;
MPI_Comm_rank(world,&me);
nworlds = universe->nworlds;
iworld = universe->iworld;
boltz = force->boltz;
// pe_compute = ptr to thermo_pe compute
// notify compute it will be called at first swap
int id = modify->find_compute("thermo_pe");
if (id < 0) error->all(FLERR,"Tempering could not find thermo_pe compute");
Compute *pe_compute = modify->compute[id];
pe_compute->addstep(update->ntimestep + nevery);
// create MPI communicator for root proc from each world
int color;
if (me == 0) color = 0;
else color = 1;
MPI_Comm_split(universe->uworld,color,0,&roots);
// RNGs for swaps and Boltzmann test
// warm up Boltzmann RNG
if (seed_swap) ranswap = new RanPark(lmp,seed_swap);
else ranswap = NULL;
ranboltz = new RanPark(lmp,seed_boltz + me_universe);
for (int i = 0; i < 100; i++) ranboltz->uniform();
// world2root[i] = global proc that is root proc of world i
world2root = new int[nworlds];
if (me == 0)
MPI_Allgather(&me_universe,1,MPI_INT,world2root,1,MPI_INT,roots);
MPI_Bcast(world2root,nworlds,MPI_INT,0,world);
// create static list of set temperatures
// allgather tempering arg "temp" across root procs
// bcast from each root to other procs in world
set_temp = new double[nworlds];
if (me == 0) MPI_Allgather(&temp,1,MPI_DOUBLE,set_temp,1,MPI_DOUBLE,roots);
MPI_Bcast(set_temp,nworlds,MPI_DOUBLE,0,world);
// create world2temp only on root procs from my_set_temp
// create temp2world on root procs from world2temp,
// then bcast to all procs within world
world2temp = new int[nworlds];
temp2world = new int[nworlds];
if (me == 0) {
MPI_Allgather(&my_set_temp,1,MPI_INT,world2temp,1,MPI_INT,roots);
for (int i = 0; i < nworlds; i++) temp2world[world2temp[i]] = i;
}
MPI_Bcast(temp2world,nworlds,MPI_INT,0,world);
// if restarting tempering, reset temp target of Fix to current my_set_temp
if (narg == 7) {
double new_temp = set_temp[my_set_temp];
modify->fix[whichfix]->reset_target(new_temp);
}
// setup tempering runs
int i,which,partner,swap,partner_set_temp,partner_world;
double pe,pe_partner,boltz_factor,new_temp;
if (me_universe == 0 && universe->uscreen)
fprintf(universe->uscreen,"Setting up tempering ...\n");
update->integrate->setup();
if (me_universe == 0) {
if (universe->uscreen) {
fprintf(universe->uscreen,"Step");
for (int i = 0; i < nworlds; i++)
fprintf(universe->uscreen," T%d",i);
fprintf(universe->uscreen,"\n");
}
if (universe->ulogfile) {
fprintf(universe->ulogfile,"Step");
for (int i = 0; i < nworlds; i++)
fprintf(universe->ulogfile," T%d",i);
fprintf(universe->ulogfile,"\n");
}
print_status();
}
timer->init();
timer->barrier_start();
for (int iswap = 0; iswap < nswaps; iswap++) {
// run for nevery timesteps
update->integrate->run(nevery);
// compute PE
// notify compute it will be called at next swap
pe = pe_compute->compute_scalar();
pe_compute->addstep(update->ntimestep + nevery);
// which = which of 2 kinds of swaps to do (0,1)
if (!ranswap) which = iswap % 2;
else if (ranswap->uniform() < 0.5) which = 0;
else which = 1;
// partner_set_temp = which set temp I am partnering with for this swap
if (which == 0) {
if (my_set_temp % 2 == 0) partner_set_temp = my_set_temp + 1;
else partner_set_temp = my_set_temp - 1;
} else {
if (my_set_temp % 2 == 1) partner_set_temp = my_set_temp + 1;
else partner_set_temp = my_set_temp - 1;
}
// partner = proc ID to swap with
// if partner = -1, then I am not a proc that swaps
partner = -1;
if (me == 0 && partner_set_temp >= 0 && partner_set_temp < nworlds) {
partner_world = temp2world[partner_set_temp];
partner = world2root[partner_world];
}
// swap with a partner, only root procs in each world participate
// hi proc sends PE to low proc
// lo proc make Boltzmann decision on whether to swap
// lo proc communicates decision back to hi proc
swap = 0;
if (partner != -1) {
if (me_universe > partner)
MPI_Send(&pe,1,MPI_DOUBLE,partner,0,universe->uworld);
else
MPI_Recv(&pe_partner,1,MPI_DOUBLE,partner,0,universe->uworld,MPI_STATUS_IGNORE);
if (me_universe < partner) {
boltz_factor = (pe - pe_partner) *
(1.0/(boltz*set_temp[my_set_temp]) -
1.0/(boltz*set_temp[partner_set_temp]));
if (boltz_factor >= 0.0) swap = 1;
else if (ranboltz->uniform() < exp(boltz_factor)) swap = 1;
}
if (me_universe < partner)
MPI_Send(&swap,1,MPI_INT,partner,0,universe->uworld);
else
MPI_Recv(&swap,1,MPI_INT,partner,0,universe->uworld,MPI_STATUS_IGNORE);
#ifdef TEMPER_DEBUG
if (me_universe < partner)
printf("SWAP %d & %d: yes = %d,Ts = %d %d, PEs = %g %g, Bz = %g %g\n",
me_universe,partner,swap,my_set_temp,partner_set_temp,
pe,pe_partner,boltz_factor,exp(boltz_factor));
#endif
}
// bcast swap result to other procs in my world
MPI_Bcast(&swap,1,MPI_INT,0,world);
// rescale kinetic energy via velocities if move is accepted
if (swap) scale_velocities(partner_set_temp,my_set_temp);
// if my world swapped, all procs in world reset temp target of Fix
if (swap) {
new_temp = set_temp[partner_set_temp];
modify->fix[whichfix]->reset_target(new_temp);
}
// update my_set_temp and temp2world on every proc
// root procs update their value if swap took place
// allgather across root procs
// bcast within my world
if (swap) my_set_temp = partner_set_temp;
if (me == 0) {
MPI_Allgather(&my_set_temp,1,MPI_INT,world2temp,1,MPI_INT,roots);
for (i = 0; i < nworlds; i++) temp2world[world2temp[i]] = i;
}
MPI_Bcast(temp2world,nworlds,MPI_INT,0,world);
// print out current swap status
if (me_universe == 0) print_status();
}
timer->barrier_stop();
update->integrate->cleanup();
Finish finish(lmp);
finish.end(1);
update->whichflag = 0;
update->firststep = update->laststep = 0;
update->beginstep = update->endstep = 0;
}
/* ----------------------------------------------------------------------
scale kinetic energy via velocities a la Sugita
------------------------------------------------------------------------- */
void Temper::scale_velocities(int t_partner, int t_me)
{
double sfactor = sqrt(set_temp[t_partner]/set_temp[t_me]);
double **v = atom->v;
int nlocal = atom->nlocal;
for (int i = 0; i < nlocal; i++) {
v[i][0] = v[i][0]*sfactor;
v[i][1] = v[i][1]*sfactor;
v[i][2] = v[i][2]*sfactor;
}
}
/* ----------------------------------------------------------------------
proc 0 prints current tempering status
------------------------------------------------------------------------- */
void Temper::print_status()
{
if (universe->uscreen) {
fprintf(universe->uscreen,BIGINT_FORMAT,update->ntimestep);
for (int i = 0; i < nworlds; i++)
fprintf(universe->uscreen," %d",world2temp[i]);
fprintf(universe->uscreen,"\n");
}
if (universe->ulogfile) {
fprintf(universe->ulogfile,BIGINT_FORMAT,update->ntimestep);
for (int i = 0; i < nworlds; i++)
fprintf(universe->ulogfile," %d",world2temp[i]);
fprintf(universe->ulogfile,"\n");
fflush(universe->ulogfile);
}
}
diff --git a/src/USER-CG-CMM/angle_sdk.cpp b/src/USER-CG-CMM/angle_sdk.cpp
index cc5498599..a4f979961 100644
--- a/src/USER-CG-CMM/angle_sdk.cpp
+++ b/src/USER-CG-CMM/angle_sdk.cpp
@@ -1,504 +1,505 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain 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)
+
Variant of the harmonic angle potential for use with the
lj/sdk potential for coarse grained MD simulations.
- Contributing author: Axel Kohlmeyer (Temple U)
------------------------------------------------------------------------- */
#include <math.h>
#include <stdlib.h>
#include "angle_sdk.h"
#include "atom.h"
#include "neighbor.h"
#include "pair.h"
#include "domain.h"
#include "comm.h"
#include "force.h"
#include "math_const.h"
#include "memory.h"
#include "error.h"
#include "lj_sdk_common.h"
using namespace LAMMPS_NS;
using namespace MathConst;
using namespace LJSDKParms;
#define SMALL 0.001
/* ---------------------------------------------------------------------- */
AngleSDK::AngleSDK(LAMMPS *lmp) : Angle(lmp) { repflag = 0;}
/* ---------------------------------------------------------------------- */
AngleSDK::~AngleSDK()
{
if (allocated) {
memory->destroy(setflag);
memory->destroy(k);
memory->destroy(theta0);
memory->destroy(repscale);
allocated = 0;
}
}
/* ---------------------------------------------------------------------- */
void AngleSDK::compute(int eflag, int vflag)
{
int i1,i2,i3,n,type;
double delx1,dely1,delz1,delx2,dely2,delz2,delx3,dely3,delz3;
double eangle,f1[3],f3[3],e13,f13;
double dtheta,tk;
double rsq1,rsq2,rsq3,r1,r2,c,s,a,a11,a12,a22;
eangle = 0.0;
if (eflag || vflag) ev_setup(eflag,vflag);
else evflag = 0;
double **x = atom->x;
double **f = atom->f;
int **anglelist = neighbor->anglelist;
int nanglelist = neighbor->nanglelist;
int nlocal = atom->nlocal;
int newton_bond = force->newton_bond;
for (n = 0; n < nanglelist; n++) {
i1 = anglelist[n][0];
i2 = anglelist[n][1];
i3 = anglelist[n][2];
type = anglelist[n][3];
// 1st bond
delx1 = x[i1][0] - x[i2][0];
dely1 = x[i1][1] - x[i2][1];
delz1 = x[i1][2] - x[i2][2];
rsq1 = delx1*delx1 + dely1*dely1 + delz1*delz1;
r1 = sqrt(rsq1);
// 2nd bond
delx2 = x[i3][0] - x[i2][0];
dely2 = x[i3][1] - x[i2][1];
delz2 = x[i3][2] - x[i2][2];
rsq2 = delx2*delx2 + dely2*dely2 + delz2*delz2;
r2 = sqrt(rsq2);
// angle (cos and sin)
c = delx1*delx2 + dely1*dely2 + delz1*delz2;
c /= r1*r2;
if (c > 1.0) c = 1.0;
if (c < -1.0) c = -1.0;
s = sqrt(1.0 - c*c);
if (s < SMALL) s = SMALL;
s = 1.0/s;
// 1-3 LJ interaction.
// we only want to use the repulsive part,
// and it can be scaled (or off).
// so this has to be done here and not in the
// general non-bonded code.
f13 = e13 = delx3 = dely3 = delz3 = 0.0;
if (repflag) {
delx3 = x[i1][0] - x[i3][0];
dely3 = x[i1][1] - x[i3][1];
delz3 = x[i1][2] - x[i3][2];
rsq3 = delx3*delx3 + dely3*dely3 + delz3*delz3;
const int type1 = atom->type[i1];
const int type3 = atom->type[i3];
f13=0.0;
e13=0.0;
if (rsq3 < rminsq[type1][type3]) {
const int ljt = lj_type[type1][type3];
const double r2inv = 1.0/rsq3;
if (ljt == LJ12_4) {
const double r4inv=r2inv*r2inv;
f13 = r4inv*(lj1[type1][type3]*r4inv*r4inv - lj2[type1][type3]);
if (eflag) e13 = r4inv*(lj3[type1][type3]*r4inv*r4inv - lj4[type1][type3]);
} else if (ljt == LJ9_6) {
const double r3inv = r2inv*sqrt(r2inv);
const double r6inv = r3inv*r3inv;
f13 = r6inv*(lj1[type1][type3]*r3inv - lj2[type1][type3]);
if (eflag) e13 = r6inv*(lj3[type1][type3]*r3inv - lj4[type1][type3]);
} else if (ljt == LJ12_6) {
const double r6inv = r2inv*r2inv*r2inv;
f13 = r6inv*(lj1[type1][type3]*r6inv - lj2[type1][type3]);
if (eflag) e13 = r6inv*(lj3[type1][type3]*r6inv - lj4[type1][type3]);
}
// make sure energy is 0.0 at the cutoff.
if (eflag) e13 -= emin[type1][type3];
f13 *= r2inv;
}
}
// force & energy
dtheta = acos(c) - theta0[type];
tk = k[type] * dtheta;
if (eflag) eangle = tk*dtheta;
a = -2.0 * tk * s;
a11 = a*c / rsq1;
a12 = -a / (r1*r2);
a22 = a*c / rsq2;
f1[0] = a11*delx1 + a12*delx2;
f1[1] = a11*dely1 + a12*dely2;
f1[2] = a11*delz1 + a12*delz2;
f3[0] = a22*delx2 + a12*delx1;
f3[1] = a22*dely2 + a12*dely1;
f3[2] = a22*delz2 + a12*delz1;
// apply force to each of the 3 atoms
if (newton_bond || i1 < nlocal) {
f[i1][0] += f1[0] + f13*delx3;
f[i1][1] += f1[1] + f13*dely3;
f[i1][2] += f1[2] + f13*delz3;
}
if (newton_bond || i2 < nlocal) {
f[i2][0] -= f1[0] + f3[0];
f[i2][1] -= f1[1] + f3[1];
f[i2][2] -= f1[2] + f3[2];
}
if (newton_bond || i3 < nlocal) {
f[i3][0] += f3[0] - f13*delx3;
f[i3][1] += f3[1] - f13*dely3;
f[i3][2] += f3[2] - f13*delz3;
}
if (evflag) {
ev_tally(i1,i2,i3,nlocal,newton_bond,eangle,f1,f3,
delx1,dely1,delz1,delx2,dely2,delz2);
if (repflag)
ev_tally13(i1,i3,nlocal,newton_bond,e13,f13,delx3,dely3,delz3);
}
}
}
/* ---------------------------------------------------------------------- */
void AngleSDK::allocate()
{
allocated = 1;
int n = atom->nangletypes;
memory->create(k,n+1,"angle:k");
memory->create(theta0,n+1,"angle:theta0");
memory->create(repscale,n+1,"angle:repscale");
memory->create(setflag,n+1,"angle:setflag");
for (int i = 1; i <= n; i++) setflag[i] = 0;
}
/* ----------------------------------------------------------------------
set coeffs for one or more types
------------------------------------------------------------------------- */
void AngleSDK::coeff(int narg, char **arg)
{
if ((narg < 3) || (narg > 6))
error->all(FLERR,"Incorrect args for angle coefficients");
if (!allocated) allocate();
int ilo,ihi;
force->bounds(FLERR,arg[0],atom->nangletypes,ilo,ihi);
double k_one = force->numeric(FLERR,arg[1]);
double theta0_one = force->numeric(FLERR,arg[2]);
double repscale_one=1.0;
// backward compatibility with old cg/cmm style input:
// this had <lj_type> <epsilon> <sigma>
// if epsilon is set to 0.0 we accept it as repscale 0.0
// otherwise assume repscale 1.0, since we were using
// epsilon to turn repulsion on or off.
if (narg == 6) {
repscale_one = force->numeric(FLERR,arg[4]);
if (repscale_one > 0.0) repscale_one = 1.0;
} else if (narg == 4) repscale_one = force->numeric(FLERR,arg[3]);
else if (narg == 3) repscale_one = 1.0;
else error->all(FLERR,"Incorrect args for angle coefficients");
// convert theta0 from degrees to radians and store coefficients
int count = 0;
for (int i = ilo; i <= ihi; i++) {
k[i] = k_one;
theta0[i] = theta0_one/180.0 * MY_PI;
repscale[i] = repscale_one;
setflag[i] = 1;
count++;
}
if (count == 0) error->all(FLERR,"Incorrect args for angle coefficients");
}
/* ----------------------------------------------------------------------
error check and initialize all values needed for force computation
------------------------------------------------------------------------- */
void AngleSDK::init_style()
{
// make sure we use an SDK pair_style and that we need the 1-3 repulsion
repflag = 0;
for (int i = 1; i <= atom->nangletypes; i++)
if (repscale[i] > 0.0) repflag = 1;
// set up pointers to access SDK LJ parameters for 1-3 interactions
if (repflag) {
int itmp;
if (force->pair == NULL)
error->all(FLERR,"Angle style SDK requires use of a compatible with Pair style");
lj1 = (double **) force->pair->extract("lj1",itmp);
lj2 = (double **) force->pair->extract("lj2",itmp);
lj3 = (double **) force->pair->extract("lj3",itmp);
lj4 = (double **) force->pair->extract("lj4",itmp);
lj_type = (int **) force->pair->extract("lj_type",itmp);
rminsq = (double **) force->pair->extract("rminsq",itmp);
emin = (double **) force->pair->extract("emin",itmp);
if (!lj1 || !lj2 || !lj3 || !lj4 || !lj_type || !rminsq || !emin)
error->all(FLERR,"Angle style SDK is incompatible with Pair style");
}
}
/* ---------------------------------------------------------------------- */
double AngleSDK::equilibrium_angle(int i)
{
return theta0[i];
}
/* ----------------------------------------------------------------------
proc 0 writes out coeffs to restart file
------------------------------------------------------------------------- */
void AngleSDK::write_restart(FILE *fp)
{
fwrite(&k[1],sizeof(double),atom->nangletypes,fp);
fwrite(&theta0[1],sizeof(double),atom->nangletypes,fp);
fwrite(&repscale[1],sizeof(double),atom->nangletypes,fp);
}
/* ----------------------------------------------------------------------
proc 0 reads coeffs from restart file, bcasts them
------------------------------------------------------------------------- */
void AngleSDK::read_restart(FILE *fp)
{
allocate();
if (comm->me == 0) {
fread(&k[1],sizeof(double),atom->nangletypes,fp);
fread(&theta0[1],sizeof(double),atom->nangletypes,fp);
fread(&repscale[1],sizeof(double),atom->nangletypes,fp);
}
MPI_Bcast(&k[1],atom->nangletypes,MPI_DOUBLE,0,world);
MPI_Bcast(&theta0[1],atom->nangletypes,MPI_DOUBLE,0,world);
MPI_Bcast(&repscale[1],atom->nangletypes,MPI_DOUBLE,0,world);
for (int i = 1; i <= atom->nangletypes; i++) setflag[i] = 1;
}
/* ----------------------------------------------------------------------
proc 0 writes to data file
------------------------------------------------------------------------- */
void AngleSDK::write_data(FILE *fp)
{
for (int i = 1; i <= atom->nangletypes; i++)
fprintf(fp,"%d %g %g\n",i,k[i],theta0[i]/MY_PI*180.0);
}
/* ---------------------------------------------------------------------- */
void AngleSDK::ev_tally13(int i, int j, int nlocal, int newton_bond,
double evdwl, double fpair,
double delx, double dely, double delz)
{
double v[6];
if (eflag_either) {
if (eflag_global) {
if (newton_bond) {
energy += evdwl;
} else {
if (i < nlocal)
energy += 0.5*evdwl;
if (j < nlocal)
energy += 0.5*evdwl;
}
}
if (eflag_atom) {
if (newton_bond || i < nlocal) eatom[i] += 0.5*evdwl;
if (newton_bond || j < nlocal) eatom[j] += 0.5*evdwl;
}
}
if (vflag_either) {
v[0] = delx*delx*fpair;
v[1] = dely*dely*fpair;
v[2] = delz*delz*fpair;
v[3] = delx*dely*fpair;
v[4] = delx*delz*fpair;
v[5] = dely*delz*fpair;
if (vflag_global) {
if (newton_bond) {
virial[0] += v[0];
virial[1] += v[1];
virial[2] += v[2];
virial[3] += v[3];
virial[4] += v[4];
virial[5] += v[5];
} else {
if (i < nlocal) {
virial[0] += 0.5*v[0];
virial[1] += 0.5*v[1];
virial[2] += 0.5*v[2];
virial[3] += 0.5*v[3];
virial[4] += 0.5*v[4];
virial[5] += 0.5*v[5];
}
if (j < nlocal) {
virial[0] += 0.5*v[0];
virial[1] += 0.5*v[1];
virial[2] += 0.5*v[2];
virial[3] += 0.5*v[3];
virial[4] += 0.5*v[4];
virial[5] += 0.5*v[5];
}
}
}
if (vflag_atom) {
if (newton_bond || i < nlocal) {
vatom[i][0] += 0.5*v[0];
vatom[i][1] += 0.5*v[1];
vatom[i][2] += 0.5*v[2];
vatom[i][3] += 0.5*v[3];
vatom[i][4] += 0.5*v[4];
vatom[i][5] += 0.5*v[5];
}
if (newton_bond || j < nlocal) {
vatom[j][0] += 0.5*v[0];
vatom[j][1] += 0.5*v[1];
vatom[j][2] += 0.5*v[2];
vatom[j][3] += 0.5*v[3];
vatom[j][4] += 0.5*v[4];
vatom[j][5] += 0.5*v[5];
}
}
}
}
/* ---------------------------------------------------------------------- */
double AngleSDK::single(int type, int i1, int i2, int i3)
{
double **x = atom->x;
double delx1 = x[i1][0] - x[i2][0];
double dely1 = x[i1][1] - x[i2][1];
double delz1 = x[i1][2] - x[i2][2];
domain->minimum_image(delx1,dely1,delz1);
double r1 = sqrt(delx1*delx1 + dely1*dely1 + delz1*delz1);
double delx2 = x[i3][0] - x[i2][0];
double dely2 = x[i3][1] - x[i2][1];
double delz2 = x[i3][2] - x[i2][2];
domain->minimum_image(delx2,dely2,delz2);
double r2 = sqrt(delx2*delx2 + dely2*dely2 + delz2*delz2);
double c = delx1*delx2 + dely1*dely2 + delz1*delz2;
c /= r1*r2;
if (c > 1.0) c = 1.0;
if (c < -1.0) c = -1.0;
double e13=0.0;
if (repflag) {
// 1-3 LJ interaction.
double delx3 = x[i1][0] - x[i3][0];
double dely3 = x[i1][1] - x[i3][1];
double delz3 = x[i1][2] - x[i3][2];
domain->minimum_image(delx3,dely3,delz3);
const int type1 = atom->type[i1];
const int type3 = atom->type[i3];
const double rsq3 = delx3*delx3 + dely3*dely3 + delz3*delz3;
if (rsq3 < rminsq[type1][type3]) {
const int ljt = lj_type[type1][type3];
const double r2inv = 1.0/rsq3;
if (ljt == LJ12_4) {
const double r4inv=r2inv*r2inv;
e13 = r4inv*(lj3[type1][type3]*r4inv*r4inv - lj4[type1][type3]);
} else if (ljt == LJ9_6) {
const double r3inv = r2inv*sqrt(r2inv);
const double r6inv = r3inv*r3inv;
e13 = r6inv*(lj3[type1][type3]*r3inv - lj4[type1][type3]);
} else if (ljt == LJ12_6) {
const double r6inv = r2inv*r2inv*r2inv;
e13 = r6inv*(lj3[type1][type3]*r6inv - lj4[type1][type3]);
}
// make sure energy is 0.0 at the cutoff.
e13 -= emin[type1][type3];
}
}
double dtheta = acos(c) - theta0[type];
double tk = k[type] * dtheta;
return tk*dtheta + e13;
}
diff --git a/src/USER-COLVARS/ndx_group.cpp b/src/USER-COLVARS/ndx_group.cpp
index 10ccf000b..31d8332c9 100644
--- a/src/USER-COLVARS/ndx_group.cpp
+++ b/src/USER-COLVARS/ndx_group.cpp
@@ -1,248 +1,249 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
+
/* ----------------------------------------------------------------------
- Contributing author: Axel Kohlmeyer (Temple U)
+ Contributing author: Axel Kohlmeyer (Temple U)
------------------------------------------------------------------------- */
#include "ndx_group.h"
#include "atom.h"
#include "comm.h"
#include "group.h"
#include "memory.h"
#include "force.h"
#include "error.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace LAMMPS_NS;
#define BUFLEN 4096
#define DELTA 16384
static char *find_section(FILE *fp, const char *name)
{
char linebuf[BUFLEN];
char *n,*p,*t,*r;
while ((p = fgets(linebuf,BUFLEN,fp))) {
t = strtok(p," \t\n\r\f");
if ((t != NULL) && *t == '[') {
t = strtok(NULL," \t\n\r\f");
if (t != NULL) {
n = t;
t = strtok(NULL," \t\n\r\f");
if ((t != NULL) && *t == ']') {
if ((name == NULL) || strcmp(name,n) == 0) {
int l = strlen(n);
r = new char[l+1];
strncpy(r,n,l+1);
return r;
}
}
}
}
}
return NULL;
}
static tagint *read_section(FILE *fp, bigint &num)
{
char linebuf[BUFLEN];
char *p,*t;
tagint *tagbuf;
bigint nmax;
num = 0;
nmax = DELTA;
tagbuf = (tagint *)malloc(sizeof(tagint)*nmax);
while ((p = fgets(linebuf,BUFLEN,fp))) {
t = strtok(p," \t\n\r\f");
while (t != NULL) {
// start of a new section. we are done here.
if (*t == '[') return tagbuf;
tagbuf[num++] = ATOTAGINT(t);
if (num == nmax) {
nmax += DELTA;
tagbuf = (tagint *)realloc(tagbuf,sizeof(tagint)*nmax);
}
t = strtok(NULL," \t\n\r\f");
}
}
return tagbuf;
}
/* ---------------------------------------------------------------------- */
void Ndx2Group::command(int narg, char **arg)
{
int len;
bigint num;
FILE *fp;
char *name = NULL;
tagint *tags;
if (narg < 1) error->all(FLERR,"Illegal ndx2group command");
if (atom->tag_enable == 0)
error->all(FLERR,"Must have atom IDs for ndx2group command");
if (comm->me == 0) {
fp = fopen(arg[0], "r");
if (fp == NULL)
error->one(FLERR,"Cannot open index file for reading");
if (screen)
fprintf(screen, "Reading groups from index file %s:\n",arg[0]);
if (logfile)
fprintf(logfile,"Reading groups from index file %s:\n",arg[0]);
}
if (narg == 1) { // restore all groups
do {
if (comm->me == 0) {
len = 0;
// find the next section.
// if we had processed a section, before we need to step back
if (name != NULL) {
rewind(fp);
char *tmp = find_section(fp,name);
delete[] tmp;
delete[] name;
name = NULL;
}
name = find_section(fp,NULL);
if (name != NULL) {
len=strlen(name);
// skip over group "all", which is called "System" in gromacs
if (strcmp(name,"System") == 0) continue;
if (screen)
fprintf(screen," Processing group '%s'\n",name);
if (logfile)
fprintf(logfile," Processing group '%s'\n",name);
}
MPI_Bcast(&len,1,MPI_INT,0,world);
if (len > 0) {
MPI_Bcast(name,len,MPI_CHAR,0,world);
// read tags for atoms in group and broadcast
num = 0;
tags = read_section(fp,num);
MPI_Bcast(&num,1,MPI_LMP_BIGINT,0,world);
MPI_Bcast(tags,num,MPI_LMP_TAGINT,0,world);
create(name,num,tags);
free(tags);
}
} else {
MPI_Bcast(&len,1,MPI_INT,0,world);
if (len > 0) {
delete[] name;
name = new char[len+1];
MPI_Bcast(name,len+1,MPI_CHAR,0,world);
MPI_Bcast(&num,1,MPI_LMP_BIGINT,0,world);
tags = (tagint *)malloc(sizeof(tagint)*(num ? num : 1));
MPI_Bcast(tags,num,MPI_LMP_TAGINT,0,world);
create(name,num,tags);
free(tags);
}
}
} while (len);
} else { // restore selected groups
for (int idx=1; idx < narg; ++idx) {
if (comm->me == 0) {
len = 0;
// find named section, search from beginning of file
if (name != NULL) delete[] name;
rewind(fp);
name = find_section(fp,arg[idx]);
if (name != NULL) len=strlen(name);
if (screen)
fprintf(screen," %s group '%s'\n",
len ? "Processing" : "Skipping",arg[idx]);
if (logfile)
fprintf(logfile,"%s group '%s'\n",
len ? "Processing" : "Skipping",arg[idx]);
MPI_Bcast(&len,1,MPI_INT,0,world);
if (len > 0) {
MPI_Bcast(name,len+1,MPI_CHAR,0,world);
// read tags for atoms in group and broadcast
num = 0;
tags = read_section(fp,num);
MPI_Bcast(&num,1,MPI_LMP_BIGINT,0,world);
MPI_Bcast(tags,num,MPI_LMP_TAGINT,0,world);
create(name,num,tags);
free(tags);
}
} else {
MPI_Bcast(&len,1,MPI_INT,0,world);
if (len > 0) {
delete[] name;
name = new char[len+1];
MPI_Bcast(name,len+1,MPI_CHAR,0,world);
MPI_Bcast(&num,1,MPI_LMP_BIGINT,0,world);
tags = (tagint *)malloc(sizeof(tagint)*(num ? num : 1));
MPI_Bcast(tags,num,MPI_LMP_TAGINT,0,world);
create(name,num,tags);
free(tags);
}
}
}
}
delete[] name;
if (comm->me == 0) {
if (screen) fputs("\n",screen);
if (logfile) fputs("\n",logfile);
fclose(fp);
}
}
/* ---------------------------------------------------------------------- */
void Ndx2Group::create(char *name, bigint num, tagint *tags)
{
// wipe out all members if the group exists. gid==0 is group "all"
int gid = group->find(name);
if (gid > 0) {
char *cmd[2];
cmd[0] = name;
cmd[1] = (char *)"clear";
group->assign(2,cmd);
}
// map from global to local
const int nlocal = atom->nlocal;
int *flags = (int *)calloc(nlocal,sizeof(int));
for (bigint i=0; i < num; ++i) {
const int id = atom->map(tags[i]);
if (id < nlocal && id >= 0)
flags[id] = 1;
}
group->create(name,flags);
free(flags);
}
diff --git a/src/USER-DPD/pair_dpd_fdt_energy.cpp b/src/USER-DPD/pair_dpd_fdt_energy.cpp
index 84fa352a4..99ba4de58 100644
--- a/src/USER-DPD/pair_dpd_fdt_energy.cpp
+++ b/src/USER-DPD/pair_dpd_fdt_energy.cpp
@@ -1,574 +1,575 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain 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: James Larentzos (U.S. Army Research Laboratory)
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "atom.h"
#include "atom_vec.h"
#include "comm.h"
#include "update.h"
#include "fix.h"
#include "force.h"
#include "neighbor.h"
#include "neigh_list.h"
#include "neigh_request.h"
#include "random_mars.h"
#include "memory.h"
#include "modify.h"
#include "pair_dpd_fdt_energy.h"
#include "error.h"
using namespace LAMMPS_NS;
#define EPSILON 1.0e-10
/* ---------------------------------------------------------------------- */
PairDPDfdtEnergy::PairDPDfdtEnergy(LAMMPS *lmp) : Pair(lmp)
{
random = NULL;
+ duCond = NULL;
+ duMech = NULL;
+ splitFDT_flag = false;
comm_reverse = 2;
}
/* ---------------------------------------------------------------------- */
PairDPDfdtEnergy::~PairDPDfdtEnergy()
{
if (allocated) {
memory->destroy(setflag);
memory->destroy(cutsq);
memory->destroy(cut);
memory->destroy(a0);
memory->destroy(sigma);
memory->destroy(kappa);
- if (!splitFDT_flag) {
- memory->destroy(duCond);
- memory->destroy(duMech);
- }
+ memory->destroy(duCond);
+ memory->destroy(duMech);
}
if (random) delete random;
}
/* ---------------------------------------------------------------------- */
void PairDPDfdtEnergy::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,wd,wr,factor_dpd,uTmp;
double dot,randnum;
int *ilist,*jlist,*numneigh,**firstneigh;
evdwl = 0.0;
if (eflag || vflag) ev_setup(eflag,vflag);
else evflag = vflag_fdotr = 0;
double **x = atom->x;
double **v = atom->v;
double **f = atom->f;
int *type = atom->type;
int nlocal = atom->nlocal;
int nghost = atom->nghost;
double *special_lj = force->special_lj;
int newton_pair = force->newton_pair;
double dtinvsqrt = 1.0/sqrt(update->dt);
double *rmass = atom->rmass;
double *mass = atom->mass;
double *dpdTheta = atom->dpdTheta;
double kappa_ij, alpha_ij, theta_ij, gamma_ij;
double mass_i, mass_j;
double massinv_i, massinv_j;
double randPair, mu_ij;
inum = list->inum;
ilist = list->ilist;
numneigh = list->numneigh;
firstneigh = list->firstneigh;
// loop over neighbors of my atoms
if (splitFDT_flag) {
for (ii = 0; ii < inum; ii++) {
i = ilist[ii];
xtmp = x[i][0];
ytmp = x[i][1];
ztmp = x[i][2];
itype = type[i];
jlist = firstneigh[i];
jnum = numneigh[i];
for (jj = 0; jj < jnum; jj++) {
j = jlist[jj];
factor_dpd = special_lj[sbmask(j)];
j &= NEIGHMASK;
delx = xtmp - x[j][0];
dely = ytmp - x[j][1];
delz = ztmp - x[j][2];
rsq = delx*delx + dely*dely + delz*delz;
jtype = type[j];
if (rsq < cutsq[itype][jtype]) {
r = sqrt(rsq);
if (r < EPSILON) continue; // r can be 0.0 in DPD systems
rinv = 1.0/r;
wr = 1.0 - r/cut[itype][jtype];
wd = wr*wr;
// conservative force = a0 * wr
fpair = a0[itype][jtype]*wr;
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:
// evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]);
// eng shifted to 0.0 at cutoff
evdwl = 0.5*a0[itype][jtype]*cut[itype][jtype] * wd;
evdwl *= factor_dpd;
}
if (evflag) ev_tally(i,j,nlocal,newton_pair,
evdwl,0.0,fpair,delx,dely,delz);
}
}
}
} else {
// Allocate memory for duCond and duMech
if (allocated) {
memory->destroy(duCond);
memory->destroy(duMech);
}
memory->create(duCond,nlocal+nghost,"pair:duCond");
memory->create(duMech,nlocal+nghost,"pair:duMech");
for (int ii = 0; ii < nlocal+nghost; ii++) {
duCond[ii] = 0.0;
duMech[ii] = 0.0;
}
// loop over neighbors of my atoms
for (int 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];
for (jj = 0; jj < jnum; jj++) {
j = jlist[jj];
factor_dpd = special_lj[sbmask(j)];
j &= NEIGHMASK;
delx = xtmp - x[j][0];
dely = ytmp - x[j][1];
delz = ztmp - x[j][2];
rsq = delx*delx + dely*dely + delz*delz;
jtype = type[j];
if (rsq < cutsq[itype][jtype]) {
r = sqrt(rsq);
if (r < EPSILON) continue; // r can be 0.0 in DPD systems
rinv = 1.0/r;
wr = 1.0 - r/cut[itype][jtype];
wd = wr*wr;
delvx = vxtmp - v[j][0];
delvy = vytmp - v[j][1];
delvz = vztmp - v[j][2];
dot = delx*delvx + dely*delvy + delz*delvz;
randnum = random->gaussian();
// Compute the current temperature
theta_ij = 0.5*(1.0/dpdTheta[i] + 1.0/dpdTheta[j]);
theta_ij = 1.0/theta_ij;
gamma_ij = sigma[itype][jtype]*sigma[itype][jtype]
/ (2.0*force->boltz*theta_ij);
// conservative force = a0 * wr
// drag force = -gamma * wr^2 * (delx dot delv) / r
// random force = sigma * wr * rnd * dtinvsqrt;
fpair = a0[itype][jtype]*wr;
fpair -= gamma_ij*wd*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 (rmass) {
mass_i = rmass[i];
mass_j = rmass[j];
} else {
mass_i = mass[itype];
mass_j = mass[jtype];
}
massinv_i = 1.0 / mass_i;
massinv_j = 1.0 / mass_j;
// Compute the mechanical and conductive energy, uMech and uCond
mu_ij = massinv_i + massinv_j;
mu_ij *= force->ftm2v;
uTmp = gamma_ij*wd*rinv*rinv*dot*dot
- 0.5*sigma[itype][jtype]*sigma[itype][jtype]*mu_ij*wd;
uTmp -= sigma[itype][jtype]*wr*rinv*dot*randnum*dtinvsqrt;
uTmp *= 0.5;
duMech[i] += uTmp;
if (newton_pair || j < nlocal) {
duMech[j] += uTmp;
}
// Compute uCond
randnum = random->gaussian();
kappa_ij = kappa[itype][jtype];
alpha_ij = sqrt(2.0*force->boltz*kappa_ij);
randPair = alpha_ij*wr*randnum*dtinvsqrt;
uTmp = kappa_ij*(1.0/dpdTheta[i] - 1.0/dpdTheta[j])*wd;
uTmp += randPair;
duCond[i] += uTmp;
if (newton_pair || j < nlocal) {
duCond[j] -= uTmp;
}
if (eflag) {
// unshifted eng of conservative term:
// evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]);
// eng shifted to 0.0 at cutoff
evdwl = 0.5*a0[itype][jtype]*cut[itype][jtype] * wd;
evdwl *= factor_dpd;
}
if (evflag) ev_tally(i,j,nlocal,newton_pair,
evdwl,0.0,fpair,delx,dely,delz);
}
}
}
// Communicate the ghost delta energies to the locally owned atoms
comm->reverse_comm_pair(this);
}
if (vflag_fdotr) virial_fdotr_compute();
}
/* ----------------------------------------------------------------------
allocate all arrays
------------------------------------------------------------------------- */
void PairDPDfdtEnergy::allocate()
{
allocated = 1;
int n = atom->ntypes;
int nlocal = atom->nlocal;
int nghost = atom->nghost;
memory->create(setflag,n+1,n+1,"pair:setflag");
for (int i = 1; i <= n; i++)
for (int j = i; j <= n; j++)
setflag[i][j] = 0;
memory->create(cutsq,n+1,n+1,"pair:cutsq");
memory->create(cut,n+1,n+1,"pair:cut");
memory->create(a0,n+1,n+1,"pair:a0");
memory->create(sigma,n+1,n+1,"pair:sigma");
memory->create(kappa,n+1,n+1,"pair:kappa");
if (!splitFDT_flag) {
memory->create(duCond,nlocal+nghost+1,"pair:duCond");
memory->create(duMech,nlocal+nghost+1,"pair:duMech");
}
}
/* ----------------------------------------------------------------------
global settings
------------------------------------------------------------------------- */
void PairDPDfdtEnergy::settings(int narg, char **arg)
{
// process keywords
if (narg != 2) error->all(FLERR,"Illegal pair_style command");
cut_global = force->numeric(FLERR,arg[0]);
seed = force->inumeric(FLERR,arg[1]);
if (atom->dpd_flag != 1)
error->all(FLERR,"pair_style dpd/fdt/energy requires atom_style with internal temperature and energies (e.g. dpd)");
// initialize Marsaglia RNG with processor-unique seed
if (seed <= 0) error->all(FLERR,"Illegal pair_style command");
delete random;
random = new RanMars(lmp,seed + comm->me);
// reset cutoffs that have been explicitly set
if (allocated) {
int i,j;
for (i = 1; i <= atom->ntypes; i++)
for (j = i+1; j <= atom->ntypes; j++)
if (setflag[i][j]) cut[i][j] = cut_global;
}
}
/* ----------------------------------------------------------------------
set coeffs for one or more type pairs
------------------------------------------------------------------------- */
void PairDPDfdtEnergy::coeff(int narg, char **arg)
{
if (narg < 5 || narg > 6) error->all(FLERR,"Incorrect args for pair coefficients");
if (!allocated) allocate();
int ilo,ihi,jlo,jhi;
force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi);
force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi);
double a0_one = force->numeric(FLERR,arg[2]);
double sigma_one = force->numeric(FLERR,arg[3]);
double cut_one = cut_global;
double kappa_one;
kappa_one = force->numeric(FLERR,arg[4]);
if (narg == 6) cut_one = force->numeric(FLERR,arg[5]);
int count = 0;
for (int i = ilo; i <= ihi; i++) {
for (int j = MAX(jlo,i); j <= jhi; j++) {
a0[i][j] = a0_one;
sigma[i][j] = sigma_one;
kappa[i][j] = kappa_one;
cut[i][j] = cut_one;
setflag[i][j] = 1;
count++;
}
}
if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients");
}
/* ----------------------------------------------------------------------
init specific to this pair style
------------------------------------------------------------------------- */
void PairDPDfdtEnergy::init_style()
{
if (comm->ghost_velocity == 0)
error->all(FLERR,"Pair dpd/fdt/energy requires ghost atoms store velocity");
// if newton off, forces between atoms ij will be double computed
// using different random numbers
if (force->newton_pair == 0 && comm->me == 0) error->warning(FLERR,
"Pair dpd/fdt/energy requires newton pair on");
splitFDT_flag = false;
int irequest = neighbor->request(this,instance_me);
neighbor->requests[irequest]->ssa = 0;
for (int i = 0; i < modify->nfix; i++)
if (strcmp(modify->fix[i]->style,"shardlow") == 0){
splitFDT_flag = true;
neighbor->requests[irequest]->ssa = 1;
}
bool eos_flag = false;
for (int i = 0; i < modify->nfix; i++)
if (strncmp(modify->fix[i]->style,"eos",3) == 0) eos_flag = true;
if(!eos_flag) error->all(FLERR,"pair_style dpd/fdt/energy requires an EOS to be specified");
}
/* ----------------------------------------------------------------------
init for one type pair i,j and corresponding j,i
------------------------------------------------------------------------- */
double PairDPDfdtEnergy::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];
a0[j][i] = a0[i][j];
sigma[j][i] = sigma[i][j];
kappa[j][i] = kappa[i][j];
return cut[i][j];
}
/* ----------------------------------------------------------------------
proc 0 writes to restart file
------------------------------------------------------------------------- */
void PairDPDfdtEnergy::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(&a0[i][j],sizeof(double),1,fp);
fwrite(&sigma[i][j],sizeof(double),1,fp);
fwrite(&kappa[i][j],sizeof(double),1,fp);
fwrite(&cut[i][j],sizeof(double),1,fp);
}
}
}
/* ----------------------------------------------------------------------
proc 0 reads from restart file, bcasts
------------------------------------------------------------------------- */
void PairDPDfdtEnergy::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(&a0[i][j],sizeof(double),1,fp);
fread(&sigma[i][j],sizeof(double),1,fp);
fread(&kappa[i][j],sizeof(double),1,fp);
fread(&cut[i][j],sizeof(double),1,fp);
}
MPI_Bcast(&a0[i][j],1,MPI_DOUBLE,0,world);
MPI_Bcast(&sigma[i][j],1,MPI_DOUBLE,0,world);
MPI_Bcast(&kappa[i][j],1,MPI_DOUBLE,0,world);
MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world);
}
}
}
/* ----------------------------------------------------------------------
proc 0 writes to restart file
------------------------------------------------------------------------- */
void PairDPDfdtEnergy::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 PairDPDfdtEnergy::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);
}
/* ---------------------------------------------------------------------- */
double PairDPDfdtEnergy::single(int i, int j, int itype, int jtype, double rsq,
double factor_coul, double factor_dpd, double &fforce)
{
double r,rinv,wr,wd,phi;
r = sqrt(rsq);
if (r < EPSILON) {
fforce = 0.0;
return 0.0;
}
rinv = 1.0/r;
wr = 1.0 - r/cut[itype][jtype];
wd = wr*wr;
fforce = a0[itype][jtype]*wr * factor_dpd*rinv;
phi = 0.5*a0[itype][jtype]*cut[itype][jtype] * wd;
return factor_dpd*phi;
}
/* ---------------------------------------------------------------------- */
int PairDPDfdtEnergy::pack_reverse_comm(int n, int first, double *buf)
{
int i,m,last;
m = 0;
last = first + n;
for (i = first; i < last; i++) {
buf[m++] = duCond[i];
buf[m++] = duMech[i];
}
return m;
}
/* ---------------------------------------------------------------------- */
void PairDPDfdtEnergy::unpack_reverse_comm(int n, int *list, double *buf)
{
int i,j,m;
m = 0;
for (i = 0; i < n; i++) {
j = list[i];
duCond[j] += buf[m++];
duMech[j] += buf[m++];
}
}
diff --git a/src/USER-EFF/fix_nh_eff.cpp b/src/USER-EFF/fix_nh_eff.cpp
index bbf5ac31f..464498969 100644
--- a/src/USER-EFF/fix_nh_eff.cpp
+++ b/src/USER-EFF/fix_nh_eff.cpp
@@ -1,113 +1,113 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain 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: Andres Jaramillo-Botero (Caltech)
+ Contributing author: Andres Jaramillo-Botero (Caltech)
------------------------------------------------------------------------- */
#include <math.h>
#include <stdlib.h>
#include "fix_nh_eff.h"
#include "atom.h"
#include "atom_vec.h"
#include "group.h"
#include "error.h"
#include "domain.h"
using namespace LAMMPS_NS;
using namespace FixConst;
enum{NOBIAS,BIAS};
/* ---------------------------------------------------------------------- */
FixNHEff::FixNHEff(LAMMPS *lmp, int narg, char **arg) : FixNH(lmp, narg, arg)
{
if (!atom->electron_flag)
error->all(FLERR,"Fix nvt/nph/npt/eff requires atom style electron");
}
/* ----------------------------------------------------------------------
perform half-step update of electron radial velocities
-----------------------------------------------------------------------*/
void FixNHEff::nve_v()
{
// standard nve_v velocity update
FixNH::nve_v();
double *erforce = atom->erforce;
double *ervel = atom->ervel;
double *mass = atom->mass;
int *spin = atom->spin;
double mefactor = domain->dimension/4.0;
int *type = atom->type;
int *mask = atom->mask;
int nlocal = atom->nlocal;
if (igroup == atom->firstgroup) nlocal = atom->nfirst;
double dtfm;
for (int i = 0; i < nlocal; i++) {
if (mask[i] & groupbit) {
if (abs(spin[i])==1) {
dtfm = dtf / mass[type[i]];
ervel[i] = dtfm * erforce[i] / mefactor;
}
}
}
}
/* ----------------------------------------------------------------------
perform full-step update of electron radii
-----------------------------------------------------------------------*/
void FixNHEff::nve_x()
{
// standard nve_x position update
FixNH::nve_x();
double *eradius = atom->eradius;
double *ervel = atom->ervel;
int *spin = atom->spin;
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 (abs(spin[i])==1) eradius[i] += dtv * ervel[i];
}
/* ----------------------------------------------------------------------
perform half-step scaling of electron radial velocities
-----------------------------------------------------------------------*/
void FixNHEff::nh_v_temp()
{
// standard nh_v_temp velocity scaling
FixNH::nh_v_temp();
double *ervel = atom->ervel;
int *spin = atom->spin;
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 (abs(spin[i])==1) ervel[i] *= factor_eta;
}
diff --git a/src/USER-H5MD/dump_h5md.cpp b/src/USER-H5MD/dump_h5md.cpp
index ba31c22d2..7456d6fa4 100644
--- a/src/USER-H5MD/dump_h5md.cpp
+++ b/src/USER-H5MD/dump_h5md.cpp
@@ -1,555 +1,558 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain 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: Pierre de Buyl (KU Leuven)
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include "ch5md.h"
#include "dump_h5md.h"
#include "domain.h"
#include "atom.h"
#include "update.h"
#include "group.h"
#include "output.h"
#include "error.h"
#include "force.h"
#include "memory.h"
#include "version.h"
using namespace LAMMPS_NS;
#define MYMIN(a,b) ((a) < (b) ? (a) : (b))
#define MYMAX(a,b) ((a) > (b) ? (a) : (b))
/** Scan common options for the dump elements
*/
static int element_args(int narg, char **arg, int *every)
{
int iarg=0;
while (iarg<narg) {
if (strcmp(arg[iarg], "every")==0) {
if (narg<2) return -1;
*every = atoi(arg[iarg+1]);
iarg+=2;
} else {
break;
}
}
return iarg;
}
/* ---------------------------------------------------------------------- */
DumpH5MD::DumpH5MD(LAMMPS *lmp, int narg, char **arg) : Dump(lmp, narg, arg)
{
if (narg<6) error->all(FLERR,"Illegal dump h5md command");
if (binary || compressed || multifile || multiproc)
error->all(FLERR,"Invalid dump h5md filename");
if (domain->triclinic!=0)
error->all(FLERR,"Invalid domain for dump h5md. Only triclinic domains supported.");
size_one = 6;
sort_flag = 1;
sortcol = 0;
format_default = NULL;
flush_flag = 0;
unwrap_flag = 0;
datafile_from_dump = -1;
author_name=NULL;
every_dump = force->inumeric(FLERR,arg[3]);
every_position = every_image = -1;
every_velocity = every_force = every_species = -1;
every_charge = -1;
do_box=true;
create_group=true;
bool box_is_set, create_group_is_set;
box_is_set = create_group_is_set = false;
int iarg=5;
int n_parsed, default_every;
size_one=0;
if (every_dump==0) default_every=0; else default_every=1;
while (iarg<narg) {
if (strcmp(arg[iarg], "position")==0) {
every_position=default_every;
iarg+=1;
n_parsed = element_args(narg-iarg, &arg[iarg], &every_position);
if (n_parsed<0) error->all(FLERR, "Illegal dump h5md command");
iarg += n_parsed;
size_one+=domain->dimension;
} else if (strcmp(arg[iarg], "image")==0) {
if (every_position<0) error->all(FLERR, "Illegal dump h5md command");
iarg+=1;
size_one+=domain->dimension;
every_image = every_position;
} else if (strcmp(arg[iarg], "velocity")==0) {
every_velocity = default_every;
iarg+=1;
n_parsed = element_args(narg-iarg, &arg[iarg], &every_velocity);
if (n_parsed<0) error->all(FLERR, "Illegal dump h5md command");
iarg += n_parsed;
size_one+=domain->dimension;
} else if (strcmp(arg[iarg], "force")==0) {
every_force = default_every;
iarg+=1;
n_parsed = element_args(narg-iarg, &arg[iarg], &every_force);
if (n_parsed<0) error->all(FLERR, "Illegal dump h5md command");
iarg += n_parsed;
size_one+=domain->dimension;
} else if (strcmp(arg[iarg], "species")==0) {
every_species=default_every;
iarg+=1;
n_parsed = element_args(narg-iarg, &arg[iarg], &every_species);
if (n_parsed<0) error->all(FLERR, "Illegal dump h5md command");
iarg += n_parsed;
size_one+=1;
} else if (strcmp(arg[iarg], "charge")==0) {
if (!atom->q_flag)
error->all(FLERR, "Requesting non-allocated quantity q in dump_h5md");
every_charge = default_every;
iarg+=1;
n_parsed = element_args(narg-iarg, &arg[iarg], &every_charge);
if (n_parsed<0) error->all(FLERR, "Illegal dump h5md command");
iarg += n_parsed;
size_one+=1;
} else if (strcmp(arg[iarg], "file_from")==0) {
if (iarg+1>=narg) {
error->all(FLERR, "Invalid number of arguments in dump h5md");
}
if (box_is_set||create_group_is_set)
error->all(FLERR, "Cannot set file_from in dump h5md after box or create_group");
int idump;
for (idump = 0; idump < output->ndump; idump++)
if (strcmp(arg[iarg+1],output->dump[idump]->id) == 0) break;
if (idump == output->ndump) error->all(FLERR,"Cound not find dump_modify ID");
datafile_from_dump = idump;
do_box=false;
create_group=false;
iarg+=2;
} else if (strcmp(arg[iarg], "box")==0) {
if (iarg+1>=narg) {
error->all(FLERR, "Invalid number of arguments in dump h5md");
}
box_is_set = true;
if (strcmp(arg[iarg+1], "yes")==0)
do_box=true;
else if (strcmp(arg[iarg+1], "no")==0)
do_box=false;
else
error->all(FLERR, "Illegal dump h5md command");
iarg+=2;
} else if (strcmp(arg[iarg], "create_group")==0) {
if (iarg+1>=narg) {
error->all(FLERR, "Invalid number of arguments in dump h5md");
}
create_group_is_set = true;
if (strcmp(arg[iarg+1], "yes")==0)
create_group=true;
else if (strcmp(arg[iarg+1], "no")==0) {
create_group=false;
}
else
error->all(FLERR, "Illegal dump h5md command");
iarg+=2;
} else if (strcmp(arg[iarg], "author")==0) {
if (iarg+1>=narg) {
error->all(FLERR, "Invalid number of arguments in dump h5md");
}
if (author_name==NULL) {
author_name = new char[strlen(arg[iarg])+1];
strcpy(author_name, arg[iarg+1]);
} else {
error->all(FLERR, "Illegal dump h5md command: author argument repeated");
}
iarg+=2;
} else {
error->all(FLERR, "Invalid argument to dump h5md");
}
}
// allocate global array for atom coords
bigint n = group->count(igroup);
natoms = static_cast<int> (n);
if (every_position>=0)
memory->create(dump_position,domain->dimension*natoms,"dump:position");
if (every_image>=0)
memory->create(dump_image,domain->dimension*natoms,"dump:image");
if (every_velocity>=0)
memory->create(dump_velocity,domain->dimension*natoms,"dump:velocity");
if (every_force>=0)
memory->create(dump_force,domain->dimension*natoms,"dump:force");
if (every_species>=0)
memory->create(dump_species,natoms,"dump:species");
if (every_charge>=0)
memory->create(dump_charge,natoms,"dump:charge");
openfile();
ntotal = 0;
}
/* ---------------------------------------------------------------------- */
DumpH5MD::~DumpH5MD()
{
if (every_position>=0) {
memory->destroy(dump_position);
if (me==0) {
h5md_close_element(particles_data.position);
if (do_box)
h5md_close_element(particles_data.box_edges);
}
}
if (every_image>=0) {
memory->destroy(dump_image);
if (me==0) h5md_close_element(particles_data.image);
}
if (every_velocity>=0) {
memory->destroy(dump_velocity);
if (me==0) h5md_close_element(particles_data.velocity);
}
if (every_force>=0) {
memory->destroy(dump_force);
if (me==0) h5md_close_element(particles_data.force);
}
if (every_species>=0) {
memory->destroy(dump_species);
if (me==0) h5md_close_element(particles_data.species);
}
if (every_charge>=0) {
memory->destroy(dump_charge);
if (me==0) h5md_close_element(particles_data.charge);
}
}
/* ---------------------------------------------------------------------- */
void DumpH5MD::init_style()
{
if (sort_flag == 0 || sortcol != 0)
error->all(FLERR,"Dump h5md requires sorting by atom ID");
}
/* ---------------------------------------------------------------------- */
void DumpH5MD::openfile()
{
char *group_name;
int group_name_length;
int dims[2];
char *boundary[3];
for (int i=0; i<3; i++) {
boundary[i] = new char[9];
if (domain->periodicity[i]==1) {
strcpy(boundary[i], "periodic");
} else {
strcpy(boundary[i], "none");
}
}
if (me == 0) {
if (datafile_from_dump<0) {
if (author_name==NULL) {
datafile = h5md_create_file(filename, "N/A", NULL, "lammps", LAMMPS_VERSION);
} else {
datafile = h5md_create_file(filename, author_name, NULL, "lammps", LAMMPS_VERSION);
}
group_name_length = strlen(group->names[igroup])+1;
group_name = new char[group_name_length];
strcpy(group_name, group->names[igroup]);
if (create_group) {
particles_data = h5md_create_particles_group(datafile, group_name);
} else {
particles_data.group = h5md_open_particles_group(datafile.particles, group_name);
}
delete [] group_name;
dims[0] = natoms;
dims[1] = domain->dimension;
if (every_position>0) {
particles_data.position = h5md_create_time_data(particles_data.group, "position", 2, dims, H5T_NATIVE_DOUBLE, NULL);
h5md_create_box(&particles_data, dims[1], boundary, true, NULL, &particles_data.position);
}
if (every_image>0)
particles_data.image = h5md_create_time_data(particles_data.group, "image", 2, dims, H5T_NATIVE_INT, &particles_data.position);
if (every_velocity>0)
particles_data.velocity = h5md_create_time_data(particles_data.group, "velocity", 2, dims, H5T_NATIVE_DOUBLE, NULL);
if (every_force>0)
particles_data.force = h5md_create_time_data(particles_data.group, "force", 2, dims, H5T_NATIVE_DOUBLE, NULL);
if (every_species>0)
particles_data.species = h5md_create_time_data(particles_data.group, "species", 1, dims, H5T_NATIVE_INT, NULL);
if (every_charge>0) {
particles_data.charge = h5md_create_time_data(particles_data.group, "charge", 1, dims, H5T_NATIVE_DOUBLE, NULL);
h5md_write_string_attribute(particles_data.group, "charge", "type", "effective");
}
} else {
DumpH5MD* other_dump;
other_dump=(DumpH5MD*)output->dump[datafile_from_dump];
datafile = other_dump->datafile;
group_name_length = strlen(group->names[igroup]);
group_name = new char[group_name_length];
strcpy(group_name, group->names[igroup]);
if (create_group) {
particles_data = h5md_create_particles_group(datafile, group_name);
} else {
particles_data = other_dump->particles_data;
}
dims[0] = natoms;
dims[1] = domain->dimension;
if (every_position>0) {
particles_data.position = h5md_create_time_data(particles_data.group, "position", 2, dims, H5T_NATIVE_DOUBLE, NULL);
h5md_create_box(&particles_data, dims[1], boundary, true, NULL, &particles_data.position);
}
if (every_image>0)
particles_data.image = h5md_create_time_data(particles_data.group, "image", 2, dims, H5T_NATIVE_INT, &particles_data.position);
if (every_velocity>0)
particles_data.velocity = h5md_create_time_data(particles_data.group, "velocity", 2, dims, H5T_NATIVE_DOUBLE, NULL);
if (every_force>0)
particles_data.force = h5md_create_time_data(particles_data.group, "force", 2, dims, H5T_NATIVE_DOUBLE, NULL);
if (every_species>0)
particles_data.species = h5md_create_time_data(particles_data.group, "species", 1, dims, H5T_NATIVE_INT, NULL);
if (every_charge>0) {
particles_data.charge = h5md_create_time_data(particles_data.group, "charge", 1, dims, H5T_NATIVE_DOUBLE, NULL);
h5md_write_string_attribute(particles_data.group, "charge", "type", "effective");
}
}
}
if (author_name!=NULL) delete [] author_name;
for (int i=0; i<3; i++) {
delete [] boundary[i];
}
}
/* ---------------------------------------------------------------------- */
void DumpH5MD::write_header(bigint nbig)
{
return;
}
/* ---------------------------------------------------------------------- */
void DumpH5MD::pack(tagint *ids)
{
int m,n;
tagint *tag = atom->tag;
double **x = atom->x;
double **v = atom->v;
double **f = atom->f;
int *species = atom->type;
double *q = atom->q;
imageint *image = atom->image;
int *mask = atom->mask;
int nlocal = atom->nlocal;
int dim=domain->dimension;
double xprd = domain->xprd;
double yprd = domain->yprd;
double zprd = domain->zprd;
m = n = 0;
for (int i = 0; i < nlocal; i++)
if (mask[i] & groupbit) {
if (every_position>=0) {
int ix = (image[i] & IMGMASK) - IMGMAX;
int iy = (image[i] >> IMGBITS & IMGMASK) - IMGMAX;
int iz = (image[i] >> IMG2BITS) - IMGMAX;
if (unwrap_flag == 1) {
buf[m++] = (x[i][0] + ix * xprd);
buf[m++] = (x[i][1] + iy * yprd);
if (dim>2) buf[m++] = (x[i][2] + iz * zprd);
} else {
buf[m++] = x[i][0];
buf[m++] = x[i][1];
if (dim>2) buf[m++] = x[i][2];
}
if (every_image>=0) {
buf[m++] = ix;
buf[m++] = iy;
if (dim>2) buf[m++] = iz;
}
}
if (every_velocity>=0) {
buf[m++] = v[i][0];
buf[m++] = v[i][1];
if (dim>2) buf[m++] = v[i][2];
}
if (every_force>=0) {
buf[m++] = f[i][0];
buf[m++] = f[i][1];
if (dim>2) buf[m++] = f[i][2];
}
if (every_species>=0)
buf[m++] = species[i];
if (every_charge>=0)
buf[m++] = q[i];
ids[n++] = tag[i];
}
}
/* ---------------------------------------------------------------------- */
void DumpH5MD::write_data(int n, double *mybuf)
{
// copy buf atom coords into global array
int m = 0;
int dim = domain->dimension;
int k = dim*ntotal;
int k_image = dim*ntotal;
int k_velocity = dim*ntotal;
int k_force = dim*ntotal;
int k_species = ntotal;
int k_charge = ntotal;
for (int i = 0; i < n; i++) {
if (every_position>=0) {
for (int j=0; j<dim; j++) {
dump_position[k++] = mybuf[m++];
}
if (every_image>=0)
for (int j=0; j<dim; j++) {
dump_image[k_image++] = mybuf[m++];
}
}
if (every_velocity>=0)
for (int j=0; j<dim; j++) {
dump_velocity[k_velocity++] = mybuf[m++];
}
if (every_force>=0)
for (int j=0; j<dim; j++) {
dump_force[k_force++] = mybuf[m++];
}
if (every_species>=0)
dump_species[k_species++] = mybuf[m++];
if (every_charge>=0)
dump_charge[k_charge++] = mybuf[m++];
ntotal++;
}
// if last chunk of atoms in this snapshot, write global arrays to file
if (ntotal == natoms) {
if (every_dump>0) {
write_frame();
ntotal = 0;
} else {
write_fixed_frame();
}
}
}
/* ---------------------------------------------------------------------- */
int DumpH5MD::modify_param(int narg, char **arg)
{
if (strcmp(arg[0],"unwrap") == 0) {
if (narg < 2) error->all(FLERR,"Illegal dump_modify command");
if (strcmp(arg[1],"yes") == 0) unwrap_flag = 1;
else if (strcmp(arg[1],"no") == 0) unwrap_flag = 0;
else error->all(FLERR,"Illegal dump_modify command");
return 2;
}
return 0;
}
/* ---------------------------------------------------------------------- */
void DumpH5MD::write_frame()
{
int local_step;
double local_time;
double edges[3];
local_step = update->ntimestep;
local_time = local_step * update->dt;
edges[0] = boxxhi - boxxlo;
edges[1] = boxyhi - boxylo;
edges[2] = boxzhi - boxzlo;
if (every_position>0) {
if (local_step % (every_position*every_dump) == 0) {
h5md_append(particles_data.position, dump_position, local_step, local_time);
h5md_append(particles_data.box_edges, edges, local_step, local_time);
if (every_image>0)
h5md_append(particles_data.image, dump_image, local_step, local_time);
}
} else {
if (do_box) h5md_append(particles_data.box_edges, edges, local_step, local_time);
}
if (every_velocity>0 && local_step % (every_velocity*every_dump) == 0) {
h5md_append(particles_data.velocity, dump_velocity, local_step, local_time);
}
if (every_force>0 && local_step % (every_force*every_dump) == 0) {
h5md_append(particles_data.force, dump_force, local_step, local_time);
}
if (every_species>0 && local_step % (every_species*every_dump) == 0) {
h5md_append(particles_data.species, dump_species, local_step, local_time);
}
if (every_charge>0 && local_step % (every_charge*every_dump) == 0) {
h5md_append(particles_data.charge, dump_charge, local_step, local_time);
}
}
void DumpH5MD::write_fixed_frame()
{
double edges[3];
int dims[2];
char *boundary[3];
for (int i=0; i<3; i++) {
boundary[i] = new char[9];
if (domain->periodicity[i]==1) {
strcpy(boundary[i], "periodic");
} else {
strcpy(boundary[i], "none");
}
}
dims[0] = natoms;
dims[1] = domain->dimension;
edges[0] = boxxhi - boxxlo;
edges[1] = boxyhi - boxylo;
edges[2] = boxzhi - boxzlo;
if (every_position==0) {
particles_data.position = h5md_create_fixed_data_simple(particles_data.group, "position", 2, dims, H5T_NATIVE_DOUBLE, dump_position);
h5md_create_box(&particles_data, dims[1], boundary, false, edges, NULL);
if (every_image==0)
particles_data.image = h5md_create_fixed_data_simple(particles_data.group, "image", 2, dims, H5T_NATIVE_INT, dump_image);
}
if (every_velocity==0)
particles_data.velocity = h5md_create_fixed_data_simple(particles_data.group, "velocity", 2, dims, H5T_NATIVE_DOUBLE, dump_velocity);
if (every_force==0)
particles_data.force = h5md_create_fixed_data_simple(particles_data.group, "force", 2, dims, H5T_NATIVE_DOUBLE, dump_force);
if (every_species==0)
particles_data.species = h5md_create_fixed_data_simple(particles_data.group, "species", 1, dims, H5T_NATIVE_INT, dump_species);
if (every_charge==0) {
particles_data.charge = h5md_create_fixed_data_simple(particles_data.group, "charge", 1, dims, H5T_NATIVE_INT, dump_charge);
h5md_write_string_attribute(particles_data.group, "charge", "type", "effective");
}
for (int i=0; i<3; i++) {
delete [] boundary[i];
}
}
diff --git a/src/USER-MISC/README b/src/USER-MISC/README
index 3e10c6a76..513973b4f 100644
--- a/src/USER-MISC/README
+++ b/src/USER-MISC/README
@@ -1,67 +1,70 @@
The files in this package are a potpourri of (mostly) unrelated
features contributed to LAMMPS by users. Each feature is a single
pair of files (*.cpp and *.h).
More information about each feature can be found by reading its doc
page in the LAMMPS doc directory. The doc page which lists all LAMMPS
input script commands is as follows:
doc/Section_commands.html, subsection 3.5
User-contributed features are listed at the bottom of the fix,
compute, pair, etc sections.
The list of features and author of each is given below.
You should contact the author directly if you have specific questions
about the feature or its coding.
------------------------------------------------------------
angle_style cosine/shift, Carsten Svaneborg, science at zqex.dk, 8 Aug 11
angle_style cosine/shift/exp, Carsten Svaneborg, science at zqex.dk, 8 Aug 11
angle_style fourier, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12
angle_style fourier/simple, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12
angle_style dipole, Mario Orsi, orsimario at gmail.com, 10 Jan 12
angle_style quartic, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12
bond_style harmonic/shift, Carsten Svaneborg, science at zqex.dk, 8 Aug 11
bond_style harmonic/shift/cut, Carsten Svaneborg, science at zqex.dk, 8 Aug 11
compute ackland/atom, Gerolf Ziegenhain, gerolf at ziegenhain.com, 4 Oct 2007
compute basal/atom, Christopher Barrett, cdb333 at cavs.msstate.edu, 3 Mar 2013
compute temp/rotate, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11
+compute PRESSURE/GREM, David Stelter, dstelter@bu.edu, 22 Nov 16
dihedral_style cosine/shift/exp, Carsten Svaneborg, science at zqex.dk, 8 Aug 11
dihedral_style fourier, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12
dihedral_style nharmonic, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12
dihedral_style quadratic, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12
dihedral_style spherical, Andrew Jewett, jewett.aij@gmail.com, 15 Jul 16
dihedral_style table, Andrew Jewett, jewett.aij@gmail.com, 10 Jan 12
fix addtorque, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11
fix ave/correlate/long, Jorge Ramirez (UPM Madrid), jorge.ramirez at upm.es, 21 Oct 2015
fix flow/gauss, Joel Eaves (CU Boulder), Joel.Eaves@Colorado.edu, 23 Aug 2016
fix gle, Michele Ceriotti (EPFL Lausanne), michele.ceriotti at gmail.com, 24 Nov 2014
+fix grem, David Stelter, dstelter@bu.edu, 22 Nov 16
fix imd, Axel Kohlmeyer, akohlmey at gmail.com, 9 Nov 2009
fix ipi, Michele Ceriotti (EPFL Lausanne), michele.ceriotti at gmail.com, 24 Nov 2014
fix pimd, Yuxing Peng (U Chicago), yuxing at uchicago.edu, 24 Nov 2014
fix smd, Axel Kohlmeyer, akohlmey at gmail.com, 19 May 2008
fix ti/spring, Rodrigo Freitas (Unicamp/Brazil), rodrigohb at gmail.com, 7 Nov 2013
fix ttm/mod, Sergey Starikov and Vasily Pisarev (JIHT), pisarevvv at gmail.com, 2 Feb 2015
improper_style cossq, Georgios Vogiatzis, gvog at chemeng.ntua.gr, 25 May 12
improper_style fourier, Loukas Peristeras, loukas.peristeras at scienomics.com, 27 Oct 12
improper_style ring, Georgios Vogiatzis, gvog at chemeng.ntua.gr, 25 May 12
improper_style distance, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15
pair_style agni, Axel Kohlmeyer, akohlmey at gmail.com, 9 Nov 16
pair_style buck/mdf, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15
pair_style coul/diel, Axel Kohlmeyer, akohlmey at gmail.com, 1 Dec 11
pair_style dipole/sf, Mario Orsi, orsimario at gmail.com, 8 Aug 11
pair_style edip, Luca Ferraro, luca.ferraro at caspur.it, 15 Sep 11
pair_style eam/cd, Alexander Stukowski, stukowski at mm.tu-darmstadt.de, 7 Nov 09
pair_style gauss/cut, Axel Kohlmeyer, akohlmey at gmail.com, 1 Dec 11
pair_style lennard/mdf, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15
pair_style list, Axel Kohlmeyer (Temple U), akohlmey at gmail.com, 1 Jun 13
pair_style lj/mdf, Paolo Raiteri, p.raiteri at curtin.edu.au, 2 Dec 15
pair_style lj/sf, Laurent Joly (U Lyon), ljoly.ulyon at gmail.com, 8 Aug 11
pair_style meam/spline, Alexander Stukowski (LLNL), alex at stukowski.com, 1 Feb 12
pair_style meam/sw/spline, Robert Rudd (LLNL), robert.rudd at llnl.gov, 1 Oct 12
pair_style morse/smooth/linear, Stefan Paquay (TU Eindhoven), stefanpaquay at gmail.com, 29 Feb 16
pair_style srp, Tim Sirk, tim.sirk at us.army.mil, 21 Nov 14
pair_style tersoff/table, Luca Ferraro, luca.ferraro@caspur.it, 1 Dec 11
+temper/grem, David Stelter, dstelter@bu.edu, 22 Nov 16
diff --git a/src/USER-MISC/compute_pressure_grem.cpp b/src/USER-MISC/compute_pressure_grem.cpp
new file mode 100644
index 000000000..984ac9894
--- /dev/null
+++ b/src/USER-MISC/compute_pressure_grem.cpp
@@ -0,0 +1,156 @@
+/* ----------------------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ http://lammps.sandia.gov, Sandia National Laboratories
+ Steve Plimpton, sjplimp@sandia.gov
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#include <mpi.h>
+#include <string.h>
+#include <stdlib.h>
+#include "compute_pressure_grem.h"
+#include "atom.h"
+#include "update.h"
+#include "domain.h"
+#include "modify.h"
+#include "fix.h"
+#include "force.h"
+#include "pair.h"
+#include "kspace.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+
+/* ----------------------------------------------------------------------
+ Last argument is the id of the gREM fix
+------------------------------------------------------------------------- */
+
+ComputePressureGrem::ComputePressureGrem(LAMMPS *lmp, int narg, char **arg) :
+ ComputePressure(lmp, narg-1, arg)
+{
+ int len = strlen(arg[narg-1])+1;
+ fix_grem = new char[len];
+ strcpy(fix_grem,arg[narg-1]);
+}
+
+/* ---------------------------------------------------------------------- */
+
+ComputePressureGrem::~ComputePressureGrem()
+{
+ delete [] fix_grem;
+}
+/* ---------------------------------------------------------------------- */
+
+void ComputePressureGrem::init()
+{
+ ComputePressure::init();
+
+ // Initialize hook to gREM fix
+ int ifix = modify->find_fix(fix_grem);
+ if (ifix < 0)
+ error->all(FLERR,"Fix grem ID for compute PRESSURE/GREM does not exist");
+
+ int dim;
+ scale_grem = (double *)modify->fix[ifix]->extract("scale_grem",dim);
+
+ if (scale_grem == NULL || dim != 0)
+ error->all(FLERR,"Cannot extract gREM scale factor from fix grem");
+}
+
+/* ----------------------------------------------------------------------
+ compute total pressure, averaged over Pxx, Pyy, Pzz
+------------------------------------------------------------------------- */
+
+double ComputePressureGrem::compute_scalar()
+{
+ invoked_scalar = update->ntimestep;
+ if (update->vflag_global != invoked_scalar)
+ error->all(FLERR,"Virial was not tallied on needed timestep");
+
+ // invoke temperature if it hasn't been already
+
+ double t;
+ if (keflag) {
+ if (temperature->invoked_scalar != update->ntimestep)
+ t = temperature->compute_scalar() / (*scale_grem);
+ else t = temperature->scalar / (*scale_grem);
+ }
+
+ if (dimension == 3) {
+ inv_volume = 1.0 / (domain->xprd * domain->yprd * domain->zprd);
+ virial_compute(3,3);
+ if (keflag)
+ scalar = (temperature->dof * boltz * t +
+ virial[0] + virial[1] + virial[2]) / 3.0 * inv_volume * nktv2p;
+ else
+ scalar = (virial[0] + virial[1] + virial[2]) / 3.0 * inv_volume * nktv2p;
+ } else {
+ inv_volume = 1.0 / (domain->xprd * domain->yprd);
+ virial_compute(2,2);
+ if (keflag)
+ scalar = (temperature->dof * boltz * t +
+ virial[0] + virial[1]) / 2.0 * inv_volume * nktv2p;
+ else
+ scalar = (virial[0] + virial[1]) / 2.0 * inv_volume * nktv2p;
+ }
+
+ return scalar;
+}
+
+/* ----------------------------------------------------------------------
+ compute pressure tensor
+ assume KE tensor has already been computed
+------------------------------------------------------------------------- */
+
+void ComputePressureGrem::compute_vector()
+{
+ invoked_vector = update->ntimestep;
+ if (update->vflag_global != invoked_vector)
+ error->all(FLERR,"Virial was not tallied on needed timestep");
+
+ if (force->kspace && kspace_virial && force->kspace->scalar_pressure_flag)
+ error->all(FLERR,"Must use 'kspace_modify pressure/scalar no' for "
+ "tensor components with kspace_style msm");
+
+ // invoke temperature if it hasn't been already
+
+ double ke_tensor[6];
+ if (keflag) {
+ if (temperature->invoked_vector != update->ntimestep)
+ temperature->compute_vector();
+ for (int i = 0; i < 6; ++i)
+ ke_tensor[i] = temperature->vector[i] / (*scale_grem);
+ }
+
+ if (dimension == 3) {
+ inv_volume = 1.0 / (domain->xprd * domain->yprd * domain->zprd);
+ virial_compute(6,3);
+ if (keflag) {
+ for (int i = 0; i < 6; i++)
+ vector[i] = (ke_tensor[i] + virial[i]) * inv_volume * nktv2p;
+ } else
+ for (int i = 0; i < 6; i++)
+ vector[i] = virial[i] * inv_volume * nktv2p;
+ } else {
+ inv_volume = 1.0 / (domain->xprd * domain->yprd);
+ virial_compute(4,2);
+ if (keflag) {
+ vector[0] = (ke_tensor[0] + virial[0]) * inv_volume * nktv2p;
+ vector[1] = (ke_tensor[1] + virial[1]) * inv_volume * nktv2p;
+ vector[3] = (ke_tensor[3] + virial[3]) * inv_volume * nktv2p;
+ vector[2] = vector[4] = vector[5] = 0.0;
+ } else {
+ vector[0] = virial[0] * inv_volume * nktv2p;
+ vector[1] = virial[1] * inv_volume * nktv2p;
+ vector[3] = virial[3] * inv_volume * nktv2p;
+ vector[2] = vector[4] = vector[5] = 0.0;
+ }
+ }
+}
+
diff --git a/src/compute_pressure.h b/src/USER-MISC/compute_pressure_grem.h
similarity index 73%
copy from src/compute_pressure.h
copy to src/USER-MISC/compute_pressure_grem.h
index 4ff116837..e6dc5e683 100644
--- a/src/compute_pressure.h
+++ b/src/USER-MISC/compute_pressure_grem.h
@@ -1,92 +1,91 @@
/* -*- 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(pressure,ComputePressure)
+ComputeStyle(PRESSURE/GREM,ComputePressureGrem)
#else
-#ifndef LMP_COMPUTE_PRESSURE_H
-#define LMP_COMPUTE_PRESSURE_H
+#ifndef LMP_COMPUTE_PRESSURE_GREM_H
+#define LMP_COMPUTE_PRESSURE_GREM_H
-#include "compute.h"
+#include "compute_pressure.h"
namespace LAMMPS_NS {
-class ComputePressure : public Compute {
+class ComputePressureGrem : public ComputePressure {
public:
- ComputePressure(class LAMMPS *, int, char **);
- virtual ~ComputePressure();
- void init();
- double compute_scalar();
- void compute_vector();
- void reset_extra_compute_fix(const char *);
+ ComputePressureGrem(class LAMMPS *, int, char **);
+ virtual ~ComputePressureGrem();
+ virtual void init();
+ virtual double compute_scalar();
+ virtual void compute_vector();
protected:
- double boltz,nktv2p,inv_volume;
- int nvirial,dimension;
- double **vptr;
- double *kspace_virial;
- Compute *temperature;
- char *id_temp;
- double virial[6];
- int keflag,pairflag,bondflag,angleflag,dihedralflag,improperflag;
- int fixflag,kspaceflag;
-
- void virial_compute(int, int);
+ // Access to gREM fix scale factor
+ char *fix_grem;
+ double *scale_grem;
};
}
#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: Compute pressure must use group all
Virial contributions computed by potentials (pair, bond, etc) are
computed on all atoms.
E: Could not find compute pressure temperature ID
The compute ID for calculating temperature does not exist.
E: Compute pressure temperature ID does not compute temperature
The compute ID assigned to a pressure computation must compute
temperature.
E: Compute pressure requires temperature ID to include kinetic energy
The keflag cannot be used unless a temperature compute is provided.
E: Virial was not tallied on needed timestep
You are using a thermo keyword that requires potentials to
have tallied the virial, but they didn't on this timestep. See the
variable doc page for ideas on how to make this work.
E: Must use 'kspace_modify pressure/scalar no' for tensor components with kspace_style msm
Otherwise MSM will compute only a scalar pressure. See the kspace_modify
command for details on this setting.
+E: Fix grem ID for compute PRESSURE/GREM does not exist
+
+Compute PRESSURE/GREM was passed an invalid fix id
+
+E: Cannot extract gREM scale factor from fix grem
+
+The fix id passed to compute PRESSURE/GREM refers to an incompatible fix
+
*/
diff --git a/src/USER-MISC/dihedral_nharmonic.cpp b/src/USER-MISC/dihedral_nharmonic.cpp
index ba8af7e65..87f7b0775 100644
--- a/src/USER-MISC/dihedral_nharmonic.cpp
+++ b/src/USER-MISC/dihedral_nharmonic.cpp
@@ -1,336 +1,353 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain 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: Loukas D. Peristeras (Scienomics SARL)
[ based on dihedral_multi_harmonic.cpp Mathias Puetz (SNL) and friends ]
------------------------------------------------------------------------- */
#include <math.h>
#include <stdlib.h>
#include "dihedral_nharmonic.h"
#include "atom.h"
#include "neighbor.h"
#include "domain.h"
#include "comm.h"
#include "force.h"
#include "update.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
#define TOLERANCE 0.05
#define SMALL 0.001
/* ---------------------------------------------------------------------- */
-DihedralNHarmonic::DihedralNHarmonic(LAMMPS *lmp) : Dihedral(lmp) {}
+DihedralNHarmonic::DihedralNHarmonic(LAMMPS *lmp) : Dihedral(lmp) {
+ writedata = 1;
+}
/* ---------------------------------------------------------------------- */
DihedralNHarmonic::~DihedralNHarmonic()
{
if (allocated) {
memory->destroy(setflag);
for (int i = 1; i <= atom->ndihedraltypes; i++)
delete [] a[i];
delete [] a;
delete [] nterms;
}
}
/* ---------------------------------------------------------------------- */
void DihedralNHarmonic::compute(int eflag, int vflag)
{
int i1,i2,i3,i4,n,type;
double vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z,vb2xm,vb2ym,vb2zm;
double edihedral,f1[3],f2[3],f3[3],f4[3];
double sb1,sb2,sb3,rb1,rb3,c0,b1mag2,b1mag,b2mag2;
double b2mag,b3mag2,b3mag,ctmp,c_,r12c1,c1mag,r12c2;
double c2mag,sc1,sc2,s1,s12,c,p,pd,a11,a22;
double a33,a12,a13,a23,sx2,sy2,sz2;
double s2,sin2;
edihedral = 0.0;
if (eflag || vflag) ev_setup(eflag,vflag);
else evflag = 0;
double **x = atom->x;
double **f = atom->f;
int **dihedrallist = neighbor->dihedrallist;
int ndihedrallist = neighbor->ndihedrallist;
int nlocal = atom->nlocal;
int newton_bond = force->newton_bond;
for (n = 0; n < ndihedrallist; n++) {
i1 = dihedrallist[n][0];
i2 = dihedrallist[n][1];
i3 = dihedrallist[n][2];
i4 = dihedrallist[n][3];
type = dihedrallist[n][4];
// 1st bond
vb1x = x[i1][0] - x[i2][0];
vb1y = x[i1][1] - x[i2][1];
vb1z = x[i1][2] - x[i2][2];
// 2nd bond
vb2x = x[i3][0] - x[i2][0];
vb2y = x[i3][1] - x[i2][1];
vb2z = x[i3][2] - x[i2][2];
vb2xm = -vb2x;
vb2ym = -vb2y;
vb2zm = -vb2z;
// 3rd bond
vb3x = x[i4][0] - x[i3][0];
vb3y = x[i4][1] - x[i3][1];
vb3z = x[i4][2] - x[i3][2];
// c0 calculation
sb1 = 1.0 / (vb1x*vb1x + vb1y*vb1y + vb1z*vb1z);
sb2 = 1.0 / (vb2x*vb2x + vb2y*vb2y + vb2z*vb2z);
sb3 = 1.0 / (vb3x*vb3x + vb3y*vb3y + vb3z*vb3z);
rb1 = sqrt(sb1);
rb3 = sqrt(sb3);
c0 = (vb1x*vb3x + vb1y*vb3y + vb1z*vb3z) * rb1*rb3;
// 1st and 2nd angle
b1mag2 = vb1x*vb1x + vb1y*vb1y + vb1z*vb1z;
b1mag = sqrt(b1mag2);
b2mag2 = vb2x*vb2x + vb2y*vb2y + vb2z*vb2z;
b2mag = sqrt(b2mag2);
b3mag2 = vb3x*vb3x + vb3y*vb3y + vb3z*vb3z;
b3mag = sqrt(b3mag2);
ctmp = vb1x*vb2x + vb1y*vb2y + vb1z*vb2z;
r12c1 = 1.0 / (b1mag*b2mag);
c1mag = ctmp * r12c1;
ctmp = vb2xm*vb3x + vb2ym*vb3y + vb2zm*vb3z;
r12c2 = 1.0 / (b2mag*b3mag);
c2mag = ctmp * r12c2;
// cos and sin of 2 angles and final c
sin2 = MAX(1.0 - c1mag*c1mag,0.0);
sc1 = sqrt(sin2);
if (sc1 < SMALL) sc1 = SMALL;
sc1 = 1.0/sc1;
sin2 = MAX(1.0 - c2mag*c2mag,0.0);
sc2 = sqrt(sin2);
if (sc2 < SMALL) sc2 = SMALL;
sc2 = 1.0/sc2;
s1 = sc1 * sc1;
s2 = sc2 * sc2;
s12 = sc1 * sc2;
c = (c0 + c1mag*c2mag) * s12;
// error check
if (c > 1.0 + TOLERANCE || c < (-1.0 - TOLERANCE)) {
int me;
MPI_Comm_rank(world,&me);
if (screen) {
char str[128];
sprintf(str,"Dihedral problem: %d " BIGINT_FORMAT " "
TAGINT_FORMAT " " TAGINT_FORMAT " "
TAGINT_FORMAT " " TAGINT_FORMAT,
me,update->ntimestep,
atom->tag[i1],atom->tag[i2],atom->tag[i3],atom->tag[i4]);
error->warning(FLERR,str,0);
fprintf(screen," 1st atom: %d %g %g %g\n",
me,x[i1][0],x[i1][1],x[i1][2]);
fprintf(screen," 2nd atom: %d %g %g %g\n",
me,x[i2][0],x[i2][1],x[i2][2]);
fprintf(screen," 3rd atom: %d %g %g %g\n",
me,x[i3][0],x[i3][1],x[i3][2]);
fprintf(screen," 4th atom: %d %g %g %g\n",
me,x[i4][0],x[i4][1],x[i4][2]);
}
}
if (c > 1.0) c = 1.0;
if (c < -1.0) c = -1.0;
// force & energy
// p = sum (i=1,n) a_i * c**(i-1)
// pd = dp/dc
c_ = c;
p = this->a[type][0];
pd = this->a[type][1];
for (int i = 1; i < nterms[type]-1; i++) {
p += c_ * this->a[type][i];
pd += c_ * static_cast<double>(i+1) * this->a[type][i+1];
c_ *= c;
}
p += c_ * this->a[type][nterms[type]-1];
if (eflag) edihedral = p;
c = c * pd;
s12 = s12 * pd;
a11 = c*sb1*s1;
a22 = -sb2 * (2.0*c0*s12 - c*(s1+s2));
a33 = c*sb3*s2;
a12 = -r12c1*(c1mag*c*s1 + c2mag*s12);
a13 = -rb1*rb3*s12;
a23 = r12c2*(c2mag*c*s2 + c1mag*s12);
sx2 = a12*vb1x + a22*vb2x + a23*vb3x;
sy2 = a12*vb1y + a22*vb2y + a23*vb3y;
sz2 = a12*vb1z + a22*vb2z + a23*vb3z;
f1[0] = a11*vb1x + a12*vb2x + a13*vb3x;
f1[1] = a11*vb1y + a12*vb2y + a13*vb3y;
f1[2] = a11*vb1z + a12*vb2z + a13*vb3z;
f2[0] = -sx2 - f1[0];
f2[1] = -sy2 - f1[1];
f2[2] = -sz2 - f1[2];
f4[0] = a13*vb1x + a23*vb2x + a33*vb3x;
f4[1] = a13*vb1y + a23*vb2y + a33*vb3y;
f4[2] = a13*vb1z + a23*vb2z + a33*vb3z;
f3[0] = sx2 - f4[0];
f3[1] = sy2 - f4[1];
f3[2] = sz2 - f4[2];
// apply force to each of 4 atoms
if (newton_bond || i1 < nlocal) {
f[i1][0] += f1[0];
f[i1][1] += f1[1];
f[i1][2] += f1[2];
}
if (newton_bond || i2 < nlocal) {
f[i2][0] += f2[0];
f[i2][1] += f2[1];
f[i2][2] += f2[2];
}
if (newton_bond || i3 < nlocal) {
f[i3][0] += f3[0];
f[i3][1] += f3[1];
f[i3][2] += f3[2];
}
if (newton_bond || i4 < nlocal) {
f[i4][0] += f4[0];
f[i4][1] += f4[1];
f[i4][2] += f4[2];
}
if (evflag)
ev_tally(i1,i2,i3,i4,nlocal,newton_bond,edihedral,f1,f3,f4,
vb1x,vb1y,vb1z,vb2x,vb2y,vb2z,vb3x,vb3y,vb3z);
}
}
/* ---------------------------------------------------------------------- */
void DihedralNHarmonic::allocate()
{
allocated = 1;
int n = atom->ndihedraltypes;
memory->create(nterms,n+1,"dihedral:nt");
a = new double * [n+1];
memory->create(setflag,n+1,"dihedral:setflag");
for (int i = 1; i <= n; i++) setflag[i] = 0;
}
/* ----------------------------------------------------------------------
set coeffs for one type
------------------------------------------------------------------------- */
void DihedralNHarmonic::coeff(int narg, char **arg)
{
if (narg < 4 ) error->all(FLERR,"Incorrect args for dihedral coefficients");
int n = force->inumeric(FLERR,arg[1]);
if (narg != n + 2 ) error->all(FLERR,"Incorrect args for dihedral coefficients");
if (!allocated) allocate();
int ilo,ihi;
force->bounds(FLERR,arg[0],atom->ndihedraltypes,ilo,ihi);
int count = 0;
for (int i = ilo; i <= ihi; i++) {
a[i] = new double [n];
nterms[i] = n;
for (int j = 0; j < n; j++ ) {
a[i][j] = force->numeric(FLERR,arg[2+j]);
setflag[i] = 1;
}
count++;
}
if (count == 0) error->all(FLERR,"Incorrect args for dihedral coefficients");
}
/* ----------------------------------------------------------------------
proc 0 writes out coeffs to restart file
------------------------------------------------------------------------- */
void DihedralNHarmonic::write_restart(FILE *fp)
{
fwrite(&nterms[1],sizeof(int),atom->ndihedraltypes,fp);
for(int i = 1; i <= atom->ndihedraltypes; i++)
fwrite(a[i],sizeof(double),nterms[i],fp);
}
/* ----------------------------------------------------------------------
proc 0 reads coeffs from restart file, bcasts them
------------------------------------------------------------------------- */
void DihedralNHarmonic::read_restart(FILE *fp)
{
allocate();
if (comm->me == 0)
fread(&nterms[1],sizeof(int),atom->ndihedraltypes,fp);
MPI_Bcast(&nterms[1],atom->ndihedraltypes,MPI_INT,0,world);
// allocate
for(int i = 1; i <= atom->ndihedraltypes; i++)
a[i] = new double [nterms[i]];
if (comm->me == 0) {
for(int i = 1; i <= atom->ndihedraltypes; i++)
fread(a[i],sizeof(double),nterms[i],fp);
}
for (int i = 1; i <= atom->ndihedraltypes; i++ )
MPI_Bcast(a[i],nterms[i],MPI_DOUBLE,0,world);
for (int i = 1; i <= atom->ndihedraltypes; i++) setflag[i] = 1;
}
+/* ----------------------------------------------------------------------
+ proc 0 writes to data file
+------------------------------------------------------------------------- */
+
+void DihedralNHarmonic::write_data(FILE *fp)
+{
+ for (int i = 1; i <= atom->ndihedraltypes; i++) {
+ fprintf(fp, "%d %d", i, nterms[i]);
+ for (int j = 0; j < nterms[i]; j++ )
+ fprintf(fp, " %g", a[i][j]);
+
+ fprintf(fp, "\n");
+ }
+
+}
diff --git a/src/USER-MISC/dihedral_nharmonic.h b/src/USER-MISC/dihedral_nharmonic.h
index c347f37cb..2e8050feb 100644
--- a/src/USER-MISC/dihedral_nharmonic.h
+++ b/src/USER-MISC/dihedral_nharmonic.h
@@ -1,47 +1,48 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#ifdef DIHEDRAL_CLASS
DihedralStyle(nharmonic,DihedralNHarmonic)
#else
#ifndef DIHEDRAL_NHARMONIC_H
#define DIHEDRAL_NHARMONIC_H
#include <stdio.h>
#include "dihedral.h"
namespace LAMMPS_NS {
class DihedralNHarmonic : public Dihedral {
public:
DihedralNHarmonic(class LAMMPS *);
~DihedralNHarmonic();
void compute(int, int);
void coeff(int, char **);
void write_restart(FILE *);
void read_restart(FILE *);
+ void write_data(FILE *);
protected:
int *nterms;
double **a;
void allocate();
};
}
#endif
#endif
diff --git a/src/USER-MISC/fix_grem.cpp b/src/USER-MISC/fix_grem.cpp
new file mode 100644
index 000000000..fd646fa7a
--- /dev/null
+++ b/src/USER-MISC/fix_grem.cpp
@@ -0,0 +1,296 @@
+/* ----------------------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ http://lammps.sandia.gov, Sandia National Laboratories
+ Steve Plimpton, sjplimp@sandia.gov
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+
+ Force scaling fix for gREM.
+ Cite: http://dx.doi.org/10.1063/1.3432176
+ Cite: http://dx.doi.org/10.1021/acs.jpcb.5b07614
+
+------------------------------------------------------------------------- */
+
+/* ----------------------------------------------------------------------
+ Contributing authors: Edyta Malolepsza (Broad Institute)
+ David Stelter (Boston University)
+ Tom Keyes (Boston University)
+------------------------------------------------------------------------- */
+
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+#include "comm.h"
+#include "fix_grem.h"
+#include "atom.h"
+#include "force.h"
+#include "update.h"
+#include "modify.h"
+#include "domain.h"
+#include "input.h"
+#include "compute.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+using namespace FixConst;
+
+enum{NONE,CONSTANT,EQUAL,ATOM};
+
+/* ---------------------------------------------------------------------- */
+
+FixGrem::FixGrem(LAMMPS *lmp, int narg, char **arg) :
+ Fix(lmp, narg, arg)
+{
+ if (narg < 7) error->all(FLERR,"Illegal fix grem command");
+
+ scalar_flag = 1;
+ vector_flag = 1;
+ size_vector = 3;
+ global_freq = 1;
+ extscalar = 1;
+ extvector = 1;
+
+ scale_grem = 1.0;
+
+ // tbath - temp of bath, the same as defined in thermostat
+
+ lambda = force->numeric(FLERR,arg[3]);
+ eta = force->numeric(FLERR,arg[4]);
+ h0 = force->numeric(FLERR,arg[5]);
+
+ int n = strlen(arg[6])+1;
+ id_nh = new char[n];
+ strcpy(id_nh,arg[6]);
+
+ // create a new compute temp style
+ // id = fix-ID + temp
+ // compute group = all since pressure is always global (group all)
+ // and thus its KE/temperature contribution should use group all
+
+ n = strlen(id) + 6;
+ id_temp = new char[n];
+ strcpy(id_temp,id);
+ strcat(id_temp,"_temp");
+
+ char **newarg = new char*[3];
+ newarg[0] = id_temp;
+ newarg[1] = (char *) "all";
+ newarg[2] = (char *) "temp";
+ modify->add_compute(3,newarg);
+ delete [] newarg;
+
+ // create a new compute pressure style
+ // id = fix-ID + press, compute group = all
+ // pass id_temp as 4th arg to pressure constructor
+
+ n = strlen(id) + 7;
+ id_press = new char[n];
+ strcpy(id_press,id);
+ strcat(id_press,"_press");
+
+ newarg = new char*[5];
+ newarg[0] = id_press;
+ newarg[1] = (char *) "all";
+ newarg[2] = (char *) "PRESSURE/GREM";
+ newarg[3] = id_temp;
+ newarg[4] = id;
+ modify->add_compute(5,newarg);
+ delete [] newarg;
+
+ // create a new compute ke style
+ // id = fix-ID + ke
+
+ n = strlen(id) + 8;
+ id_ke = new char[n];
+ strcpy(id_ke,id);
+ strcat(id_ke,"_ke");
+
+ newarg = new char*[3];
+ newarg[0] = id_ke;
+ newarg[1] = (char *) "all";
+ newarg[2] = (char *) "ke";
+ modify->add_compute(3,newarg);
+ delete [] newarg;
+
+ // create a new compute pe style
+ // id = fix-ID + pe
+
+ n = strlen(id) + 9;
+ id_pe = new char[n];
+ strcpy(id_pe,id);
+ strcat(id_pe,"_pe");
+
+ newarg = new char*[3];
+ newarg[0] = id_pe;
+ newarg[1] = (char *) "all";
+ newarg[2] = (char *) "pe";
+ modify->add_compute(3,newarg);
+ delete [] newarg;
+
+ int ifix = modify->find_fix(id_nh);
+ if (ifix < 0)
+ error->all(FLERR,"Fix id for nvt or npt fix does not exist");
+ Fix *nh = modify->fix[ifix];
+
+ pressflag = 0;
+ int *p_flag = (int *)nh->extract("p_flag",ifix);
+ if ((p_flag == NULL) || (ifix != 1) || (p_flag[0] == 0)
+ || (p_flag[1] == 0) || (p_flag[2] == 0)) {
+ pressflag = 0;
+ } else if ((p_flag[0] == 1) && (p_flag[1] == 1)
+ && (p_flag[2] == 1) && (ifix == 1)) {
+ pressflag = 1;
+ char *modargs[2];
+ modargs[0] = (char *) "press";
+ modargs[1] = id_press;
+ nh->modify_param(2,modargs);
+ }
+}
+
+/* ---------------------------------------------------------------------- */
+
+FixGrem::~FixGrem()
+{
+ // delete temperature, pressure and energies if fix created them
+
+ modify->delete_compute(id_temp);
+ modify->delete_compute(id_press);
+ modify->delete_compute(id_ke);
+ modify->delete_compute(id_pe);
+ delete [] id_temp;
+ delete [] id_press;
+ delete [] id_ke;
+ delete [] id_pe;
+ delete [] id_nh;
+}
+
+/* ---------------------------------------------------------------------- */
+
+int FixGrem::setmask()
+{
+ int mask = 0;
+ mask |= POST_FORCE;
+ return mask;
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixGrem::init()
+{
+
+ if (domain->triclinic)
+ error->all(FLERR,"Triclinic cells are not supported");
+
+ // set temperature and pressure ptrs
+
+ int icompute = modify->find_compute(id_temp);
+ if (icompute < 0)
+ error->all(FLERR,"Temperature compute ID for fix grem does not exist");
+ temperature = modify->compute[icompute];
+
+ icompute = modify->find_compute(id_ke);
+ if (icompute < 0)
+ error->all(FLERR,"KE compute ID for fix grem does not exist");
+ ke = modify->compute[icompute];
+
+ icompute = modify->find_compute(id_pe);
+ if (icompute < 0)
+ error->all(FLERR,"PE compute ID for fix grem does not exist");
+ pe = modify->compute[icompute];
+
+ int ifix = modify->find_fix(id_nh);
+ if (ifix < 0)
+ error->all(FLERR,"Fix id for nvt or npt fix does not exist");
+ Fix *nh = modify->fix[ifix];
+
+ double *t_start = (double *)nh->extract("t_start",ifix);
+ double *t_stop = (double *)nh->extract("t_stop",ifix);
+ if ((t_start != NULL) && (t_stop != NULL) && (ifix == 0)) {
+ tbath = *t_start;
+ if (*t_start != *t_stop)
+ error->all(FLERR,"Thermostat temperature ramp not allowed");
+ } else
+ error->all(FLERR,"Problem extracting target temperature from fix nvt or npt");
+
+ pressref = 0.0;
+ if (pressflag) {
+ int *p_flag = (int *)nh->extract("p_flag",ifix);
+ double *p_start = (double *) nh->extract("p_start",ifix);
+ double *p_stop = (double *) nh->extract("p_stop",ifix);
+ if ((p_flag != NULL) && (p_start != NULL) && (p_stop != NULL)
+ && (ifix == 1)) {
+ ifix = 0;
+ pressref = p_start[0];
+ if ((p_start[0] != p_stop[0]) || (p_flag[0] != 1)) ++ ifix;
+ if ((p_start[1] != p_stop[1]) || (p_flag[0] != 1)) ++ ifix;
+ if ((p_start[2] != p_stop[2]) || (p_flag[0] != 1)) ++ ifix;
+ if ((p_start[0] != p_start[1]) || (p_start[1] != p_start[2])) ++ifix;
+ if ((p_flag[3] != 0) || (p_flag[4] != 0) || (p_flag[5] != 0)) ++ifix;
+ if (ifix > 0)
+ error->all(FLERR,"Unsupported pressure settings in fix npt");
+ } else
+ error->all(FLERR,"Problem extracting target pressure from fix npt");
+ }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixGrem::setup(int vflag)
+{
+ if (strstr(update->integrate_style,"verlet"))
+ post_force(vflag);
+
+ if (strstr(update->integrate_style,"respa"))
+ error->all(FLERR,"Run style 'respa' is not supported");
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixGrem::min_setup(int vflag)
+{
+ post_force(vflag);
+}
+
+/* ---------------------------------------------------------------------- */
+
+void FixGrem::post_force(int vflag)
+{
+ double **f = atom->f;
+ int *mask = atom->mask;
+ int nlocal = atom->nlocal;
+
+ double tmpvolume = domain->xprd * domain->yprd * domain->zprd;
+ double tmppe = pe->compute_scalar();
+ // potential energy
+ double tmpenthalpy = tmppe+pressref*tmpvolume/(force->nktv2p);
+
+ double teffective = lambda+eta*(tmpenthalpy-h0);
+ scale_grem = tbath/teffective;
+
+ for (int i = 0; i < nlocal; i++)
+ if (mask[i] & groupbit) {
+ f[i][0] *= scale_grem;
+ f[i][1] *= scale_grem;
+ f[i][2] *= scale_grem;
+ }
+ pe->addstep(update->ntimestep+1);
+}
+
+/* ----------------------------------------------------------------------
+ extract scale factor
+------------------------------------------------------------------------- */
+
+void *FixGrem::extract(const char *str, int &dim)
+{
+ dim=0;
+ if (strcmp(str,"scale_grem") == 0) {
+ return &scale_grem;
+ }
+ return NULL;
+}
diff --git a/src/USER-MISC/fix_grem.h b/src/USER-MISC/fix_grem.h
new file mode 100644
index 000000000..5e828a8b9
--- /dev/null
+++ b/src/USER-MISC/fix_grem.h
@@ -0,0 +1,83 @@
+/* -*- c++ -*- ----------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ http://lammps.sandia.gov, Sandia National Laboratories
+ Steve Plimpton, sjplimp@sandia.gov
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef FIX_CLASS
+
+FixStyle(grem,FixGrem)
+
+#else
+
+#ifndef LMP_FIX_GREM_H
+#define LMP_FIX_GREM_H
+
+#include "fix.h"
+
+namespace LAMMPS_NS {
+
+class FixGrem : public Fix {
+ public:
+ FixGrem(class LAMMPS *, int, char **);
+ ~FixGrem();
+ int setmask();
+ void init();
+ void setup(int);
+ void min_setup(int);
+ void post_force(int);
+ void *extract(const char *, int &);
+ double scale_grem,lambda,eta,h0;
+ int pressflag;
+
+ private:
+ double tbath,pressref;
+
+ protected:
+ char *id_temp,*id_press,*id_ke,*id_pe,*id_nh;
+ class Compute *temperature,*pressure,*ke,*pe;
+};
+
+}
+
+#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: Region ID for fix grem does not exist
+
+Self-explanatory.
+
+E: Variable name for fix grem does not exist
+
+Self-explanatory.
+
+E: Variable for fix grem is invalid style
+
+Self-explanatory.
+
+E: Cannot use variable energy with constant force in fix grem
+
+This is because for constant force, LAMMPS can compute the change
+in energy directly.
+
+E: Must use variable energy with fix grem
+
+Must define an energy vartiable when applyting a dynamic
+force during minimization.
+
+*/
diff --git a/src/USER-MISC/fix_ipi.cpp b/src/USER-MISC/fix_ipi.cpp
index f9b0b519a..67c9cc8ee 100644
--- a/src/USER-MISC/fix_ipi.cpp
+++ b/src/USER-MISC/fix_ipi.cpp
@@ -1,441 +1,481 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain 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: Michele Ceriotti (EPFL), Axel Kohlmeyer (Temple U)
------------------------------------------------------------------------- */
#include <mpi.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "fix_ipi.h"
#include "atom.h"
#include "force.h"
#include "update.h"
#include "respa.h"
#include "error.h"
#include "kspace.h"
#include "modify.h"
#include "compute.h"
#include "comm.h"
#include "neighbor.h"
+#include "irregular.h"
#include "domain.h"
#include "compute_pressure.h"
#include <errno.h>
using namespace LAMMPS_NS;
using namespace FixConst;
/******************************************************************************************
* A fix to interface LAMMPS with i-PI - A Python interface for path integral molecular dynamics
* Michele Ceriotti, EPFL (2014)
* Please cite:
* Ceriotti, M., More, J., & Manolopoulos, D. E. (2014).
* i-PI: A Python interface for ab initio path integral molecular dynamics simulations.
* Computer Physics Communications, 185, 1019–1026. doi:10.1016/j.cpc.2013.10.027
* And see [http://github.com/i-pi/i-pi] to download a version of i-PI
******************************************************************************************/
// socket interface
#ifndef _WIN32
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/un.h>
#include <netdb.h>
#endif
#define MSGLEN 12
/* Utility functions to simplify the interface with POSIX sockets */
static void open_socket(int &sockfd, int inet, int port, char* host,
Error *error)
/* Opens a socket.
Args:
sockfd: The id of the socket that will be created.
inet: An integer that determines whether the socket will be an inet or unix
domain socket. Gives unix if 0, inet otherwise.
port: The port number for the socket to be created. Low numbers are often
reserved for important channels, so use of numbers of 4 or more digits is
recommended.
host: The name of the host server.
error: pointer to a LAMMPS Error object
*/
{
int ai_err;
#ifdef _WIN32
error->one(FLERR,"i-PI socket implementation requires UNIX environment");
#else
if (inet>0) { // creates an internet socket
// fetches information on the host
struct addrinfo hints, *res;
char service[256];
memset(&hints, 0, sizeof(hints));
hints.ai_socktype = SOCK_STREAM;
hints.ai_family = AF_UNSPEC;
hints.ai_flags = AI_PASSIVE;
sprintf(service,"%d",port); // convert the port number to a string
ai_err = getaddrinfo(host, service, &hints, &res);
if (ai_err!=0)
error->one(FLERR,"Error fetching host data. Wrong host name?");
// creates socket
sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (sockfd < 0)
error->one(FLERR,"Error opening socket");
// makes connection
if (connect(sockfd, res->ai_addr, res->ai_addrlen) < 0)
error->one(FLERR,"Error opening INET socket: wrong port or server unreachable");
freeaddrinfo(res);
} else { // creates a unix socket
struct sockaddr_un serv_addr;
// fills up details of the socket addres
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sun_family = AF_UNIX;
strcpy(serv_addr.sun_path, "/tmp/ipi_");
strcpy(serv_addr.sun_path+9, host);
// creates the socket
sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
// connects
if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
error->one(FLERR,"Error opening UNIX socket: server may not be running "
"or the path to the socket unavailable");
}
#endif
}
static void writebuffer(int sockfd, const char *data, int len, Error* error)
/* Writes to a socket.
Args:
sockfd: The id of the socket that will be written to.
data: The data to be written to the socket.
len: The length of the data in bytes.
*/
{
int n;
n = write(sockfd,data,len);
if (n < 0)
error->one(FLERR,"Error writing to socket: broken connection");
}
static void readbuffer(int sockfd, char *data, int len, Error* error)
/* Reads from a socket.
Args:
sockfd: The id of the socket that will be read from.
data: The storage array for data read from the socket.
len: The length of the data in bytes.
*/
{
int n, nr;
n = nr = read(sockfd,data,len);
while (nr>0 && n<len ) {
nr=read(sockfd,&data[n],len-n);
n+=nr;
}
if (n == 0)
error->one(FLERR,"Error reading from socket: broken connection");
}
/* ---------------------------------------------------------------------- */
FixIPI::FixIPI(LAMMPS *lmp, int narg, char **arg) :
- Fix(lmp, narg, arg)
+ Fix(lmp, narg, arg), irregular(NULL)
{
/* format for fix:
* fix num group_id ipi host port [unix]
*/
if (strcmp(style,"ipi") != 0 && narg < 5)
error->all(FLERR,"Illegal fix ipi command");
if (atom->tag_enable == 0)
error->all(FLERR,"Cannot use fix ipi without atom IDs");
if (atom->tag_consecutive() == 0)
error->all(FLERR,"Fix ipi requires consecutive atom IDs");
if (strcmp(arg[1],"all"))
error->warning(FLERR,"Fix ipi always uses group all");
host = strdup(arg[3]);
port = force->inumeric(FLERR,arg[4]);
- inet = ((narg > 5) && (strcmp(arg[5],"unix") ==0) ) ? 0 : 1;
+ inet = ((narg > 5) && (strcmp(arg[5],"unix") == 0) ) ? 0 : 1;
master = (comm->me==0) ? 1 : 0;
+ // check if forces should be reinitialized and set flag
+ reset_flag = ((narg > 6 && (strcmp(arg[5],"reset") == 0 )) || ((narg > 5) && (strcmp(arg[5],"reset") == 0)) ) ? 1 : 0;
+
hasdata = bsize = 0;
// creates a temperature compute for all atoms
char** newarg = new char*[3];
newarg[0] = (char *) "IPI_TEMP";
newarg[1] = (char *) "all";
newarg[2] = (char *) "temp";
modify->add_compute(3,newarg);
delete [] newarg;
// creates a pressure compute to extract the virial
newarg = new char*[5];
newarg[0] = (char *) "IPI_PRESS";
newarg[1] = (char *) "all";
newarg[2] = (char *) "pressure";
newarg[3] = (char *) "IPI_TEMP";
newarg[4] = (char *) "virial";
modify->add_compute(5,newarg);
delete [] newarg;
+
+ // create instance of Irregular class
+ irregular = new Irregular(lmp);
}
/* ---------------------------------------------------------------------- */
FixIPI::~FixIPI()
{
if (bsize) delete[] buffer;
free(host);
modify->delete_compute("IPI_TEMP");
modify->delete_compute("IPI_PRESS");
+ delete irregular;
}
/* ---------------------------------------------------------------------- */
int FixIPI::setmask()
{
int mask = 0;
mask |= INITIAL_INTEGRATE;
mask |= FINAL_INTEGRATE;
return mask;
}
/* ---------------------------------------------------------------------- */
void FixIPI::init()
{
//only opens socket on master process
if (master) open_socket(ipisock, inet, port, host, error);
else ipisock=0;
//! should check for success in socket opening -- but the current open_socket routine dies brutally if unsuccessful
// asks for evaluation of PE at first step
modify->compute[modify->find_compute("thermo_pe")]->invoked_scalar = -1;
modify->addstep_compute_all(update->ntimestep + 1);
kspace_flag = (force->kspace) ? 1 : 0;
// makes sure that neighbor lists are re-built at each step (cannot make assumptions when cycling over beads!)
neighbor->delay = 0;
neighbor->every = 1;
}
void FixIPI::initial_integrate(int vflag)
{
/* This is called at the beginning of the integration loop,
* and will be used to read positions from the socket. Then,
* everything should be updated, since there is no guarantee
* that successive snapshots will be close together (think
* of parallel tempering for instance) */
char header[MSGLEN+1];
if (hasdata)
error->all(FLERR, "i-PI got out of sync in initial_integrate and will die!");
double cellh[9], cellih[9];
int nat;
if (master) { // only read positions on master
// wait until something happens
while (true) {
// while i-PI just asks for status, signal we are ready and wait
readbuffer(ipisock, header, MSGLEN, error); header[MSGLEN]=0;
if (strcmp(header,"STATUS ") == 0 )
writebuffer(ipisock,"READY ",MSGLEN, error);
else break;
}
if (strcmp(header,"EXIT ") == 0 )
error->one(FLERR, "Got EXIT message from i-PI. Now leaving!");
// when i-PI signals it has positions to evaluate new forces,
// read positions and cell data
if (strcmp(header,"POSDATA ") == 0 ) {
readbuffer(ipisock, (char*) cellh, 9*8, error);
readbuffer(ipisock, (char*) cellih, 9*8, error);
readbuffer(ipisock, (char*) &nat, 4, error);
// allocate buffer, but only do this once.
if (bsize==0) {
bsize=3*nat;
buffer = new double[bsize];
} else if (bsize != 3*nat)
error->one(FLERR, "Number of atoms changed along the way.");
// finally read position data into buffer
readbuffer(ipisock, (char*) buffer, 8*bsize, error);
} else
error->one(FLERR, "Wrapper did not send positions, I will now die!");
}
// shares the atomic coordinates with everyone
MPI_Bcast(&nat,1,MPI_INT,0,world);
// must also allocate the buffer on the non-head nodes
if (bsize==0) {
bsize=3*nat;
buffer = new double[bsize];
}
MPI_Bcast(cellh,9,MPI_DOUBLE,0,world);
MPI_Bcast(cellih,9,MPI_DOUBLE,0,world);
MPI_Bcast(buffer,bsize,MPI_DOUBLE,0,world);
//updates atomic coordinates and cell based on the data received
double *boxhi = domain->boxhi;
double *boxlo = domain->boxlo;
double posconv;
posconv=0.52917721*force->angstrom;
boxlo[0] = -0.5*cellh[0]*posconv;
boxlo[1] = -0.5*cellh[4]*posconv;
boxlo[2] = -0.5*cellh[8]*posconv;
boxhi[0] = -boxlo[0];
boxhi[1] = -boxlo[1];
boxhi[2] = -boxlo[2];
domain->xy = cellh[1]*posconv;
domain->xz = cellh[2]*posconv;
domain->yz = cellh[5]*posconv;
- // signal that the box has (or may have) changed
+ // do error checks on simulation box and set small for triclinic boxes
+ domain->set_initial_box();
+ // reset global and local box using the new box dimensions
domain->reset_box();
+ // signal that the box has (or may have) changed
domain->box_change = 1;
- if (kspace_flag) force->kspace->setup();
// picks local atoms from the buffer
double **x = atom->x;
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) {
x[i][0]=buffer[3*(atom->tag[i]-1)+0]*posconv;
x[i][1]=buffer[3*(atom->tag[i]-1)+1]*posconv;
x[i][2]=buffer[3*(atom->tag[i]-1)+2]*posconv;
}
}
+ // insure atoms are in current box & update box via shrink-wrap
+ // has to be be done before invoking Irregular::migrate_atoms()
+ // since it requires atoms be inside simulation box
+
+ if (domain->triclinic) domain->x2lamda(atom->nlocal);
+ domain->pbc();
+ domain->reset_box();
+ if (domain->triclinic) domain->lamda2x(atom->nlocal);
+
+ // move atoms to new processors via irregular()
+ // only needed if migrate_check() says an atom moves to far
+ if (domain->triclinic) domain->x2lamda(atom->nlocal);
+ if (irregular->migrate_check()) irregular->migrate_atoms();
+ if (domain->triclinic) domain->lamda2x(atom->nlocal);
+
+ // check if kspace solver is used
+ if (reset_flag && kspace_flag) {
+ // reset kspace, pair, angles, ... b/c simulation box might have changed.
+ // kspace->setup() is in some cases not enough since, e.g., g_ewald needs
+ // to be reestimated due to changes in box dimensions.
+ force->init();
+ // setup_grid() is necessary for pppm since init() is not calling
+ // setup() nor setup_grid() upon calling init().
+ if (force->kspace->pppmflag) force->kspace->setup_grid();
+ // other kspace styles might need too another setup()?
+ } else if (!reset_flag && kspace_flag) {
+ // original version
+ force->kspace->setup();
+ }
+
// compute PE. makes sure that it will be evaluated at next step
modify->compute[modify->find_compute("thermo_pe")]->invoked_scalar = -1;
modify->addstep_compute_all(update->ntimestep+1);
hasdata=1;
}
void FixIPI::final_integrate()
{
/* This is called after forces and energy have been computed. Now we only need to
* communicate them back to i-PI so that the integration can continue. */
char header[MSGLEN+1];
double vir[9], pot=0.0;
double forceconv, potconv, posconv, pressconv, posconv3;
char retstr[1024];
// conversions from LAMMPS units to atomic units, which are used by i-PI
potconv=3.1668152e-06/force->boltz;
posconv=0.52917721*force->angstrom;
posconv3=posconv*posconv*posconv;
forceconv=potconv*posconv;
pressconv=1/force->nktv2p*potconv*posconv3;
// compute for potential energy
pot=modify->compute[modify->find_compute("thermo_pe")]->compute_scalar();
pot*=potconv;
// probably useless check
if (!hasdata)
error->all(FLERR, "i-PI got out of sync in final_integrate and will die!");
int nat=bsize/3;
double **f= atom->f;
double lbuf[bsize];
// reassembles the force vector from the local arrays
int nlocal = atom->nlocal;
if (igroup == atom->firstgroup) nlocal = atom->nfirst;
for (int i = 0; i < bsize; ++i) lbuf[i]=0.0;
for (int i = 0; i < nlocal; i++) {
lbuf[3*(atom->tag[i]-1)+0]=f[i][0]*forceconv;
lbuf[3*(atom->tag[i]-1)+1]=f[i][1]*forceconv;
lbuf[3*(atom->tag[i]-1)+2]=f[i][2]*forceconv;
}
MPI_Allreduce(lbuf,buffer,bsize,MPI_DOUBLE,MPI_SUM,world);
for (int i = 0; i < 9; ++i) vir[i]=0.0;
int press_id = modify->find_compute("IPI_PRESS");
Compute* comp_p = modify->compute[press_id];
comp_p->compute_vector();
double myvol = domain->xprd*domain->yprd*domain->zprd/posconv3;
vir[0] = comp_p->vector[0]*pressconv*myvol;
vir[4] = comp_p->vector[1]*pressconv*myvol;
vir[8] = comp_p->vector[2]*pressconv*myvol;
vir[1] = comp_p->vector[3]*pressconv*myvol;
vir[2] = comp_p->vector[4]*pressconv*myvol;
vir[5] = comp_p->vector[5]*pressconv*myvol;
retstr[0]=0;
if (master) {
while (true) {
readbuffer(ipisock, header, MSGLEN, error); header[MSGLEN]=0;
if (strcmp(header,"STATUS ") == 0 )
writebuffer(ipisock,"HAVEDATA ",MSGLEN, error);
else break;
}
if (strcmp(header,"EXIT ") == 0 )
error->one(FLERR, "Got EXIT message from i-PI. Now leaving!");
if (strcmp(header,"GETFORCE ") == 0 ) {
writebuffer(ipisock,"FORCEREADY ",MSGLEN, error);
writebuffer(ipisock,(char*) &pot,8, error);
writebuffer(ipisock,(char*) &nat,4, error);
writebuffer(ipisock,(char*) buffer, bsize*8, error);
writebuffer(ipisock,(char*) vir,9*8, error);
nat=strlen(retstr); writebuffer(ipisock,(char*) &nat,4, error);
writebuffer(ipisock,(char*) retstr, nat, error);
}
else
error->one(FLERR, "Wrapper did not ask for forces, I will now die!");
}
hasdata=0;
}
diff --git a/src/USER-MISC/fix_ipi.h b/src/USER-MISC/fix_ipi.h
index 0859a513c..0bb3717de 100644
--- a/src/USER-MISC/fix_ipi.h
+++ b/src/USER-MISC/fix_ipi.h
@@ -1,45 +1,49 @@
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#ifdef FIX_CLASS
FixStyle(ipi,FixIPI)
#else
#ifndef LMP_FIX_IPI_H
#define LMP_FIX_IPI_H
#include "fix.h"
namespace LAMMPS_NS {
class FixIPI : public Fix {
public:
FixIPI(class LAMMPS *, int, char **);
virtual ~FixIPI();
int setmask();
virtual void init();
virtual void initial_integrate(int);
virtual void final_integrate();
protected:
char *host; int port; int inet, master, hasdata;
int ipisock, me; double *buffer; long bsize;
int kspace_flag;
+ int reset_flag;
+
+ private:
+ class Irregular *irregular;
};
}
#endif
#endif
diff --git a/src/USER-MISC/fix_ti_spring.cpp b/src/USER-MISC/fix_ti_spring.cpp
index 6b9e3d63b..fbbc747c3 100644
--- a/src/USER-MISC/fix_ti_spring.cpp
+++ b/src/USER-MISC/fix_ti_spring.cpp
@@ -1,386 +1,386 @@
/* -------------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------
- Contributing authors:
+ Contributing authors:
Rodrigo Freitas (UC Berkeley) - rodrigof@berkeley.edu
Mark Asta (UC Berkeley) - mdasta@berkeley.edu
Maurice de Koning (Unicamp/Brazil) - dekoning@ifi.unicamp.br
------------------------------------------------------------------------- */
#include <stdlib.h>
#include <string.h>
#include "fix_ti_spring.h"
#include "atom.h"
#include "update.h"
#include "domain.h"
#include "respa.h"
#include "memory.h"
#include "error.h"
#include "citeme.h"
#include "force.h"
using namespace LAMMPS_NS;
using namespace FixConst;
static const char cite_fix_ti_spring[] =
"ti/spring command:\n\n"
"@article{freitas2016,\n"
" author={Freitas, Rodrigo and Asta, Mark and de Koning, Maurice},\n"
" title={Nonequilibrium free-energy calculation of solids using LAMMPS},\n"
" journal={Computational Materials Science},\n"
" volume={112},\n"
" pages={333--341},\n"
" year={2016},\n"
" publisher={Elsevier}\n"
"}\n\n";
/* ---------------------------------------------------------------------- */
FixTISpring::FixTISpring(LAMMPS *lmp, int narg, char **arg) :
Fix(lmp, narg, arg)
{
if (lmp->citeme) lmp->citeme->add(cite_fix_ti_spring);
if (narg < 6 || narg > 8)
error->all(FLERR,"Illegal fix ti/spring command");
// Flags.
restart_peratom = 1;
scalar_flag = 1;
global_freq = 1;
vector_flag = 1;
size_vector = 2;
global_freq = 1;
extscalar = 1;
extvector = 1;
// disallow resetting the time step, while this fix is defined
time_depend = 1;
// Spring constant.
k = force->numeric(FLERR,arg[3]);
if (k <= 0.0) error->all(FLERR,"Illegal fix ti/spring command");
// Perform initial allocation of atom-based array
// Register with Atom class
xoriginal = NULL;
grow_arrays(atom->nmax);
atom->add_callback(0);
atom->add_callback(1);
// xoriginal = initial unwrapped positions of atoms
double **x = atom->x;
int *mask = atom->mask;
imageint *image = atom->image;
int nlocal = atom->nlocal;
for (int i = 0; i < nlocal; i++) {
if (mask[i] & groupbit) domain->unmap(x[i],image[i],xoriginal[i]);
else xoriginal[i][0] = xoriginal[i][1] = xoriginal[i][2] = 0.0;
}
// Time variables.
t0 = update->ntimestep; // timestep of original/starting coordinates
t_switch = force->bnumeric(FLERR,arg[4]); // Number of steps for switching
t_equil = force->bnumeric(FLERR,arg[5]); // Number of steps for equilibration
if ((t_switch <= 0) || (t_equil < 0))
error->all(FLERR,"Illegal fix ti/spring command");
// Coupling parameter initialization
sf = 1;
if (narg > 6) {
if (strcmp(arg[6], "function") == 0) sf = force->inumeric(FLERR,arg[7]);
else error->all(FLERR,"Illegal fix ti/spring switching function");
if ((sf!=1) && (sf!=2))
error->all(FLERR,"Illegal fix ti/spring switching function");
}
lambda = switch_func(0);
dlambda = dswitch_func(0);
espring = 0.0;
}
/* ---------------------------------------------------------------------- */
FixTISpring::~FixTISpring()
{
// unregister callbacks to this fix from Atom class
atom->delete_callback(id,0);
atom->delete_callback(id,1);
// delete locally stored array
memory->destroy(xoriginal);
}
/* ---------------------------------------------------------------------- */
int FixTISpring::setmask()
{
int mask = 0;
mask |= INITIAL_INTEGRATE;
mask |= POST_FORCE;
mask |= POST_FORCE_RESPA;
mask |= MIN_POST_FORCE;
mask |= THERMO_ENERGY;
return mask;
}
/* ---------------------------------------------------------------------- */
void FixTISpring::init()
{
if (strstr(update->integrate_style,"respa"))
nlevels_respa = ((Respa *) update->integrate)->nlevels;
}
/* ---------------------------------------------------------------------- */
void FixTISpring::setup(int vflag)
{
if (strstr(update->integrate_style,"verlet"))
post_force(vflag);
else {
((Respa *) update->integrate)->copy_flevel_f(nlevels_respa-1);
post_force_respa(vflag,nlevels_respa-1,0);
((Respa *) update->integrate)->copy_f_flevel(nlevels_respa-1);
}
}
/* ---------------------------------------------------------------------- */
void FixTISpring::min_setup(int vflag)
{
post_force(vflag);
}
/* ---------------------------------------------------------------------- */
void FixTISpring::post_force(int vflag)
{
// do not calculate forces during equilibration
if ((update->ntimestep - t0) < t_equil) return;
double **x = atom->x;
double **f = atom->f;
int *mask = atom->mask;
imageint *image = atom->image;
int nlocal = atom->nlocal;
double dx, dy, dz;
double unwrap[3];
espring = 0.0;
for (int i = 0; i < nlocal; i++)
if (mask[i] & groupbit) {
domain->unmap(x[i],image[i],unwrap);
dx = unwrap[0] - xoriginal[i][0];
dy = unwrap[1] - xoriginal[i][1];
dz = unwrap[2] - xoriginal[i][2];
f[i][0] = (1-lambda) * f[i][0] + lambda * (-k*dx);
f[i][1] = (1-lambda) * f[i][1] + lambda * (-k*dy);
f[i][2] = (1-lambda) * f[i][2] + lambda * (-k*dz);
espring += k * (dx*dx + dy*dy + dz*dz);
}
espring *= 0.5;
}
/* ---------------------------------------------------------------------- */
void FixTISpring::post_force_respa(int vflag, int ilevel, int iloop)
{
if (ilevel == nlevels_respa-1) post_force(vflag);
}
/* ---------------------------------------------------------------------- */
void FixTISpring::min_post_force(int vflag)
{
post_force(vflag);
}
/* ---------------------------------------------------------------------- */
void FixTISpring::initial_integrate(int vflag)
{
// Update the coupling parameter value if needed
if ((update->ntimestep - t0) < t_equil) return;
const bigint t = update->ntimestep - (t0+t_equil);
const double r_switch = 1.0/t_switch;
if ( (t >= 0) && (t <= t_switch) ) {
lambda = switch_func(t*r_switch);
dlambda = dswitch_func(t*r_switch);
}
if ( (t >= t_equil+t_switch) && (t <= (t_equil+2*t_switch)) ) {
lambda = switch_func(1.0 - (t - t_switch - t_equil)*r_switch);
dlambda = - dswitch_func(1.0 - (t - t_switch - t_equil)*r_switch);
}
}
/* ----------------------------------------------------------------------
energy of stretched springs
------------------------------------------------------------------------- */
double FixTISpring::compute_scalar()
{
double all;
MPI_Allreduce(&espring,&all,1,MPI_DOUBLE,MPI_SUM,world);
return all;
}
/* ----------------------------------------------------------------------
information about coupling parameter
------------------------------------------------------------------------- */
double FixTISpring::compute_vector(int n)
{
linfo[0] = lambda;
linfo[1] = dlambda;
return linfo[n];
}
/* ----------------------------------------------------------------------
memory usage of local atom-based array
------------------------------------------------------------------------- */
double FixTISpring::memory_usage()
{
double bytes = atom->nmax*3 * sizeof(double);
return bytes;
}
/* ----------------------------------------------------------------------
allocate atom-based array
------------------------------------------------------------------------- */
void FixTISpring::grow_arrays(int nmax)
{
memory->grow(xoriginal,nmax,3,"fix_ti/spring:xoriginal");
}
/* ----------------------------------------------------------------------
copy values within local atom-based array
------------------------------------------------------------------------- */
void FixTISpring::copy_arrays(int i, int j, int delflag)
{
xoriginal[j][0] = xoriginal[i][0];
xoriginal[j][1] = xoriginal[i][1];
xoriginal[j][2] = xoriginal[i][2];
}
/* ----------------------------------------------------------------------
pack values in local atom-based array for exchange with another proc
------------------------------------------------------------------------- */
int FixTISpring::pack_exchange(int i, double *buf)
{
buf[0] = xoriginal[i][0];
buf[1] = xoriginal[i][1];
buf[2] = xoriginal[i][2];
return 3;
}
/* ----------------------------------------------------------------------
unpack values in local atom-based array from exchange with another proc
------------------------------------------------------------------------- */
int FixTISpring::unpack_exchange(int nlocal, double *buf)
{
xoriginal[nlocal][0] = buf[0];
xoriginal[nlocal][1] = buf[1];
xoriginal[nlocal][2] = buf[2];
return 3;
}
/* ----------------------------------------------------------------------
pack values in local atom-based arrays for restart file
------------------------------------------------------------------------- */
int FixTISpring::pack_restart(int i, double *buf)
{
buf[0] = 4;
buf[1] = xoriginal[i][0];
buf[2] = xoriginal[i][1];
buf[3] = xoriginal[i][2];
return 4;
}
/* ----------------------------------------------------------------------
unpack values from atom->extra array to restart the fix
------------------------------------------------------------------------- */
void FixTISpring::unpack_restart(int nlocal, int nth)
{
double **extra = atom->extra;
// skip to Nth set of extra values
int m = 0;
for (int i = 0; i < nth; i++) m += static_cast<int> (extra[nlocal][m]);
m++;
xoriginal[nlocal][0] = extra[nlocal][m++];
xoriginal[nlocal][1] = extra[nlocal][m++];
xoriginal[nlocal][2] = extra[nlocal][m++];
}
/* ----------------------------------------------------------------------
maxsize of any atom's restart data
------------------------------------------------------------------------- */
int FixTISpring::maxsize_restart()
{
return 4;
}
/* ----------------------------------------------------------------------
size of atom nlocal's restart data
------------------------------------------------------------------------- */
int FixTISpring::size_restart(int nlocal)
{
return 4;
}
/* ----------------------------------------------------------------------
Switching function
------------------------------------------------------------------------- */
double FixTISpring::switch_func(double t)
{
if (sf == 1) return t;
double t2 = t*t;
double t5 = t2*t2*t;
return ((70.0*t2*t2 - 315.0*t2*t + 540.0*t2 - 420.0*t + 126.0)*t5);
}
/* ----------------------------------------------------------------------
Switching function derivative
------------------------------------------------------------------------- */
double FixTISpring::dswitch_func(double t)
{
if(sf == 1) return 1.0/t_switch;
double t2 = t*t;
double t4 = t2*t2;
return ((630*t2*t2 - 2520*t2*t + 3780*t2 - 2520*t + 630)*t4) / t_switch;
}
diff --git a/src/USER-MISC/pair_agni.cpp b/src/USER-MISC/pair_agni.cpp
index 57f0a9cd4..03bb22c71 100644
--- a/src/USER-MISC/pair_agni.cpp
+++ b/src/USER-MISC/pair_agni.cpp
@@ -1,508 +1,509 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Axel Kohlmeyer (Temple U), Venkatesh Botu
------------------------------------------------------------------------- */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "pair_agni.h"
#include "atom.h"
#include "neighbor.h"
#include "neigh_request.h"
#include "force.h"
#include "comm.h"
#include "memory.h"
#include "neighbor.h"
#include "neigh_list.h"
#include "memory.h"
#include "error.h"
#include "citeme.h"
#include "math_special.h"
#include "math_const.h"
using namespace LAMMPS_NS;
using namespace MathSpecial;
static const char cite_pair_agni[] =
"pair agni command:\n\n"
"@article{botu2015adaptive,\n"
" author = {Botu, Venkatesh and Ramprasad, Rampi},\n"
" title = {Adaptive machine learning framework to"
" accelerate ab initio molecular dynamics},\n"
" journal = {International Journal of Quantum Chemistry},\n"
" volume = {115},\n"
" number = {16},\n"
" pages = {1074--1083},\n"
" year = {2015},\n"
" publisher = {Wiley Online Library}\n"
"}\n\n"
"@article{botu2015learning,\n"
" author = {Botu, Venkatesh and Ramprasad, Rampi},\n"
" title = {Learning scheme to predict atomic forces"
" and accelerate materials simulations},\n"
" journal = {Physical Review B},\n"
" volume = {92},\n"
" number = {9},\n"
" pages = {094306},\n"
" year = {2015},\n"
" publisher = {APS}\n"
"}\n\n";
#define AGNI_VERSION 1
#define MAXLINE 10240
#define MAXWORD 40
/* ---------------------------------------------------------------------- */
PairAGNI::PairAGNI(LAMMPS *lmp) : Pair(lmp)
{
if (lmp->citeme) lmp->citeme->add(cite_pair_agni);
single_enable = 0;
restartinfo = 0;
one_coeff = 1;
manybody_flag = 1;
no_virial_fdotr_compute = 1;
nelements = 0;
elements = NULL;
elem2param = NULL;
nparams = 0;
params = NULL;
map = NULL;
+ cutmax = 0.0;
}
/* ----------------------------------------------------------------------
check if allocated, since class can be destructed when incomplete
------------------------------------------------------------------------- */
PairAGNI::~PairAGNI()
{
if (elements)
for (int i = 0; i < nelements; i++) delete [] elements[i];
delete [] elements;
if (params) {
for (int i = 0; i < nparams; ++i) {
int n = params[i].numeta;
for (int j = 0; j < n; ++j) {
delete [] params[i].xU[j];
}
delete [] params[i].eta;
delete [] params[i].alpha;
delete [] params[i].xU;
delete [] params[i].yU;
}
memory->destroy(params);
params = NULL;
}
if (allocated) {
memory->destroy(setflag);
memory->destroy(cutsq);
delete [] map;
}
}
/* ---------------------------------------------------------------------- */
void PairAGNI::compute(int eflag, int vflag)
{
int i,j,k,ii,jj,inum,jnum,itype;
double xtmp,ytmp,ztmp,delx,dely,delz;
double rsq;
int *ilist,*jlist,*numneigh,**firstneigh;
if (eflag || vflag) ev_setup(eflag,vflag);
else evflag = vflag_fdotr = 0;
double **x = atom->x;
double **f = atom->f;
int *type = atom->type;
inum = list->inum;
ilist = list->ilist;
numneigh = list->numneigh;
firstneigh = list->firstneigh;
double fxtmp,fytmp,fztmp;
double *Vx, *Vy, *Vz;
// loop over full neighbor list of my atoms
for (ii = 0; ii < inum; ii++) {
i = ilist[ii];
itype = map[type[i]];
xtmp = x[i][0];
ytmp = x[i][1];
ztmp = x[i][2];
fxtmp = fytmp = fztmp = 0.0;
const Param &iparam = params[elem2param[itype]];
Vx = new double[iparam.numeta];
Vy = new double[iparam.numeta];
Vz = new double[iparam.numeta];
memset(Vx,0,iparam.numeta*sizeof(double));
memset(Vy,0,iparam.numeta*sizeof(double));
memset(Vz,0,iparam.numeta*sizeof(double));
jlist = firstneigh[i];
jnum = numneigh[i];
for (jj = 0; jj < jnum; jj++) {
j = jlist[jj];
j &= NEIGHMASK;
delx = xtmp - x[j][0];
dely = ytmp - x[j][1];
delz = ztmp - x[j][2];
rsq = delx*delx + dely*dely + delz*delz;
if ((rsq > 0.0) && (rsq < iparam.cutsq)) {
const double r = sqrt(rsq);
const double cF = 0.5*(cos((MathConst::MY_PI*r)/iparam.cut)+1.0);
const double wX = cF*delx/r;
const double wY = cF*dely/r;
const double wZ = cF*delz/r;
for (k = 0; k < iparam.numeta; ++k) {
const double e = exp(-(iparam.eta[k]*rsq));
Vx[k] += wX*e;
Vy[k] += wY*e;
Vz[k] += wZ*e;
}
}
}
for (j = 0; j < iparam.numtrain; ++j) {
double kx = 0.0;
double ky = 0.0;
double kz = 0.0;
for(int k = 0; k < iparam.numeta; ++k) {
const double xu = iparam.xU[k][j];
kx += square(Vx[k] - xu);
ky += square(Vy[k] - xu);
kz += square(Vz[k] - xu);
}
const double e = -0.5/(square(iparam.sigma));
fxtmp += iparam.alpha[j]*exp(kx*e);
fytmp += iparam.alpha[j]*exp(ky*e);
fztmp += iparam.alpha[j]*exp(kz*e);
}
fxtmp += iparam.b;
fytmp += iparam.b;
fztmp += iparam.b;
f[i][0] += fxtmp;
f[i][1] += fytmp;
f[i][2] += fztmp;
if (evflag) ev_tally_xyz_full(i,0.0,0.0,fxtmp,fytmp,fztmp,delx,dely,delz);
delete [] Vx;
delete [] Vy;
delete [] Vz;
}
if (vflag_fdotr) virial_fdotr_compute();
}
/* ---------------------------------------------------------------------- */
void PairAGNI::allocate()
{
allocated = 1;
int n = atom->ntypes;
memory->create(setflag,n+1,n+1,"pair:setflag");
memory->create(cutsq,n+1,n+1,"pair:cutsq");
map = new int[n+1];
}
/* ----------------------------------------------------------------------
global settings
------------------------------------------------------------------------- */
void PairAGNI::settings(int narg, char **arg)
{
if (narg != 0) error->all(FLERR,"Illegal pair_style command");
}
/* ----------------------------------------------------------------------
set coeffs for one or more type pairs
------------------------------------------------------------------------- */
void PairAGNI::coeff(int narg, char **arg)
{
int i,j,n;
if (!allocated) allocate();
if (narg != 3 + atom->ntypes)
error->all(FLERR,"Incorrect args for pair coefficients");
// insure I,J args are * *
if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0)
error->all(FLERR,"Incorrect args for pair coefficients");
// read args that map atom types to elements in potential file
// map[i] = which element the Ith atom type is, -1 if NULL
// nelements = # of unique elements
// elements = list of element names
if (elements) {
for (i = 0; i < nelements; i++) delete [] elements[i];
delete [] elements;
}
elements = new char*[atom->ntypes];
for (i = 0; i < atom->ntypes; i++) elements[i] = NULL;
nelements = 0;
for (i = 3; i < narg; i++) {
if (strcmp(arg[i],"NULL") == 0) {
map[i-2] = -1;
continue;
}
for (j = 0; j < nelements; j++)
if (strcmp(arg[i],elements[j]) == 0) break;
map[i-2] = j;
if (j == nelements) {
n = strlen(arg[i]) + 1;
elements[j] = new char[n];
strcpy(elements[j],arg[i]);
nelements++;
}
}
// read potential file and initialize potential parameters
read_file(arg[2]);
setup_params();
// clear setflag since coeff() called once with I,J = * *
n = atom->ntypes;
for (int i = 1; i <= n; i++)
for (int j = i; j <= n; j++)
setflag[i][j] = 0;
// set setflag i,j for type pairs where both are mapped to elements
int count = 0;
for (int i = 1; i <= n; i++)
for (int j = i; j <= n; j++)
if (map[i] >= 0 && map[j] >= 0) {
setflag[i][j] = 1;
count++;
}
if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients");
}
/* ----------------------------------------------------------------------
init specific to this pair style
------------------------------------------------------------------------- */
void PairAGNI::init_style()
{
// need a full neighbor list
int irequest = neighbor->request(this,instance_me);
neighbor->requests[irequest]->half = 0;
neighbor->requests[irequest]->full = 1;
}
/* ----------------------------------------------------------------------
init for one type pair i,j and corresponding j,i
------------------------------------------------------------------------- */
double PairAGNI::init_one(int i, int j)
{
if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set");
return cutmax;
}
/* ---------------------------------------------------------------------- */
void PairAGNI::read_file(char *file)
{
memory->sfree(params);
params = NULL;
nparams = 0;
// open file on proc 0 only
// then read line by line and broadcast the line to all MPI ranks
FILE *fp;
if (comm->me == 0) {
fp = force->open_potential(file);
if (fp == NULL) {
char str[128];
sprintf(str,"Cannot open AGNI potential file %s",file);
error->one(FLERR,str);
}
}
int i,j,n,nwords,curparam,wantdata;
char line[MAXLINE],*ptr;
int eof = 0;
char **words = new char*[MAXWORD+1];
while (1) {
n = 0;
if (comm->me == 0) {
ptr = fgets(line,MAXLINE,fp);
if (ptr == NULL) {
eof = 1;
fclose(fp);
} else n = strlen(line) + 1;
}
MPI_Bcast(&eof,1,MPI_INT,0,world);
if (eof) break;
MPI_Bcast(&n,1,MPI_INT,0,world);
MPI_Bcast(line,n,MPI_CHAR,0,world);
// strip comment, skip line if blank
if ((ptr = strchr(line,'#'))) *ptr = '\0';
nwords = atom->count_words(line);
if (nwords == 0) continue;
if (nwords > MAXWORD)
error->all(FLERR,"Increase MAXWORD and recompile");
// words = ptrs to all words in line
nwords = 0;
words[nwords++] = strtok(line," \t\n\r\f");
while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue;
--nwords;
if ((nwords == 2) && (strcmp(words[0],"generation") == 0)) {
int ver = atoi(words[1]);
if (ver != AGNI_VERSION)
error->all(FLERR,"Incompatible AGNI potential file version");
if ((ver == 1) && (nelements != 1))
error->all(FLERR,"Cannot handle multi-element systems with this potential");
} else if ((nwords == 2) && (strcmp(words[0],"n_elements") == 0)) {
nparams = atoi(words[1]);
if ((nparams < 1) || params) // sanity check
error->all(FLERR,"Invalid AGNI potential file");
params = memory->create(params,nparams,"pair:params");
memset(params,0,nparams*sizeof(Param));
curparam = -1;
} else if (params && (nwords == nparams+1) && (strcmp(words[0],"element") == 0)) {
wantdata = -1;
for (i = 0; i < nparams; ++i) {
for (j = 0; j < nelements; ++j)
if (strcmp(words[i+1],elements[j]) == 0) break;
if (j == nelements)
error->all(FLERR,"No suitable parameters for requested element found");
else params[i].ielement = j;
}
} else if (params && (nwords == 2) && (strcmp(words[0],"interaction") == 0)) {
for (i = 0; i < nparams; ++i)
if (strcmp(words[1],elements[params[i].ielement]) == 0) curparam = i;
} else if ((curparam >=0) && (nwords == 1) && (strcmp(words[0],"endVar") == 0)) {
int numtrain = params[curparam].numtrain;
int numeta = params[curparam].numeta;
params[curparam].alpha = new double[numtrain];
params[curparam].yU = new double[numtrain];
params[curparam].xU = new double*[numeta];
for (i = 0; i < numeta; ++i)
params[curparam].xU[i] = new double[numtrain];
wantdata = curparam;
curparam = -1;
} else if ((curparam >=0) && (nwords == 2) && (strcmp(words[0],"Rc") == 0)) {
params[curparam].cut = atof(words[1]);
} else if ((curparam >=0) && (nwords == 2) && (strcmp(words[0],"Rs") == 0)) {
; // ignored
} else if ((curparam >=0) && (nwords == 2) && (strcmp(words[0],"neighbors") == 0)) {
; // ignored
} else if ((curparam >=0) && (nwords == 2) && (strcmp(words[0],"sigma") == 0)) {
params[curparam].sigma = atof(words[1]);
} else if ((curparam >=0) && (nwords == 2) && (strcmp(words[0],"lambda") == 0)) {
params[curparam].lambda = atof(words[1]);
} else if ((curparam >=0) && (nwords == 2) && (strcmp(words[0],"b") == 0)) {
params[curparam].b = atof(words[1]);
} else if ((curparam >=0) && (nwords == 2) && (strcmp(words[0],"n_train") == 0)) {
params[curparam].numtrain = atoi(words[1]);
} else if ((curparam >=0) && (nwords > 1) && (strcmp(words[0],"eta") == 0)) {
params[curparam].numeta = nwords-1;
params[curparam].eta = new double[nwords-1];
for (i = 0, j = 1 ; j < nwords; ++i, ++j)
params[curparam].eta[i] = atof(words[j]);
} else if (params && (wantdata >=0) && (nwords == params[wantdata].numeta+3)) {
n = (int) atof(words[0]);
for (i = 0; i < params[wantdata].numeta; ++i) {
params[wantdata].xU[i][n] = atof(words[i+1]);
}
params[wantdata].yU[n] = atof(words[params[wantdata].numeta+1]);
params[wantdata].alpha[n] = atof(words[params[wantdata].numeta+2]);
} else {
if (comm->me == 0)
error->warning(FLERR,"Ignoring unknown content in AGNI potential file.");
}
}
delete [] words;
}
/* ---------------------------------------------------------------------- */
void PairAGNI::setup_params()
{
int i,m,n;
double rtmp;
// set elem2param for all elements
memory->destroy(elem2param);
memory->create(elem2param,nelements,"pair:elem2param");
for (i = 0; i < nelements; i++) {
n = -1;
for (m = 0; m < nparams; m++) {
if (i == params[m].ielement) {
if (n >= 0) error->all(FLERR,"Potential file has duplicate entry");
n = m;
}
}
if (n < 0) error->all(FLERR,"Potential file is missing an entry");
elem2param[i] = n;
}
// compute parameter values derived from inputs
// set cutsq using shortcut to reduce neighbor list for accelerated
// calculations. cut must remain unchanged as it is a potential parameter
// (cut = a*sigma)
cutmax = 0.0;
for (m = 0; m < nparams; m++) {
rtmp = params[m].cut;
params[m].cutsq = rtmp * rtmp;
if (rtmp > cutmax) cutmax = rtmp;
}
}
diff --git a/src/REPLICA/temper.cpp b/src/USER-MISC/temper_grem.cpp
similarity index 56%
copy from src/REPLICA/temper.cpp
copy to src/USER-MISC/temper_grem.cpp
index ebc26d606..28fea4968 100644
--- a/src/REPLICA/temper.cpp
+++ b/src/USER-MISC/temper_grem.cpp
@@ -1,386 +1,378 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain 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: Mark Sears (SNL)
+ Contributing author: David Stelter (BU)
------------------------------------------------------------------------- */
#include <math.h>
#include <stdlib.h>
#include <string.h>
-#include "temper.h"
+#include "temper_grem.h"
+#include "fix_grem.h"
#include "universe.h"
#include "domain.h"
#include "atom.h"
#include "update.h"
#include "integrate.h"
#include "modify.h"
#include "compute.h"
#include "force.h"
#include "output.h"
#include "thermo.h"
#include "fix.h"
#include "random_park.h"
#include "finish.h"
#include "timer.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
-// #define TEMPER_DEBUG 1
+//#define TEMPER_DEBUG 1
/* ---------------------------------------------------------------------- */
-Temper::Temper(LAMMPS *lmp) : Pointers(lmp) {}
+TemperGrem::TemperGrem(LAMMPS *lmp) : Pointers(lmp) {}
/* ---------------------------------------------------------------------- */
-Temper::~Temper()
+TemperGrem::~TemperGrem()
{
MPI_Comm_free(&roots);
if (ranswap) delete ranswap;
delete ranboltz;
- delete [] set_temp;
- delete [] temp2world;
- delete [] world2temp;
+ delete [] set_lambda;
+ delete [] lambda2world;
+ delete [] world2lambda;
delete [] world2root;
+ delete [] id_nh;
}
/* ----------------------------------------------------------------------
perform tempering with inter-world swaps
------------------------------------------------------------------------- */
-void Temper::command(int narg, char **arg)
+void TemperGrem::command(int narg, char **arg)
{
if (universe->nworlds == 1)
error->all(FLERR,"Must have more than one processor partition to temper");
if (domain->box_exist == 0)
- error->all(FLERR,"Temper command before simulation box is defined");
- if (narg != 6 && narg != 7)
+ error->all(FLERR,"Temper/gREM command before simulation box is defined");
+ if (narg != 7 && narg != 8)
error->universe_all(FLERR,"Illegal temper command");
int nsteps = force->inumeric(FLERR,arg[0]);
nevery = force->inumeric(FLERR,arg[1]);
- double temp = force->numeric(FLERR,arg[2]);
+ double lambda = force->numeric(FLERR,arg[2]);
+ // Get and check if gREM fix exists
for (whichfix = 0; whichfix < modify->nfix; whichfix++)
if (strcmp(arg[3],modify->fix[whichfix]->id) == 0) break;
if (whichfix == modify->nfix)
error->universe_all(FLERR,"Tempering fix ID is not defined");
+ fix_grem = (FixGrem*)(modify->fix[whichfix]);
+
+ // Check input values lambdas should be equal, assign other gREM values
+ if (lambda != fix_grem->lambda)
+ error->universe_all(FLERR,"Lambda from tempering and fix in the same world"
+ " must be the same");
+ double eta = fix_grem->eta;
+ double h0 = fix_grem->h0;
+ double pressref = 0;
+
+ // Get and check for nh fix
+ int n = strlen(arg[4])+1;
+ id_nh = new char[n];
+ strcpy(id_nh,arg[4]);
+ int ifix = modify->find_fix(id_nh);
+ if (ifix < 0)
+ error->all(FLERR,"Fix id for nvt or npt fix does not exist");
+ Fix *nh = modify->fix[ifix];
+
+ // get result from nvt vs npt check from fix_grem
+ int pressflag = fix_grem->pressflag;
+ // fix_grem does all the checking...
+ if (pressflag) {
+ double *p_start = (double *) nh->extract("p_start",ifix);
+ pressref = p_start[0];
+ }
- seed_swap = force->inumeric(FLERR,arg[4]);
- seed_boltz = force->inumeric(FLERR,arg[5]);
+ seed_swap = force->inumeric(FLERR,arg[5]);
+ seed_boltz = force->inumeric(FLERR,arg[6]);
- my_set_temp = universe->iworld;
- if (narg == 7) my_set_temp = force->inumeric(FLERR,arg[6]);
+ my_set_lambda = universe->iworld;
+ if (narg == 8) my_set_lambda = force->inumeric(FLERR,arg[7]);
+ if ((my_set_lambda < 0) || (my_set_lambda >= universe->nworlds))
+ error->universe_one(FLERR,"Illegal temperature index");
// swap frequency must evenly divide total # of timesteps
if (nevery <= 0)
error->universe_all(FLERR,"Invalid frequency in temper command");
nswaps = nsteps/nevery;
if (nswaps*nevery != nsteps)
error->universe_all(FLERR,"Non integer # of swaps in temper command");
- // fix style must be appropriate for temperature control, i.e. it needs
- // to provide a working Fix::reset_target() and must not change the volume.
-
- if ((strcmp(modify->fix[whichfix]->style,"nvt") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"nvt/asphere") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"nvt/asphere/omp") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"nvt/body") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"nvt/eff") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"nvt/intel") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"nvt/kk") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"nvt/kk/host") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"nvt/kk/device") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"nvt/omp") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"nvt/sphere") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"nvt/sphere/omp") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"langevin") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"langevin/drude") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"langevin/eff") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"gld") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"gle") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"rigid/nvt") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"rigid/nvt/small") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"rigid/nvt/omp") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"rigid/nvt/small/omp") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"temp/berendsen") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"temp/berendsen/cuda") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"temp/csvr") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"temp/csld") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"temp/rescale") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"temp/rescale/cuda") != 0) &&
- (strcmp(modify->fix[whichfix]->style,"temp/rescale/eff") != 0))
+ // Must be used with fix_grem
+
+ if (strcmp(modify->fix[whichfix]->style,"grem") != 0)
error->universe_all(FLERR,"Tempering temperature fix is not supported");
// setup for long tempering run
update->whichflag = 1;
update->nsteps = nsteps;
update->beginstep = update->firststep = update->ntimestep;
update->endstep = update->laststep = update->firststep + nsteps;
if (update->laststep < 0)
error->all(FLERR,"Too many timesteps");
lmp->init();
// local storage
me_universe = universe->me;
MPI_Comm_rank(world,&me);
nworlds = universe->nworlds;
iworld = universe->iworld;
boltz = force->boltz;
// pe_compute = ptr to thermo_pe compute
// notify compute it will be called at first swap
int id = modify->find_compute("thermo_pe");
if (id < 0) error->all(FLERR,"Tempering could not find thermo_pe compute");
Compute *pe_compute = modify->compute[id];
pe_compute->addstep(update->ntimestep + nevery);
// create MPI communicator for root proc from each world
int color;
if (me == 0) color = 0;
else color = 1;
MPI_Comm_split(universe->uworld,color,0,&roots);
// RNGs for swaps and Boltzmann test
// warm up Boltzmann RNG
if (seed_swap) ranswap = new RanPark(lmp,seed_swap);
else ranswap = NULL;
ranboltz = new RanPark(lmp,seed_boltz + me_universe);
for (int i = 0; i < 100; i++) ranboltz->uniform();
// world2root[i] = global proc that is root proc of world i
world2root = new int[nworlds];
if (me == 0)
MPI_Allgather(&me_universe,1,MPI_INT,world2root,1,MPI_INT,roots);
MPI_Bcast(world2root,nworlds,MPI_INT,0,world);
- // create static list of set temperatures
- // allgather tempering arg "temp" across root procs
+ // create static list of set lambdas
+ // allgather tempering arg "lambda" across root procs
// bcast from each root to other procs in world
- set_temp = new double[nworlds];
- if (me == 0) MPI_Allgather(&temp,1,MPI_DOUBLE,set_temp,1,MPI_DOUBLE,roots);
- MPI_Bcast(set_temp,nworlds,MPI_DOUBLE,0,world);
+ set_lambda = new double[nworlds];
+ if (me == 0) MPI_Allgather(&lambda,1,MPI_DOUBLE,set_lambda,1,MPI_DOUBLE,roots);
+ MPI_Bcast(set_lambda,nworlds,MPI_DOUBLE,0,world);
- // create world2temp only on root procs from my_set_temp
- // create temp2world on root procs from world2temp,
+ // create world2lambda only on root procs from my_set_lambda
+ // create lambda2world on root procs from world2lambda,
// then bcast to all procs within world
- world2temp = new int[nworlds];
- temp2world = new int[nworlds];
+ world2lambda = new int[nworlds];
+ lambda2world = new int[nworlds];
if (me == 0) {
- MPI_Allgather(&my_set_temp,1,MPI_INT,world2temp,1,MPI_INT,roots);
- for (int i = 0; i < nworlds; i++) temp2world[world2temp[i]] = i;
+ MPI_Allgather(&my_set_lambda,1,MPI_INT,world2lambda,1,MPI_INT,roots);
+ for (int i = 0; i < nworlds; i++) lambda2world[world2lambda[i]] = i;
}
- MPI_Bcast(temp2world,nworlds,MPI_INT,0,world);
+ MPI_Bcast(lambda2world,nworlds,MPI_INT,0,world);
- // if restarting tempering, reset temp target of Fix to current my_set_temp
+ // if restarting tempering, reset lambda target of Fix to current my_set_lambda
- if (narg == 7) {
- double new_temp = set_temp[my_set_temp];
- modify->fix[whichfix]->reset_target(new_temp);
+ if (narg == 8) {
+ double new_lambda = set_lambda[my_set_lambda];
+ fix_grem->lambda = new_lambda;
}
// setup tempering runs
- int i,which,partner,swap,partner_set_temp,partner_world;
- double pe,pe_partner,boltz_factor,new_temp;
+ int i,which,partner,swap,partner_set_lambda,partner_world;
+ double pe,weight,weight_partner,weight_cross, weight_cross_partner;
+ double volume,enth,new_lambda,boltz_factor;
if (me_universe == 0 && universe->uscreen)
fprintf(universe->uscreen,"Setting up tempering ...\n");
update->integrate->setup();
if (me_universe == 0) {
if (universe->uscreen) {
fprintf(universe->uscreen,"Step");
for (int i = 0; i < nworlds; i++)
fprintf(universe->uscreen," T%d",i);
fprintf(universe->uscreen,"\n");
}
if (universe->ulogfile) {
fprintf(universe->ulogfile,"Step");
for (int i = 0; i < nworlds; i++)
fprintf(universe->ulogfile," T%d",i);
fprintf(universe->ulogfile,"\n");
}
print_status();
}
timer->init();
timer->barrier_start();
for (int iswap = 0; iswap < nswaps; iswap++) {
// run for nevery timesteps
update->integrate->run(nevery);
// compute PE
// notify compute it will be called at next swap
pe = pe_compute->compute_scalar();
pe_compute->addstep(update->ntimestep + nevery);
+
// which = which of 2 kinds of swaps to do (0,1)
if (!ranswap) which = iswap % 2;
else if (ranswap->uniform() < 0.5) which = 0;
else which = 1;
- // partner_set_temp = which set temp I am partnering with for this swap
+ // partner_set_lambda = which set lambda I am partnering with for this swap
if (which == 0) {
- if (my_set_temp % 2 == 0) partner_set_temp = my_set_temp + 1;
- else partner_set_temp = my_set_temp - 1;
+ if (my_set_lambda % 2 == 0) partner_set_lambda = my_set_lambda + 1;
+ else partner_set_lambda = my_set_lambda - 1;
} else {
- if (my_set_temp % 2 == 1) partner_set_temp = my_set_temp + 1;
- else partner_set_temp = my_set_temp - 1;
+ if (my_set_lambda % 2 == 1) partner_set_lambda = my_set_lambda + 1;
+ else partner_set_lambda = my_set_lambda - 1;
}
// partner = proc ID to swap with
// if partner = -1, then I am not a proc that swaps
partner = -1;
- if (me == 0 && partner_set_temp >= 0 && partner_set_temp < nworlds) {
- partner_world = temp2world[partner_set_temp];
+ if (me == 0 && partner_set_lambda >= 0 && partner_set_lambda < nworlds) {
+ partner_world = lambda2world[partner_set_lambda];
partner = world2root[partner_world];
}
// swap with a partner, only root procs in each world participate
// hi proc sends PE to low proc
// lo proc make Boltzmann decision on whether to swap
// lo proc communicates decision back to hi proc
swap = 0;
if (partner != -1) {
- if (me_universe > partner)
- MPI_Send(&pe,1,MPI_DOUBLE,partner,0,universe->uworld);
- else
- MPI_Recv(&pe_partner,1,MPI_DOUBLE,partner,0,universe->uworld,MPI_STATUS_IGNORE);
+ // compute weights
+ volume = domain->xprd * domain->yprd * domain->zprd;
+ enth = pe + (pressref * volume);
+ weight = log(set_lambda[my_set_lambda] + (eta*(enth + h0)));
+ weight_cross = log(set_lambda[partner_set_lambda] + (eta*(enth + h0)));
+
+ if (me_universe > partner) {
+ MPI_Send(&weight,1,MPI_DOUBLE,partner,0,universe->uworld);
+ MPI_Send(&weight_cross,1,MPI_DOUBLE,partner,0,universe->uworld);
+ }
+ else {
+ MPI_Recv(&weight_partner,1,MPI_DOUBLE,partner,0,universe->uworld,MPI_STATUS_IGNORE);
+ MPI_Recv(&weight_cross_partner,1,MPI_DOUBLE,partner,0,universe->uworld,MPI_STATUS_IGNORE);
+ }
if (me_universe < partner) {
- boltz_factor = (pe - pe_partner) *
- (1.0/(boltz*set_temp[my_set_temp]) -
- 1.0/(boltz*set_temp[partner_set_temp]));
+ boltz_factor = (weight - weight_partner + weight_cross - weight_cross_partner) *
+ (1 / (boltz * eta));
if (boltz_factor >= 0.0) swap = 1;
else if (ranboltz->uniform() < exp(boltz_factor)) swap = 1;
}
if (me_universe < partner)
MPI_Send(&swap,1,MPI_INT,partner,0,universe->uworld);
else
MPI_Recv(&swap,1,MPI_INT,partner,0,universe->uworld,MPI_STATUS_IGNORE);
#ifdef TEMPER_DEBUG
if (me_universe < partner)
printf("SWAP %d & %d: yes = %d,Ts = %d %d, PEs = %g %g, Bz = %g %g\n",
- me_universe,partner,swap,my_set_temp,partner_set_temp,
- pe,pe_partner,boltz_factor,exp(boltz_factor));
+ me_universe,partner,swap,my_set_lambda,partner_set_lambda,
+ weight,weight_partner,boltz_factor,exp(boltz_factor));
#endif
}
// bcast swap result to other procs in my world
MPI_Bcast(&swap,1,MPI_INT,0,world);
- // rescale kinetic energy via velocities if move is accepted
-
- if (swap) scale_velocities(partner_set_temp,my_set_temp);
-
// if my world swapped, all procs in world reset temp target of Fix
if (swap) {
- new_temp = set_temp[partner_set_temp];
- modify->fix[whichfix]->reset_target(new_temp);
+ new_lambda = set_lambda[partner_set_lambda];
+ fix_grem->lambda = new_lambda;
}
- // update my_set_temp and temp2world on every proc
+ // update my_set_lambda and lambda2world on every proc
// root procs update their value if swap took place
// allgather across root procs
// bcast within my world
- if (swap) my_set_temp = partner_set_temp;
+ if (swap) my_set_lambda = partner_set_lambda;
if (me == 0) {
- MPI_Allgather(&my_set_temp,1,MPI_INT,world2temp,1,MPI_INT,roots);
- for (i = 0; i < nworlds; i++) temp2world[world2temp[i]] = i;
+ MPI_Allgather(&my_set_lambda,1,MPI_INT,world2lambda,1,MPI_INT,roots);
+ for (i = 0; i < nworlds; i++) lambda2world[world2lambda[i]] = i;
}
- MPI_Bcast(temp2world,nworlds,MPI_INT,0,world);
+ MPI_Bcast(lambda2world,nworlds,MPI_INT,0,world);
// print out current swap status
if (me_universe == 0) print_status();
}
timer->barrier_stop();
update->integrate->cleanup();
Finish finish(lmp);
finish.end(1);
update->whichflag = 0;
update->firststep = update->laststep = 0;
update->beginstep = update->endstep = 0;
}
-/* ----------------------------------------------------------------------
- scale kinetic energy via velocities a la Sugita
-------------------------------------------------------------------------- */
-
-void Temper::scale_velocities(int t_partner, int t_me)
-{
- double sfactor = sqrt(set_temp[t_partner]/set_temp[t_me]);
-
- double **v = atom->v;
- int nlocal = atom->nlocal;
-
- for (int i = 0; i < nlocal; i++) {
- v[i][0] = v[i][0]*sfactor;
- v[i][1] = v[i][1]*sfactor;
- v[i][2] = v[i][2]*sfactor;
- }
-}
-
/* ----------------------------------------------------------------------
proc 0 prints current tempering status
------------------------------------------------------------------------- */
-void Temper::print_status()
+void TemperGrem::print_status()
{
if (universe->uscreen) {
fprintf(universe->uscreen,BIGINT_FORMAT,update->ntimestep);
for (int i = 0; i < nworlds; i++)
- fprintf(universe->uscreen," %d",world2temp[i]);
+ fprintf(universe->uscreen," %d",world2lambda[i]);
fprintf(universe->uscreen,"\n");
}
if (universe->ulogfile) {
fprintf(universe->ulogfile,BIGINT_FORMAT,update->ntimestep);
for (int i = 0; i < nworlds; i++)
- fprintf(universe->ulogfile," %d",world2temp[i]);
+ fprintf(universe->ulogfile," %d",world2lambda[i]);
fprintf(universe->ulogfile,"\n");
fflush(universe->ulogfile);
}
}
diff --git a/src/USER-MISC/temper_grem.h b/src/USER-MISC/temper_grem.h
new file mode 100644
index 000000000..53b8a9144
--- /dev/null
+++ b/src/USER-MISC/temper_grem.h
@@ -0,0 +1,111 @@
+/* -*- c++ -*- ----------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ http://lammps.sandia.gov, Sandia National Laboratories
+ Steve Plimpton, sjplimp@sandia.gov
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#ifdef COMMAND_CLASS
+
+CommandStyle(temper/grem,TemperGrem)
+
+#else
+
+#ifndef LMP_TEMPER_GREM_H
+#define LMP_TEMPER_GREM_H
+
+#include "pointers.h"
+
+namespace LAMMPS_NS {
+
+class TemperGrem : protected Pointers {
+ public:
+ TemperGrem(class LAMMPS *);
+ ~TemperGrem();
+ void command(int, char **);
+
+ private:
+ int me,me_universe; // my proc ID in world and universe
+ int iworld,nworlds; // world info
+ double boltz; // copy from output->boltz
+ MPI_Comm roots; // MPI comm with 1 root proc from each world
+ class RanPark *ranswap,*ranboltz; // RNGs for swapping and Boltz factor
+ int nevery; // # of timesteps between swaps
+ int nswaps; // # of tempering swaps to perform
+ int seed_swap; // 0 = toggle swaps, n = RNG for swap direction
+ int seed_boltz; // seed for Boltz factor comparison
+ int whichfix; // index of temperature fix to use
+ int fixstyle; // what kind of temperature fix is used
+
+ int my_set_lambda; // which set lambda I am simulating
+ double *set_lambda; // static list of replica set lambdas
+ int *lambda2world; // lambda2world[i] = world simulating set lambda i
+ int *world2lambda; // world2lambda[i] = lambda simulated by world i
+ int *world2root; // world2root[i] = root proc of world i
+
+ void print_status();
+
+ class FixGrem * fix_grem;
+
+ protected:
+ char *id_nh;
+ int pressflag;
+};
+
+}
+
+#endif
+#endif
+
+/* ERROR/WARNING messages:
+
+E: Must have more than one processor partition to grem
+
+Cannot use the grem command with only one processor partition. Use
+the -partition command-line option.
+
+E: Grem command before simulation box is defined
+
+The grem command cannot be used before a read_data, read_restart, or
+create_box command.
+
+E: Illegal ... command
+
+Self-explanatory. Check the input script syntax and compare to the
+documentation for the command. You can use -echo screen as a
+command-line option when running LAMMPS to see the offending line.
+
+E: Tempering fix ID is not defined
+
+The fix ID specified by the grem command does not exist.
+
+E: Invalid frequency in grem command
+
+Nevery must be > 0.
+
+E: Non integer # of swaps in grem command
+
+Swap frequency in grem command must evenly divide the total # of
+timesteps.
+
+E: Grem temperature fix is not valid
+
+The fix specified by the grem command is not one that controls
+temperature (nvt or npt).
+
+E: Too many timesteps
+
+The cummulative timesteps must fit in a 64-bit integer.
+
+E: Grem could not find thermo_pe compute
+
+This compute is created by the thermo command. It must have been
+explicitly deleted by a uncompute command.
+
+*/
diff --git a/src/USER-OMP/fix_omp.cpp b/src/USER-OMP/fix_omp.cpp
index 20e60bab2..b3fe2c29e 100644
--- a/src/USER-OMP/fix_omp.cpp
+++ b/src/USER-OMP/fix_omp.cpp
@@ -1,367 +1,367 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
- OpenMP based threading support for LAMMPS
Contributing author: Axel Kohlmeyer (Temple U)
+ OpenMP based threading support for LAMMPS
------------------------------------------------------------------------- */
#include "atom.h"
#include "comm.h"
#include "error.h"
#include "force.h"
#include "neighbor.h"
#include "neigh_request.h"
#include "universe.h"
#include "update.h"
#include "integrate.h"
#include "min.h"
#include "timer.h"
#include "fix_omp.h"
#include "thr_data.h"
#include "thr_omp.h"
#include "pair_hybrid.h"
#include "bond_hybrid.h"
#include "angle_hybrid.h"
#include "dihedral_hybrid.h"
#include "improper_hybrid.h"
#include "kspace.h"
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "suffix.h"
using namespace LAMMPS_NS;
using namespace FixConst;
static int get_tid()
{
int tid = 0;
#if defined(_OPENMP)
tid = omp_get_thread_num();
#endif
return tid;
}
/* ---------------------------------------------------------------------- */
FixOMP::FixOMP(LAMMPS *lmp, int narg, char **arg)
: Fix(lmp, narg, arg),
thr(NULL), last_omp_style(NULL), last_pair_hybrid(NULL),
_nthr(-1), _neighbor(true), _mixed(false), _reduced(true)
{
if (narg < 4) error->all(FLERR,"Illegal package omp command");
int nthreads = 1;
if (narg > 3) {
#if defined(_OPENMP)
if (strcmp(arg[3],"0") == 0)
#pragma omp parallel default(none) shared(nthreads)
nthreads = omp_get_num_threads();
else
nthreads = force->inumeric(FLERR,arg[3]);
#endif
}
if (nthreads < 1)
error->all(FLERR,"Illegal number of OpenMP threads requested");
int reset_thr = 0;
if (nthreads != comm->nthreads) {
#if defined(_OPENMP)
reset_thr = 1;
omp_set_num_threads(nthreads);
#endif
comm->nthreads = nthreads;
}
// optional keywords
int iarg = 4;
while (iarg < narg) {
if (strcmp(arg[iarg],"neigh") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal package omp command");
if (strcmp(arg[iarg+1],"yes") == 0) _neighbor = true;
else if (strcmp(arg[iarg+1],"no") == 0) _neighbor = false;
else error->all(FLERR,"Illegal package omp command");
iarg += 2;
} else error->all(FLERR,"Illegal package omp command");
}
// print summary of settings
if (comm->me == 0) {
#if defined(_OPENMP)
const char * const nmode = _neighbor ? "multi-threaded" : "serial";
if (screen) {
if (reset_thr)
fprintf(screen,"set %d OpenMP thread(s) per MPI task\n", nthreads);
fprintf(screen,"using %s neighbor list subroutines\n", nmode);
}
if (logfile) {
if (reset_thr)
fprintf(logfile,"set %d OpenMP thread(s) per MPI task\n", nthreads);
fprintf(logfile,"using %s neighbor list subroutines\n", nmode);
}
#else
error->warning(FLERR,"OpenMP support not enabled during compilation; "
"using 1 thread only.");
#endif
}
// allocate list for per thread accumulator manager class instances
// and then have each thread create an instance of this class to
// encourage the OS to use storage that is "close" to each thread's CPU.
thr = new ThrData *[nthreads];
_nthr = nthreads;
#if defined(_OPENMP)
#pragma omp parallel default(none) shared(lmp)
#endif
{
const int tid = get_tid();
Timer *t = new Timer(lmp);
thr[tid] = new ThrData(tid,t);
}
}
/* ---------------------------------------------------------------------- */
FixOMP::~FixOMP()
{
for (int i=0; i < _nthr; ++i)
delete thr[i];
delete[] thr;
}
/* ---------------------------------------------------------------------- */
int FixOMP::setmask()
{
int mask = 0;
mask |= PRE_FORCE;
mask |= PRE_FORCE_RESPA;
mask |= MIN_PRE_FORCE;
return mask;
}
/* ---------------------------------------------------------------------- */
void FixOMP::init()
{
// USER-OMP package cannot be used with atom_style template
if (atom->molecular == 2)
error->all(FLERR,"USER-OMP package does not (yet) work with "
"atom_style template");
// adjust number of data objects when the number of OpenMP
// threads has been changed somehow
const int nthreads = comm->nthreads;
if (_nthr != nthreads) {
if (screen) fprintf(screen,"Re-init USER-OMP for %d OpenMP thread(s)\n", nthreads);
if (logfile) fprintf(logfile,"Re-init USER-OMP for %d OpenMP thread(s)\n", nthreads);
for (int i=0; i < _nthr; ++i)
delete thr[i];
thr = new ThrData *[nthreads];
_nthr = nthreads;
#if defined(_OPENMP)
#pragma omp parallel default(none)
#endif
{
const int tid = get_tid();
Timer *t = new Timer(lmp);
thr[tid] = new ThrData(tid,t);
}
}
// reset per thread timer
for (int i=0; i < nthreads; ++i) {
thr[i]->_timer_active=1;
thr[i]->timer(Timer::RESET);
thr[i]->_timer_active=-1;
}
if ((strstr(update->integrate_style,"respa") != NULL)
&& (strstr(update->integrate_style,"respa/omp") == NULL))
error->all(FLERR,"Need to use respa/omp for r-RESPA with /omp styles");
int check_hybrid, kspace_split;
last_pair_hybrid = NULL;
last_omp_style = NULL;
const char *last_omp_name = NULL;
const char *last_hybrid_name = NULL;
const char *last_force_name = NULL;
// support for verlet/split operation.
// kspace_split == 0 : regular processing
// kspace_split < 0 : master partition, does not do kspace
// kspace_split > 0 : slave partition, only does kspace
if (strstr(update->integrate_style,"verlet/split") != NULL) {
if (universe->iworld == 0) kspace_split = -1;
else kspace_split = 1;
} else {
kspace_split = 0;
}
// determine which is the last force style with OpenMP
// support as this is the one that has to reduce the forces
#define CheckStyleForOMP(name) \
check_hybrid = 0; \
if (force->name) { \
if ( (strcmp(force->name ## _style,"hybrid") == 0) || \
(strcmp(force->name ## _style,"hybrid/overlay") == 0) ) \
check_hybrid=1; \
if (force->name->suffix_flag & Suffix::OMP) { \
last_force_name = (const char *) #name; \
last_omp_name = force->name ## _style; \
last_omp_style = (void *) force->name; \
} \
}
#define CheckHybridForOMP(name,Class) \
if (check_hybrid) { \
Class ## Hybrid *style = (Class ## Hybrid *) force->name; \
for (int i=0; i < style->nstyles; i++) { \
if (style->styles[i]->suffix_flag & Suffix::OMP) { \
last_force_name = (const char *) #name; \
last_omp_name = style->keywords[i]; \
last_omp_style = style->styles[i]; \
} \
} \
}
if (kspace_split <= 0) {
CheckStyleForOMP(pair);
CheckHybridForOMP(pair,Pair);
if (check_hybrid) {
last_pair_hybrid = last_omp_style;
last_hybrid_name = last_omp_name;
}
CheckStyleForOMP(bond);
CheckHybridForOMP(bond,Bond);
CheckStyleForOMP(angle);
CheckHybridForOMP(angle,Angle);
CheckStyleForOMP(dihedral);
CheckHybridForOMP(dihedral,Dihedral);
CheckStyleForOMP(improper);
CheckHybridForOMP(improper,Improper);
}
if (kspace_split >= 0) {
CheckStyleForOMP(kspace);
}
#undef CheckStyleForOMP
#undef CheckHybridForOMP
set_neighbor_omp();
// diagnostic output
if (comm->me == 0) {
if (last_omp_style) {
if (last_pair_hybrid) {
if (screen)
fprintf(screen,"Hybrid pair style last /omp style %s\n", last_hybrid_name);
if (logfile)
fprintf(logfile,"Hybrid pair style last /omp style %s\n", last_hybrid_name);
}
if (screen)
fprintf(screen,"Last active /omp style is %s_style %s\n",
last_force_name, last_omp_name);
if (logfile)
fprintf(logfile,"Last active /omp style is %s_style %s\n",
last_force_name, last_omp_name);
} else {
if (screen)
fprintf(screen,"No /omp style for force computation currently active\n");
if (logfile)
fprintf(logfile,"No /omp style for force computation currently active\n");
}
}
}
/* ---------------------------------------------------------------------- */
void FixOMP::set_neighbor_omp()
{
// select or deselect multi-threaded neighbor
// list build depending on setting in package omp.
// NOTE: since we are at the top of the list of
// fixes, we cannot adjust neighbor lists from
// other fixes. those have to be re-implemented
// as /omp fix styles. :-(
const int neigh_omp = _neighbor ? 1 : 0;
const int nrequest = neighbor->nrequest;
for (int i = 0; i < nrequest; ++i)
neighbor->requests[i]->omp = neigh_omp;
}
/* ---------------------------------------------------------------------- */
void FixOMP::setup(int)
{
// we are post the force compute in setup. turn on timers
for (int i=0; i < _nthr; ++i)
thr[i]->_timer_active=0;
}
/* ---------------------------------------------------------------------- */
// adjust size and clear out per thread accumulator arrays
void FixOMP::pre_force(int)
{
const int nall = atom->nlocal + atom->nghost;
double **f = atom->f;
double **torque = atom->torque;
double *erforce = atom->erforce;
double *de = atom->de;
double *drho = atom->drho;
#if defined(_OPENMP)
#pragma omp parallel default(none) shared(f,torque,erforce,de,drho)
#endif
{
const int tid = get_tid();
thr[tid]->check_tid(tid);
thr[tid]->init_force(nall,f,torque,erforce,de,drho);
} // end of omp parallel region
_reduced = false;
}
/* ---------------------------------------------------------------------- */
double FixOMP::memory_usage()
{
double bytes = _nthr * (sizeof(ThrData *) + sizeof(ThrData));
bytes += _nthr * thr[0]->memory_usage();
return bytes;
}
diff --git a/src/USER-OMP/pppm_disp_omp.cpp b/src/USER-OMP/pppm_disp_omp.cpp
index 277da9d4b..16d3001dd 100644
--- a/src/USER-OMP/pppm_disp_omp.cpp
+++ b/src/USER-OMP/pppm_disp_omp.cpp
@@ -1,1872 +1,1873 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain 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), Rolf Isele-Holder (RWTH Aachen University)
+ Contributing authors: Axel Kohlmeyer (Temple U)
+ Rolf Isele-Holder (RWTH Aachen University)
------------------------------------------------------------------------- */
#include "pppm_disp_omp.h"
#include "atom.h"
#include "comm.h"
#include "domain.h"
#include "force.h"
#include "memory.h"
#include "math_const.h"
#include <string.h>
#include <math.h>
#include "suffix.h"
using namespace LAMMPS_NS;
using namespace MathConst;
#ifdef FFT_SINGLE
#define ZEROF 0.0f
#define ONEF 1.0f
#else
#define ZEROF 0.0
#define ONEF 1.0
#endif
#define OFFSET 16384
/* ---------------------------------------------------------------------- */
PPPMDispOMP::PPPMDispOMP(LAMMPS *lmp, int narg, char **arg) :
PPPMDisp(lmp, narg, arg), ThrOMP(lmp, THR_KSPACE)
{
triclinic_support = 0;
suffix_flag |= Suffix::OMP;
}
/* ---------------------------------------------------------------------- */
PPPMDispOMP::~PPPMDispOMP()
{
deallocate();
}
/* ----------------------------------------------------------------------
allocate memory that depends on # of K-vectors and order
------------------------------------------------------------------------- */
void PPPMDispOMP::allocate()
{
PPPMDisp::allocate();
#if defined(_OPENMP)
#pragma omp parallel default(none)
#endif
{
#if defined(_OPENMP)
const int tid = omp_get_thread_num();
#else
const int tid = 0;
#endif
if (function[0]) {
ThrData *thr = fix->get_thr(tid);
thr->init_pppm(order,memory);
}
if (function[1] + function[2]) {
ThrData * thr = fix->get_thr(tid);
thr->init_pppm_disp(order_6,memory);
}
}
}
/* ----------------------------------------------------------------------
free memory that depends on # of K-vectors and order
------------------------------------------------------------------------- */
void PPPMDispOMP::deallocate()
{
PPPMDisp::deallocate();
#if defined(_OPENMP)
#pragma omp parallel default(none)
#endif
{
#if defined(_OPENMP)
const int tid = omp_get_thread_num();
#else
const int tid = 0;
#endif
if (function[0]) {
ThrData * thr = fix->get_thr(tid);
thr->init_pppm(-order,memory);
}
if (function[1] + function[2]) {
ThrData * thr = fix->get_thr(tid);
thr->init_pppm_disp(-order_6,memory);
}
}
}
/* ----------------------------------------------------------------------
Compute the modified (hockney-eastwood) coulomb green function
------------------------------------------------------------------------- */
void PPPMDispOMP::compute_gf()
{
#if defined(_OPENMP)
#pragma omp parallel default(none)
#endif
{
double *prd;
if (triclinic == 0) prd = domain->prd;
else prd = domain->prd_lamda;
double xprd = prd[0];
double yprd = prd[1];
double zprd = prd[2];
double zprd_slab = zprd*slab_volfactor;
double unitkx = (2.0*MY_PI/xprd);
double unitky = (2.0*MY_PI/yprd);
double unitkz = (2.0*MY_PI/zprd_slab);
int tid,nn,nnfrom,nnto,k,l,m;
int kper,lper,mper;
double snx,sny,snz,snx2,sny2,snz2;
double sqk;
double argx,argy,argz,wx,wy,wz,sx,sy,sz,qx,qy,qz;
double numerator,denominator;
const int nnx = nxhi_fft-nxlo_fft+1;
const int nny = nyhi_fft-nylo_fft+1;
loop_setup_thr(nnfrom, nnto, tid, nfft, comm->nthreads);
ThrData *thr = fix->get_thr(tid);
thr->timer(Timer::START);
for (m = nzlo_fft; m <= nzhi_fft; m++) {
mper = m - nz_pppm*(2*m/nz_pppm);
qz = unitkz*mper;
snz = sin(0.5*qz*zprd_slab/nz_pppm);
snz2 = snz*snz;
sz = exp(-0.25*pow(qz/g_ewald,2.0));
wz = 1.0;
argz = 0.5*qz*zprd_slab/nz_pppm;
if (argz != 0.0) wz = pow(sin(argz)/argz,order);
wz *= wz;
for (l = nylo_fft; l <= nyhi_fft; l++) {
lper = l - ny_pppm*(2*l/ny_pppm);
qy = unitky*lper;
sny = sin(0.5*qy*yprd/ny_pppm);
sny2 = sny*sny;
sy = exp(-0.25*pow(qy/g_ewald,2.0));
wy = 1.0;
argy = 0.5*qy*yprd/ny_pppm;
if (argy != 0.0) wy = pow(sin(argy)/argy,order);
wy *= wy;
for (k = nxlo_fft; k <= nxhi_fft; k++) {
/* only compute the part designated to this thread */
nn = k-nxlo_fft + nnx*(l-nylo_fft + nny*(m-nzlo_fft));
if ((nn < nnfrom) || (nn >=nnto)) continue;
kper = k - nx_pppm*(2*k/nx_pppm);
qx = unitkx*kper;
snx = sin(0.5*qx*xprd/nx_pppm);
snx2 = snx*snx;
sx = exp(-0.25*pow(qx/g_ewald,2.0));
wx = 1.0;
argx = 0.5*qx*xprd/nx_pppm;
if (argx != 0.0) wx = pow(sin(argx)/argx,order);
wx *= wx;
sqk = pow(qx,2.0) + pow(qy,2.0) + pow(qz,2.0);
if (sqk != 0.0) {
numerator = 4.0*MY_PI/sqk;
denominator = gf_denom(snx2,sny2,snz2, gf_b, order);
greensfn[nn] = numerator*sx*sy*sz*wx*wy*wz/denominator;
} else greensfn[nn] = 0.0;
}
}
}
thr->timer(Timer::KSPACE);
} // end of parallel region
}
/* ----------------------------------------------------------------------
Compyute the modified (hockney-eastwood) dispersion green function
------------------------------------------------------------------------- */
void PPPMDispOMP::compute_gf_6()
{
#if defined(_OPENMP)
#pragma omp parallel default(none)
#endif
{
double *prd;
int k,l,m,nn;
// volume-dependent factors
// adjust z dimension for 2d slab PPPM
// z dimension for 3d PPPM is zprd since slab_volfactor = 1.0
if (triclinic == 0) prd = domain->prd;
else prd = domain->prd_lamda;
double xprd = prd[0];
double yprd = prd[1];
double zprd = prd[2];
double zprd_slab = zprd*slab_volfactor;
double unitkx = (2.0*MY_PI/xprd);
double unitky = (2.0*MY_PI/yprd);
double unitkz = (2.0*MY_PI/zprd_slab);
int kper,lper,mper;
double sqk;
double snx,sny,snz,snx2,sny2,snz2;
double argx,argy,argz,wx,wy,wz,sx,sy,sz;
double qx,qy,qz;
double rtsqk, term;
double numerator,denominator;
double inv2ew = 2*g_ewald_6;
inv2ew = 1/inv2ew;
double rtpi = sqrt(MY_PI);
int nnfrom, nnto, tid;
numerator = -MY_PI*rtpi*g_ewald_6*g_ewald_6*g_ewald_6/(3.0);
const int nnx = nxhi_fft_6-nxlo_fft_6+1;
const int nny = nyhi_fft_6-nylo_fft_6+1;
loop_setup_thr(nnfrom, nnto, tid, nfft_6, comm->nthreads);
ThrData *thr = fix->get_thr(tid);
thr->timer(Timer::START);
for (m = nzlo_fft_6; m <= nzhi_fft_6; m++) {
mper = m - nz_pppm_6*(2*m/nz_pppm_6);
qz = unitkz*mper;
snz = sin(0.5*unitkz*mper*zprd_slab/nz_pppm_6);
snz2 = snz*snz;
sz = exp(-qz*qz*inv2ew*inv2ew);
wz = 1.0;
argz = 0.5*qz*zprd_slab/nz_pppm_6;
if (argz != 0.0) wz = pow(sin(argz)/argz,order_6);
wz *= wz;
for (l = nylo_fft_6; l <= nyhi_fft_6; l++) {
lper = l - ny_pppm_6*(2*l/ny_pppm_6);
qy = unitky*lper;
sny = sin(0.5*unitky*lper*yprd/ny_pppm_6);
sny2 = sny*sny;
sy = exp(-qy*qy*inv2ew*inv2ew);
wy = 1.0;
argy = 0.5*qy*yprd/ny_pppm_6;
if (argy != 0.0) wy = pow(sin(argy)/argy,order_6);
wy *= wy;
for (k = nxlo_fft_6; k <= nxhi_fft_6; k++) {
/* only compute the part designated to this thread */
nn = k-nxlo_fft_6 + nnx*(l-nylo_fft_6 + nny*(m-nzlo_fft_6));
if ((nn < nnfrom) || (nn >=nnto)) continue;
kper = k - nx_pppm_6*(2*k/nx_pppm_6);
qx = unitkx*kper;
snx = sin(0.5*unitkx*kper*xprd/nx_pppm_6);
snx2 = snx*snx;
sx = exp(-qx*qx*inv2ew*inv2ew);
wx = 1.0;
argx = 0.5*qx*xprd/nx_pppm_6;
if (argx != 0.0) wx = pow(sin(argx)/argx,order_6);
wx *= wx;
sqk = pow(qx,2.0) + pow(qy,2.0) + pow(qz,2.0);
if (sqk != 0.0) {
denominator = gf_denom(snx2,sny2,snz2, gf_b_6, order_6);
rtsqk = sqrt(sqk);
term = (1-2*sqk*inv2ew*inv2ew)*sx*sy*sz +
2*sqk*rtsqk*inv2ew*inv2ew*inv2ew*rtpi*erfc(rtsqk*inv2ew);
greensfn_6[nn] = numerator*term*wx*wy*wz/denominator;
} else greensfn_6[nn] = 0.0;
}
}
}
thr->timer(Timer::KSPACE);
} // end of parallel region
}
/* ----------------------------------------------------------------------
run the regular toplevel compute method from plain PPPPM
which will have individual methods replaced by our threaded
versions and then call the obligatory force reduction.
------------------------------------------------------------------------- */
void PPPMDispOMP::compute(int eflag, int vflag)
{
PPPMDisp::compute(eflag,vflag);
#if defined(_OPENMP)
#pragma omp parallel default(none) shared(eflag,vflag)
#endif
{
#if defined(_OPENMP)
const int tid = omp_get_thread_num();
#else
const int tid = 0;
#endif
ThrData *thr = fix->get_thr(tid);
thr->timer(Timer::START);
reduce_thr(this, eflag, vflag, thr);
} // end of omp parallel region
}
/* ----------------------------------------------------------------------
find center grid pt for each of my particles
check that full stencil for the particle will fit in my 3d brick
store central grid pt indices in part2grid array
------------------------------------------------------------------------- */
void PPPMDispOMP::particle_map(double dxinv, double dyinv,
double dzinv, double sft,
int ** part2grid, int nup,
int nlw, int nxlo_o,
int nylo_o, int nzlo_o,
int nxhi_o, int nyhi_o,
int nzhi_o)
{
const dbl3_t * _noalias const x = (dbl3_t *) atom->x[0];
int3_t * _noalias const p2g = (int3_t *) part2grid[0];
const double boxlox = boxlo[0];
const double boxloy = boxlo[1];
const double boxloz = boxlo[2];
const int nlocal = atom->nlocal;
const double delxinv = dxinv;
const double delyinv = dyinv;
const double delzinv = dzinv;
const double shift = sft;
const int nupper = nup;
const int nlower = nlw;
const int nxlo_out = nxlo_o;
const int nylo_out = nylo_o;
const int nzlo_out = nzlo_o;
const int nxhi_out = nxhi_o;
const int nyhi_out = nyhi_o;
const int nzhi_out = nzhi_o;
if (!ISFINITE(boxlo[0]) || !ISFINITE(boxlo[1]) || !ISFINITE(boxlo[2]))
error->one(FLERR,"Non-numeric box dimensions. Simulation unstable.");
int i, flag = 0;
#if defined(_OPENMP)
#pragma omp parallel for private(i) default(none) reduction(+:flag) schedule(static)
#endif
for (i = 0; i < nlocal; i++) {
// (nx,ny,nz) = global coords of grid pt to "lower left" of charge
// current particle coord can be outside global and local box
// add/subtract OFFSET to avoid int(-0.75) = 0 when want it to be -1
const int nx = static_cast<int> ((x[i].x-boxlox)*delxinv+shift) - OFFSET;
const int ny = static_cast<int> ((x[i].y-boxloy)*delyinv+shift) - OFFSET;
const int nz = static_cast<int> ((x[i].z-boxloz)*delzinv+shift) - OFFSET;
p2g[i].a = nx;
p2g[i].b = ny;
p2g[i].t = nz;
// check that entire stencil around nx,ny,nz will fit in my 3d brick
if (nx+nlower < nxlo_out || nx+nupper > nxhi_out ||
ny+nlower < nylo_out || ny+nupper > nyhi_out ||
nz+nlower < nzlo_out || nz+nupper > nzhi_out)
flag++;
}
int flag_all;
MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world);
if (flag_all) error->all(FLERR,"Out of range atoms - cannot compute PPPM");
}
/* ----------------------------------------------------------------------
create discretized "density" on section of global grid due to my particles
density(x,y,z) = charge "density" at grid points of my 3d brick
(nxlo:nxhi,nylo:nyhi,nzlo:nzhi) is extent of my brick (including ghosts)
in global grid
------------------------------------------------------------------------- */
void PPPMDispOMP::make_rho_c()
{
// clear 3d density array
FFT_SCALAR * _noalias const d = &(density_brick[nzlo_out][nylo_out][nxlo_out]);
memset(d,0,ngrid*sizeof(FFT_SCALAR));
// no local atoms => nothing else to do
const int nlocal = atom->nlocal;
if (nlocal == 0) return;
const int ix = nxhi_out - nxlo_out + 1;
const int iy = nyhi_out - nylo_out + 1;
#if defined(_OPENMP)
#pragma omp parallel default(none)
#endif
{
const double * _noalias const q = atom->q;
const dbl3_t * _noalias const x = (dbl3_t *) atom->x[0];
const int3_t * _noalias const p2g = (int3_t *) part2grid[0];
const double boxlox = boxlo[0];
const double boxloy = boxlo[1];
const double boxloz = boxlo[2];
// determine range of grid points handled by this thread
int i,jfrom,jto,tid;
loop_setup_thr(jfrom,jto,tid,ngrid,comm->nthreads);
// get per thread data
ThrData *thr = fix->get_thr(tid);
thr->timer(Timer::START);
FFT_SCALAR * const * const r1d = static_cast<FFT_SCALAR **>(thr->get_rho1d());
// loop over my charges, add their contribution to nearby grid points
// (nx,ny,nz) = global coords of grid pt to "lower left" of charge
// (dx,dy,dz) = distance to "lower left" grid pt
// loop over all local atoms for all threads
for (i = 0; i < nlocal; i++) {
const int nx = p2g[i].a;
const int ny = p2g[i].b;
const int nz = p2g[i].t;
// pre-screen whether this atom will ever come within
// reach of the data segement this thread is updating.
if ( ((nz+nlower-nzlo_out)*ix*iy >= jto)
|| ((nz+nupper-nzlo_out+1)*ix*iy < jfrom) ) continue;
const FFT_SCALAR dx = nx+shiftone - (x[i].x-boxlox)*delxinv;
const FFT_SCALAR dy = ny+shiftone - (x[i].y-boxloy)*delyinv;
const FFT_SCALAR dz = nz+shiftone - (x[i].z-boxloz)*delzinv;
compute_rho1d_thr(r1d,dx,dy,dz,order,rho_coeff);
const FFT_SCALAR z0 = delvolinv * q[i];
for (int n = nlower; n <= nupper; ++n) {
const int jn = (nz+n-nzlo_out)*ix*iy;
const FFT_SCALAR y0 = z0*r1d[2][n];
for (int m = nlower; m <= nupper; ++m) {
const int jm = jn+(ny+m-nylo_out)*ix;
const FFT_SCALAR x0 = y0*r1d[1][m];
for (int l = nlower; l <= nupper; ++l) {
const int jl = jm+nx+l-nxlo_out;
// make sure each thread only updates
// "his" elements of the density grid
if (jl >= jto) break;
if (jl < jfrom) continue;
d[jl] += x0*r1d[0][l];
}
}
}
}
thr->timer(Timer::KSPACE);
} // end of parallel region
}
/* ----------------------------------------------------------------------
same as above for dispersion interaction with geometric mixing rule
------------------------------------------------------------------------- */
void PPPMDispOMP::make_rho_g()
{
// clear 3d density array
FFT_SCALAR * _noalias const d = &(density_brick_g[nzlo_out_6][nylo_out_6][nxlo_out_6]);
memset(d,0,ngrid_6*sizeof(FFT_SCALAR));
// no local atoms => nothing else to do
const int nlocal = atom->nlocal;
if (nlocal == 0) return;
const int ix = nxhi_out_6 - nxlo_out_6 + 1;
const int iy = nyhi_out_6 - nylo_out_6 + 1;
#if defined(_OPENMP)
#pragma omp parallel default(none)
#endif
{
const dbl3_t * _noalias const x = (dbl3_t *) atom->x[0];
const int3_t * _noalias const p2g = (int3_t *) part2grid_6[0];
const double boxlox = boxlo[0];
const double boxloy = boxlo[1];
const double boxloz = boxlo[2];
// determine range of grid points handled by this thread
int i,jfrom,jto,tid;
loop_setup_thr(jfrom,jto,tid,ngrid_6,comm->nthreads);
// get per thread data
ThrData *thr = fix->get_thr(tid);
thr->timer(Timer::START);
FFT_SCALAR * const * const r1d = static_cast<FFT_SCALAR **>(thr->get_rho1d_6());
// loop over my charges, add their contribution to nearby grid points
// (nx,ny,nz) = global coords of grid pt to "lower left" of charge
// (dx,dy,dz) = distance to "lower left" grid pt
// loop over all local atoms for all threads
for (i = 0; i < nlocal; i++) {
const int nx = p2g[i].a;
const int ny = p2g[i].b;
const int nz = p2g[i].t;
// pre-screen whether this atom will ever come within
// reach of the data segement this thread is updating.
if ( ((nz+nlower_6-nzlo_out_6)*ix*iy >= jto)
|| ((nz+nupper_6-nzlo_out_6+1)*ix*iy < jfrom) ) continue;
const FFT_SCALAR dx = nx+shiftone_6 - (x[i].x-boxlox)*delxinv_6;
const FFT_SCALAR dy = ny+shiftone_6 - (x[i].y-boxloy)*delyinv_6;
const FFT_SCALAR dz = nz+shiftone_6 - (x[i].z-boxloz)*delzinv_6;
compute_rho1d_thr(r1d,dx,dy,dz,order_6,rho_coeff_6);
const int type = atom->type[i];
const double lj = B[type];
const FFT_SCALAR z0 = delvolinv_6 * lj;
for (int n = nlower_6; n <= nupper_6; ++n) {
const int jn = (nz+n-nzlo_out_6)*ix*iy;
const FFT_SCALAR y0 = z0*r1d[2][n];
for (int m = nlower_6; m <= nupper_6; ++m) {
const int jm = jn+(ny+m-nylo_out_6)*ix;
const FFT_SCALAR x0 = y0*r1d[1][m];
for (int l = nlower_6; l <= nupper_6; ++l) {
const int jl = jm+nx+l-nxlo_out_6;
// make sure each thread only updates
// "his" elements of the density grid
if (jl >= jto) break;
if (jl < jfrom) continue;
d[jl] += x0*r1d[0][l];
}
}
}
}
thr->timer(Timer::KSPACE);
} // end of parallel region
}
/* ----------------------------------------------------------------------
same as above for dispersion interaction with arithmetic mixing rule
------------------------------------------------------------------------- */
void PPPMDispOMP::make_rho_a()
{
// clear 3d density array
FFT_SCALAR * _noalias const d0 = &(density_brick_a0[nzlo_out_6][nylo_out_6][nxlo_out_6]);
FFT_SCALAR * _noalias const d1 = &(density_brick_a1[nzlo_out_6][nylo_out_6][nxlo_out_6]);
FFT_SCALAR * _noalias const d2 = &(density_brick_a2[nzlo_out_6][nylo_out_6][nxlo_out_6]);
FFT_SCALAR * _noalias const d3 = &(density_brick_a3[nzlo_out_6][nylo_out_6][nxlo_out_6]);
FFT_SCALAR * _noalias const d4 = &(density_brick_a4[nzlo_out_6][nylo_out_6][nxlo_out_6]);
FFT_SCALAR * _noalias const d5 = &(density_brick_a5[nzlo_out_6][nylo_out_6][nxlo_out_6]);
FFT_SCALAR * _noalias const d6 = &(density_brick_a6[nzlo_out_6][nylo_out_6][nxlo_out_6]);
memset(d0,0,ngrid_6*sizeof(FFT_SCALAR));
memset(d1,0,ngrid_6*sizeof(FFT_SCALAR));
memset(d2,0,ngrid_6*sizeof(FFT_SCALAR));
memset(d3,0,ngrid_6*sizeof(FFT_SCALAR));
memset(d4,0,ngrid_6*sizeof(FFT_SCALAR));
memset(d5,0,ngrid_6*sizeof(FFT_SCALAR));
memset(d6,0,ngrid_6*sizeof(FFT_SCALAR));
// no local atoms => nothing else to do
const int nlocal = atom->nlocal;
if (nlocal == 0) return;
const int ix = nxhi_out_6 - nxlo_out_6 + 1;
const int iy = nyhi_out_6 - nylo_out_6 + 1;
#if defined(_OPENMP)
#pragma omp parallel default(none)
#endif
{
const dbl3_t * _noalias const x = (dbl3_t *) atom->x[0];
const int3_t * _noalias const p2g = (int3_t *) part2grid_6[0];
const double boxlox = boxlo[0];
const double boxloy = boxlo[1];
const double boxloz = boxlo[2];
// determine range of grid points handled by this thread
int i,jfrom,jto,tid;
loop_setup_thr(jfrom,jto,tid,ngrid_6,comm->nthreads);
// get per thread data
ThrData *thr = fix->get_thr(tid);
thr->timer(Timer::START);
FFT_SCALAR * const * const r1d = static_cast<FFT_SCALAR **>(thr->get_rho1d_6());
// loop over my charges, add their contribution to nearby grid points
// (nx,ny,nz) = global coords of grid pt to "lower left" of charge
// (dx,dy,dz) = distance to "lower left" grid pt
// loop over all local atoms for all threads
for (i = 0; i < nlocal; i++) {
const int nx = p2g[i].a;
const int ny = p2g[i].b;
const int nz = p2g[i].t;
// pre-screen whether this atom will ever come within
// reach of the data segement this thread is updating.
if ( ((nz+nlower_6-nzlo_out_6)*ix*iy >= jto)
|| ((nz+nupper_6-nzlo_out_6+1)*ix*iy < jfrom) ) continue;
const FFT_SCALAR dx = nx+shiftone_6 - (x[i].x-boxlox)*delxinv_6;
const FFT_SCALAR dy = ny+shiftone_6 - (x[i].y-boxloy)*delyinv_6;
const FFT_SCALAR dz = nz+shiftone_6 - (x[i].z-boxloz)*delzinv_6;
compute_rho1d_thr(r1d,dx,dy,dz,order_6,rho_coeff_6);
const int type = atom->type[i];
const double lj0 = B[7*type];
const double lj1 = B[7*type+1];
const double lj2 = B[7*type+2];
const double lj3 = B[7*type+3];
const double lj4 = B[7*type+4];
const double lj5 = B[7*type+5];
const double lj6 = B[7*type+6];
const FFT_SCALAR z0 = delvolinv_6;
for (int n = nlower_6; n <= nupper_6; ++n) {
const int jn = (nz+n-nzlo_out_6)*ix*iy;
const FFT_SCALAR y0 = z0*r1d[2][n];
for (int m = nlower_6; m <= nupper_6; ++m) {
const int jm = jn+(ny+m-nylo_out_6)*ix;
const FFT_SCALAR x0 = y0*r1d[1][m];
for (int l = nlower_6; l <= nupper_6; ++l) {
const int jl = jm+nx+l-nxlo_out_6;
// make sure each thread only updates
// "his" elements of the density grid
if (jl >= jto) break;
if (jl < jfrom) continue;
const double w = x0*r1d[0][l];
d0[jl] += w*lj0;
d1[jl] += w*lj1;
d2[jl] += w*lj2;
d3[jl] += w*lj3;
d4[jl] += w*lj4;
d5[jl] += w*lj5;
d6[jl] += w*lj6;
}
}
}
}
thr->timer(Timer::KSPACE);
} // end of parallel region
}
/* ----------------------------------------------------------------------
interpolate from grid to get electric field & force on my particles
for ik scheme
------------------------------------------------------------------------- */
void PPPMDispOMP::fieldforce_c_ik()
{
const int nlocal = atom->nlocal;
// no local atoms => nothing to do
if (nlocal == 0) return;
// loop over my charges, interpolate electric field from nearby grid points
// (nx,ny,nz) = global coords of grid pt to "lower left" of charge
// (dx,dy,dz) = distance to "lower left" grid pt
// (mx,my,mz) = global coords of moving stencil pt
// ek = 3 components of E-field on particle
const double * const q = atom->q;
const double * const * const x = atom->x;
const double qqrd2e = force->qqrd2e;
#if defined(_OPENMP)
const int nthreads = comm->nthreads;
#pragma omp parallel default(none)
#endif
{
#if defined(_OPENMP)
// each thread works on a fixed chunk of atoms.
const int tid = omp_get_thread_num();
const int inum = nlocal;
const int idelta = 1 + inum/nthreads;
const int ifrom = tid*idelta;
const int ito = ((ifrom + idelta) > inum) ? inum : ifrom + idelta;
#else
const int ifrom = 0;
const int ito = nlocal;
const int tid = 0;
#endif
ThrData *thr = fix->get_thr(tid);
thr->timer(Timer::START);
double * const * const f = thr->get_f();
FFT_SCALAR * const * const r1d = static_cast<FFT_SCALAR **>(thr->get_rho1d());
int l,m,n,nx,ny,nz,mx,my,mz;
FFT_SCALAR dx,dy,dz,x0,y0,z0;
FFT_SCALAR ekx,eky,ekz;
// this if protects against having more threads than local atoms
if (ifrom < nlocal) {
for (int i = ifrom; i < ito; i++) {
nx = part2grid[i][0];
ny = part2grid[i][1];
nz = part2grid[i][2];
dx = nx+shiftone - (x[i][0]-boxlo[0])*delxinv;
dy = ny+shiftone - (x[i][1]-boxlo[1])*delyinv;
dz = nz+shiftone - (x[i][2]-boxlo[2])*delzinv;
compute_rho1d_thr(r1d,dx,dy,dz, order, rho_coeff);
ekx = eky = ekz = ZEROF;
for (n = nlower; n <= nupper; n++) {
mz = n+nz;
z0 = r1d[2][n];
for (m = nlower; m <= nupper; m++) {
my = m+ny;
y0 = z0*r1d[1][m];
for (l = nlower; l <= nupper; l++) {
mx = l+nx;
x0 = y0*r1d[0][l];
ekx -= x0*vdx_brick[mz][my][mx];
eky -= x0*vdy_brick[mz][my][mx];
ekz -= x0*vdz_brick[mz][my][mx];
}
}
}
// convert E-field to force
const double qfactor = qqrd2e*scale*q[i];
f[i][0] += qfactor*ekx;
f[i][1] += qfactor*eky;
f[i][2] += qfactor*ekz;
}
}
thr->timer(Timer::KSPACE);
} // end of parallel region
}
/* ----------------------------------------------------------------------
interpolate from grid to get electric field & force on my particles
for ad scheme
------------------------------------------------------------------------- */
void PPPMDispOMP::fieldforce_c_ad()
{
const int nlocal = atom->nlocal;
// no local atoms => nothing to do
if (nlocal == 0) return;
// loop over my charges, interpolate electric field from nearby grid points
// (nx,ny,nz) = global coords of grid pt to "lower left" of charge
// (dx,dy,dz) = distance to "lower left" grid pt
// (mx,my,mz) = global coords of moving stencil pt
// ek = 3 components of E-field on particle
const double * const q = atom->q;
const double * const * const x = atom->x;
const double qqrd2e = force->qqrd2e;
//const double * const sf_c = sf_coeff;
double *prd;
if (triclinic == 0) prd = domain->prd;
else prd = domain->prd_lamda;
double xprd = prd[0];
double yprd = prd[1];
double zprd = prd[2];
double zprd_slab = zprd*slab_volfactor;
const double hx_inv = nx_pppm/xprd;
const double hy_inv = ny_pppm/yprd;
const double hz_inv = nz_pppm/zprd_slab;
#if defined(_OPENMP)
const int nthreads = comm->nthreads;
#pragma omp parallel default(none)
#endif
{
#if defined(_OPENMP)
// each thread works on a fixed chunk of atoms.
const int tid = omp_get_thread_num();
const int inum = nlocal;
const int idelta = 1 + inum/nthreads;
const int ifrom = tid*idelta;
const int ito = ((ifrom + idelta) > inum) ? inum : ifrom + idelta;
#else
const int ifrom = 0;
const int ito = nlocal;
const int tid = 0;
#endif
ThrData *thr = fix->get_thr(tid);
thr->timer(Timer::START);
double * const * const f = thr->get_f();
FFT_SCALAR * const * const r1d = static_cast<FFT_SCALAR **>(thr->get_rho1d());
FFT_SCALAR * const * const dr1d = static_cast<FFT_SCALAR **>(thr->get_drho1d());
int l,m,n,nx,ny,nz,mx,my,mz;
FFT_SCALAR dx,dy,dz;
FFT_SCALAR ekx,eky,ekz;
double sf = 0.0;
double s1,s2,s3;
// this if protects against having more threads than local atoms
if (ifrom < nlocal) {
for (int i = ifrom; i < ito; i++) {
nx = part2grid[i][0];
ny = part2grid[i][1];
nz = part2grid[i][2];
dx = nx+shiftone - (x[i][0]-boxlo[0])*delxinv;
dy = ny+shiftone - (x[i][1]-boxlo[1])*delyinv;
dz = nz+shiftone - (x[i][2]-boxlo[2])*delzinv;
compute_rho1d_thr(r1d,dx,dy,dz, order, rho_coeff);
compute_drho1d_thr(dr1d,dx,dy,dz, order, drho_coeff);
ekx = eky = ekz = ZEROF;
for (n = nlower; n <= nupper; n++) {
mz = n+nz;
for (m = nlower; m <= nupper; m++) {
my = m+ny;
for (l = nlower; l <= nupper; l++) {
mx = l+nx;
ekx += dr1d[0][l]*r1d[1][m]*r1d[2][n]*u_brick[mz][my][mx];
eky += r1d[0][l]*dr1d[1][m]*r1d[2][n]*u_brick[mz][my][mx];
ekz += r1d[0][l]*r1d[1][m]*dr1d[2][n]*u_brick[mz][my][mx];
}
}
}
ekx *= hx_inv;
eky *= hy_inv;
ekz *= hz_inv;
// convert E-field to force
const double qfactor = qqrd2e*scale;
s1 = x[i][0]*hx_inv;
s2 = x[i][1]*hy_inv;
s3 = x[i][2]*hz_inv;
sf = sf_coeff[0]*sin(2*MY_PI*s1);
sf += sf_coeff[1]*sin(4*MY_PI*s1);
sf *= 2*q[i]*q[i];
f[i][0] += qfactor*(ekx*q[i] - sf);
sf = sf_coeff[2]*sin(2*MY_PI*s2);
sf += sf_coeff[3]*sin(4*MY_PI*s2);
sf *= 2*q[i]*q[i];
f[i][1] += qfactor*(eky*q[i] - sf);
sf = sf_coeff[4]*sin(2*MY_PI*s3);
sf += sf_coeff[5]*sin(4*MY_PI*s3);
sf *= 2*q[i]*q[i];
if (slabflag != 2) f[i][2] += qfactor*(ekz*q[i] - sf);
}
}
thr->timer(Timer::KSPACE);
} // end of parallel region
}
/* ----------------------------------------------------------------------
interpolate from grid to get per-atom energy/virial
------------------------------------------------------------------------- */
void PPPMDispOMP::fieldforce_c_peratom()
{
const int nlocal = atom->nlocal;
// no local atoms => nothing to do
if (nlocal == 0) return;
// loop over my charges, interpolate from nearby grid points
// (nx,ny,nz) = global coords of grid pt to "lower left" of charge
// (dx,dy,dz) = distance to "lower left" grid pt
// (mx,my,mz) = global coords of moving stencil pt
const double * const q = atom->q;
const double * const * const x = atom->x;
#if defined(_OPENMP)
const int nthreads = comm->nthreads;
#pragma omp parallel default(none)
#endif
{
#if defined(_OPENMP)
// each thread works on a fixed chunk of atoms.
const int tid = omp_get_thread_num();
const int inum = nlocal;
const int idelta = 1 + inum/nthreads;
const int ifrom = tid*idelta;
const int ito = ((ifrom + idelta) > inum) ? inum : ifrom + idelta;
#else
const int ifrom = 0;
const int ito = nlocal;
const int tid = 0;
#endif
ThrData *thr = fix->get_thr(tid);
thr->timer(Timer::START);
FFT_SCALAR * const * const r1d = static_cast<FFT_SCALAR **>(thr->get_rho1d());
int l,m,n,nx,ny,nz,mx,my,mz;
FFT_SCALAR dx,dy,dz,x0,y0,z0;
FFT_SCALAR u,v0,v1,v2,v3,v4,v5;
// this if protects against having more threads than local atoms
if (ifrom < nlocal) {
for (int i = ifrom; i < ito; i++) {
nx = part2grid[i][0];
ny = part2grid[i][1];
nz = part2grid[i][2];
dx = nx+shiftone - (x[i][0]-boxlo[0])*delxinv;
dy = ny+shiftone - (x[i][1]-boxlo[1])*delyinv;
dz = nz+shiftone - (x[i][2]-boxlo[2])*delzinv;
compute_rho1d_thr(r1d,dx,dy,dz, order, rho_coeff);
u = v0 = v1 = v2 = v3 = v4 = v5 = ZEROF;
for (n = nlower; n <= nupper; n++) {
mz = n+nz;
z0 = r1d[2][n];
for (m = nlower; m <= nupper; m++) {
my = m+ny;
y0 = z0*r1d[1][m];
for (l = nlower; l <= nupper; l++) {
mx = l+nx;
x0 = y0*r1d[0][l];
if (eflag_atom) u += x0*u_brick[mz][my][mx];
if (vflag_atom) {
v0 += x0*v0_brick[mz][my][mx];
v1 += x0*v1_brick[mz][my][mx];
v2 += x0*v2_brick[mz][my][mx];
v3 += x0*v3_brick[mz][my][mx];
v4 += x0*v4_brick[mz][my][mx];
v5 += x0*v5_brick[mz][my][mx];
}
}
}
}
const double qfactor = 0.5*force->qqrd2e * scale * q[i];
if (eflag_atom) eatom[i] += u*qfactor;
if (vflag_atom) {
vatom[i][0] += v0*qfactor;
vatom[i][1] += v1*qfactor;
vatom[i][2] += v2*qfactor;
vatom[i][3] += v3*qfactor;
vatom[i][4] += v4*qfactor;
vatom[i][5] += v5*qfactor;
}
}
}
thr->timer(Timer::KSPACE);
} // end of parallel region
}
/* ----------------------------------------------------------------------
interpolate from grid to get dispersion field & force on my particles
for ik scheme and geometric mixing rule
------------------------------------------------------------------------- */
void PPPMDispOMP::fieldforce_g_ik()
{
const int nlocal = atom->nlocal;
// no local atoms => nothing to do
if (nlocal == 0) return;
// loop over my charges, interpolate electric field from nearby grid points
// (nx,ny,nz) = global coords of grid pt to "lower left" of charge
// (dx,dy,dz) = distance to "lower left" grid pt
// (mx,my,mz) = global coords of moving stencil pt
// ek = 3 components of E-field on particle
const double * const * const x = atom->x;
#if defined(_OPENMP)
const int nthreads = comm->nthreads;
#pragma omp parallel default(none)
#endif
{
#if defined(_OPENMP)
// each thread works on a fixed chunk of atoms.
const int tid = omp_get_thread_num();
const int inum = nlocal;
const int idelta = 1 + inum/nthreads;
const int ifrom = tid*idelta;
const int ito = ((ifrom + idelta) > inum) ? inum : ifrom + idelta;
#else
const int ifrom = 0;
const int ito = nlocal;
const int tid = 0;
#endif
ThrData *thr = fix->get_thr(tid);
thr->timer(Timer::START);
double * const * const f = thr->get_f();
FFT_SCALAR * const * const r1d = static_cast<FFT_SCALAR **>(thr->get_rho1d_6());
int l,m,n,nx,ny,nz,mx,my,mz;
FFT_SCALAR dx,dy,dz,x0,y0,z0;
FFT_SCALAR ekx,eky,ekz;
int type;
double lj;
// this if protects against having more threads than local atoms
if (ifrom < nlocal) {
for (int i = ifrom; i < ito; i++) {
nx = part2grid_6[i][0];
ny = part2grid_6[i][1];
nz = part2grid_6[i][2];
dx = nx+shiftone_6 - (x[i][0]-boxlo[0])*delxinv_6;
dy = ny+shiftone_6 - (x[i][1]-boxlo[1])*delyinv_6;
dz = nz+shiftone_6 - (x[i][2]-boxlo[2])*delzinv_6;
compute_rho1d_thr(r1d,dx,dy,dz, order_6, rho_coeff_6);
ekx = eky = ekz = ZEROF;
for (n = nlower_6; n <= nupper_6; n++) {
mz = n+nz;
z0 = r1d[2][n];
for (m = nlower_6; m <= nupper_6; m++) {
my = m+ny;
y0 = z0*r1d[1][m];
for (l = nlower_6; l <= nupper_6; l++) {
mx = l+nx;
x0 = y0*r1d[0][l];
ekx -= x0*vdx_brick_g[mz][my][mx];
eky -= x0*vdy_brick_g[mz][my][mx];
ekz -= x0*vdz_brick_g[mz][my][mx];
}
}
}
// convert E-field to force
type = atom->type[i];
lj = B[type];
f[i][0] += lj*ekx;
f[i][1] += lj*eky;
f[i][2] += lj*ekz;
}
}
thr->timer(Timer::KSPACE);
} // end of parallel region
}
/* ----------------------------------------------------------------------
interpolate from grid to get dispersion field & force on my particles
for ad scheme and geometric mixing rule
------------------------------------------------------------------------- */
void PPPMDispOMP::fieldforce_g_ad()
{
const int nlocal = atom->nlocal;
// no local atoms => nothing to do
if (nlocal == 0) return;
// loop over my charges, interpolate electric field from nearby grid points
// (nx,ny,nz) = global coords of grid pt to "lower left" of charge
// (dx,dy,dz) = distance to "lower left" grid pt
// (mx,my,mz) = global coords of moving stencil pt
// ek = 3 components of E-field on particle
const double * const * const x = atom->x;
double *prd;
if (triclinic == 0) prd = domain->prd;
else prd = domain->prd_lamda;
double xprd = prd[0];
double yprd = prd[1];
double zprd = prd[2];
double zprd_slab = zprd*slab_volfactor;
const double hx_inv = nx_pppm_6/xprd;
const double hy_inv = ny_pppm_6/yprd;
const double hz_inv = nz_pppm_6/zprd_slab;
#if defined(_OPENMP)
const int nthreads = comm->nthreads;
#pragma omp parallel default(none)
#endif
{
#if defined(_OPENMP)
// each thread works on a fixed chunk of atoms.
const int tid = omp_get_thread_num();
const int inum = nlocal;
const int idelta = 1 + inum/nthreads;
const int ifrom = tid*idelta;
const int ito = ((ifrom + idelta) > inum) ? inum : ifrom + idelta;
#else
const int ifrom = 0;
const int ito = nlocal;
const int tid = 0;
#endif
ThrData *thr = fix->get_thr(tid);
thr->timer(Timer::START);
double * const * const f = thr->get_f();
FFT_SCALAR * const * const r1d = static_cast<FFT_SCALAR **>(thr->get_rho1d_6());
FFT_SCALAR * const * const dr1d = static_cast<FFT_SCALAR **>(thr->get_drho1d_6());
int l,m,n,nx,ny,nz,mx,my,mz;
FFT_SCALAR dx,dy,dz;
FFT_SCALAR ekx,eky,ekz;
int type;
double lj;
double sf = 0.0;
double s1,s2,s3;
// this if protects against having more threads than local atoms
if (ifrom < nlocal) {
for (int i = ifrom; i < ito; i++) {
nx = part2grid_6[i][0];
ny = part2grid_6[i][1];
nz = part2grid_6[i][2];
dx = nx+shiftone_6 - (x[i][0]-boxlo[0])*delxinv_6;
dy = ny+shiftone_6 - (x[i][1]-boxlo[1])*delyinv_6;
dz = nz+shiftone_6 - (x[i][2]-boxlo[2])*delzinv_6;
compute_rho1d_thr(r1d,dx,dy,dz, order_6, rho_coeff_6);
compute_drho1d_thr(dr1d,dx,dy,dz, order_6, drho_coeff_6);
ekx = eky = ekz = ZEROF;
for (n = nlower_6; n <= nupper_6; n++) {
mz = n+nz;
for (m = nlower_6; m <= nupper_6; m++) {
my = m+ny;
for (l = nlower_6; l <= nupper_6; l++) {
mx = l+nx;
ekx += dr1d[0][l]*r1d[1][m]*r1d[2][n]*u_brick_g[mz][my][mx];
eky += r1d[0][l]*dr1d[1][m]*r1d[2][n]*u_brick_g[mz][my][mx];
ekz += r1d[0][l]*r1d[1][m]*dr1d[2][n]*u_brick_g[mz][my][mx];
}
}
}
ekx *= hx_inv;
eky *= hy_inv;
ekz *= hz_inv;
// convert E-field to force
type = atom->type[i];
lj = B[type];
s1 = x[i][0]*hx_inv;
s2 = x[i][1]*hy_inv;
s3 = x[i][2]*hz_inv;
sf = sf_coeff_6[0]*sin(2*MY_PI*s1);
sf += sf_coeff_6[1]*sin(4*MY_PI*s1);
sf *= 2*lj*lj;
f[i][0] += ekx*lj - sf;
sf = sf_coeff_6[2]*sin(2*MY_PI*s2);
sf += sf_coeff_6[3]*sin(4*MY_PI*s2);
sf *= 2*lj*lj;
f[i][1] += eky*lj - sf;
sf = sf_coeff_6[4]*sin(2*MY_PI*s3);
sf += sf_coeff_6[5]*sin(4*MY_PI*s3);
sf *= 2*lj*lj;
if (slabflag != 2) f[i][2] += ekz*lj - sf;
}
}
thr->timer(Timer::KSPACE);
} // end of parallel region
}
/* ----------------------------------------------------------------------
interpolate from grid to get per-atom energy/virial for dispersion
interaction and geometric mixing rule
------------------------------------------------------------------------- */
void PPPMDispOMP::fieldforce_g_peratom()
{
const int nlocal = atom->nlocal;
// no local atoms => nothing to do
if (nlocal == 0) return;
// loop over my charges, interpolate from nearby grid points
// (nx,ny,nz) = global coords of grid pt to "lower left" of charge
// (dx,dy,dz) = distance to "lower left" grid pt
// (mx,my,mz) = global coords of moving stencil pt
const double * const * const x = atom->x;
#if defined(_OPENMP)
const int nthreads = comm->nthreads;
#pragma omp parallel default(none)
#endif
{
#if defined(_OPENMP)
// each thread works on a fixed chunk of atoms.
const int tid = omp_get_thread_num();
const int inum = nlocal;
const int idelta = 1 + inum/nthreads;
const int ifrom = tid*idelta;
const int ito = ((ifrom + idelta) > inum) ? inum : ifrom + idelta;
#else
const int ifrom = 0;
const int ito = nlocal;
const int tid = 0;
#endif
ThrData *thr = fix->get_thr(tid);
thr->timer(Timer::START);
FFT_SCALAR * const * const r1d = static_cast<FFT_SCALAR **>(thr->get_rho1d_6());
int l,m,n,nx,ny,nz,mx,my,mz;
FFT_SCALAR dx,dy,dz,x0,y0,z0;
FFT_SCALAR u,v0,v1,v2,v3,v4,v5;
int type;
double lj;
// this if protects against having more threads than local atoms
if (ifrom < nlocal) {
for (int i = ifrom; i < ito; i++) {
nx = part2grid_6[i][0];
ny = part2grid_6[i][1];
nz = part2grid_6[i][2];
dx = nx+shiftone_6 - (x[i][0]-boxlo[0])*delxinv_6;
dy = ny+shiftone_6 - (x[i][1]-boxlo[1])*delyinv_6;
dz = nz+shiftone_6 - (x[i][2]-boxlo[2])*delzinv_6;
compute_rho1d_thr(r1d,dx,dy,dz, order_6, rho_coeff_6);
u = v0 = v1 = v2 = v3 = v4 = v5 = ZEROF;
for (n = nlower_6; n <= nupper_6; n++) {
mz = n+nz;
z0 = r1d[2][n];
for (m = nlower_6; m <= nupper_6; m++) {
my = m+ny;
y0 = z0*r1d[1][m];
for (l = nlower_6; l <= nupper_6; l++) {
mx = l+nx;
x0 = y0*r1d[0][l];
if (eflag_atom) u += x0*u_brick_g[mz][my][mx];
if (vflag_atom) {
v0 += x0*v0_brick_g[mz][my][mx];
v1 += x0*v1_brick_g[mz][my][mx];
v2 += x0*v2_brick_g[mz][my][mx];
v3 += x0*v3_brick_g[mz][my][mx];
v4 += x0*v4_brick_g[mz][my][mx];
v5 += x0*v5_brick_g[mz][my][mx];
}
}
}
}
type = atom->type[i];
lj = B[type]*0.5;
if (eflag_atom) eatom[i] += u*lj;
if (vflag_atom) {
vatom[i][0] += v0*lj;
vatom[i][1] += v1*lj;
vatom[i][2] += v2*lj;
vatom[i][3] += v3*lj;
vatom[i][4] += v4*lj;
vatom[i][5] += v5*lj;
}
}
}
thr->timer(Timer::KSPACE);
} // end of parallel region
}
/* ----------------------------------------------------------------------
interpolate from grid to get dispersion field & force on my particles
for ik scheme and arithmetic mixing rule
------------------------------------------------------------------------- */
void PPPMDispOMP::fieldforce_a_ik()
{
const int nlocal = atom->nlocal;
// no local atoms => nothing to do
if (nlocal == 0) return;
// loop over my charges, interpolate electric field from nearby grid points
// (nx,ny,nz) = global coords of grid pt to "lower left" of charge
// (dx,dy,dz) = distance to "lower left" grid pt
// (mx,my,mz) = global coords of moving stencil pt
// ek = 3 components of E-field on particle
const double * const * const x = atom->x;
#if defined(_OPENMP)
const int nthreads = comm->nthreads;
#pragma omp parallel default(none)
#endif
{
#if defined(_OPENMP)
// each thread works on a fixed chunk of atoms.
const int tid = omp_get_thread_num();
const int inum = nlocal;
const int idelta = 1 + inum/nthreads;
const int ifrom = tid*idelta;
const int ito = ((ifrom + idelta) > inum) ? inum : ifrom + idelta;
#else
const int ifrom = 0;
const int ito = nlocal;
const int tid = 0;
#endif
ThrData *thr = fix->get_thr(tid);
thr->timer(Timer::START);
double * const * const f = thr->get_f();
FFT_SCALAR * const * const r1d = static_cast<FFT_SCALAR **>(thr->get_rho1d_6());
int l,m,n,nx,ny,nz,mx,my,mz;
FFT_SCALAR dx,dy,dz,x0,y0,z0;
FFT_SCALAR ekx0, eky0, ekz0, ekx1, eky1, ekz1, ekx2, eky2, ekz2;
FFT_SCALAR ekx3, eky3, ekz3, ekx4, eky4, ekz4, ekx5, eky5, ekz5;
FFT_SCALAR ekx6, eky6, ekz6;
int type;
double lj0,lj1,lj2,lj3,lj4,lj5,lj6;
// this if protects against having more threads than local atoms
if (ifrom < nlocal) {
for (int i = ifrom; i < ito; i++) {
nx = part2grid_6[i][0];
ny = part2grid_6[i][1];
nz = part2grid_6[i][2];
dx = nx+shiftone_6 - (x[i][0]-boxlo[0])*delxinv_6;
dy = ny+shiftone_6 - (x[i][1]-boxlo[1])*delyinv_6;
dz = nz+shiftone_6 - (x[i][2]-boxlo[2])*delzinv_6;
compute_rho1d_thr(r1d,dx,dy,dz, order_6, rho_coeff_6);
ekx0 = eky0 = ekz0 = ZEROF;
ekx1 = eky1 = ekz1 = ZEROF;
ekx2 = eky2 = ekz2 = ZEROF;
ekx3 = eky3 = ekz3 = ZEROF;
ekx4 = eky4 = ekz4 = ZEROF;
ekx5 = eky5 = ekz5 = ZEROF;
ekx6 = eky6 = ekz6 = ZEROF;
for (n = nlower_6; n <= nupper_6; n++) {
mz = n+nz;
z0 = r1d[2][n];
for (m = nlower_6; m <= nupper_6; m++) {
my = m+ny;
y0 = z0*r1d[1][m];
for (l = nlower_6; l <= nupper_6; l++) {
mx = l+nx;
x0 = y0*r1d[0][l];
ekx0 -= x0*vdx_brick_a0[mz][my][mx];
eky0 -= x0*vdy_brick_a0[mz][my][mx];
ekz0 -= x0*vdz_brick_a0[mz][my][mx];
ekx1 -= x0*vdx_brick_a1[mz][my][mx];
eky1 -= x0*vdy_brick_a1[mz][my][mx];
ekz1 -= x0*vdz_brick_a1[mz][my][mx];
ekx2 -= x0*vdx_brick_a2[mz][my][mx];
eky2 -= x0*vdy_brick_a2[mz][my][mx];
ekz2 -= x0*vdz_brick_a2[mz][my][mx];
ekx3 -= x0*vdx_brick_a3[mz][my][mx];
eky3 -= x0*vdy_brick_a3[mz][my][mx];
ekz3 -= x0*vdz_brick_a3[mz][my][mx];
ekx4 -= x0*vdx_brick_a4[mz][my][mx];
eky4 -= x0*vdy_brick_a4[mz][my][mx];
ekz4 -= x0*vdz_brick_a4[mz][my][mx];
ekx5 -= x0*vdx_brick_a5[mz][my][mx];
eky5 -= x0*vdy_brick_a5[mz][my][mx];
ekz5 -= x0*vdz_brick_a5[mz][my][mx];
ekx6 -= x0*vdx_brick_a6[mz][my][mx];
eky6 -= x0*vdy_brick_a6[mz][my][mx];
ekz6 -= x0*vdz_brick_a6[mz][my][mx];
}
}
}
// convert D-field to force
type = atom->type[i];
lj0 = B[7*type+6];
lj1 = B[7*type+5];
lj2 = B[7*type+4];
lj3 = B[7*type+3];
lj4 = B[7*type+2];
lj5 = B[7*type+1];
lj6 = B[7*type];
f[i][0] += lj0*ekx0 + lj1*ekx1 + lj2*ekx2 + lj3*ekx3 + lj4*ekx4 + lj5*ekx5 + lj6*ekx6;
f[i][1] += lj0*eky0 + lj1*eky1 + lj2*eky2 + lj3*eky3 + lj4*eky4 + lj5*eky5 + lj6*eky6;
f[i][2] += lj0*ekz0 + lj1*ekz1 + lj2*ekz2 + lj3*ekz3 + lj4*ekz4 + lj5*ekz5 + lj6*ekz6;
}
}
thr->timer(Timer::KSPACE);
} // end of parallel region
}
/* ----------------------------------------------------------------------
interpolate from grid to get dispersion field & force on my particles
for ad scheme and arithmetic mixing rule
------------------------------------------------------------------------- */
void PPPMDispOMP::fieldforce_a_ad()
{
const int nlocal = atom->nlocal;
// no local atoms => nothing to do
if (nlocal == 0) return;
// loop over my charges, interpolate electric field from nearby grid points
// (nx,ny,nz) = global coords of grid pt to "lower left" of charge
// (dx,dy,dz) = distance to "lower left" grid pt
// (mx,my,mz) = global coords of moving stencil pt
// ek = 3 components of E-field on particle
const double * const * const x = atom->x;
double *prd;
if (triclinic == 0) prd = domain->prd;
else prd = domain->prd_lamda;
double xprd = prd[0];
double yprd = prd[1];
double zprd = prd[2];
double zprd_slab = zprd*slab_volfactor;
const double hx_inv = nx_pppm_6/xprd;
const double hy_inv = ny_pppm_6/yprd;
const double hz_inv = nz_pppm_6/zprd_slab;
#if defined(_OPENMP)
const int nthreads = comm->nthreads;
#pragma omp parallel default(none)
#endif
{
#if defined(_OPENMP)
// each thread works on a fixed chunk of atoms.
const int tid = omp_get_thread_num();
const int inum = nlocal;
const int idelta = 1 + inum/nthreads;
const int ifrom = tid*idelta;
const int ito = ((ifrom + idelta) > inum) ? inum : ifrom + idelta;
#else
const int ifrom = 0;
const int ito = nlocal;
const int tid = 0;
#endif
ThrData *thr = fix->get_thr(tid);
thr->timer(Timer::START);
double * const * const f = thr->get_f();
FFT_SCALAR * const * const r1d = static_cast<FFT_SCALAR **>(thr->get_rho1d_6());
FFT_SCALAR * const * const dr1d = static_cast<FFT_SCALAR **>(thr->get_drho1d_6());
int l,m,n,nx,ny,nz,mx,my,mz;
FFT_SCALAR dx,dy,dz,x0,y0,z0;
FFT_SCALAR ekx0, eky0, ekz0, ekx1, eky1, ekz1, ekx2, eky2, ekz2;
FFT_SCALAR ekx3, eky3, ekz3, ekx4, eky4, ekz4, ekx5, eky5, ekz5;
FFT_SCALAR ekx6, eky6, ekz6;
int type;
double lj0,lj1,lj2,lj3,lj4,lj5,lj6;
double sf = 0.0;
double s1,s2,s3;
// this if protects against having more threads than local atoms
if (ifrom < nlocal) {
for (int i = ifrom; i < ito; i++) {
nx = part2grid_6[i][0];
ny = part2grid_6[i][1];
nz = part2grid_6[i][2];
dx = nx+shiftone_6 - (x[i][0]-boxlo[0])*delxinv_6;
dy = ny+shiftone_6 - (x[i][1]-boxlo[1])*delyinv_6;
dz = nz+shiftone_6 - (x[i][2]-boxlo[2])*delzinv_6;
compute_rho1d_thr(r1d,dx,dy,dz, order_6, rho_coeff_6);
compute_drho1d_thr(dr1d,dx,dy,dz, order_6, drho_coeff_6);
ekx0 = eky0 = ekz0 = ZEROF;
ekx1 = eky1 = ekz1 = ZEROF;
ekx2 = eky2 = ekz2 = ZEROF;
ekx3 = eky3 = ekz3 = ZEROF;
ekx4 = eky4 = ekz4 = ZEROF;
ekx5 = eky5 = ekz5 = ZEROF;
ekx6 = eky6 = ekz6 = ZEROF;
for (n = nlower_6; n <= nupper_6; n++) {
mz = n+nz;
for (m = nlower_6; m <= nupper_6; m++) {
my = m+ny;
for (l = nlower_6; l <= nupper_6; l++) {
mx = l+nx;
x0 = dr1d[0][l]*r1d[1][m]*r1d[2][n];
y0 = r1d[0][l]*dr1d[1][m]*r1d[2][n];
z0 = r1d[0][l]*r1d[1][m]*dr1d[2][n];
ekx0 += x0*u_brick_a0[mz][my][mx];
eky0 += y0*u_brick_a0[mz][my][mx];
ekz0 += z0*u_brick_a0[mz][my][mx];
ekx1 += x0*u_brick_a1[mz][my][mx];
eky1 += y0*u_brick_a1[mz][my][mx];
ekz1 += z0*u_brick_a1[mz][my][mx];
ekx2 += x0*u_brick_a2[mz][my][mx];
eky2 += y0*u_brick_a2[mz][my][mx];
ekz2 += z0*u_brick_a2[mz][my][mx];
ekx3 += x0*u_brick_a3[mz][my][mx];
eky3 += y0*u_brick_a3[mz][my][mx];
ekz3 += z0*u_brick_a3[mz][my][mx];
ekx4 += x0*u_brick_a4[mz][my][mx];
eky4 += y0*u_brick_a4[mz][my][mx];
ekz4 += z0*u_brick_a4[mz][my][mx];
ekx5 += x0*u_brick_a5[mz][my][mx];
eky5 += y0*u_brick_a5[mz][my][mx];
ekz5 += z0*u_brick_a5[mz][my][mx];
ekx6 += x0*u_brick_a6[mz][my][mx];
eky6 += y0*u_brick_a6[mz][my][mx];
ekz6 += z0*u_brick_a6[mz][my][mx];
}
}
}
ekx0 *= hx_inv;
eky0 *= hy_inv;
ekz0 *= hz_inv;
ekx1 *= hx_inv;
eky1 *= hy_inv;
ekz1 *= hz_inv;
ekx2 *= hx_inv;
eky2 *= hy_inv;
ekz2 *= hz_inv;
ekx3 *= hx_inv;
eky3 *= hy_inv;
ekz3 *= hz_inv;
ekx4 *= hx_inv;
eky4 *= hy_inv;
ekz4 *= hz_inv;
ekx5 *= hx_inv;
eky5 *= hy_inv;
ekz5 *= hz_inv;
ekx6 *= hx_inv;
eky6 *= hy_inv;
ekz6 *= hz_inv;
// convert D-field to force
type = atom->type[i];
lj0 = B[7*type+6];
lj1 = B[7*type+5];
lj2 = B[7*type+4];
lj3 = B[7*type+3];
lj4 = B[7*type+2];
lj5 = B[7*type+1];
lj6 = B[7*type];
s1 = x[i][0]*hx_inv;
s2 = x[i][1]*hy_inv;
s3 = x[i][2]*hz_inv;
sf = sf_coeff_6[0]*sin(2*MY_PI*s1);
sf += sf_coeff_6[1]*sin(4*MY_PI*s1);
sf *= 4*lj0*lj6 + 4*lj1*lj5 + 4*lj2*lj4 + 2*lj3*lj3;
f[i][0] += lj0*ekx0 + lj1*ekx1 + lj2*ekx2 + lj3*ekx3 + lj4*ekx4 + lj5*ekx5 + lj6*ekx6 - sf;
sf = sf_coeff_6[2]*sin(2*MY_PI*s2);
sf += sf_coeff_6[3]*sin(4*MY_PI*s2);
sf *= 4*lj0*lj6 + 4*lj1*lj5 + 4*lj2*lj4 + 2*lj3*lj3;
f[i][1] += lj0*eky0 + lj1*eky1 + lj2*eky2 + lj3*eky3 + lj4*eky4 + lj5*eky5 + lj6*eky6 - sf;
sf = sf_coeff_6[4]*sin(2*MY_PI*s3);
sf += sf_coeff_6[5]*sin(4*MY_PI*s3);
sf *= 4*lj0*lj6 + 4*lj1*lj5 + 4*lj2*lj4 + 2*lj3*lj3;
if (slabflag != 2) f[i][2] += lj0*ekz0 + lj1*ekz1 + lj2*ekz2 + lj3*ekz3 + lj4*ekz4 + lj5*ekz5 + lj6*ekz6 - sf;
}
}
thr->timer(Timer::KSPACE);
} // end of parallel region
}
/* ----------------------------------------------------------------------
interpolate from grid to get per-atom energy/virial for dispersion
interaction and arithmetic mixing rule
------------------------------------------------------------------------- */
void PPPMDispOMP::fieldforce_a_peratom()
{
const int nlocal = atom->nlocal;
// no local atoms => nothing to do
if (nlocal == 0) return;
// loop over my charges, interpolate from nearby grid points
// (nx,ny,nz) = global coords of grid pt to "lower left" of charge
// (dx,dy,dz) = distance to "lower left" grid pt
// (mx,my,mz) = global coords of moving stencil pt
const double * const * const x = atom->x;
#if defined(_OPENMP)
const int nthreads = comm->nthreads;
#pragma omp parallel default(none)
#endif
{
#if defined(_OPENMP)
// each thread works on a fixed chunk of atoms.
const int tid = omp_get_thread_num();
const int inum = nlocal;
const int idelta = 1 + inum/nthreads;
const int ifrom = tid*idelta;
const int ito = ((ifrom + idelta) > inum) ? inum : ifrom + idelta;
#else
const int ifrom = 0;
const int ito = nlocal;
const int tid = 0;
#endif
ThrData *thr = fix->get_thr(tid);
thr->timer(Timer::START);
FFT_SCALAR * const * const r1d = static_cast<FFT_SCALAR **>(thr->get_rho1d_6());
int l,m,n,nx,ny,nz,mx,my,mz;
FFT_SCALAR dx,dy,dz,x0,y0,z0;
FFT_SCALAR u0,v00,v10,v20,v30,v40,v50;
FFT_SCALAR u1,v01,v11,v21,v31,v41,v51;
FFT_SCALAR u2,v02,v12,v22,v32,v42,v52;
FFT_SCALAR u3,v03,v13,v23,v33,v43,v53;
FFT_SCALAR u4,v04,v14,v24,v34,v44,v54;
FFT_SCALAR u5,v05,v15,v25,v35,v45,v55;
FFT_SCALAR u6,v06,v16,v26,v36,v46,v56;
int type;
double lj0,lj1,lj2,lj3,lj4,lj5,lj6;
// this if protects against having more threads than local atoms
if (ifrom < nlocal) {
for (int i = ifrom; i < ito; i++) {
nx = part2grid_6[i][0];
ny = part2grid_6[i][1];
nz = part2grid_6[i][2];
dx = nx+shiftone_6 - (x[i][0]-boxlo[0])*delxinv_6;
dy = ny+shiftone_6 - (x[i][1]-boxlo[1])*delyinv_6;
dz = nz+shiftone_6 - (x[i][2]-boxlo[2])*delzinv_6;
compute_rho1d_thr(r1d,dx,dy,dz, order_6, rho_coeff_6);
u0 = v00 = v10 = v20 = v30 = v40 = v50 = ZEROF;
u1 = v01 = v11 = v21 = v31 = v41 = v51 = ZEROF;
u2 = v02 = v12 = v22 = v32 = v42 = v52 = ZEROF;
u3 = v03 = v13 = v23 = v33 = v43 = v53 = ZEROF;
u4 = v04 = v14 = v24 = v34 = v44 = v54 = ZEROF;
u5 = v05 = v15 = v25 = v35 = v45 = v55 = ZEROF;
u6 = v06 = v16 = v26 = v36 = v46 = v56 = ZEROF;
for (n = nlower_6; n <= nupper_6; n++) {
mz = n+nz;
z0 = r1d[2][n];
for (m = nlower_6; m <= nupper_6; m++) {
my = m+ny;
y0 = z0*r1d[1][m];
for (l = nlower_6; l <= nupper_6; l++) {
mx = l+nx;
x0 = y0*r1d[0][l];
if (eflag_atom) {
u0 += x0*u_brick_a0[mz][my][mx];
u1 += x0*u_brick_a1[mz][my][mx];
u2 += x0*u_brick_a2[mz][my][mx];
u3 += x0*u_brick_a3[mz][my][mx];
u4 += x0*u_brick_a4[mz][my][mx];
u5 += x0*u_brick_a5[mz][my][mx];
u6 += x0*u_brick_a6[mz][my][mx];
}
if (vflag_atom) {
v00 += x0*v0_brick_a0[mz][my][mx];
v10 += x0*v1_brick_a0[mz][my][mx];
v20 += x0*v2_brick_a0[mz][my][mx];
v30 += x0*v3_brick_a0[mz][my][mx];
v40 += x0*v4_brick_a0[mz][my][mx];
v50 += x0*v5_brick_a0[mz][my][mx];
v01 += x0*v0_brick_a1[mz][my][mx];
v11 += x0*v1_brick_a1[mz][my][mx];
v21 += x0*v2_brick_a1[mz][my][mx];
v31 += x0*v3_brick_a1[mz][my][mx];
v41 += x0*v4_brick_a1[mz][my][mx];
v51 += x0*v5_brick_a1[mz][my][mx];
v02 += x0*v0_brick_a2[mz][my][mx];
v12 += x0*v1_brick_a2[mz][my][mx];
v22 += x0*v2_brick_a2[mz][my][mx];
v32 += x0*v3_brick_a2[mz][my][mx];
v42 += x0*v4_brick_a2[mz][my][mx];
v52 += x0*v5_brick_a2[mz][my][mx];
v03 += x0*v0_brick_a3[mz][my][mx];
v13 += x0*v1_brick_a3[mz][my][mx];
v23 += x0*v2_brick_a3[mz][my][mx];
v33 += x0*v3_brick_a3[mz][my][mx];
v43 += x0*v4_brick_a3[mz][my][mx];
v53 += x0*v5_brick_a3[mz][my][mx];
v04 += x0*v0_brick_a4[mz][my][mx];
v14 += x0*v1_brick_a4[mz][my][mx];
v24 += x0*v2_brick_a4[mz][my][mx];
v34 += x0*v3_brick_a4[mz][my][mx];
v44 += x0*v4_brick_a4[mz][my][mx];
v54 += x0*v5_brick_a4[mz][my][mx];
v05 += x0*v0_brick_a5[mz][my][mx];
v15 += x0*v1_brick_a5[mz][my][mx];
v25 += x0*v2_brick_a5[mz][my][mx];
v35 += x0*v3_brick_a5[mz][my][mx];
v45 += x0*v4_brick_a5[mz][my][mx];
v55 += x0*v5_brick_a5[mz][my][mx];
v06 += x0*v0_brick_a6[mz][my][mx];
v16 += x0*v1_brick_a6[mz][my][mx];
v26 += x0*v2_brick_a6[mz][my][mx];
v36 += x0*v3_brick_a6[mz][my][mx];
v46 += x0*v4_brick_a6[mz][my][mx];
v56 += x0*v5_brick_a6[mz][my][mx];
}
}
}
}
// convert D-field to force
type = atom->type[i];
lj0 = B[7*type+6]*0.5;
lj1 = B[7*type+5]*0.5;
lj2 = B[7*type+4]*0.5;
lj3 = B[7*type+3]*0.5;
lj4 = B[7*type+2]*0.5;
lj5 = B[7*type+1]*0.5;
lj6 = B[7*type]*0.5;
if (eflag_atom)
eatom[i] += u0*lj0 + u1*lj1 + u2*lj2 +
u3*lj3 + u4*lj4 + u5*lj5 + u6*lj6;
if (vflag_atom) {
vatom[i][0] += v00*lj0 + v01*lj1 + v02*lj2 + v03*lj3 +
v04*lj4 + v05*lj5 + v06*lj6;
vatom[i][1] += v10*lj0 + v11*lj1 + v12*lj2 + v13*lj3 +
v14*lj4 + v15*lj5 + v16*lj6;
vatom[i][2] += v20*lj0 + v21*lj1 + v22*lj2 + v23*lj3 +
v24*lj4 + v25*lj5 + v26*lj6;
vatom[i][3] += v30*lj0 + v31*lj1 + v32*lj2 + v33*lj3 +
v34*lj4 + v35*lj5 + v36*lj6;
vatom[i][4] += v40*lj0 + v41*lj1 + v42*lj2 + v43*lj3 +
v44*lj4 + v45*lj5 + v46*lj6;
vatom[i][5] += v50*lj0 + v51*lj1 + v52*lj2 + v53*lj3 +
v54*lj4 + v55*lj5 + v56*lj6;
}
}
}
thr->timer(Timer::KSPACE);
} // end of parallel region
}
/* ----------------------------------------------------------------------
charge assignment into rho1d
dx,dy,dz = distance of particle from "lower left" grid point
------------------------------------------------------------------------- */
void PPPMDispOMP::compute_rho1d_thr(FFT_SCALAR * const * const r1d, const FFT_SCALAR &dx,
const FFT_SCALAR &dy, const FFT_SCALAR &dz,
const int ord, FFT_SCALAR * const * const rho_c)
{
int k,l;
FFT_SCALAR r1,r2,r3;
for (k = (1-ord)/2; k <= ord/2; k++) {
r1 = r2 = r3 = ZEROF;
for (l = ord-1; l >= 0; l--) {
r1 = rho_c[l][k] + r1*dx;
r2 = rho_c[l][k] + r2*dy;
r3 = rho_c[l][k] + r3*dz;
}
r1d[0][k] = r1;
r1d[1][k] = r2;
r1d[2][k] = r3;
}
}
/* ----------------------------------------------------------------------
charge assignment into drho1d
dx,dy,dz = distance of particle from "lower left" grid point
------------------------------------------------------------------------- */
void PPPMDispOMP::compute_drho1d_thr(FFT_SCALAR * const * const dr1d, const FFT_SCALAR &dx,
const FFT_SCALAR &dy, const FFT_SCALAR &dz,
const int ord, FFT_SCALAR * const * const drho_c)
{
int k,l;
FFT_SCALAR r1,r2,r3;
for (k = (1-ord)/2; k <= ord/2; k++) {
r1 = r2 = r3 = ZEROF;
for (l = ord-2; l >= 0; l--) {
r1 = drho_c[l][k] + r1*dx;
r2 = drho_c[l][k] + r2*dy;
r3 = drho_c[l][k] + r3*dz;
}
dr1d[0][k] = r1;
dr1d[1][k] = r2;
dr1d[2][k] = r3;
}
}
diff --git a/src/USER-OMP/thr_data.cpp b/src/USER-OMP/thr_data.cpp
index cc184d9d6..0e9eafb2f 100644
--- a/src/USER-OMP/thr_data.cpp
+++ b/src/USER-OMP/thr_data.cpp
@@ -1,369 +1,369 @@
/* -------------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
- per-thread data management for LAMMPS
Contributing author: Axel Kohlmeyer (Temple U)
+ per-thread data management for LAMMPS
------------------------------------------------------------------------- */
#include "thr_data.h"
#include <string.h>
#include <stdio.h>
#include "memory.h"
#include "timer.h"
using namespace LAMMPS_NS;
/* ---------------------------------------------------------------------- */
ThrData::ThrData(int tid, Timer *t)
: _f(0),_torque(0),_erforce(0),_de(0),_drho(0),_mu(0),_lambda(0),_rhoB(0),
_D_values(0),_rho(0),_fp(0),_rho1d(0),_drho1d(0),_tid(tid), _timer(t)
{
_timer_active = 0;
}
/* ---------------------------------------------------------------------- */
void ThrData::check_tid(int tid)
{
if (tid != _tid)
fprintf(stderr,"WARNING: external and internal tid mismatch %d != %d\n",tid,_tid);
}
/* ---------------------------------------------------------------------- */
void ThrData::_stamp(enum Timer::ttype flag)
{
// do nothing until it gets set to 0 in ::setup()
if (_timer_active < 0) return;
if (flag == Timer::START) {
_timer_active = 1;
}
if (_timer_active) _timer->stamp(flag);
}
/* ---------------------------------------------------------------------- */
double ThrData::get_time(enum Timer::ttype flag)
{
if (_timer)
return _timer->get_wall(flag);
else
return 0.0;
}
/* ---------------------------------------------------------------------- */
void ThrData::init_force(int nall, double **f, double **torque,
double *erforce, double *de, double *drho)
{
eng_vdwl=eng_coul=eng_bond=eng_angle=eng_dihed=eng_imprp=eng_kspce=0.0;
memset(virial_pair,0,6*sizeof(double));
memset(virial_bond,0,6*sizeof(double));
memset(virial_angle,0,6*sizeof(double));
memset(virial_dihed,0,6*sizeof(double));
memset(virial_imprp,0,6*sizeof(double));
memset(virial_kspce,0,6*sizeof(double));
eatom_pair=eatom_bond=eatom_angle=eatom_dihed=eatom_imprp=eatom_kspce=NULL;
vatom_pair=vatom_bond=vatom_angle=vatom_dihed=vatom_imprp=vatom_kspce=NULL;
if (nall >= 0 && f) {
_f = f + _tid*nall;
memset(&(_f[0][0]),0,nall*3*sizeof(double));
} else _f = NULL;
if (nall >= 0 && torque) {
_torque = torque + _tid*nall;
memset(&(_torque[0][0]),0,nall*3*sizeof(double));
} else _torque = NULL;
if (nall >= 0 && erforce) {
_erforce = erforce + _tid*nall;
memset(&(_erforce[0]),0,nall*sizeof(double));
} else _erforce = NULL;
if (nall >= 0 && de) {
_de = de + _tid*nall;
memset(&(_de[0]),0,nall*sizeof(double));
} else _de = NULL;
if (nall >= 0 && drho) {
_drho = drho + _tid*nall;
memset(&(_drho[0]),0,nall*sizeof(double));
} else _drho = NULL;
}
/* ----------------------------------------------------------------------
set up and clear out locally managed per atom arrays
------------------------------------------------------------------------- */
void ThrData::init_eam(int nall, double *rho)
{
if (nall >= 0 && rho) {
_rho = rho + _tid*nall;
memset(_rho, 0, nall*sizeof(double));
}
}
/* ---------------------------------------------------------------------- */
void ThrData::init_adp(int nall, double *rho, double **mu, double **lambda)
{
init_eam(nall, rho);
if (nall >= 0 && mu && lambda) {
_mu = mu + _tid*nall;
_lambda = lambda + _tid*nall;
memset(&(_mu[0][0]), 0, nall*3*sizeof(double));
memset(&(_lambda[0][0]), 0, nall*6*sizeof(double));
}
}
/* ---------------------------------------------------------------------- */
void ThrData::init_cdeam(int nall, double *rho, double *rhoB, double *D_values)
{
init_eam(nall, rho);
if (nall >= 0 && rhoB && D_values) {
_rhoB = rhoB + _tid*nall;
_D_values = D_values + _tid*nall;
memset(_rhoB, 0, nall*sizeof(double));
memset(_D_values, 0, nall*sizeof(double));
}
}
/* ---------------------------------------------------------------------- */
void ThrData::init_eim(int nall, double *rho, double *fp)
{
init_eam(nall, rho);
if (nall >= 0 && fp) {
_fp = fp + _tid*nall;
memset(_fp,0,nall*sizeof(double));
}
}
/* ----------------------------------------------------------------------
if order > 0 : set up per thread storage for PPPM
if order < 0 : free per thread storage for PPPM
------------------------------------------------------------------------- */
#if defined(FFT_SINGLE)
typedef float FFT_SCALAR;
#else
typedef double FFT_SCALAR;
#endif
void ThrData::init_pppm(int order, Memory *memory)
{
FFT_SCALAR **rho1d, **drho1d;
if (order > 0) {
memory->create2d_offset(rho1d,3,-order/2,order/2,"thr_data:rho1d");
memory->create2d_offset(drho1d,3,-order/2,order/2,"thr_data:drho1d");
_rho1d = static_cast<void *>(rho1d);
_drho1d = static_cast<void *>(drho1d);
} else {
order = -order;
rho1d = static_cast<FFT_SCALAR **>(_rho1d);
drho1d = static_cast<FFT_SCALAR **>(_drho1d);
memory->destroy2d_offset(rho1d,-order/2);
memory->destroy2d_offset(drho1d,-order/2);
}
}
/* ----------------------------------------------------------------------
if order > 0 : set up per thread storage for PPPM
if order < 0 : free per thread storage for PPPM
------------------------------------------------------------------------- */
#if defined(FFT_SINGLE)
typedef float FFT_SCALAR;
#else
typedef double FFT_SCALAR;
#endif
void ThrData::init_pppm_disp(int order_6, Memory *memory)
{
FFT_SCALAR **rho1d_6, **drho1d_6;
if (order_6 > 0) {
memory->create2d_offset(rho1d_6,3,-order_6/2,order_6/2,"thr_data:rho1d_6");
memory->create2d_offset(drho1d_6,3,-order_6/2,order_6/2,"thr_data:drho1d_6");
_rho1d_6 = static_cast<void *>(rho1d_6);
_drho1d_6 = static_cast<void *>(drho1d_6);
} else {
order_6 = -order_6;
rho1d_6 = static_cast<FFT_SCALAR **>(_rho1d_6);
drho1d_6 = static_cast<FFT_SCALAR **>(_drho1d_6);
memory->destroy2d_offset(rho1d_6,-order_6/2);
memory->destroy2d_offset(drho1d_6,-order_6/2);
}
}
/* ----------------------------------------------------------------------
compute global pair virial via summing F dot r over own & ghost atoms
at this point, only pairwise forces have been accumulated in atom->f
------------------------------------------------------------------------- */
void ThrData::virial_fdotr_compute(double **x, int nlocal, int nghost, int nfirst)
{
// sum over force on all particles including ghosts
if (nfirst < 0) {
int nall = nlocal + nghost;
for (int i = 0; i < nall; i++) {
virial_pair[0] += _f[i][0]*x[i][0];
virial_pair[1] += _f[i][1]*x[i][1];
virial_pair[2] += _f[i][2]*x[i][2];
virial_pair[3] += _f[i][1]*x[i][0];
virial_pair[4] += _f[i][2]*x[i][0];
virial_pair[5] += _f[i][2]*x[i][1];
}
// neighbor includegroup flag is set
// sum over force on initial nfirst particles and ghosts
} else {
int nall = nfirst;
for (int i = 0; i < nall; i++) {
virial_pair[0] += _f[i][0]*x[i][0];
virial_pair[1] += _f[i][1]*x[i][1];
virial_pair[2] += _f[i][2]*x[i][2];
virial_pair[3] += _f[i][1]*x[i][0];
virial_pair[4] += _f[i][2]*x[i][0];
virial_pair[5] += _f[i][2]*x[i][1];
}
nall = nlocal + nghost;
for (int i = nlocal; i < nall; i++) {
virial_pair[0] += _f[i][0]*x[i][0];
virial_pair[1] += _f[i][1]*x[i][1];
virial_pair[2] += _f[i][2]*x[i][2];
virial_pair[3] += _f[i][1]*x[i][0];
virial_pair[4] += _f[i][2]*x[i][0];
virial_pair[5] += _f[i][2]*x[i][1];
}
}
}
/* ---------------------------------------------------------------------- */
double ThrData::memory_usage()
{
double bytes = (7 + 6*6) * sizeof(double);
bytes += 2 * sizeof(double*);
bytes += 4 * sizeof(int);
return bytes;
}
/* additional helper functions */
// reduce per thread data into the first part of the data
// array that is used for the non-threaded parts and reset
// the temporary storage to 0.0. this routine depends on
// multi-dimensional arrays like force stored in this order
// x1,y1,z1,x2,y2,z2,...
// we need to post a barrier to wait until all threads are done
// with writing to the array .
void LAMMPS_NS::data_reduce_thr(double *dall, int nall, int nthreads, int ndim, int tid)
{
#if defined(_OPENMP)
// NOOP in single-threaded execution.
if (nthreads == 1) return;
#pragma omp barrier
{
const int nvals = ndim*nall;
const int idelta = nvals/nthreads + 1;
const int ifrom = tid*idelta;
const int ito = ((ifrom + idelta) > nvals) ? nvals : (ifrom + idelta);
#if defined(USER_OMP_NO_UNROLL)
if (ifrom < nvals) {
int m = 0;
for (m = ifrom; m < ito; ++m) {
for (int n = 1; n < nthreads; ++n) {
dall[m] += dall[n*nvals + m];
dall[n*nvals + m] = 0.0;
}
}
}
#else
// this if protects against having more threads than atoms
if (ifrom < nvals) {
int m = 0;
// for architectures that have L1 D-cache line sizes of 64 bytes
// (8 doubles) wide, explictly unroll this loop to compute 8
// contiguous values in the array at a time
// -- modify this code based on the size of the cache line
double t0, t1, t2, t3, t4, t5, t6, t7;
for (m = ifrom; m < (ito-7); m+=8) {
t0 = dall[m ];
t1 = dall[m+1];
t2 = dall[m+2];
t3 = dall[m+3];
t4 = dall[m+4];
t5 = dall[m+5];
t6 = dall[m+6];
t7 = dall[m+7];
for (int n = 1; n < nthreads; ++n) {
t0 += dall[n*nvals + m ];
t1 += dall[n*nvals + m+1];
t2 += dall[n*nvals + m+2];
t3 += dall[n*nvals + m+3];
t4 += dall[n*nvals + m+4];
t5 += dall[n*nvals + m+5];
t6 += dall[n*nvals + m+6];
t7 += dall[n*nvals + m+7];
dall[n*nvals + m ] = 0.0;
dall[n*nvals + m+1] = 0.0;
dall[n*nvals + m+2] = 0.0;
dall[n*nvals + m+3] = 0.0;
dall[n*nvals + m+4] = 0.0;
dall[n*nvals + m+5] = 0.0;
dall[n*nvals + m+6] = 0.0;
dall[n*nvals + m+7] = 0.0;
}
dall[m ] = t0;
dall[m+1] = t1;
dall[m+2] = t2;
dall[m+3] = t3;
dall[m+4] = t4;
dall[m+5] = t5;
dall[m+6] = t6;
dall[m+7] = t7;
}
// do the last < 8 values
for (; m < ito; m++) {
for (int n = 1; n < nthreads; ++n) {
dall[m] += dall[n*nvals + m];
dall[n*nvals + m] = 0.0;
}
}
}
#endif
}
#else
// NOOP in non-threaded execution.
return;
#endif
}
diff --git a/src/USER-OMP/thr_omp.cpp b/src/USER-OMP/thr_omp.cpp
index 1aba7290a..1744a7738 100644
--- a/src/USER-OMP/thr_omp.cpp
+++ b/src/USER-OMP/thr_omp.cpp
@@ -1,1223 +1,1223 @@
/* -------------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
- OpenMP based threading support for LAMMPS
Contributing author: Axel Kohlmeyer (Temple U)
+ OpenMP based threading support for LAMMPS
------------------------------------------------------------------------- */
#include "atom.h"
#include "comm.h"
#include "error.h"
#include "force.h"
#include "memory.h"
#include "modify.h"
#include "neighbor.h"
#include "timer.h"
#include "thr_omp.h"
#include "pair.h"
#include "bond.h"
#include "angle.h"
#include "dihedral.h"
#include "improper.h"
#include "kspace.h"
#include "compute.h"
#include "math_const.h"
#include <string.h>
using namespace LAMMPS_NS;
using namespace MathConst;
/* ---------------------------------------------------------------------- */
ThrOMP::ThrOMP(LAMMPS *ptr, int style)
: lmp(ptr), fix(NULL), thr_style(style), thr_error(0)
{
// register fix omp with this class
int ifix = lmp->modify->find_fix("package_omp");
if (ifix < 0)
lmp->error->all(FLERR,"The 'package omp' command is required for /omp styles");
fix = static_cast<FixOMP *>(lmp->modify->fix[ifix]);
}
/* ---------------------------------------------------------------------- */
ThrOMP::~ThrOMP()
{
// nothing to do?
}
/* ----------------------------------------------------------------------
Hook up per thread per atom arrays into the tally infrastructure
---------------------------------------------------------------------- */
void ThrOMP::ev_setup_thr(int eflag, int vflag, int nall, double *eatom,
double **vatom, ThrData *thr)
{
const int tid = thr->get_tid();
if (tid == 0) thr_error = 0;
if (thr_style & THR_PAIR) {
if (eflag & 2) {
thr->eatom_pair = eatom + tid*nall;
if (nall > 0)
memset(&(thr->eatom_pair[0]),0,nall*sizeof(double));
}
if (vflag & 4) {
thr->vatom_pair = vatom + tid*nall;
if (nall > 0)
memset(&(thr->vatom_pair[0][0]),0,nall*6*sizeof(double));
}
}
if (thr_style & THR_BOND) {
if (eflag & 2) {
thr->eatom_bond = eatom + tid*nall;
if (nall > 0)
memset(&(thr->eatom_bond[0]),0,nall*sizeof(double));
}
if (vflag & 4) {
thr->vatom_bond = vatom + tid*nall;
if (nall > 0)
memset(&(thr->vatom_bond[0][0]),0,nall*6*sizeof(double));
}
}
if (thr_style & THR_ANGLE) {
if (eflag & 2) {
thr->eatom_angle = eatom + tid*nall;
if (nall > 0)
memset(&(thr->eatom_angle[0]),0,nall*sizeof(double));
}
if (vflag & 4) {
thr->vatom_angle = vatom + tid*nall;
if (nall > 0)
memset(&(thr->vatom_angle[0][0]),0,nall*6*sizeof(double));
}
}
if (thr_style & THR_DIHEDRAL) {
if (eflag & 2) {
thr->eatom_dihed = eatom + tid*nall;
if (nall > 0)
memset(&(thr->eatom_dihed[0]),0,nall*sizeof(double));
}
if (vflag & 4) {
thr->vatom_dihed = vatom + tid*nall;
if (nall > 0)
memset(&(thr->vatom_dihed[0][0]),0,nall*6*sizeof(double));
}
}
if (thr_style & THR_IMPROPER) {
if (eflag & 2) {
thr->eatom_imprp = eatom + tid*nall;
if (nall > 0)
memset(&(thr->eatom_imprp[0]),0,nall*sizeof(double));
}
if (vflag & 4) {
thr->vatom_imprp = vatom + tid*nall;
if (nall > 0)
memset(&(thr->vatom_imprp[0][0]),0,nall*6*sizeof(double));
}
}
// nothing to do for THR_KSPACE
}
/* ----------------------------------------------------------------------
Reduce per thread data into the regular structures
Reduction of global properties is serialized with a "critical"
directive, so that only one thread at a time will access the
global variables. Since we are not synchronized, this should
come with little overhead. The reduction of per-atom properties
in contrast is parallelized over threads in the same way as forces.
---------------------------------------------------------------------- */
void ThrOMP::reduce_thr(void *style, const int eflag, const int vflag,
ThrData *const thr)
{
const int nlocal = lmp->atom->nlocal;
const int nghost = lmp->atom->nghost;
const int nall = nlocal + nghost;
const int nfirst = lmp->atom->nfirst;
const int nthreads = lmp->comm->nthreads;
const int evflag = eflag | vflag;
const int tid = thr->get_tid();
double **f = lmp->atom->f;
double **x = lmp->atom->x;
int need_force_reduce = 1;
if (evflag)
sync_threads();
switch (thr_style) {
case THR_PAIR: {
Pair * const pair = lmp->force->pair;
if (pair->vflag_fdotr) {
// this is a non-hybrid pair style. compute per thread fdotr
if (fix->last_pair_hybrid == NULL) {
if (lmp->neighbor->includegroup == 0)
thr->virial_fdotr_compute(x, nlocal, nghost, -1);
else
thr->virial_fdotr_compute(x, nlocal, nghost, nfirst);
} else {
if (style == fix->last_pair_hybrid) {
// pair_style hybrid will compute fdotr for us
// but we first need to reduce the forces
data_reduce_thr(&(f[0][0]), nall, nthreads, 3, tid);
fix->did_reduce();
need_force_reduce = 0;
}
}
}
if (evflag) {
#if defined(_OPENMP)
#pragma omp critical
#endif
{
if (eflag & 1) {
pair->eng_vdwl += thr->eng_vdwl;
pair->eng_coul += thr->eng_coul;
thr->eng_vdwl = 0.0;
thr->eng_coul = 0.0;
}
if (vflag & 3)
for (int i=0; i < 6; ++i) {
pair->virial[i] += thr->virial_pair[i];
thr->virial_pair[i] = 0.0;
}
}
if (eflag & 2) {
data_reduce_thr(&(pair->eatom[0]), nall, nthreads, 1, tid);
}
if (vflag & 4) {
data_reduce_thr(&(pair->vatom[0][0]), nall, nthreads, 6, tid);
}
}
}
break;
case THR_BOND:
if (evflag) {
Bond * const bond = lmp->force->bond;
#if defined(_OPENMP)
#pragma omp critical
#endif
{
if (eflag & 1) {
bond->energy += thr->eng_bond;
thr->eng_bond = 0.0;
}
if (vflag & 3) {
for (int i=0; i < 6; ++i) {
bond->virial[i] += thr->virial_bond[i];
thr->virial_bond[i] = 0.0;
}
}
}
if (eflag & 2) {
data_reduce_thr(&(bond->eatom[0]), nall, nthreads, 1, tid);
}
if (vflag & 4) {
data_reduce_thr(&(bond->vatom[0][0]), nall, nthreads, 6, tid);
}
}
break;
case THR_ANGLE:
if (evflag) {
Angle * const angle = lmp->force->angle;
#if defined(_OPENMP)
#pragma omp critical
#endif
{
if (eflag & 1) {
angle->energy += thr->eng_angle;
thr->eng_angle = 0.0;
}
if (vflag & 3) {
for (int i=0; i < 6; ++i) {
angle->virial[i] += thr->virial_angle[i];
thr->virial_angle[i] = 0.0;
}
}
}
if (eflag & 2) {
data_reduce_thr(&(angle->eatom[0]), nall, nthreads, 1, tid);
}
if (vflag & 4) {
data_reduce_thr(&(angle->vatom[0][0]), nall, nthreads, 6, tid);
}
}
break;
case THR_DIHEDRAL:
if (evflag) {
Dihedral * const dihedral = lmp->force->dihedral;
#if defined(_OPENMP)
#pragma omp critical
#endif
{
if (eflag & 1) {
dihedral->energy += thr->eng_dihed;
thr->eng_dihed = 0.0;
}
if (vflag & 3) {
for (int i=0; i < 6; ++i) {
dihedral->virial[i] += thr->virial_dihed[i];
thr->virial_dihed[i] = 0.0;
}
}
}
if (eflag & 2) {
data_reduce_thr(&(dihedral->eatom[0]), nall, nthreads, 1, tid);
}
if (vflag & 4) {
data_reduce_thr(&(dihedral->vatom[0][0]), nall, nthreads, 6, tid);
}
}
break;
case THR_DIHEDRAL|THR_CHARMM: // special case for CHARMM dihedrals
if (evflag) {
Dihedral * const dihedral = lmp->force->dihedral;
Pair * const pair = lmp->force->pair;
#if defined(_OPENMP)
#pragma omp critical
#endif
{
if (eflag & 1) {
dihedral->energy += thr->eng_dihed;
pair->eng_vdwl += thr->eng_vdwl;
pair->eng_coul += thr->eng_coul;
thr->eng_dihed = 0.0;
thr->eng_vdwl = 0.0;
thr->eng_coul = 0.0;
}
if (vflag & 3) {
for (int i=0; i < 6; ++i) {
dihedral->virial[i] += thr->virial_dihed[i];
pair->virial[i] += thr->virial_pair[i];
thr->virial_dihed[i] = 0.0;
thr->virial_pair[i] = 0.0;
}
}
}
if (eflag & 2) {
data_reduce_thr(&(dihedral->eatom[0]), nall, nthreads, 1, tid);
data_reduce_thr(&(pair->eatom[0]), nall, nthreads, 1, tid);
}
if (vflag & 4) {
data_reduce_thr(&(dihedral->vatom[0][0]), nall, nthreads, 6, tid);
data_reduce_thr(&(pair->vatom[0][0]), nall, nthreads, 6, tid);
}
}
break;
case THR_IMPROPER:
if (evflag) {
Improper *improper = lmp->force->improper;
#if defined(_OPENMP)
#pragma omp critical
#endif
{
if (eflag & 1) {
improper->energy += thr->eng_imprp;
thr->eng_imprp = 0.0;
}
if (vflag & 3) {
for (int i=0; i < 6; ++i) {
improper->virial[i] += thr->virial_imprp[i];
thr->virial_imprp[i] = 0.0;
}
}
}
if (eflag & 2) {
data_reduce_thr(&(improper->eatom[0]), nall, nthreads, 1, tid);
}
if (vflag & 4) {
data_reduce_thr(&(improper->vatom[0][0]), nall, nthreads, 6, tid);
}
}
break;
case THR_KSPACE:
// nothing to do. XXX may need to add support for per-atom info
break;
case THR_INTGR:
// nothing to do
break;
default:
printf("tid:%d unhandled thr_style case %d\n", tid, thr_style);
break;
}
if (style == fix->last_omp_style) {
if (need_force_reduce) {
data_reduce_thr(&(f[0][0]), nall, nthreads, 3, tid);
fix->did_reduce();
}
if (lmp->atom->torque)
data_reduce_thr(&(lmp->atom->torque[0][0]), nall, nthreads, 3, tid);
}
thr->timer(Timer::COMM);
}
/* ----------------------------------------------------------------------
tally eng_vdwl and eng_coul into per thread global and per-atom accumulators
------------------------------------------------------------------------- */
void ThrOMP::e_tally_thr(Pair * const pair, const int i, const int j,
const int nlocal, const int newton_pair,
const double evdwl, const double ecoul, ThrData * const thr)
{
if (pair->eflag_global) {
if (newton_pair) {
thr->eng_vdwl += evdwl;
thr->eng_coul += ecoul;
} else {
const double evdwlhalf = 0.5*evdwl;
const double ecoulhalf = 0.5*ecoul;
if (i < nlocal) {
thr->eng_vdwl += evdwlhalf;
thr->eng_coul += ecoulhalf;
}
if (j < nlocal) {
thr->eng_vdwl += evdwlhalf;
thr->eng_coul += ecoulhalf;
}
}
}
if (pair->eflag_atom) {
const double epairhalf = 0.5 * (evdwl + ecoul);
if (newton_pair || i < nlocal) thr->eatom_pair[i] += epairhalf;
if (newton_pair || j < nlocal) thr->eatom_pair[j] += epairhalf;
}
}
/* helper functions */
static void v_tally(double * const vout, const double * const vin)
{
vout[0] += vin[0];
vout[1] += vin[1];
vout[2] += vin[2];
vout[3] += vin[3];
vout[4] += vin[4];
vout[5] += vin[5];
}
static void v_tally(double * const vout, const double scale, const double * const vin)
{
vout[0] += scale*vin[0];
vout[1] += scale*vin[1];
vout[2] += scale*vin[2];
vout[3] += scale*vin[3];
vout[4] += scale*vin[4];
vout[5] += scale*vin[5];
}
/* ----------------------------------------------------------------------
tally virial into per thread global and per-atom accumulators
------------------------------------------------------------------------- */
void ThrOMP::v_tally_thr(Pair * const pair, const int i, const int j,
const int nlocal, const int newton_pair,
const double * const v, ThrData * const thr)
{
if (pair->vflag_global) {
double * const va = thr->virial_pair;
if (newton_pair) {
v_tally(va,v);
} else {
if (i < nlocal) v_tally(va,0.5,v);
if (j < nlocal) v_tally(va,0.5,v);
}
}
if (pair->vflag_atom) {
if (newton_pair || i < nlocal) {
double * const va = thr->vatom_pair[i];
v_tally(va,0.5,v);
}
if (newton_pair || j < nlocal) {
double * const va = thr->vatom_pair[j];
v_tally(va,0.5,v);
}
}
}
/* ----------------------------------------------------------------------
tally eng_vdwl and virial into per thread global and per-atom accumulators
need i < nlocal test since called by bond_quartic and dihedral_charmm
------------------------------------------------------------------------- */
void ThrOMP::ev_tally_thr(Pair * const pair, const int i, const int j, const int nlocal,
const int newton_pair, const double evdwl, const double ecoul,
const double fpair, const double delx, const double dely,
const double delz, ThrData * const thr)
{
if (pair->eflag_either)
e_tally_thr(pair, i, j, nlocal, newton_pair, evdwl, ecoul, thr);
if (pair->vflag_either) {
double v[6];
v[0] = delx*delx*fpair;
v[1] = dely*dely*fpair;
v[2] = delz*delz*fpair;
v[3] = delx*dely*fpair;
v[4] = delx*delz*fpair;
v[5] = dely*delz*fpair;
v_tally_thr(pair, i, j, nlocal, newton_pair, v, thr);
}
if (pair->num_tally_compute > 0) {
// ev_tally callbacks are not thread safe and thus have to be protected
#if defined(_OPENMP)
#pragma omp critical
#endif
for (int k=0; k < pair->num_tally_compute; ++k) {
Compute *c = pair->list_tally_compute[k];
c->pair_tally_callback(i, j, nlocal, newton_pair,
evdwl, ecoul, fpair, delx, dely, delz);
}
}
}
/* ----------------------------------------------------------------------
tally eng_vdwl and virial into global and per-atom accumulators
for virial, have delx,dely,delz and fx,fy,fz
------------------------------------------------------------------------- */
void ThrOMP::ev_tally_xyz_thr(Pair * const pair, const int i, const int j,
const int nlocal, const int newton_pair,
const double evdwl, const double ecoul,
const double fx, const double fy, const double fz,
const double delx, const double dely, const double delz,
ThrData * const thr)
{
if (pair->eflag_either)
e_tally_thr(pair, i, j, nlocal, newton_pair, evdwl, ecoul, thr);
if (pair->vflag_either) {
double v[6];
v[0] = delx*fx;
v[1] = dely*fy;
v[2] = delz*fz;
v[3] = delx*fy;
v[4] = delx*fz;
v[5] = dely*fz;
v_tally_thr(pair, i, j, nlocal, newton_pair, v, thr);
}
}
/* ----------------------------------------------------------------------
tally eng_vdwl and virial into global and per-atom accumulators
for virial, have delx,dely,delz and fx,fy,fz
called when using full neighbor lists
------------------------------------------------------------------------- */
void ThrOMP::ev_tally_xyz_full_thr(Pair * const pair, const int i,
const double evdwl, const double ecoul,
const double fx, const double fy,
const double fz, const double delx,
const double dely, const double delz,
ThrData * const thr)
{
if (pair->eflag_either)
e_tally_thr(pair,i,i,i+1,0,0.5*evdwl,ecoul,thr);
if (pair->vflag_either) {
double v[6];
v[0] = 0.5*delx*fx;
v[1] = 0.5*dely*fy;
v[2] = 0.5*delz*fz;
v[3] = 0.5*delx*fy;
v[4] = 0.5*delx*fz;
v[5] = 0.5*dely*fz;
v_tally_thr(pair,i,i,i+1,0,v,thr);
}
}
/* ----------------------------------------------------------------------
tally eng_vdwl and virial into global and per-atom accumulators
called by SW and hbond potentials, newton_pair is always on
virial = riFi + rjFj + rkFk = (rj-ri) Fj + (rk-ri) Fk = drji*fj + drki*fk
------------------------------------------------------------------------- */
void ThrOMP::ev_tally3_thr(Pair * const pair, const int i, const int j, const int k,
const double evdwl, const double ecoul,
const double * const fj, const double * const fk,
const double * const drji, const double * const drki,
ThrData * const thr)
{
if (pair->eflag_either) {
if (pair->eflag_global) {
thr->eng_vdwl += evdwl;
thr->eng_coul += ecoul;
}
if (pair->eflag_atom) {
const double epairthird = THIRD * (evdwl + ecoul);
thr->eatom_pair[i] += epairthird;
thr->eatom_pair[j] += epairthird;
thr->eatom_pair[k] += epairthird;
}
}
if (pair->vflag_either) {
double v[6];
v[0] = drji[0]*fj[0] + drki[0]*fk[0];
v[1] = drji[1]*fj[1] + drki[1]*fk[1];
v[2] = drji[2]*fj[2] + drki[2]*fk[2];
v[3] = drji[0]*fj[1] + drki[0]*fk[1];
v[4] = drji[0]*fj[2] + drki[0]*fk[2];
v[5] = drji[1]*fj[2] + drki[1]*fk[2];
if (pair->vflag_global) v_tally(thr->virial_pair,v);
if (pair->vflag_atom) {
v_tally(thr->vatom_pair[i],THIRD,v);
v_tally(thr->vatom_pair[j],THIRD,v);
v_tally(thr->vatom_pair[k],THIRD,v);
}
}
}
/* ----------------------------------------------------------------------
tally eng_vdwl and virial into global and per-atom accumulators
called by AIREBO potential, newton_pair is always on
------------------------------------------------------------------------- */
void ThrOMP::ev_tally4_thr(Pair * const pair, const int i, const int j,
const int k, const int m, const double evdwl,
const double * const fi, const double * const fj,
const double * const fk, const double * const drim,
const double * const drjm, const double * const drkm,
ThrData * const thr)
{
double v[6];
if (pair->eflag_either) {
if (pair->eflag_global) thr->eng_vdwl += evdwl;
if (pair->eflag_atom) {
const double epairfourth = 0.25 * evdwl;
thr->eatom_pair[i] += epairfourth;
thr->eatom_pair[j] += epairfourth;
thr->eatom_pair[k] += epairfourth;
thr->eatom_pair[m] += epairfourth;
}
}
if (pair->vflag_atom) {
v[0] = 0.25 * (drim[0]*fi[0] + drjm[0]*fj[0] + drkm[0]*fk[0]);
v[1] = 0.25 * (drim[1]*fi[1] + drjm[1]*fj[1] + drkm[1]*fk[1]);
v[2] = 0.25 * (drim[2]*fi[2] + drjm[2]*fj[2] + drkm[2]*fk[2]);
v[3] = 0.25 * (drim[0]*fi[1] + drjm[0]*fj[1] + drkm[0]*fk[1]);
v[4] = 0.25 * (drim[0]*fi[2] + drjm[0]*fj[2] + drkm[0]*fk[2]);
v[5] = 0.25 * (drim[1]*fi[2] + drjm[1]*fj[2] + drkm[1]*fk[2]);
v_tally(thr->vatom_pair[i],v);
v_tally(thr->vatom_pair[j],v);
v_tally(thr->vatom_pair[k],v);
v_tally(thr->vatom_pair[m],v);
}
}
/* ----------------------------------------------------------------------
tally ecoul and virial into each of n atoms in list
called by TIP4P potential, newton_pair is always on
changes v values by dividing by n
------------------------------------------------------------------------- */
void ThrOMP::ev_tally_list_thr(Pair * const pair, const int key,
const int * const list, const double * const v,
const double ecoul, const double alpha,
ThrData * const thr)
{
int i;
if (pair->eflag_either) {
if (pair->eflag_global) thr->eng_coul += ecoul;
if (pair->eflag_atom) {
if (key == 0) {
thr->eatom_pair[list[0]] += 0.5*ecoul;
thr->eatom_pair[list[1]] += 0.5*ecoul;
} else if (key == 1) {
thr->eatom_pair[list[0]] += 0.5*ecoul*(1-alpha);
thr->eatom_pair[list[1]] += 0.25*ecoul*alpha;
thr->eatom_pair[list[2]] += 0.25*ecoul*alpha;
thr->eatom_pair[list[3]] += 0.5*ecoul;
} else if (key == 2) {
thr->eatom_pair[list[0]] += 0.5*ecoul;
thr->eatom_pair[list[1]] += 0.5*ecoul*(1-alpha);
thr->eatom_pair[list[2]] += 0.25*ecoul*alpha;
thr->eatom_pair[list[3]] += 0.25*ecoul*alpha;
} else {
thr->eatom_pair[list[0]] += 0.5*ecoul*(1-alpha);
thr->eatom_pair[list[1]] += 0.25*ecoul*alpha;
thr->eatom_pair[list[2]] += 0.25*ecoul*alpha;
thr->eatom_pair[list[3]] += 0.5*ecoul*(1-alpha);
thr->eatom_pair[list[4]] += 0.25*ecoul*alpha;
thr->eatom_pair[list[5]] += 0.25*ecoul*alpha;
}
}
}
if (pair->vflag_either) {
if (pair->vflag_global)
v_tally(thr->virial_pair,v);
if (pair->vflag_atom) {
if (key == 0) {
for (i = 0; i <= 5; i++) {
thr->vatom_pair[list[0]][i] += 0.5*v[i];
thr->vatom_pair[list[1]][i] += 0.5*v[i];
}
} else if (key == 1) {
for (i = 0; i <= 5; i++) {
thr->vatom_pair[list[0]][i] += 0.5*v[i]*(1-alpha);
thr->vatom_pair[list[1]][i] += 0.25*v[i]*alpha;
thr->vatom_pair[list[2]][i] += 0.25*v[i]*alpha;
thr->vatom_pair[list[3]][i] += 0.5*v[i];
}
} else if (key == 2) {
for (i = 0; i <= 5; i++) {
thr->vatom_pair[list[0]][i] += 0.5*v[i];
thr->vatom_pair[list[1]][i] += 0.5*v[i]*(1-alpha);
thr->vatom_pair[list[2]][i] += 0.25*v[i]*alpha;
thr->vatom_pair[list[3]][i] += 0.25*v[i]*alpha;
}
} else {
for (i = 0; i <= 5; i++) {
thr->vatom_pair[list[0]][i] += 0.5*v[i]*(1-alpha);
thr->vatom_pair[list[1]][i] += 0.25*v[i]*alpha;
thr->vatom_pair[list[2]][i] += 0.25*v[i]*alpha;
thr->vatom_pair[list[3]][i] += 0.5*v[i]*(1-alpha);
thr->vatom_pair[list[4]][i] += 0.25*v[i]*alpha;
thr->vatom_pair[list[5]][i] += 0.25*v[i]*alpha;
}
}
}
}
}
/* ----------------------------------------------------------------------
tally energy and virial into global and per-atom accumulators
------------------------------------------------------------------------- */
void ThrOMP::ev_tally_thr(Bond * const bond, const int i, const int j, const int nlocal,
const int newton_bond, const double ebond, const double fbond,
const double delx, const double dely, const double delz,
ThrData * const thr)
{
if (bond->eflag_either) {
const double ebondhalf = 0.5*ebond;
if (newton_bond) {
if (bond->eflag_global)
thr->eng_bond += ebond;
if (bond->eflag_atom) {
thr->eatom_bond[i] += ebondhalf;
thr->eatom_bond[j] += ebondhalf;
}
} else {
if (bond->eflag_global) {
if (i < nlocal) thr->eng_bond += ebondhalf;
if (j < nlocal) thr->eng_bond += ebondhalf;
}
if (bond->eflag_atom) {
if (i < nlocal) thr->eatom_bond[i] += ebondhalf;
if (j < nlocal) thr->eatom_bond[j] += ebondhalf;
}
}
}
if (bond->vflag_either) {
double v[6];
v[0] = delx*delx*fbond;
v[1] = dely*dely*fbond;
v[2] = delz*delz*fbond;
v[3] = delx*dely*fbond;
v[4] = delx*delz*fbond;
v[5] = dely*delz*fbond;
if (bond->vflag_global) {
if (newton_bond)
v_tally(thr->virial_bond,v);
else {
if (i < nlocal)
v_tally(thr->virial_bond,0.5,v);
if (j < nlocal)
v_tally(thr->virial_bond,0.5,v);
}
}
if (bond->vflag_atom) {
v[0] *= 0.5;
v[1] *= 0.5;
v[2] *= 0.5;
v[3] *= 0.5;
v[4] *= 0.5;
v[5] *= 0.5;
if (newton_bond) {
v_tally(thr->vatom_bond[i],v);
v_tally(thr->vatom_bond[j],v);
} else {
if (i < nlocal)
v_tally(thr->vatom_bond[i],v);
if (j < nlocal)
v_tally(thr->vatom_bond[j],v);
}
}
}
}
/* ----------------------------------------------------------------------
tally energy and virial into global and per-atom accumulators
virial = r1F1 + r2F2 + r3F3 = (r1-r2) F1 + (r3-r2) F3 = del1*f1 + del2*f3
------------------------------------------------------------------------- */
void ThrOMP::ev_tally_thr(Angle * const angle, const int i, const int j, const int k,
const int nlocal, const int newton_bond, const double eangle,
const double * const f1, const double * const f3,
const double delx1, const double dely1, const double delz1,
const double delx2, const double dely2, const double delz2,
ThrData * const thr)
{
if (angle->eflag_either) {
const double eanglethird = THIRD*eangle;
if (newton_bond) {
if (angle->eflag_global)
thr->eng_angle += eangle;
if (angle->eflag_atom) {
thr->eatom_angle[i] += eanglethird;
thr->eatom_angle[j] += eanglethird;
thr->eatom_angle[k] += eanglethird;
}
} else {
if (angle->eflag_global) {
if (i < nlocal) thr->eng_angle += eanglethird;
if (j < nlocal) thr->eng_angle += eanglethird;
if (k < nlocal) thr->eng_angle += eanglethird;
}
if (angle->eflag_atom) {
if (i < nlocal) thr->eatom_angle[i] += eanglethird;
if (j < nlocal) thr->eatom_angle[j] += eanglethird;
if (k < nlocal) thr->eatom_angle[k] += eanglethird;
}
}
}
if (angle->vflag_either) {
double v[6];
v[0] = delx1*f1[0] + delx2*f3[0];
v[1] = dely1*f1[1] + dely2*f3[1];
v[2] = delz1*f1[2] + delz2*f3[2];
v[3] = delx1*f1[1] + delx2*f3[1];
v[4] = delx1*f1[2] + delx2*f3[2];
v[5] = dely1*f1[2] + dely2*f3[2];
if (angle->vflag_global) {
if (newton_bond) {
v_tally(thr->virial_angle,v);
} else {
int cnt = 0;
if (i < nlocal) ++cnt;
if (j < nlocal) ++cnt;
if (k < nlocal) ++cnt;
v_tally(thr->virial_angle,cnt*THIRD,v);
}
}
if (angle->vflag_atom) {
v[0] *= THIRD;
v[1] *= THIRD;
v[2] *= THIRD;
v[3] *= THIRD;
v[4] *= THIRD;
v[5] *= THIRD;
if (newton_bond) {
v_tally(thr->vatom_angle[i],v);
v_tally(thr->vatom_angle[j],v);
v_tally(thr->vatom_angle[k],v);
} else {
if (i < nlocal) v_tally(thr->vatom_angle[i],v);
if (j < nlocal) v_tally(thr->vatom_angle[j],v);
if (k < nlocal) v_tally(thr->vatom_angle[k],v);
}
}
}
}
/* ----------------------------------------------------------------------
tally energy and virial from 1-3 repulsion of SDK angle into accumulators
------------------------------------------------------------------------- */
void ThrOMP::ev_tally13_thr(Angle * const angle, const int i1, const int i3,
const int nlocal, const int newton_bond,
const double epair, const double fpair,
const double delx, const double dely,
const double delz, ThrData * const thr)
{
if (angle->eflag_either) {
const double epairhalf = 0.5 * epair;
if (angle->eflag_global) {
if (newton_bond || i1 < nlocal)
thr->eng_angle += epairhalf;
if (newton_bond || i3 < nlocal)
thr->eng_angle += epairhalf;
}
if (angle->eflag_atom) {
if (newton_bond || i1 < nlocal) thr->eatom_angle[i1] += epairhalf;
if (newton_bond || i3 < nlocal) thr->eatom_angle[i3] += epairhalf;
}
}
if (angle->vflag_either) {
double v[6];
v[0] = delx*delx*fpair;
v[1] = dely*dely*fpair;
v[2] = delz*delz*fpair;
v[3] = delx*dely*fpair;
v[4] = delx*delz*fpair;
v[5] = dely*delz*fpair;
if (angle->vflag_global) {
double * const va = thr->virial_angle;
if (newton_bond || i1 < nlocal) v_tally(va,0.5,v);
if (newton_bond || i3 < nlocal) v_tally(va,0.5,v);
}
if (angle->vflag_atom) {
if (newton_bond || i1 < nlocal) {
double * const va = thr->vatom_angle[i1];
v_tally(va,0.5,v);
}
if (newton_bond || i3 < nlocal) {
double * const va = thr->vatom_angle[i3];
v_tally(va,0.5,v);
}
}
}
}
/* ----------------------------------------------------------------------
tally energy and virial into global and per-atom accumulators
virial = r1F1 + r2F2 + r3F3 + r4F4 = (r1-r2) F1 + (r3-r2) F3 + (r4-r2) F4
= (r1-r2) F1 + (r3-r2) F3 + (r4-r3 + r3-r2) F4
= vb1*f1 + vb2*f3 + (vb3+vb2)*f4
------------------------------------------------------------------------- */
void ThrOMP::ev_tally_thr(Dihedral * const dihed, const int i1, const int i2,
const int i3, const int i4, const int nlocal,
const int newton_bond, const double edihedral,
const double * const f1, const double * const f3,
const double * const f4, const double vb1x,
const double vb1y, const double vb1z, const double vb2x,
const double vb2y, const double vb2z, const double vb3x,
const double vb3y, const double vb3z, ThrData * const thr)
{
if (dihed->eflag_either) {
if (dihed->eflag_global) {
if (newton_bond) {
thr->eng_dihed += edihedral;
} else {
const double edihedralquarter = 0.25*edihedral;
int cnt = 0;
if (i1 < nlocal) ++cnt;
if (i2 < nlocal) ++cnt;
if (i3 < nlocal) ++cnt;
if (i4 < nlocal) ++cnt;
thr->eng_dihed += static_cast<double>(cnt)*edihedralquarter;
}
}
if (dihed->eflag_atom) {
const double edihedralquarter = 0.25*edihedral;
if (newton_bond) {
thr->eatom_dihed[i1] += edihedralquarter;
thr->eatom_dihed[i2] += edihedralquarter;
thr->eatom_dihed[i3] += edihedralquarter;
thr->eatom_dihed[i4] += edihedralquarter;
} else {
if (i1 < nlocal) thr->eatom_dihed[i1] += edihedralquarter;
if (i2 < nlocal) thr->eatom_dihed[i2] += edihedralquarter;
if (i3 < nlocal) thr->eatom_dihed[i3] += edihedralquarter;
if (i4 < nlocal) thr->eatom_dihed[i4] += edihedralquarter;
}
}
}
if (dihed->vflag_either) {
double v[6];
v[0] = vb1x*f1[0] + vb2x*f3[0] + (vb3x+vb2x)*f4[0];
v[1] = vb1y*f1[1] + vb2y*f3[1] + (vb3y+vb2y)*f4[1];
v[2] = vb1z*f1[2] + vb2z*f3[2] + (vb3z+vb2z)*f4[2];
v[3] = vb1x*f1[1] + vb2x*f3[1] + (vb3x+vb2x)*f4[1];
v[4] = vb1x*f1[2] + vb2x*f3[2] + (vb3x+vb2x)*f4[2];
v[5] = vb1y*f1[2] + vb2y*f3[2] + (vb3y+vb2y)*f4[2];
if (dihed->vflag_global) {
if (newton_bond) {
v_tally(thr->virial_dihed,v);
} else {
int cnt = 0;
if (i1 < nlocal) ++cnt;
if (i2 < nlocal) ++cnt;
if (i3 < nlocal) ++cnt;
if (i4 < nlocal) ++cnt;
v_tally(thr->virial_dihed,0.25*static_cast<double>(cnt),v);
}
}
v[0] *= 0.25;
v[1] *= 0.25;
v[2] *= 0.25;
v[3] *= 0.25;
v[4] *= 0.25;
v[5] *= 0.25;
if (dihed->vflag_atom) {
if (newton_bond) {
v_tally(thr->vatom_dihed[i1],v);
v_tally(thr->vatom_dihed[i2],v);
v_tally(thr->vatom_dihed[i3],v);
v_tally(thr->vatom_dihed[i4],v);
} else {
if (i1 < nlocal) v_tally(thr->vatom_dihed[i1],v);
if (i2 < nlocal) v_tally(thr->vatom_dihed[i2],v);
if (i3 < nlocal) v_tally(thr->vatom_dihed[i3],v);
if (i4 < nlocal) v_tally(thr->vatom_dihed[i4],v);
}
}
}
}
/* ----------------------------------------------------------------------
tally energy and virial into global and per-atom accumulators
virial = r1F1 + r2F2 + r3F3 + r4F4 = (r1-r2) F1 + (r3-r2) F3 + (r4-r2) F4
= (r1-r2) F1 + (r3-r2) F3 + (r4-r3 + r3-r2) F4
= vb1*f1 + vb2*f3 + (vb3+vb2)*f4
------------------------------------------------------------------------- */
void ThrOMP::ev_tally_thr(Improper * const imprp, const int i1, const int i2,
const int i3, const int i4, const int nlocal,
const int newton_bond, const double eimproper,
const double * const f1, const double * const f3,
const double * const f4, const double vb1x,
const double vb1y, const double vb1z, const double vb2x,
const double vb2y, const double vb2z, const double vb3x,
const double vb3y, const double vb3z, ThrData * const thr)
{
if (imprp->eflag_either) {
if (imprp->eflag_global) {
if (newton_bond) {
thr->eng_imprp += eimproper;
} else {
const double eimproperquarter = 0.25*eimproper;
int cnt = 0;
if (i1 < nlocal) ++cnt;
if (i2 < nlocal) ++cnt;
if (i3 < nlocal) ++cnt;
if (i4 < nlocal) ++cnt;
thr->eng_imprp += static_cast<double>(cnt)*eimproperquarter;
}
}
if (imprp->eflag_atom) {
const double eimproperquarter = 0.25*eimproper;
if (newton_bond) {
thr->eatom_imprp[i1] += eimproperquarter;
thr->eatom_imprp[i2] += eimproperquarter;
thr->eatom_imprp[i3] += eimproperquarter;
thr->eatom_imprp[i4] += eimproperquarter;
} else {
if (i1 < nlocal) thr->eatom_imprp[i1] += eimproperquarter;
if (i2 < nlocal) thr->eatom_imprp[i2] += eimproperquarter;
if (i3 < nlocal) thr->eatom_imprp[i3] += eimproperquarter;
if (i4 < nlocal) thr->eatom_imprp[i4] += eimproperquarter;
}
}
}
if (imprp->vflag_either) {
double v[6];
v[0] = vb1x*f1[0] + vb2x*f3[0] + (vb3x+vb2x)*f4[0];
v[1] = vb1y*f1[1] + vb2y*f3[1] + (vb3y+vb2y)*f4[1];
v[2] = vb1z*f1[2] + vb2z*f3[2] + (vb3z+vb2z)*f4[2];
v[3] = vb1x*f1[1] + vb2x*f3[1] + (vb3x+vb2x)*f4[1];
v[4] = vb1x*f1[2] + vb2x*f3[2] + (vb3x+vb2x)*f4[2];
v[5] = vb1y*f1[2] + vb2y*f3[2] + (vb3y+vb2y)*f4[2];
if (imprp->vflag_global) {
if (newton_bond) {
v_tally(thr->virial_imprp,v);
} else {
int cnt = 0;
if (i1 < nlocal) ++cnt;
if (i2 < nlocal) ++cnt;
if (i3 < nlocal) ++cnt;
if (i4 < nlocal) ++cnt;
v_tally(thr->virial_imprp,0.25*static_cast<double>(cnt),v);
}
}
v[0] *= 0.25;
v[1] *= 0.25;
v[2] *= 0.25;
v[3] *= 0.25;
v[4] *= 0.25;
v[5] *= 0.25;
if (imprp->vflag_atom) {
if (newton_bond) {
v_tally(thr->vatom_imprp[i1],v);
v_tally(thr->vatom_imprp[i2],v);
v_tally(thr->vatom_imprp[i3],v);
v_tally(thr->vatom_imprp[i4],v);
} else {
if (i1 < nlocal) v_tally(thr->vatom_imprp[i1],v);
if (i2 < nlocal) v_tally(thr->vatom_imprp[i2],v);
if (i3 < nlocal) v_tally(thr->vatom_imprp[i3],v);
if (i4 < nlocal) v_tally(thr->vatom_imprp[i4],v);
}
}
}
}
/* ----------------------------------------------------------------------
tally virial into per-atom accumulators
called by AIREBO potential, newton_pair is always on
fpair is magnitude of force on atom I
------------------------------------------------------------------------- */
void ThrOMP::v_tally2_thr(const int i, const int j, const double fpair,
const double * const drij, ThrData * const thr)
{
double v[6];
v[0] = 0.5 * drij[0]*drij[0]*fpair;
v[1] = 0.5 * drij[1]*drij[1]*fpair;
v[2] = 0.5 * drij[2]*drij[2]*fpair;
v[3] = 0.5 * drij[0]*drij[1]*fpair;
v[4] = 0.5 * drij[0]*drij[2]*fpair;
v[5] = 0.5 * drij[1]*drij[2]*fpair;
v_tally(thr->vatom_pair[i],v);
v_tally(thr->vatom_pair[j],v);
}
/* ----------------------------------------------------------------------
tally virial into per-atom accumulators
called by AIREBO and Tersoff potential, newton_pair is always on
------------------------------------------------------------------------- */
void ThrOMP::v_tally3_thr(const int i, const int j, const int k,
const double * const fi, const double * const fj,
const double * const drik, const double * const drjk,
ThrData * const thr)
{
double v[6];
v[0] = THIRD * (drik[0]*fi[0] + drjk[0]*fj[0]);
v[1] = THIRD * (drik[1]*fi[1] + drjk[1]*fj[1]);
v[2] = THIRD * (drik[2]*fi[2] + drjk[2]*fj[2]);
v[3] = THIRD * (drik[0]*fi[1] + drjk[0]*fj[1]);
v[4] = THIRD * (drik[0]*fi[2] + drjk[0]*fj[2]);
v[5] = THIRD * (drik[1]*fi[2] + drjk[1]*fj[2]);
v_tally(thr->vatom_pair[i],v);
v_tally(thr->vatom_pair[j],v);
v_tally(thr->vatom_pair[k],v);
}
/* ----------------------------------------------------------------------
tally virial into per-atom accumulators
called by AIREBO potential, newton_pair is always on
------------------------------------------------------------------------- */
void ThrOMP::v_tally4_thr(const int i, const int j, const int k, const int m,
const double * const fi, const double * const fj,
const double * const fk, const double * const drim,
const double * const drjm, const double * const drkm,
ThrData * const thr)
{
double v[6];
v[0] = 0.25 * (drim[0]*fi[0] + drjm[0]*fj[0] + drkm[0]*fk[0]);
v[1] = 0.25 * (drim[1]*fi[1] + drjm[1]*fj[1] + drkm[1]*fk[1]);
v[2] = 0.25 * (drim[2]*fi[2] + drjm[2]*fj[2] + drkm[2]*fk[2]);
v[3] = 0.25 * (drim[0]*fi[1] + drjm[0]*fj[1] + drkm[0]*fk[1]);
v[4] = 0.25 * (drim[0]*fi[2] + drjm[0]*fj[2] + drkm[0]*fk[2]);
v[5] = 0.25 * (drim[1]*fi[2] + drjm[1]*fj[2] + drkm[1]*fk[2]);
v_tally(thr->vatom_pair[i],v);
v_tally(thr->vatom_pair[j],v);
v_tally(thr->vatom_pair[k],v);
v_tally(thr->vatom_pair[m],v);
}
/* ---------------------------------------------------------------------- */
double ThrOMP::memory_usage_thr()
{
double bytes=0.0;
return bytes;
}
diff --git a/src/USER-PHONON/fix_phonon.cpp b/src/USER-PHONON/fix_phonon.cpp
index 1470bc3ee..e4ff1dd31 100644
--- a/src/USER-PHONON/fix_phonon.cpp
+++ b/src/USER-PHONON/fix_phonon.cpp
@@ -1,922 +1,922 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
+
/* ----------------------------------------------------------------------
- Contributing authors:
- Ling-Ti Kong
+ Contributing author: Ling-Ti Kong
Contact:
School of Materials Science and Engineering,
Shanghai Jiao Tong University,
800 Dongchuan Road, Minhang,
Shanghai 200240, CHINA
konglt@sjtu.edu.cn; konglt@gmail.com
------------------------------------------------------------------------- */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "fix_phonon.h"
#include "fft3d_wrap.h"
#include "atom.h"
#include "compute.h"
#include "domain.h"
#include "force.h"
#include "group.h"
#include "lattice.h"
#include "modify.h"
#include "update.h"
#include "citeme.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
using namespace FixConst;
#define INVOKED_SCALAR 1
#define INVOKED_VECTOR 2
#define MAXLINE 512
static const char cite_fix_phonon[] =
"fix phonon command:\n\n"
"@Article{Kong11,\n"
" author = {L. T. Kong},\n"
" title = {Phonon dispersion measured directly from molecular dynamics simulations},\n"
" journal = {Comp.~Phys.~Comm.},\n"
" year = 2011,\n"
" volume = 182,\n"
" pages = {2201--2207}\n"
"}\n\n";
/* ---------------------------------------------------------------------- */
FixPhonon::FixPhonon(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg)
{
if (lmp->citeme) lmp->citeme->add(cite_fix_phonon);
MPI_Comm_rank(world,&me);
MPI_Comm_size(world,&nprocs);
if (narg < 8) error->all(FLERR,"Illegal fix phonon command: number of arguments < 8");
nevery = force->inumeric(FLERR, arg[3]); // Calculate this fix every n steps!
if (nevery < 1) error->all(FLERR,"Illegal fix phonon command");
nfreq = force->inumeric(FLERR, arg[4]); // frequency to output result
if (nfreq < 1) error->all(FLERR,"Illegal fix phonon command");
waitsteps = force->bnumeric(FLERR,arg[5]); // Wait this many timesteps before actually measuring
if (waitsteps < 0) error->all(FLERR,"Illegal fix phonon command: waitsteps < 0 !");
int n = strlen(arg[6]) + 1; // map file
mapfile = new char[n];
strcpy(mapfile, arg[6]);
n = strlen(arg[7]) + 1; // prefix of output
prefix = new char[n];
strcpy(prefix, arg[7]);
logfile = new char[n+4];
sprintf(logfile,"%s.log",prefix);
int sdim = sysdim = domain->dimension;
int iarg = 8;
nasr = 20;
// other command line options
while (iarg < narg){
if (strcmp(arg[iarg],"sysdim") == 0){
if (++iarg >= narg) error->all(FLERR,"Illegal fix phonon command: incomplete command line options.");
sdim = force->inumeric(FLERR, arg[iarg]);
if (sdim < 1) error->all(FLERR,"Illegal fix phonon command: sysdim should not be less than 1.");
} else if (strcmp(arg[iarg],"nasr") == 0){
if (++iarg >= narg) error->all(FLERR,"Illegal fix phonon command: incomplete command line options.");
nasr = force->inumeric(FLERR, arg[iarg]);
} else {
error->all(FLERR,"Illegal fix phonon command: unknown option read!");
}
++iarg;
}
// get the dimension of the simulation; 1D is possible by specifying the option of "sysdim 1"
if (sdim < sysdim) sysdim = sdim;
nasr = MAX(0, nasr);
// get the total number of atoms in group and run min/max checks
bigint ng = group->count(igroup);
if (ng > MAXSMALLINT) error->all(FLERR,"Too many atoms for fix phonon");
if (ng < 1) error->all(FLERR,"No atom found for fix phonon!");
ngroup = static_cast<int>(ng);
// MPI gatherv related variables
recvcnts = new int[nprocs];
displs = new int[nprocs];
// mapping index
tag2surf.clear(); // clear map info
surf2tag.clear();
// get the mapping between lattice indices and atom IDs
readmap(); delete []mapfile;
if (nucell == 1) nasr = MIN(1,nasr);
// get the mass matrix for dynamic matrix
getmass();
// create FFT and allocate memory for FFT
// here the parallization is done on the x direction only
nxlo = 0;
int *nx_loc = new int [nprocs];
for (int i = 0; i < nprocs; ++i){
nx_loc[i] = nx / nprocs;
if (i < nx%nprocs) ++nx_loc[i];
}
for (int i = 0; i < me; ++i) nxlo += nx_loc[i];
nxhi = nxlo + nx_loc[me] - 1;
mynpt = nx_loc[me] * ny * nz;
mynq = mynpt;
fft_dim = nucell * sysdim;
fft_dim2 = fft_dim * fft_dim;
fft_nsend = mynpt * fft_dim;
fft_cnts = new int[nprocs];
fft_disp = new int[nprocs];
fft_disp[0] = 0;
for (int i = 0; i < nprocs; ++i) fft_cnts[i] = nx_loc[i] * ny * nz * fft_dim;
for (int i = 1; i < nprocs; ++i) fft_disp[i] = fft_disp[i-1] + fft_cnts[i-1];
delete []nx_loc;
fft = new FFT3d(lmp,world,nz,ny,nx,0,nz-1,0,ny-1,nxlo,nxhi,0,nz-1,0,ny-1,nxlo,nxhi,0,0,&mysize,0);
memory->create(fft_data, MAX(1,mynq)*2, "fix_phonon:fft_data");
// allocate variables; MAX(1,... is used because NULL buffer will result in error for MPI
memory->create(RIloc,ngroup,(sysdim+1),"fix_phonon:RIloc");
memory->create(RIall,ngroup,(sysdim+1),"fix_phonon:RIall");
memory->create(Rsort,ngroup, sysdim, "fix_phonon:Rsort");
memory->create(Rnow, MAX(1,mynpt),fft_dim,"fix_phonon:Rnow");
memory->create(Rsum, MAX(1,mynpt),fft_dim,"fix_phonon:Rsum");
memory->create(basis,nucell, sysdim, "fix_phonon:basis");
// because of hermit, only nearly half of q points are stored
memory->create(Rqnow,MAX(1,mynq),fft_dim, "fix_phonon:Rqnow");
memory->create(Rqsum,MAX(1,mynq),fft_dim2,"fix_phonon:Rqsum");
memory->create(Phi_q,MAX(1,mynq),fft_dim2,"fix_phonon:Phi_q");
// variable to collect all local Phi to root
if (me == 0) memory->create(Phi_all,ntotal,fft_dim2,"fix_phonon:Phi_all");
else memory->create(Phi_all,1,1,"fix_phonon:Phi_all");
// output some information on the system to log file
if (me == 0){
flog = fopen(logfile, "w");
if (flog == NULL) {
char str[MAXLINE];
sprintf(str,"Can not open output file %s",logfile);
error->one(FLERR,str);
}
fprintf(flog,"############################################################\n");
fprintf(flog,"# group name of the atoms under study : %s\n", group->names[igroup]);
fprintf(flog,"# total number of atoms in the group : %d\n", ngroup);
fprintf(flog,"# dimension of the system : %d D\n", sysdim);
fprintf(flog,"# number of atoms per unit cell : %d\n", nucell);
fprintf(flog,"# dimension of the FFT mesh : %d x %d x %d\n", nx, ny, nz);
fprintf(flog,"# number of wait steps before measurement : " BIGINT_FORMAT "\n", waitsteps);
fprintf(flog,"# frequency of the measurement : %d\n", nevery);
fprintf(flog,"# output result after this many measurement: %d\n", nfreq);
fprintf(flog,"# number of processors used by this run : %d\n", nprocs);
fprintf(flog,"############################################################\n");
fprintf(flog,"# mapping information between lattice indices and atom id\n");
fprintf(flog,"# nx ny nz nucell\n");
fprintf(flog,"%d %d %d %d\n", nx, ny, nz, nucell);
fprintf(flog,"# l1 l2 l3 k atom_id\n");
int ix, iy, iz, iu;
for (idx = 0; idx < ngroup; ++idx){
itag = surf2tag[idx];
iu = idx%nucell;
iz = (idx/nucell)%nz;
iy = (idx/(nucell*nz))%ny;
ix = (idx/(nucell*nz*ny))%nx;
fprintf(flog,"%d %d %d %d " TAGINT_FORMAT "\n", ix, iy, iz, iu, itag);
}
fprintf(flog,"############################################################\n");
fflush(flog);
}
surf2tag.clear();
// default temperature is from thermo
TempSum = new double[sysdim];
id_temp = new char[12];
strcpy(id_temp,"thermo_temp");
int icompute = modify->find_compute(id_temp);
temperature = modify->compute[icompute];
inv_nTemp = 1./group->count(temperature->igroup);
} // end of constructor
/* ---------------------------------------------------------------------- */
void FixPhonon::post_run()
{
// compute and output final results
if (ifreq > 0 && ifreq != nfreq) postprocess();
if (me == 0) fclose(flog);
}
/* ---------------------------------------------------------------------- */
FixPhonon::~FixPhonon()
{
// delete locally stored array
memory->destroy(RIloc);
memory->destroy(RIall);
memory->destroy(Rsort);
memory->destroy(Rnow);
memory->destroy(Rsum);
memory->destroy(basis);
memory->destroy(Rqnow);
memory->destroy(Rqsum);
memory->destroy(Phi_q);
memory->destroy(Phi_all);
delete []recvcnts;
delete []displs;
delete []prefix;
delete []logfile;
delete []fft_cnts;
delete []fft_disp;
delete []id_temp;
delete []TempSum;
delete []M_inv_sqrt;
delete []basetype;
// destroy FFT
delete fft;
memory->sfree(fft_data);
// clear map info
tag2surf.clear();
surf2tag.clear();
}
/* ---------------------------------------------------------------------- */
int FixPhonon::setmask()
{
int mask = 0;
mask |= END_OF_STEP;
return mask;
}
/* ---------------------------------------------------------------------- */
void FixPhonon::init()
{
// warn if more than one fix-phonon
int count = 0;
for (int i = 0; i < modify->nfix; ++i) if (strcmp(modify->fix[i]->style,"phonon") == 0) ++count;
if (count > 1 && me == 0) error->warning(FLERR,"More than one fix phonon defined"); // just warn, but allowed.
}
/* ---------------------------------------------------------------------- */
void FixPhonon::setup(int flag)
{
// initialize accumulating variables
for (int i = 0; i < sysdim; ++i) TempSum[i] = 0.;
for (int i = 0; i < mynpt; ++i)
for (int j = 0; j < fft_dim; ++j) Rsum[i][j] = 0.;
for (int i =0; i < mynq; ++i)
for (int j =0; j < fft_dim2; ++j) Rqsum[i][j] = std::complex<double> (0.,0.);
for (int i = 0; i < 6; ++i) hsum[i] = 0.;
for (int i = 0; i < nucell; ++i)
for (int j = 0; j < sysdim; ++j) basis[i][j] = 0.;
neval = ifreq = 0;
prev_nstep = update->ntimestep;
}
/* ---------------------------------------------------------------------- */
void FixPhonon::end_of_step()
{
if ( (update->ntimestep-prev_nstep) <= waitsteps) return;
double **x = atom->x;
int *mask = atom->mask;
tagint *tag = atom->tag;
imageint *image = atom->image;
int nlocal = atom->nlocal;
double *h = domain->h;
int i,idim,jdim,ndim;
double xcur[3];
// to get the current temperature
if (!(temperature->invoked_flag & INVOKED_VECTOR)) temperature->compute_vector();
for (idim = 0; idim < sysdim; ++idim) TempSum[idim] += temperature->vector[idim];
// evaluate R(r) on local proc
nfind = 0;
for (i = 0; i < nlocal; ++i){
if (mask[i] & groupbit){
itag = tag[i];
idx = tag2surf[itag];
domain->unmap(x[i], image[i], xcur);
for (idim = 0; idim < sysdim; ++idim) RIloc[nfind][idim] = xcur[idim];
RIloc[nfind++][sysdim] = static_cast<double>(idx);
}
}
// gather R(r) on local proc, then sort and redistribute to all procs for FFT
nfind *= (sysdim+1);
displs[0] = 0;
for (i = 0; i < nprocs; ++i) recvcnts[i] = 0;
MPI_Gather(&nfind,1,MPI_INT,recvcnts,1,MPI_INT,0,world);
for (i = 1; i < nprocs; ++i) displs[i] = displs[i-1] + recvcnts[i-1];
MPI_Gatherv(RIloc[0],nfind,MPI_DOUBLE,RIall[0],recvcnts,displs,MPI_DOUBLE,0,world);
if (me == 0){
for (i = 0; i < ngroup; ++i){
idx = static_cast<int>(RIall[i][sysdim]);
for (idim = 0; idim < sysdim; ++idim) Rsort[idx][idim] = RIall[i][idim];
}
}
MPI_Scatterv(Rsort[0],fft_cnts,fft_disp, MPI_DOUBLE, Rnow[0], fft_nsend, MPI_DOUBLE,0,world);
// get Rsum
for (idx = 0; idx < mynpt; ++idx)
for (idim = 0; idim < fft_dim; ++idim) Rsum[idx][idim] += Rnow[idx][idim];
// FFT R(r) to get R(q)
for (idim = 0; idim < fft_dim; ++idim){
int m = 0;
for (idx = 0; idx < mynpt; ++idx){
fft_data[m++] = static_cast<FFT_SCALAR>(Rnow[idx][idim]);
fft_data[m++] = static_cast<FFT_SCALAR>(0.);
}
fft->compute(fft_data, fft_data, -1);
m = 0;
for (idq = 0; idq < mynq; ++idq){
Rqnow[idq][idim] = std::complex<double>(static_cast<double>(fft_data[m]), static_cast<double>(fft_data[m+1]));
m += 2;
}
}
// to get sum(R(q).R(q)*)
for (idq = 0; idq < mynq; ++idq){
ndim = 0;
for (idim = 0; idim < fft_dim; ++idim)
for (jdim = 0; jdim < fft_dim; ++jdim) Rqsum[idq][ndim++] += Rqnow[idq][idim] * std::conj(Rqnow[idq][jdim]);
}
// get basis info
if (fft_dim > sysdim){
double dist2orig[3];
for (idx = 0; idx < mynpt; ++idx){
ndim = sysdim;
for (i = 1; i < nucell; ++i){
for (idim = 0; idim < sysdim; ++idim) dist2orig[idim] = Rnow[idx][ndim++] - Rnow[idx][idim];
domain->minimum_image(dist2orig);
for (idim = 0; idim < sysdim; ++idim) basis[i][idim] += dist2orig[idim];
}
}
}
// get lattice vector info
for (int i = 0; i < 6; ++i) hsum[i] += h[i];
// increment counter
++neval;
// compute and output Phi_q after every nfreq evaluations
if (++ifreq == nfreq) postprocess();
} // end of end_of_step()
/* ---------------------------------------------------------------------- */
double FixPhonon::memory_usage()
{
double bytes = sizeof(double)*2*mynq
+ sizeof(std::map<int,int>)*2*ngroup
+ sizeof(double)*(ngroup*(3*sysdim+2)+mynpt*fft_dim*2)
+ sizeof(std::complex<double>)*MAX(1,mynq)*fft_dim *(1+2*fft_dim)
+ sizeof(std::complex<double>)*ntotal*fft_dim2
+ sizeof(int) * nprocs * 4;
return bytes;
}
/* ---------------------------------------------------------------------- */
int FixPhonon::modify_param(int narg, char **arg)
{
if (strcmp(arg[0],"temp") == 0) {
if (narg < 2) error->all(FLERR,"Illegal fix_modify command");
delete [] id_temp;
int n = strlen(arg[1]) + 1;
id_temp = new char[n];
strcpy(id_temp,arg[1]);
int icompute = modify->find_compute(id_temp);
if (icompute < 0) error->all(FLERR,"Could not find fix_modify temp ID");
temperature = modify->compute[icompute];
if (temperature->tempflag == 0)
error->all(FLERR,"Fix_modify temp ID does not compute temperature");
inv_nTemp = 1.0/group->count(temperature->igroup);
return 2;
}
return 0;
}
/* ----------------------------------------------------------------------
* private method, to get the mass matrix for dynamic matrix
* --------------------------------------------------------------------*/
void FixPhonon::getmass()
{
int nlocal = atom->nlocal;
int *mask = atom->mask;
tagint *tag = atom->tag;
int *type = atom->type;
double *rmass = atom->rmass;
double *mass = atom->mass;
double *mass_one, *mass_all;
double *type_one, *type_all;
mass_one = new double[nucell];
mass_all = new double[nucell];
type_one = new double[nucell];
type_all = new double[nucell];
for (int i = 0; i < nucell; ++i) mass_one[i] = type_one[i] = 0.;
if (rmass){
for (int i = 0; i < nlocal; ++i){
if (mask[i] & groupbit){
itag = tag[i];
idx = tag2surf[itag];
int iu = idx%nucell;
mass_one[iu] += rmass[i];
type_one[iu] += double(type[i]);
}
}
} else {
for (int i = 0; i < nlocal; ++i){
if (mask[i] & groupbit){
itag = tag[i];
idx = tag2surf[itag];
int iu = idx%nucell;
mass_one[iu] += mass[type[i]];
type_one[iu] += double(type[i]);
}
}
}
MPI_Allreduce(mass_one,mass_all,nucell,MPI_DOUBLE,MPI_SUM,world);
MPI_Allreduce(type_one,type_all,nucell,MPI_DOUBLE,MPI_SUM,world);
M_inv_sqrt = new double[nucell];
basetype = new int[nucell];
double inv_total = 1./double(ntotal);
for (int i = 0; i < nucell; ++i){
mass_all[i] *= inv_total;
M_inv_sqrt[i] = sqrt(1./mass_all[i]);
basetype[i] = int(type_all[i]*inv_total);
}
delete []mass_one;
delete []mass_all;
delete []type_one;
delete []type_all;
}
/* ----------------------------------------------------------------------
* private method, to read the mapping info from file
* --------------------------------------------------------------------*/
void FixPhonon::readmap()
{
int info = 0;
// auto-generate mapfile for "cluster" (gamma only system)
if (strcmp(mapfile, "GAMMA") == 0){
nx = ny = nz = ntotal = 1;
nucell = ngroup;
tagint *tag_loc, *tag_all;
memory->create(tag_loc,ngroup,"fix_phonon:tag_loc");
memory->create(tag_all,ngroup,"fix_phonon:tag_all");
// get atom IDs on local proc
int nfind = 0;
for (int i = 0; i < atom->nlocal; ++i){
if (atom->mask[i] & groupbit) tag_loc[nfind++] = atom->tag[i];
}
// gather IDs on local proc
displs[0] = 0;
for (int i = 0; i < nprocs; ++i) recvcnts[i] = 0;
MPI_Allgather(&nfind,1,MPI_INT,recvcnts,1,MPI_INT,world);
for (int i = 1; i < nprocs; ++i) displs[i] = displs[i-1] + recvcnts[i-1];
MPI_Allgatherv(tag_loc,nfind,MPI_LMP_TAGINT,tag_all,recvcnts,displs,MPI_LMP_TAGINT,world);
for (int i = 0; i < ngroup; ++i){
itag = tag_all[i];
tag2surf[itag] = i;
surf2tag[i] = itag;
}
memory->destroy(tag_loc);
memory->destroy(tag_all);
return;
}
// read from map file for others
char line[MAXLINE];
FILE *fp = fopen(mapfile, "r");
if (fp == NULL){
sprintf(line,"Cannot open input map file %s", mapfile);
error->all(FLERR,line);
}
if (fgets(line,MAXLINE,fp) == NULL)
error->all(FLERR,"Error while reading header of mapping file!");
nx = force->inumeric(FLERR, strtok(line, " \n\t\r\f"));
ny = force->inumeric(FLERR, strtok(NULL, " \n\t\r\f"));
nz = force->inumeric(FLERR, strtok(NULL, " \n\t\r\f"));
nucell = force->inumeric(FLERR, strtok(NULL, " \n\t\r\f"));
ntotal = nx*ny*nz;
if (ntotal*nucell != ngroup)
error->all(FLERR,"FFT mesh and number of atoms in group mismatch!");
// second line of mapfile is comment
if (fgets(line,MAXLINE,fp) == NULL)
error->all(FLERR,"Error while reading comment of mapping file!");
int ix, iy, iz, iu;
// the remaining lines carry the mapping info
for (int i = 0; i < ngroup; ++i){
if (fgets(line,MAXLINE,fp) == NULL) {info = 1; break;}
ix = force->inumeric(FLERR, strtok(line, " \n\t\r\f"));
iy = force->inumeric(FLERR, strtok(NULL, " \n\t\r\f"));
iz = force->inumeric(FLERR, strtok(NULL, " \n\t\r\f"));
iu = force->inumeric(FLERR, strtok(NULL, " \n\t\r\f"));
itag = force->inumeric(FLERR, strtok(NULL, " \n\t\r\f"));
// check if index is in correct range
if (ix < 0 || ix >= nx || iy < 0 || iy >= ny ||
iz < 0 || iz >= nz || iu < 0 || iu >= nucell) {info = 2; break;}
// 1 <= itag <= natoms
if (itag < 1 || itag > static_cast<tagint>(atom->natoms)) {info = 3; break;}
idx = ((ix*ny+iy)*nz+iz)*nucell + iu;
tag2surf[itag] = idx;
surf2tag[idx] = itag;
}
fclose(fp);
if (tag2surf.size() != surf2tag.size() ||
tag2surf.size() != static_cast<std::size_t>(ngroup) )
error->all(FLERR,"The mapping is incomplete!");
if (info) error->all(FLERR,"Error while reading mapping file!");
// check the correctness of mapping
int *mask = atom->mask;
tagint *tag = atom->tag;
int nlocal = atom->nlocal;
for (int i = 0; i < nlocal; ++i) {
if (mask[i] & groupbit){
itag = tag[i];
idx = tag2surf[itag];
if (itag != surf2tag[idx])
error->one(FLERR,"The mapping info read is incorrect!");
}
}
}
/* ----------------------------------------------------------------------
* private method, to output the force constant matrix
* --------------------------------------------------------------------*/
void FixPhonon::postprocess( )
{
if (neval < 1) return;
ifreq = 0;
int idim, jdim, ndim;
double inv_neval = 1. /double(neval);
// to get <Rq.Rq*>
for (idq = 0; idq < mynq; ++idq)
for (idim = 0; idim < fft_dim2; ++idim) Phi_q[idq][idim] = Rqsum[idq][idim] * inv_neval;
// to get <R>
for (idx = 0; idx < mynpt; ++idx)
for (idim = 0; idim < fft_dim; ++idim) Rnow[idx][idim] = Rsum[idx][idim] * inv_neval;
// to get <R>q
for (idim = 0; idim < fft_dim; ++idim){
int m = 0;
for (idx = 0; idx < mynpt; ++idx){
fft_data[m++] = static_cast<FFT_SCALAR>(Rnow[idx][idim]);
fft_data[m++] = static_cast<FFT_SCALAR>(0.);
}
fft->compute(fft_data,fft_data,-1);
m = 0;
for (idq = 0; idq < mynq; ++idq){
Rqnow[idq][idim] = std::complex<double>(static_cast<double>(fft_data[m]), static_cast<double>(fft_data[m+1]));
m += 2;
}
}
// to get G(q) = <Rq.Rq*> - <R>q.<R*>q
for (idq = 0; idq < mynq; ++idq){
ndim = 0;
for (idim = 0; idim < fft_dim; ++idim)
for (jdim = 0; jdim < fft_dim; ++jdim) Phi_q[idq][ndim++] -= Rqnow[idq][idim] * std::conj(Rqnow[idq][jdim]);
}
// to get Phi = KT.G^-1; normalization of FFTW data is done here
double boltz = force->boltz, kbtsqrt[sysdim], TempAve = 0.;
double TempFac = inv_neval * inv_nTemp;
double NormFac = TempFac * double(ntotal);
for (idim = 0; idim < sysdim; ++idim){
kbtsqrt[idim] = sqrt(TempSum[idim] * NormFac);
TempAve += TempSum[idim] * TempFac;
}
TempAve /= sysdim*boltz;
for (idq = 0; idq < mynq; ++idq){
GaussJordan(fft_dim, Phi_q[idq]);
ndim =0;
for (idim = 0; idim < fft_dim; ++idim)
for (jdim = 0; jdim < fft_dim; ++jdim) Phi_q[idq][ndim++] *= kbtsqrt[idim%sysdim]*kbtsqrt[jdim%sysdim];
}
// to collect all local Phi_q to root
displs[0]=0;
for (int i = 0; i < nprocs; ++i) recvcnts[i] = fft_cnts[i]*fft_dim*2;
for (int i = 1; i < nprocs; ++i) displs[i] = displs[i-1] + recvcnts[i-1];
MPI_Gatherv(Phi_q[0],mynq*fft_dim2*2,MPI_DOUBLE,Phi_all[0],recvcnts,displs,MPI_DOUBLE,0,world);
// to collect all basis info and averaged it on root
double basis_root[fft_dim];
if (fft_dim > sysdim) MPI_Reduce(&basis[1][0], &basis_root[sysdim], fft_dim-sysdim, MPI_DOUBLE, MPI_SUM, 0, world);
if (me == 0){ // output dynamic matrix by root
// get basis info
for (idim = 0; idim < sysdim; ++idim) basis_root[idim] = 0.;
for (idim = sysdim; idim < fft_dim; ++idim) basis_root[idim] /= double(ntotal)*double(neval);
// get unit cell base vector info; might be incorrect if MD pbc and FixPhonon pbc mismatch.
double basevec[9];
basevec[1] = basevec[2] = basevec[5] = 0.;
basevec[0] = hsum[0] * inv_neval / double(nx);
basevec[4] = hsum[1] * inv_neval / double(ny);
basevec[8] = hsum[2] * inv_neval / double(nz);
basevec[7] = hsum[3] * inv_neval / double(nz);
basevec[6] = hsum[4] * inv_neval / double(nz);
basevec[3] = hsum[5] * inv_neval / double(ny);
// write binary file, in fact, it is the force constants matrix that is written
// Enforcement of ASR and the conversion of dynamical matrix is done in the postprocessing code
char fname[MAXLINE];
sprintf(fname,"%s.bin." BIGINT_FORMAT,prefix,update->ntimestep);
FILE *fp_bin = fopen(fname,"wb");
fwrite(&sysdim, sizeof(int), 1, fp_bin);
fwrite(&nx, sizeof(int), 1, fp_bin);
fwrite(&ny, sizeof(int), 1, fp_bin);
fwrite(&nz, sizeof(int), 1, fp_bin);
fwrite(&nucell, sizeof(int), 1, fp_bin);
fwrite(&boltz, sizeof(double), 1, fp_bin);
fwrite(Phi_all[0],sizeof(double),ntotal*fft_dim2*2,fp_bin);
fwrite(&TempAve, sizeof(double),1, fp_bin);
fwrite(&basevec[0], sizeof(double),9, fp_bin);
fwrite(&basis_root[0],sizeof(double),fft_dim,fp_bin);
fwrite(basetype, sizeof(int), nucell, fp_bin);
fwrite(M_inv_sqrt, sizeof(double),nucell, fp_bin);
fclose(fp_bin);
// write log file, here however, it is the dynamical matrix that is written
fprintf(flog,"############################################################\n");
fprintf(flog,"# Current time step : " BIGINT_FORMAT "\n", update->ntimestep);
fprintf(flog,"# Total number of measurements : %d\n", neval);
fprintf(flog,"# Average temperature of the measurement : %lg\n", TempAve);
fprintf(flog,"# Boltzmann constant under current units : %lg\n", boltz);
fprintf(flog,"# basis vector A1 = [%lg %lg %lg]\n", basevec[0], basevec[1], basevec[2]);
fprintf(flog,"# basis vector A2 = [%lg %lg %lg]\n", basevec[3], basevec[4], basevec[5]);
fprintf(flog,"# basis vector A3 = [%lg %lg %lg]\n", basevec[6], basevec[7], basevec[8]);
fprintf(flog,"############################################################\n");
fprintf(flog,"# qx\t qy \t qz \t\t Phi(q)\n");
EnforceASR();
// to get D = 1/M x Phi
for (idq = 0; idq < ntotal; ++idq){
ndim =0;
for (idim = 0; idim < fft_dim; ++idim)
for (jdim = 0; jdim < fft_dim; ++jdim) Phi_all[idq][ndim++] *= M_inv_sqrt[idim/sysdim]*M_inv_sqrt[jdim/sysdim];
}
idq =0;
for (int ix = 0; ix < nx; ++ix){
double qx = double(ix)/double(nx);
for (int iy = 0; iy < ny; ++iy){
double qy = double(iy)/double(ny);
for (int iz = 0; iz < nz; ++iz){
double qz = double(iz)/double(nz);
fprintf(flog,"%lg %lg %lg", qx, qy, qz);
for (idim = 0; idim < fft_dim2; ++idim)
fprintf(flog, " %lg %lg", std::real(Phi_all[idq][idim]),
std::imag(Phi_all[idq][idim]));
fprintf(flog, "\n");
++idq;
}
}
}
fflush(flog);
}
} // end of postprocess
/* ----------------------------------------------------------------------
* private method, to get the inverse of a complex matrix by means of
* Gaussian-Jordan Elimination with full pivoting; square matrix required.
*
* Adapted from the Numerical Recipes in Fortran.
* --------------------------------------------------------------------*/
void FixPhonon::GaussJordan(int n, std::complex<double> *Mat)
{
int i,icol,irow,j,k,l,ll,idr,idc;
int *indxc,*indxr,*ipiv;
double big, nmjk;
std::complex<double> dum, pivinv;
indxc = new int[n];
indxr = new int[n];
ipiv = new int[n];
for (i = 0; i < n; ++i) ipiv[i] = 0;
for (i = 0; i < n; ++i){
big = 0.;
for (j = 0; j < n; ++j){
if (ipiv[j] != 1){
for (k = 0; k < n; ++k){
if (ipiv[k] == 0){
idr = j*n+k;
nmjk = norm(Mat[idr]);
if (nmjk >= big){
big = nmjk;
irow = j;
icol = k;
}
} else if (ipiv[k] > 1) error->one(FLERR,"Singular matrix in complex GaussJordan!");
}
}
}
ipiv[icol] += 1;
if (irow != icol){
for (l = 0; l < n; ++l){
idr = irow*n+l;
idc = icol*n+l;
dum = Mat[idr];
Mat[idr] = Mat[idc];
Mat[idc] = dum;
}
}
indxr[i] = irow;
indxc[i] = icol;
idr = icol*n+icol;
if (Mat[idr] == std::complex<double>(0.,0.)) error->one(FLERR,"Singular matrix in complex GaussJordan!");
pivinv = 1./ Mat[idr];
Mat[idr] = std::complex<double>(1.,0.);
idr = icol*n;
for (l = 0; l < n; ++l) Mat[idr+l] *= pivinv;
for (ll = 0; ll < n; ++ll){
if (ll != icol){
idc = ll*n + icol;
dum = Mat[idc];
Mat[idc] = 0.;
idc -= icol;
for (l = 0; l < n; ++l) Mat[idc+l] -= Mat[idr+l]*dum;
}
}
}
for (l = n-1; l >= 0; --l){
int rl = indxr[l];
int cl = indxc[l];
if (rl != cl){
for (k = 0; k < n; ++k){
idr = k*n + rl;
idc = k*n + cl;
dum = Mat[idr];
Mat[idr] = Mat[idc];
Mat[idc] = dum;
}
}
}
delete []indxr;
delete []indxc;
delete []ipiv;
}
/* ----------------------------------------------------------------------
* private method, to apply the acoustic sum rule on force constant matrix
* at gamma point. Should be executed on root only.
* --------------------------------------------------------------------*/
void FixPhonon::EnforceASR()
{
if (nasr < 1) return;
for (int iit = 0; iit < nasr; ++iit){
// simple ASR; the resultant matrix might not be symmetric
for (int a = 0; a < sysdim; ++a)
for (int b = 0; b < sysdim; ++b){
for (int k = 0; k < nucell; ++k){
double sum = 0.;
for (int kp = 0; kp < nucell; ++kp){
int idx = (k*sysdim+a)*fft_dim + kp*sysdim + b;
sum += std::real(Phi_all[0][idx]);
}
sum /= double(nucell);
for (int kp = 0; kp < nucell; ++kp){
int idx = (k*sysdim+a)*fft_dim + kp*sysdim + b;
Phi_all[0][idx] -= sum;
}
}
}
// symmetrize
for (int k = 0; k < nucell; ++k)
for (int kp = k; kp < nucell; ++kp){
double csum = 0.;
for (int a = 0; a < sysdim; ++a)
for (int b = 0; b < sysdim; ++b){
int idx = (k*sysdim+a)*fft_dim + kp*sysdim + b;
int jdx = (kp*sysdim+b)*fft_dim + k*sysdim + a;
csum = (std::real(Phi_all[0][idx])+std::real(Phi_all[0][jdx]))*0.5;
Phi_all[0][idx] = std::complex<double>(csum, std::imag(Phi_all[0][idx]));
Phi_all[0][jdx] = std::complex<double>(csum, std::imag(Phi_all[0][jdx]));
}
}
}
// symmetric ASR
for (int a = 0; a < sysdim; ++a)
for (int b = 0; b < sysdim; ++b){
for (int k = 0; k < nucell; ++k){
double sum = 0.;
for (int kp = 0; kp < nucell; ++kp){
int idx = (k*sysdim+a)*fft_dim + kp*sysdim + b;
sum += std::real(Phi_all[0][idx]);
}
sum /= double(nucell-k);
for (int kp = k; kp < nucell; ++kp){
int idx = (k*sysdim+a)*fft_dim + kp*sysdim + b;
int jdx = (kp*sysdim+b)*fft_dim + k*sysdim + a;
Phi_all[0][idx] -= sum;
Phi_all[0][jdx] = std::complex<double>(std::real(Phi_all[0][idx]),
std::imag(Phi_all[0][jdx]));
}
}
}
}
/* --------------------------------------------------------------------*/
diff --git a/src/USER-SMD/fix_smd_wall_surface.cpp b/src/USER-SMD/fix_smd_wall_surface.cpp
index 082723426..94cac6e20 100644
--- a/src/USER-SMD/fix_smd_wall_surface.cpp
+++ b/src/USER-SMD/fix_smd_wall_surface.cpp
@@ -1,509 +1,509 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
- Contributing authors: Mike Parks (SNL), Ezwanur Rahman, J.T. Foster (UTSA)
- ------------------------------------------------------------------------- */
+ Contributing authors: Mike Parks (SNL), Ezwanur Rahman, J.T. Foster (UTSA)
+------------------------------------------------------------------------- */
#include <math.h>
#include "fix_smd_wall_surface.h"
#include "atom.h"
#include "domain.h"
#include "force.h"
#include "comm.h"
#include "update.h"
#include "neighbor.h"
#include "neigh_list.h"
#include "neigh_request.h"
#include "pair.h"
#include "lattice.h"
#include "memory.h"
#include "error.h"
#include <Eigen/Eigen>
#include <stdio.h>
#include "atom_vec.h"
#include <string.h>
using namespace LAMMPS_NS;
using namespace FixConst;
using namespace Eigen;
using namespace std;
#define DELTA 16384
#define EPSILON 1.0e-6
enum {
LAYOUT_UNIFORM, LAYOUT_NONUNIFORM, LAYOUT_TILED
};
// several files
/* ---------------------------------------------------------------------- */
FixSMDWallSurface::FixSMDWallSurface(LAMMPS *lmp, int narg, char **arg) :
Fix(lmp, narg, arg) {
restart_global = 0;
restart_peratom = 0;
first = 1;
//atom->add_callback(0);
//atom->add_callback(1);
if (narg != 6)
error->all(FLERR, "Illegal number of arguments for fix smd/wall_surface");
filename = strdup(arg[3]);
wall_particle_type = force->inumeric(FLERR, arg[4]);
wall_molecule_id = force->inumeric(FLERR, arg[5]);
if (wall_molecule_id < 65535) {
error->one(FLERR, "wall molcule id must be >= 65535\n");
}
if (comm->me == 0) {
printf("\n>>========>>========>>========>>========>>========>>========>>========>>========\n");
printf("fix smd/wall_surface reads trianglulated surface from file: %s\n", filename);
printf("fix smd/wall_surface has particle type %d \n", wall_particle_type);
printf("fix smd/wall_surface has molecule id %d \n", wall_molecule_id);
printf(">>========>>========>>========>>========>>========>>========>>========>>========\n");
}
}
/* ---------------------------------------------------------------------- */
FixSMDWallSurface::~FixSMDWallSurface() {
free(filename);
filename = NULL;
// unregister this fix so atom class doesn't invoke it any more
//atom->delete_callback(id, 0);
//atom->delete_callback(id, 1);
}
/* ---------------------------------------------------------------------- */
int FixSMDWallSurface::setmask() {
int mask = 0;
return mask;
}
/* ---------------------------------------------------------------------- */
void FixSMDWallSurface::init() {
if (!first)
return;
}
/* ----------------------------------------------------------------------
For minimization: setup as with dynamics
------------------------------------------------------------------------- */
void FixSMDWallSurface::min_setup(int vflag) {
setup(vflag);
}
/* ----------------------------------------------------------------------
create initial list of neighbor partners via call to neighbor->build()
must be done in setup (not init) since fix init comes before neigh init
------------------------------------------------------------------------- */
void FixSMDWallSurface::setup(int vflag) {
if (!first)
return;
first = 0;
// set bounds for my proc
// if periodic and I am lo/hi proc, adjust bounds by EPSILON
// insures all data atoms will be owned even with round-off
int triclinic = domain->triclinic;
double epsilon[3];
if (triclinic)
epsilon[0] = epsilon[1] = epsilon[2] = EPSILON;
else {
epsilon[0] = domain->prd[0] * EPSILON;
epsilon[1] = domain->prd[1] * EPSILON;
epsilon[2] = domain->prd[2] * EPSILON;
}
if (triclinic == 0) {
sublo[0] = domain->sublo[0];
subhi[0] = domain->subhi[0];
sublo[1] = domain->sublo[1];
subhi[1] = domain->subhi[1];
sublo[2] = domain->sublo[2];
subhi[2] = domain->subhi[2];
} else {
sublo[0] = domain->sublo_lamda[0];
subhi[0] = domain->subhi_lamda[0];
sublo[1] = domain->sublo_lamda[1];
subhi[1] = domain->subhi_lamda[1];
sublo[2] = domain->sublo_lamda[2];
subhi[2] = domain->subhi_lamda[2];
}
if (comm->layout != LAYOUT_TILED) {
if (domain->xperiodic) {
if (comm->myloc[0] == 0)
sublo[0] -= epsilon[0];
if (comm->myloc[0] == comm->procgrid[0] - 1)
subhi[0] += epsilon[0];
}
if (domain->yperiodic) {
if (comm->myloc[1] == 0)
sublo[1] -= epsilon[1];
if (comm->myloc[1] == comm->procgrid[1] - 1)
subhi[1] += epsilon[1];
}
if (domain->zperiodic) {
if (comm->myloc[2] == 0)
sublo[2] -= epsilon[2];
if (comm->myloc[2] == comm->procgrid[2] - 1)
subhi[2] += epsilon[2];
}
} else {
if (domain->xperiodic) {
if (comm->mysplit[0][0] == 0.0)
sublo[0] -= epsilon[0];
if (comm->mysplit[0][1] == 1.0)
subhi[0] += epsilon[0];
}
if (domain->yperiodic) {
if (comm->mysplit[1][0] == 0.0)
sublo[1] -= epsilon[1];
if (comm->mysplit[1][1] == 1.0)
subhi[1] += epsilon[1];
}
if (domain->zperiodic) {
if (comm->mysplit[2][0] == 0.0)
sublo[2] -= epsilon[2];
if (comm->mysplit[2][1] == 1.0)
subhi[2] += epsilon[2];
}
}
read_triangles(0);
}
/* ----------------------------------------------------------------------
function to determine number of values in a text line
------------------------------------------------------------------------- */
int FixSMDWallSurface::count_words(const char *line) {
int n = strlen(line) + 1;
char *copy;
memory->create(copy, n, "atom:copy");
strcpy(copy, line);
char *ptr;
if ((ptr = strchr(copy, '#')))
*ptr = '\0';
if (strtok(copy, " \t\n\r\f") == NULL) {
memory->destroy(copy);
return 0;
}
n = 1;
while (strtok(NULL, " \t\n\r\f"))
n++;
memory->destroy(copy);
return n;
}
/* ----------------------------------------------------------------------
size of atom nlocal's restart data
------------------------------------------------------------------------- */
void FixSMDWallSurface::read_triangles(int pass) {
double coord[3];
int nlocal_previous = atom->nlocal;
int ilocal = nlocal_previous;
int m;
int me;
bigint natoms_previous = atom->natoms;
Vector3d *vert;
vert = new Vector3d[3];
Vector3d normal, center;
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
char str[128];
sprintf(str, "Cannot open file %s", filename);
error->one(FLERR, str);
}
MPI_Comm_rank(world, &me);
if (me == 0) {
if (screen) {
if (pass == 0) {
printf("\n>>========>>========>>========>>========>>========>>========>>========>>========\n");
fprintf(screen, " scanning triangle pairs ...\n");
} else {
fprintf(screen, " reading triangle pairs ...\n");
}
}
if (logfile) {
if (pass == 0) {
fprintf(logfile, " scanning triangle pairs ...\n");
} else {
fprintf(logfile, " reading triangle pairs ...\n");
}
}
}
char str[128];
char line[256];
char *retpointer;
char **values;
int nwords;
// read STL solid name
retpointer = fgets(line, sizeof(line), fp);
if (retpointer == NULL) {
sprintf(str, "error reading number of triangle pairs");
error->one(FLERR, str);
}
nwords = count_words(line);
if (nwords < 1) {
sprintf(str, "first line of file is incorrect");
error->one(FLERR, str);
}
// values = new char*[nwords];
// values[0] = strtok(line, " \t\n\r\f");
// if (values[0] == NULL)
// error->all(FLERR, "Incorrect atom format in data file");
// for (m = 1; m < nwords; m++) {
// values[m] = strtok(NULL, " \t\n\r\f");
// if (values[m] == NULL)
// error->all(FLERR, "Incorrect atom format in data file");
// }
// delete[] values;
//
// if (comm->me == 0) {
// cout << "STL file contains solid body with name: " << values[1] << endl;
// }
// iterate over STL facets util end of body is reached
while (fgets(line, sizeof(line), fp)) { // read a line, should be the facet line
// evaluate facet line
nwords = count_words(line);
if (nwords != 5) {
//sprintf(str, "found end solid line");
//error->message(FLERR, str);
break;
} else {
// should be facet line
}
values = new char*[nwords];
values[0] = strtok(line, " \t\n\r\f");
if (values[0] == NULL)
error->all(FLERR, "Incorrect atom format in data file");
for (m = 1; m < nwords; m++) {
values[m] = strtok(NULL, " \t\n\r\f");
if (values[m] == NULL)
error->all(FLERR, "Incorrect atom format in data file");
}
normal << force->numeric(FLERR, values[2]), force->numeric(FLERR, values[3]), force->numeric(FLERR, values[4]);
//cout << "normal is " << normal << endl;
delete[] values;
// read outer loop line
retpointer = fgets(line, sizeof(line), fp);
if (retpointer == NULL) {
sprintf(str, "error reading outer loop");
error->one(FLERR, str);
}
nwords = count_words(line);
if (nwords != 2) {
sprintf(str, "error reading outer loop");
error->one(FLERR, str);
}
// read vertex lines
for (int k = 0; k < 3; k++) {
retpointer = fgets(line, sizeof(line), fp);
if (retpointer == NULL) {
sprintf(str, "error reading vertex line");
error->one(FLERR, str);
}
nwords = count_words(line);
if (nwords != 4) {
sprintf(str, "error reading vertex line");
error->one(FLERR, str);
}
values = new char*[nwords];
values[0] = strtok(line, " \t\n\r\f");
if (values[0] == NULL)
error->all(FLERR, "Incorrect vertex line");
for (m = 1; m < nwords; m++) {
values[m] = strtok(NULL, " \t\n\r\f");
if (values[m] == NULL)
error->all(FLERR, "Incorrect vertex line");
}
vert[k] << force->numeric(FLERR, values[1]), force->numeric(FLERR, values[2]), force->numeric(FLERR, values[3]);
//cout << "vertex is " << vert[k] << endl;
//printf("%s %s %s\n", values[1], values[2], values[3]);
delete[] values;
//exit(1);
}
// read end loop line
retpointer = fgets(line, sizeof(line), fp);
if (retpointer == NULL) {
sprintf(str, "error reading endloop");
error->one(FLERR, str);
}
nwords = count_words(line);
if (nwords != 1) {
sprintf(str, "error reading endloop");
error->one(FLERR, str);
}
// read end facet line
retpointer = fgets(line, sizeof(line), fp);
if (retpointer == NULL) {
sprintf(str, "error reading endfacet");
error->one(FLERR, str);
}
nwords = count_words(line);
if (nwords != 1) {
sprintf(str, "error reading endfacet");
error->one(FLERR, str);
}
// now we have a normal and three vertices ... proceed with adding triangle
center = (vert[0] + vert[1] + vert[2]) / 3.0;
// cout << "center is " << center << endl;
double r1 = (center - vert[0]).norm();
double r2 = (center - vert[1]).norm();
double r3 = (center - vert[2]).norm();
double r = MAX(r1, r2);
r = MAX(r, r3);
/*
* if atom/molecule is in my subbox, create it
* ... use x0 to hold triangle normal.
* ... use smd_data_9 to hold the three vertices
* ... use x to hold triangle center
* ... radius is the mmaximal distance from triangle center to all vertices
*/
// printf("coord: %f %f %f\n", coord[0], coord[1], coord[2]);
// printf("sublo: %f %f %f\n", sublo[0], sublo[1], sublo[2]);
// printf("subhi: %f %f %f\n", subhi[0], subhi[1], subhi[2]);
//printf("ilocal = %d\n", ilocal);
if (center(0) >= sublo[0] && center(0) < subhi[0] && center(1) >= sublo[1] && center(1) < subhi[1] && center(2) >= sublo[2]
&& center(2) < subhi[2]) {
//printf("******* KERATIN nlocal=%d ***\n", nlocal);
coord[0] = center(0);
coord[1] = center(1);
coord[2] = center(2);
atom->avec->create_atom(wall_particle_type, coord);
/*
* need to initialize pointers to atom vec arrays here, because they could have changed
* due to calling grow() in create_atoms() above;
*/
tagint *mol = atom->molecule;
int *type = atom->type;
double *radius = atom->radius;
double *contact_radius = atom->contact_radius;
double **smd_data_9 = atom->smd_data_9;
double **x0 = atom->x0;
radius[ilocal] = r; //ilocal;
contact_radius[ilocal] = r; //ilocal;
mol[ilocal] = wall_molecule_id;
type[ilocal] = wall_particle_type;
x0[ilocal][0] = normal(0);
x0[ilocal][1] = normal(1);
x0[ilocal][2] = normal(2);
smd_data_9[ilocal][0] = vert[0](0);
smd_data_9[ilocal][1] = vert[0](1);
smd_data_9[ilocal][2] = vert[0](2);
smd_data_9[ilocal][3] = vert[1](0);
smd_data_9[ilocal][4] = vert[1](1);
smd_data_9[ilocal][5] = vert[1](2);
smd_data_9[ilocal][6] = vert[2](0);
smd_data_9[ilocal][7] = vert[2](1);
smd_data_9[ilocal][8] = vert[2](2);
ilocal++;
}
}
// set new total # of atoms and error check
bigint nblocal = atom->nlocal;
MPI_Allreduce(&nblocal, &atom->natoms, 1, MPI_LMP_BIGINT, MPI_SUM, world);
if (atom->natoms < 0 || atom->natoms >= MAXBIGINT)
error->all(FLERR, "Too many total atoms");
// add IDs for newly created atoms
// check that atom IDs are valid
if (atom->tag_enable)
atom->tag_extend();
atom->tag_check();
// create global mapping of atoms
// zero nghost in case are adding new atoms to existing atoms
if (atom->map_style) {
atom->nghost = 0;
atom->map_init();
atom->map_set();
}
// print status
if (comm->me == 0) {
if (screen) {
printf("... fix smd/wall_surface finished reading triangulated surface\n");
fprintf(screen, "fix smd/wall_surface created " BIGINT_FORMAT " atoms\n", atom->natoms - natoms_previous);
printf(">>========>>========>>========>>========>>========>>========>>========>>========\n");
}
if (logfile) {
fprintf(logfile, "... fix smd/wall_surface finished reading triangulated surface\n");
fprintf(logfile, "fix smd/wall_surface created " BIGINT_FORMAT " atoms\n", atom->natoms - natoms_previous);
fprintf(logfile, ">>========>>========>>========>>========>>========>>========>>========>>========\n");
}
}
delete[] vert;
fclose(fp);
}
diff --git a/src/USER-SMD/pair_smd_hertz.cpp b/src/USER-SMD/pair_smd_hertz.cpp
index 3c7d7cffb..76143d639 100644
--- a/src/USER-SMD/pair_smd_hertz.cpp
+++ b/src/USER-SMD/pair_smd_hertz.cpp
@@ -1,385 +1,385 @@
/* ----------------------------------------------------------------------
*
* *** Smooth Mach Dynamics ***
*
* This file is part of the USER-SMD package for LAMMPS.
* Copyright (2014) Georg C. Ganzenmueller, georg.ganzenmueller@emi.fhg.de
* Fraunhofer Ernst-Mach Institute for High-Speed Dynamics, EMI,
* Eckerstrasse 4, D-79104 Freiburg i.Br, Germany.
*
* ----------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain 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: Mike Parks (SNL)
- ------------------------------------------------------------------------- */
+ Contributing author: Mike Parks (SNL)
+------------------------------------------------------------------------- */
#include <math.h>
#include <float.h>
#include <stdlib.h>
#include <string.h>
#include "pair_smd_hertz.h"
#include "atom.h"
#include "domain.h"
#include "force.h"
#include "update.h"
#include "modify.h"
#include "fix.h"
#include "comm.h"
#include "neighbor.h"
#include "neigh_list.h"
#include "neigh_request.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
#define SQRT2 1.414213562e0
/* ---------------------------------------------------------------------- */
PairHertz::PairHertz(LAMMPS *lmp) :
Pair(lmp) {
onerad_dynamic = onerad_frozen = maxrad_dynamic = maxrad_frozen = NULL;
bulkmodulus = NULL;
kn = NULL;
scale = 1.0;
}
/* ---------------------------------------------------------------------- */
PairHertz::~PairHertz() {
if (allocated) {
memory->destroy(setflag);
memory->destroy(cutsq);
memory->destroy(bulkmodulus);
memory->destroy(kn);
delete[] onerad_dynamic;
delete[] onerad_frozen;
delete[] maxrad_dynamic;
delete[] maxrad_frozen;
}
}
/* ---------------------------------------------------------------------- */
void PairHertz::compute(int eflag, int vflag) {
int i, j, ii, jj, inum, jnum, itype, jtype;
double xtmp, ytmp, ztmp, delx, dely, delz;
double rsq, r, evdwl, fpair;
int *ilist, *jlist, *numneigh, **firstneigh;
double rcut, r_geom, delta, ri, rj, dt_crit;
double *rmass = atom->rmass;
evdwl = 0.0;
if (eflag || vflag)
ev_setup(eflag, vflag);
else
evflag = vflag_fdotr = 0;
double **f = atom->f;
double **x = atom->x;
double **x0 = atom->x0;
int *type = atom->type;
int nlocal = atom->nlocal;
double *radius = atom->contact_radius;
double *sph_radius = atom->radius;
double rcutSq;
double delx0, dely0, delz0, rSq0, sphCut;
int newton_pair = force->newton_pair;
int periodic = (domain->xperiodic || domain->yperiodic || domain->zperiodic);
inum = list->inum;
ilist = list->ilist;
numneigh = list->numneigh;
firstneigh = list->firstneigh;
stable_time_increment = 1.0e22;
// loop over neighbors of my atoms
for (ii = 0; ii < inum; ii++) {
i = ilist[ii];
xtmp = x[i][0];
ytmp = x[i][1];
ztmp = x[i][2];
itype = type[i];
ri = scale * radius[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;
rj = scale * radius[j];
rcut = ri + rj;
rcutSq = rcut * rcut;
if (rsq < rcutSq) {
/*
* self contact option:
* if pair of particles was initially close enough to interact via a bulk continuum mechanism (e.g. SPH), exclude pair from contact forces.
* this approach should work well if no updates of the reference configuration are performed.
*/
if (itype == jtype) {
delx0 = x0[j][0] - x0[i][0];
dely0 = x0[j][1] - x0[i][1];
delz0 = x0[j][2] - x0[i][2];
if (periodic) {
domain->minimum_image(delx0, dely0, delz0);
}
rSq0 = delx0 * delx0 + dely0 * dely0 + delz0 * delz0; // initial distance
sphCut = sph_radius[i] + sph_radius[j];
if (rSq0 < sphCut * sphCut) {
rcut = 0.5 * rcut;
rcutSq = rcut * rcut;
if (rsq > rcutSq) {
continue;
}
}
}
r = sqrt(rsq);
//printf("hertz interaction, r=%f, cut=%f, h=%f\n", r, rcut, sqrt(rSq0));
// Hertzian short-range forces
delta = rcut - r; // overlap distance
r_geom = ri * rj / rcut;
//assuming poisson ratio = 1/4 for 3d
fpair = 1.066666667e0 * bulkmodulus[itype][jtype] * delta * sqrt(delta * r_geom); // units: N
evdwl = fpair * 0.4e0 * delta; // GCG 25 April: this expression conserves total energy
dt_crit = 3.14 * sqrt(0.5 * (rmass[i] + rmass[j]) / (fpair / delta));
stable_time_increment = MIN(stable_time_increment, dt_crit);
if (r > 2.0e-16) {
fpair /= r; // divide by r and multiply with non-normalized distance vector
} else {
fpair = 0.0;
}
/*
* contact viscosity -- needs to be done, see GRANULAR package for normal & shear damping
* for now: no damping and thus no viscous energy deltaE
*/
if (evflag) {
ev_tally(i, j, nlocal, newton_pair, evdwl, 0.0, fpair, delx, dely, delz);
}
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;
}
}
}
}
// double stable_time_increment_all = 0.0;
// MPI_Allreduce(&stable_time_increment, &stable_time_increment_all, 1, MPI_DOUBLE, MPI_MIN, world);
// if (comm->me == 0) {
// printf("stable time step for pair smd/hertz is %f\n", stable_time_increment_all);
// }
}
/* ----------------------------------------------------------------------
allocate all arrays
------------------------------------------------------------------------- */
void PairHertz::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(bulkmodulus, n + 1, n + 1, "pair:kspring");
memory->create(kn, n + 1, n + 1, "pair:kn");
memory->create(cutsq, n + 1, n + 1, "pair:cutsq"); // always needs to be allocated, even with granular neighborlist
onerad_dynamic = new double[n + 1];
onerad_frozen = new double[n + 1];
maxrad_dynamic = new double[n + 1];
maxrad_frozen = new double[n + 1];
}
/* ----------------------------------------------------------------------
global settings
------------------------------------------------------------------------- */
void PairHertz::settings(int narg, char **arg) {
if (narg != 1)
error->all(FLERR, "Illegal number of args for pair_style hertz");
scale = force->numeric(FLERR, arg[0]);
if (comm->me == 0) {
printf("\n>>========>>========>>========>>========>>========>>========>>========>>========\n");
printf("SMD/HERTZ CONTACT SETTINGS:\n");
printf("... effective contact radius is scaled by %f\n", scale);
printf(">>========>>========>>========>>========>>========>>========>>========>>========\n");
}
}
/* ----------------------------------------------------------------------
set coeffs for one or more type pairs
------------------------------------------------------------------------- */
void PairHertz::coeff(int narg, char **arg) {
if (narg != 3)
error->all(FLERR, "Incorrect args for pair coefficients");
if (!allocated)
allocate();
int ilo, ihi, jlo, jhi;
force->bounds(FLERR,arg[0], atom->ntypes, ilo, ihi);
force->bounds(FLERR,arg[1], atom->ntypes, jlo, jhi);
double bulkmodulus_one = atof(arg[2]);
// set short-range force constant
double kn_one = 0.0;
if (domain->dimension == 3) {
kn_one = (16. / 15.) * bulkmodulus_one; //assuming poisson ratio = 1/4 for 3d
} else {
kn_one = 0.251856195 * (2. / 3.) * bulkmodulus_one; //assuming poisson ratio = 1/3 for 2d
}
int count = 0;
for (int i = ilo; i <= ihi; i++) {
for (int j = MAX(jlo, i); j <= jhi; j++) {
bulkmodulus[i][j] = bulkmodulus_one;
kn[i][j] = kn_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 PairHertz::init_one(int i, int j) {
if (!allocated)
allocate();
if (setflag[i][j] == 0)
error->all(FLERR, "All pair coeffs are not set");
bulkmodulus[j][i] = bulkmodulus[i][j];
kn[j][i] = kn[i][j];
// cutoff = sum of max I,J radii for
// dynamic/dynamic & dynamic/frozen interactions, but not frozen/frozen
double cutoff = maxrad_dynamic[i] + maxrad_dynamic[j];
cutoff = MAX(cutoff, maxrad_frozen[i] + maxrad_dynamic[j]);
cutoff = MAX(cutoff, maxrad_dynamic[i] + maxrad_frozen[j]);
if (comm->me == 0) {
printf("cutoff for pair smd/hertz = %f\n", cutoff);
}
return cutoff;
}
/* ----------------------------------------------------------------------
init specific to this pair style
------------------------------------------------------------------------- */
void PairHertz::init_style() {
int i;
// error checks
if (!atom->contact_radius_flag)
error->all(FLERR, "Pair style smd/hertz requires atom style with contact_radius");
int irequest = neighbor->request(this);
neighbor->requests[irequest]->half = 0;
neighbor->requests[irequest]->gran = 1;
// set maxrad_dynamic and maxrad_frozen for each type
// include future Fix pour particles as dynamic
for (i = 1; i <= atom->ntypes; i++)
onerad_dynamic[i] = onerad_frozen[i] = 0.0;
double *radius = atom->radius;
int *type = atom->type;
int nlocal = atom->nlocal;
for (i = 0; i < nlocal; i++) {
onerad_dynamic[type[i]] = MAX(onerad_dynamic[type[i]], radius[i]);
}
MPI_Allreduce(&onerad_dynamic[1], &maxrad_dynamic[1], atom->ntypes, MPI_DOUBLE, MPI_MAX, world);
MPI_Allreduce(&onerad_frozen[1], &maxrad_frozen[1], atom->ntypes, MPI_DOUBLE, MPI_MAX, world);
}
/* ----------------------------------------------------------------------
neighbor callback to inform pair style of neighbor list to use
optional granular history list
------------------------------------------------------------------------- */
void PairHertz::init_list(int id, NeighList *ptr) {
if (id == 0)
list = ptr;
}
/* ----------------------------------------------------------------------
memory usage of local atom-based arrays
------------------------------------------------------------------------- */
double PairHertz::memory_usage() {
return 0.0;
}
void *PairHertz::extract(const char *str, int &i) {
//printf("in PairTriSurf::extract\n");
if (strcmp(str, "smd/hertz/stable_time_increment_ptr") == 0) {
return (void *) &stable_time_increment;
}
return NULL;
}
diff --git a/src/USER-SMD/pair_smd_triangulated_surface.cpp b/src/USER-SMD/pair_smd_triangulated_surface.cpp
index 8410f2ec0..b4e63dd11 100644
--- a/src/USER-SMD/pair_smd_triangulated_surface.cpp
+++ b/src/USER-SMD/pair_smd_triangulated_surface.cpp
@@ -1,846 +1,846 @@
/* ----------------------------------------------------------------------
*
* *** Smooth Mach Dynamics ***
*
* This file is part of the USER-SMD package for LAMMPS.
* Copyright (2014) Georg C. Ganzenmueller, georg.ganzenmueller@emi.fhg.de
* Fraunhofer Ernst-Mach Institute for High-Speed Dynamics, EMI,
* Eckerstrasse 4, D-79104 Freiburg i.Br, Germany.
*
* ----------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain 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: Mike Parks (SNL)
- ------------------------------------------------------------------------- */
+ Contributing author: Mike Parks (SNL)
+------------------------------------------------------------------------- */
#include <math.h>
#include <float.h>
#include <stdlib.h>
#include <string.h>
#include "pair_smd_triangulated_surface.h"
#include "atom.h"
#include "domain.h"
#include "force.h"
#include "update.h"
#include "modify.h"
#include "fix.h"
#include "comm.h"
#include "neighbor.h"
#include "neigh_list.h"
#include "neigh_request.h"
#include "memory.h"
#include "error.h"
#include <Eigen/Eigen>
#include <stdio.h>
#include <iostream>
using namespace std;
using namespace LAMMPS_NS;
using namespace Eigen;
#define SQRT2 1.414213562e0
/* ---------------------------------------------------------------------- */
PairTriSurf::PairTriSurf(LAMMPS *lmp) :
Pair(lmp) {
onerad_dynamic = onerad_frozen = maxrad_dynamic = maxrad_frozen = NULL;
bulkmodulus = NULL;
kn = NULL;
scale = 1.0;
}
/* ---------------------------------------------------------------------- */
PairTriSurf::~PairTriSurf() {
if (allocated) {
memory->destroy(setflag);
memory->destroy(cutsq);
memory->destroy(bulkmodulus);
memory->destroy(kn);
delete[] onerad_dynamic;
delete[] onerad_frozen;
delete[] maxrad_dynamic;
delete[] maxrad_frozen;
}
}
/* ---------------------------------------------------------------------- */
void PairTriSurf::compute(int eflag, int vflag) {
int i, j, ii, jj, inum, jnum, itype, jtype;
double rsq, r, evdwl, fpair;
int *ilist, *jlist, *numneigh, **firstneigh;
double rcut, r_geom, delta, r_tri, r_particle, touch_distance, dt_crit;
int tri, particle;
Vector3d normal, x1, x2, x3, x4, x13, x23, x43, w, cp, x4cp, vnew, v_old;
;
Vector3d xi, x_center, dx;
Matrix2d C;
Vector2d w2d, rhs;
evdwl = 0.0;
if (eflag || vflag)
ev_setup(eflag, vflag);
else
evflag = vflag_fdotr = 0;
tagint *mol = atom->molecule;
double **f = atom->f;
double **smd_data_9 = atom->smd_data_9;
double **x = atom->x;
double **x0 = atom->x0;
double **v = atom->v;
double *rmass = atom->rmass;
int *type = atom->type;
int nlocal = atom->nlocal;
double *radius = atom->contact_radius;
double rcutSq;
Vector3d offset;
int newton_pair = force->newton_pair;
int periodic = (domain->xperiodic || domain->yperiodic || domain->zperiodic);
inum = list->inum;
ilist = list->ilist;
numneigh = list->numneigh;
firstneigh = list->firstneigh;
int max_neighs = 0;
stable_time_increment = 1.0e22;
// loop over neighbors of my atoms using a half neighbor list
for (ii = 0; ii < inum; ii++) {
i = ilist[ii];
itype = type[i];
jlist = firstneigh[i];
jnum = numneigh[i];
max_neighs = MAX(max_neighs, jnum);
for (jj = 0; jj < jnum; jj++) {
j = jlist[jj];
j &= NEIGHMASK;
jtype = type[j];
/*
* decide which one of i, j is triangle and which is particle
*/
if ((mol[i] < 65535) && (mol[j] >= 65535)) {
particle = i;
tri = j;
} else if ((mol[j] < 65535) && (mol[i] >= 65535)) {
particle = j;
tri = i;
} else {
error->one(FLERR, "unknown case");
}
//x_center << x[tri][0], x[tri][1], x[tri][2]; // center of triangle
x_center(0) = x[tri][0];
x_center(1) = x[tri][1];
x_center(2) = x[tri][2];
//x4 << x[particle][0], x[particle][1], x[particle][2];
x4(0) = x[particle][0];
x4(1) = x[particle][1];
x4(2) = x[particle][2];
dx = x_center - x4; //
if (periodic) {
domain->minimum_image(dx(0), dx(1), dx(2));
}
rsq = dx.squaredNorm();
r_tri = scale * radius[tri];
r_particle = scale * radius[particle];
rcut = r_tri + r_particle;
rcutSq = rcut * rcut;
//printf("type i=%d, type j=%d, r=%f, ri=%f, rj=%f\n", itype, jtype, sqrt(rsq), ri, rj);
if (rsq < rcutSq) {
/*
* gather triangle information
*/
normal(0) = x0[tri][0];
normal(1) = x0[tri][1];
normal(2) = x0[tri][2];
/*
* distance check: is particle closer than its radius to the triangle plane?
*/
if (fabs(dx.dot(normal)) < radius[particle]) {
/*
* get other two triangle vertices
*/
x1(0) = smd_data_9[tri][0];
x1(1) = smd_data_9[tri][1];
x1(2) = smd_data_9[tri][2];
x2(0) = smd_data_9[tri][3];
x2(1) = smd_data_9[tri][4];
x2(2) = smd_data_9[tri][5];
x3(0) = smd_data_9[tri][6];
x3(1) = smd_data_9[tri][7];
x3(2) = smd_data_9[tri][8];
PointTriangleDistance(x4, x1, x2, x3, cp, r);
/*
* distance to closest point
*/
x4cp = x4 - cp;
/*
* flip normal to point in direction of x4cp
*/
if (x4cp.dot(normal) < 0.0) {
normal *= -1.0;
}
/*
* penalty force pushes particle away from triangle
*/
if (r < 1.0 * radius[particle]) {
delta = radius[particle] - r; // overlap distance
r_geom = radius[particle];
fpair = 1.066666667e0 * bulkmodulus[itype][jtype] * delta * sqrt(delta * r_geom);
dt_crit = 3.14 * sqrt(rmass[particle] / (fpair / delta));
stable_time_increment = MIN(stable_time_increment, dt_crit);
evdwl = r * fpair * 0.4e0 * delta; // GCG 25 April: this expression conserves total energy
fpair /= (r + 1.0e-2 * radius[particle]); // divide by r + softening and multiply with non-normalized distance vector
if (particle < nlocal) {
f[particle][0] += x4cp(0) * fpair;
f[particle][1] += x4cp(1) * fpair;
f[particle][2] += x4cp(2) * fpair;
}
if (tri < nlocal) {
f[tri][0] -= x4cp(0) * fpair;
f[tri][1] -= x4cp(1) * fpair;
f[tri][2] -= x4cp(2) * fpair;
}
if (evflag) {
ev_tally(i, j, nlocal, newton_pair, evdwl, 0.0, fpair, x4cp(0), x4cp(1), x4cp(2));
}
}
/*
* if particle comes too close to triangle, reflect its velocity and explicitely move it away
*/
touch_distance = 1.0 * radius[particle];
if (r < touch_distance) {
/*
* reflect velocity if it points toward triangle
*/
normal = x4cp / r;
//v_old << v[particle][0], v[particle][1], v[particle][2];
v_old(0) = v[particle][0];
v_old(1) = v[particle][1];
v_old(2) = v[particle][2];
if (v_old.dot(normal) < 0.0) {
//printf("flipping velocity\n");
vnew = 1.0 * (-2.0 * v_old.dot(normal) * normal + v_old);
v[particle][0] = vnew(0);
v[particle][1] = vnew(1);
v[particle][2] = vnew(2);
}
//printf("moving particle on top of triangle\n");
x[particle][0] = cp(0) + touch_distance * normal(0);
x[particle][1] = cp(1) + touch_distance * normal(1);
x[particle][2] = cp(2) + touch_distance * normal(2);
}
}
}
}
}
// int max_neighs_all = 0;
// MPI_Allreduce(&max_neighs, &max_neighs_all, 1, MPI_INT, MPI_MAX, world);
// if (comm->me == 0) {
// printf("max. neighs in tri pair is %d\n", max_neighs_all);
// }
//
// double stable_time_increment_all = 0.0;
// MPI_Allreduce(&stable_time_increment, &stable_time_increment_all, 1, MPI_DOUBLE, MPI_MIN, world);
// if (comm->me == 0) {
// printf("stable time step tri pair is %f\n", stable_time_increment_all);
// }
}
/* ----------------------------------------------------------------------
allocate all arrays
------------------------------------------------------------------------- */
void PairTriSurf::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(bulkmodulus, n + 1, n + 1, "pair:kspring");
memory->create(kn, n + 1, n + 1, "pair:kn");
memory->create(cutsq, n + 1, n + 1, "pair:cutsq"); // always needs to be allocated, even with granular neighborlist
onerad_dynamic = new double[n + 1];
onerad_frozen = new double[n + 1];
maxrad_dynamic = new double[n + 1];
maxrad_frozen = new double[n + 1];
}
/* ----------------------------------------------------------------------
global settings
------------------------------------------------------------------------- */
void PairTriSurf::settings(int narg, char **arg) {
if (narg != 1)
error->all(FLERR, "Illegal number of args for pair_style smd/tri_surface");
scale = force->numeric(FLERR, arg[0]);
if (comm->me == 0) {
printf("\n>>========>>========>>========>>========>>========>>========>>========>>========\n");
printf("SMD/TRI_SURFACE CONTACT SETTINGS:\n");
printf("... effective contact radius is scaled by %f\n", scale);
printf(">>========>>========>>========>>========>>========>>========>>========>>========\n");
}
}
/* ----------------------------------------------------------------------
set coeffs for one or more type pairs
------------------------------------------------------------------------- */
void PairTriSurf::coeff(int narg, char **arg) {
if (narg != 3)
error->all(FLERR, "Incorrect args for pair coefficients");
if (!allocated)
allocate();
int ilo, ihi, jlo, jhi;
force->bounds(FLERR,arg[0], atom->ntypes, ilo, ihi);
force->bounds(FLERR,arg[1], atom->ntypes, jlo, jhi);
double bulkmodulus_one = atof(arg[2]);
// set short-range force constant
double kn_one = 0.0;
if (domain->dimension == 3) {
kn_one = (16. / 15.) * bulkmodulus_one; //assuming poisson ratio = 1/4 for 3d
} else {
kn_one = 0.251856195 * (2. / 3.) * bulkmodulus_one; //assuming poisson ratio = 1/3 for 2d
}
int count = 0;
for (int i = ilo; i <= ihi; i++) {
for (int j = MAX(jlo, i); j <= jhi; j++) {
bulkmodulus[i][j] = bulkmodulus_one;
kn[i][j] = kn_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 PairTriSurf::init_one(int i, int j) {
if (!allocated)
allocate();
if (setflag[i][j] == 0)
error->all(FLERR, "All pair coeffs are not set");
bulkmodulus[j][i] = bulkmodulus[i][j];
kn[j][i] = kn[i][j];
// cutoff = sum of max I,J radii for
// dynamic/dynamic & dynamic/frozen interactions, but not frozen/frozen
double cutoff = maxrad_dynamic[i] + maxrad_dynamic[j];
cutoff = MAX(cutoff, maxrad_frozen[i] + maxrad_dynamic[j]);
cutoff = MAX(cutoff, maxrad_dynamic[i] + maxrad_frozen[j]);
if (comm->me == 0) {
printf("cutoff for pair smd/smd/tri_surface = %f\n", cutoff);
}
return cutoff;
}
/* ----------------------------------------------------------------------
init specific to this pair style
------------------------------------------------------------------------- */
void PairTriSurf::init_style() {
int i;
// error checks
if (!atom->contact_radius_flag)
error->all(FLERR, "Pair style smd/smd/tri_surface requires atom style with contact_radius");
// old: half list
int irequest = neighbor->request(this);
neighbor->requests[irequest]->half = 0;
neighbor->requests[irequest]->gran = 1;
// need a full neighbor list
// int irequest = neighbor->request(this);
// neighbor->requests[irequest]->half = 0;
// neighbor->requests[irequest]->full = 1;
// set maxrad_dynamic and maxrad_frozen for each type
// include future Fix pour particles as dynamic
for (i = 1; i <= atom->ntypes; i++)
onerad_dynamic[i] = onerad_frozen[i] = 0.0;
double *radius = atom->radius;
int *type = atom->type;
int nlocal = atom->nlocal;
for (i = 0; i < nlocal; i++) {
onerad_dynamic[type[i]] = MAX(onerad_dynamic[type[i]], radius[i]);
}
MPI_Allreduce(&onerad_dynamic[1], &maxrad_dynamic[1], atom->ntypes, MPI_DOUBLE, MPI_MAX, world);
MPI_Allreduce(&onerad_frozen[1], &maxrad_frozen[1], atom->ntypes, MPI_DOUBLE, MPI_MAX, world);
}
/* ----------------------------------------------------------------------
neighbor callback to inform pair style of neighbor list to use
optional granular history list
------------------------------------------------------------------------- */
void PairTriSurf::init_list(int id, NeighList *ptr) {
if (id == 0)
list = ptr;
}
/* ----------------------------------------------------------------------
memory usage of local atom-based arrays
------------------------------------------------------------------------- */
double PairTriSurf::memory_usage() {
return 0.0;
}
/*
* distance between triangle and point
*/
/*
function [dist,PP0] = pointTriangleDistance(TRI,P)
% calculate distance between a point and a triangle in 3D
% SYNTAX
% dist = pointTriangleDistance(TRI,P)
% [dist,PP0] = pointTriangleDistance(TRI,P)
%
% DESCRIPTION
% Calculate the distance of a given point P from a triangle TRI.
% Point P is a row vector of the form 1x3. The triangle is a matrix
% formed by three rows of points TRI = [P1;P2;P3] each of size 1x3.
% dist = pointTriangleDistance(TRI,P) returns the distance of the point P
% to the triangle TRI.
% [dist,PP0] = pointTriangleDistance(TRI,P) additionally returns the
% closest point PP0 to P on the triangle TRI.
%
% Author: Gwendolyn Fischer
% Release: 1.0
% Release date: 09/02/02
% Release: 1.1 Fixed Bug because of normalization
% Release: 1.2 Fixed Bug because of typo in region 5 20101013
% Release: 1.3 Fixed Bug because of typo in region 2 20101014
% Possible extention could be a version tailored not to return the distance
% and additionally the closest point, but instead return only the closest
% point. Could lead to a small speed gain.
% Example:
% %% The Problem
% P0 = [0.5 -0.3 0.5];
%
% P1 = [0 -1 0];
% P2 = [1 0 0];
% P3 = [0 0 0];
%
% vertices = [P1; P2; P3];
% faces = [1 2 3];
%
% %% The Engine
% [dist,PP0] = pointTriangleDistance([P1;P2;P3],P0);
%
% %% Visualization
% [x,y,z] = sphere(20);
% x = dist*x+P0(1);
% y = dist*y+P0(2);
% z = dist*z+P0(3);
%
% figure
% hold all
% patch('Vertices',vertices,'Faces',faces,'FaceColor','r','FaceAlpha',0.8);
% plot3(P0(1),P0(2),P0(3),'b*');
% plot3(PP0(1),PP0(2),PP0(3),'*g')
% surf(x,y,z,'FaceColor','b','FaceAlpha',0.3)
% view(3)
% The algorithm is based on
% "David Eberly, 'Distance Between Point and Triangle in 3D',
% Geometric Tools, LLC, (1999)"
% http:\\www.geometrictools.com/Documentation/DistancePoint3Triangle3.pdf
%
% ^t
% \ |
% \reg2|
% \ |
% \ |
% \ |
% \|
% *P2
% |\
% | \
% reg3 | \ reg1
% | \
% |reg0\
% | \
% | \ P1
% -------*-------*------->s
% |P0 \
% reg4 | reg5 \ reg6
*/
//void PairTriSurf::PointTriangleDistance(const Vector3d P, const Vector3d TRI1, const Vector3d TRI2, const Vector3d TRI3,
// Vector3d &CP, double &dist) {
//
// Vector3d B, E0, E1, D;
// double a, b, c, d, e, f;
// double det, s, t, sqrDistance, tmp0, tmp1, numer, denom, invDet;
//
// // rewrite triangle in normal form
// B = TRI1;
// E0 = TRI2 - B;
// E1 = TRI3 - B;
//
// D = B - P;
// a = E0.dot(E0);
// b = E0.dot(E1);
// c = E1.dot(E1);
// d = E0.dot(D);
// e = E1.dot(D);
// f = D.dot(D);
//
// det = a * c - b * b;
// //% do we have to use abs here?
// s = b * e - c * d;
// t = b * d - a * e;
//
// //% Terible tree of conditionals to determine in which region of the diagram
// //% shown above the projection of the point into the triangle-plane lies.
// if ((s + t) <= det) {
// if (s < 0) {
// if (t < 0) {
// // %region4
// if (d < 0) {
// t = 0;
// if (-d >= a) {
// s = 1;
// sqrDistance = a + 2 * d + f;
// } else {
// s = -d / a;
// sqrDistance = d * s + f;
// }
// } else {
// s = 0;
// if (e >= 0) {
// t = 0;
// sqrDistance = f;
// } else {
// if (-e >= c) {
// t = 1;
// sqrDistance = c + 2 * e + f;
// } else {
// t = -e / c;
// sqrDistance = e * t + f;
// }
// }
// }
// // end % of region 4
// } else {
// // % region 3
// s = 0;
// if (e >= 0) {
// t = 0;
// sqrDistance = f;
// } else {
// if (-e >= c) {
// t = 1;
// sqrDistance = c + 2 * e + f;
// } else {
// t = -e / c;
// sqrDistance = e * t + f;
// }
// }
// }
// // end of region 3
// } else {
// if (t < 0) {
// //% region 5
// t = 0;
// if (d >= 0) {
// s = 0;
// sqrDistance = f;
// } else {
// if (-d >= a) {
// s = 1;
// sqrDistance = a + 2 * d + f;
// } else {
// s = -d / a;
// sqrDistance = d * s + f;
// }
// }
// } else {
// // region 0
// invDet = 1 / det;
// s = s * invDet;
// t = t * invDet;
// sqrDistance = s * (a * s + b * t + 2 * d) + t * (b * s + c * t + 2 * e) + f;
// }
// }
// } else {
// if (s < 0) {
// // % region 2
// tmp0 = b + d;
// tmp1 = c + e;
// if (tmp1 > tmp0) { //% minimum on edge s+t=1
// numer = tmp1 - tmp0;
// denom = a - 2 * b + c;
// if (numer >= denom) {
// s = 1;
// t = 0;
// sqrDistance = a + 2 * d + f;
// } else {
// s = numer / denom;
// t = 1 - s;
// sqrDistance = s * (a * s + b * t + 2 * d) + t * (b * s + c * t + 2 * e) + f;
// }
// } else
// // % minimum on edge s=0
// s = 0;
// if (tmp1 <= 0) {
// t = 1;
// sqrDistance = c + 2 * e + f;
// } else {
// if (e >= 0) {
// t = 0;
// sqrDistance = f;
// } else {
// t = -e / c;
// sqrDistance = e * t + f;
// }
// }
// } //end % of region 2
// else {
// if (t < 0) {
// // %region6
// tmp0 = b + e;
// tmp1 = a + d;
// if (tmp1 > tmp0) {
// numer = tmp1 - tmp0;
// denom = a - 2 * b + c;
// if (numer >= denom) {
// t = 1;
// s = 0;
// sqrDistance = c + 2 * e + f;
// } else {
// t = numer / denom;
// s = 1 - t;
// sqrDistance = s * (a * s + b * t + 2 * d) + t * (b * s + c * t + 2 * e) + f;
// }
// } else {
// t = 0;
// if (tmp1 <= 0) {
// s = 1;
// sqrDistance = a + 2 * d + f;
// } else {
// if (d >= 0) {
// s = 0;
// sqrDistance = f;
// } else {
// s = -d / a;
// sqrDistance = d * s + f;
// }
// }
// } // % end region 6
// } else {
// //% region 1
// numer = c + e - b - d;
// if (numer <= 0) {
// s = 0;
// t = 1;
// sqrDistance = c + 2 * e + f;
// } else {
// denom = a - 2 * b + c;
// if (numer >= denom) {
// s = 1;
// t = 0;
// sqrDistance = a + 2 * d + f;
// } else {
// s = numer / denom;
// t = 1 - s;
// sqrDistance = s * (a * s + b * t + 2 * d) + t * (b * s + c * t + 2 * e) + f;
// }
// } //% end of region 1
// }
// }
// }
//
// // % account for numerical round-off error
// if (sqrDistance < 0) {
// sqrDistance = 0;
// }
//
// dist = sqrt(sqrDistance);
//
// // closest point
// CP = B + s * E0 + t * E1;
//
//}
/*
* % The algorithm is based on
% "David Eberly, 'Distance Between Point and Triangle in 3D',
% Geometric Tools, LLC, (1999)"
% http:\\www.geometrictools.com/Documentation/DistancePoint3Triangle3.pdf
*/
void PairTriSurf::PointTriangleDistance(const Vector3d sourcePosition, const Vector3d TRI0, const Vector3d TRI1,
const Vector3d TRI2, Vector3d &CP, double &dist) {
Vector3d edge0 = TRI1 - TRI0;
Vector3d edge1 = TRI2 - TRI0;
Vector3d v0 = TRI0 - sourcePosition;
double a = edge0.dot(edge0);
double b = edge0.dot(edge1);
double c = edge1.dot(edge1);
double d = edge0.dot(v0);
double e = edge1.dot(v0);
double det = a * c - b * b;
double s = b * e - c * d;
double t = b * d - a * e;
if (s + t < det) {
if (s < 0.f) {
if (t < 0.f) {
if (d < 0.f) {
s = clamp(-d / a, 0.f, 1.f);
t = 0.f;
} else {
s = 0.f;
t = clamp(-e / c, 0.f, 1.f);
}
} else {
s = 0.f;
t = clamp(-e / c, 0.f, 1.f);
}
} else if (t < 0.f) {
s = clamp(-d / a, 0.f, 1.f);
t = 0.f;
} else {
float invDet = 1.f / det;
s *= invDet;
t *= invDet;
}
} else {
if (s < 0.f) {
float tmp0 = b + d;
float tmp1 = c + e;
if (tmp1 > tmp0) {
float numer = tmp1 - tmp0;
float denom = a - 2 * b + c;
s = clamp(numer / denom, 0.f, 1.f);
t = 1 - s;
} else {
t = clamp(-e / c, 0.f, 1.f);
s = 0.f;
}
} else if (t < 0.f) {
if (a + d > b + e) {
float numer = c + e - b - d;
float denom = a - 2 * b + c;
s = clamp(numer / denom, 0.f, 1.f);
t = 1 - s;
} else {
s = clamp(-e / c, 0.f, 1.f);
t = 0.f;
}
} else {
float numer = c + e - b - d;
float denom = a - 2 * b + c;
s = clamp(numer / denom, 0.f, 1.f);
t = 1.f - s;
}
}
CP = TRI0 + s * edge0 + t * edge1;
dist = (CP - sourcePosition).norm();
}
double PairTriSurf::clamp(const double a, const double min, const double max) {
if (a < min) {
return min;
} else if (a > max) {
return max;
} else {
return a;
}
}
void *PairTriSurf::extract(const char *str, int &i) {
//printf("in PairTriSurf::extract\n");
if (strcmp(str, "smd/tri_surface/stable_time_increment_ptr") == 0) {
return (void *) &stable_time_increment;
}
return NULL;
}
diff --git a/src/compute.cpp b/src/compute.cpp
index d306b0b34..88ae70c06 100644
--- a/src/compute.cpp
+++ b/src/compute.cpp
@@ -1,228 +1,229 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain 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 <mpi.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "compute.h"
#include "atom.h"
#include "domain.h"
#include "force.h"
#include "comm.h"
#include "group.h"
#include "modify.h"
#include "fix.h"
#include "atom_masks.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
#define DELTA 4
#define BIG MAXTAGINT
// allocate space for static class instance variable and initialize it
int Compute::instance_total = 0;
/* ---------------------------------------------------------------------- */
Compute::Compute(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp),
id(NULL), style(NULL),
- vector(NULL), array(NULL), vector_atom(NULL), array_atom(NULL), vector_local(NULL), array_local(NULL),
+ vector(NULL), array(NULL), vector_atom(NULL),
+ array_atom(NULL), vector_local(NULL), array_local(NULL),
tlist(NULL), vbiasall(NULL)
{
instance_me = instance_total++;
if (narg < 3) error->all(FLERR,"Illegal compute command");
// compute ID, group, and style
// ID must be all alphanumeric chars or underscores
int n = strlen(arg[0]) + 1;
id = new char[n];
strcpy(id,arg[0]);
for (int i = 0; i < n-1; i++)
if (!isalnum(id[i]) && id[i] != '_')
error->all(FLERR,
"Compute ID must be alphanumeric or underscore characters");
igroup = group->find(arg[1]);
if (igroup == -1) error->all(FLERR,"Could not find compute group ID");
groupbit = group->bitmask[igroup];
n = strlen(arg[2]) + 1;
style = new char[n];
strcpy(style,arg[2]);
// set child class defaults
scalar_flag = vector_flag = array_flag = 0;
peratom_flag = local_flag = 0;
size_vector_variable = size_array_rows_variable = 0;
tempflag = pressflag = peflag = 0;
pressatomflag = peatomflag = 0;
create_attribute = 0;
tempbias = 0;
timeflag = 0;
comm_forward = comm_reverse = 0;
dynamic = 0;
dynamic_group_allow = 1;
invoked_scalar = invoked_vector = invoked_array = -1;
invoked_peratom = invoked_local = -1;
invoked_flag = 0;
// set modify defaults
extra_dof = domain->dimension;
dynamic_user = 0;
fix_dof = 0;
// setup list of timesteps
ntime = maxtime = 0;
// data masks
execution_space = Host;
datamask_read = ALL_MASK;
datamask_modify = ALL_MASK;
copymode = 0;
}
/* ---------------------------------------------------------------------- */
Compute::~Compute()
{
if (copymode) return;
delete [] id;
delete [] style;
memory->destroy(tlist);
}
/* ---------------------------------------------------------------------- */
void Compute::modify_params(int narg, char **arg)
{
if (narg == 0) error->all(FLERR,"Illegal compute_modify command");
int iarg = 0;
while (iarg < narg) {
if (strcmp(arg[iarg],"extra") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal compute_modify command");
extra_dof = force->numeric(FLERR,arg[iarg+1]);
iarg += 2;
} else if (strcmp(arg[iarg],"dynamic") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal compute_modify command");
if (strcmp(arg[iarg+1],"no") == 0) dynamic_user = 0;
else if (strcmp(arg[iarg+1],"yes") == 0) dynamic_user = 1;
else error->all(FLERR,"Illegal compute_modify command");
iarg += 2;
} else error->all(FLERR,"Illegal compute_modify command");
}
}
/* ----------------------------------------------------------------------
calculate adjustment in DOF due to fixes
------------------------------------------------------------------------- */
void Compute::adjust_dof_fix()
{
Fix **fix = modify->fix;
int nfix = modify->nfix;
fix_dof = 0;
for (int i = 0; i < nfix; i++)
if (fix[i]->dof_flag)
fix_dof += fix[i]->dof(igroup);
}
/* ----------------------------------------------------------------------
reset extra_dof to its default value
------------------------------------------------------------------------- */
void Compute::reset_extra_dof()
{
extra_dof = domain->dimension;
}
/* ---------------------------------------------------------------------- */
void Compute::reset_extra_compute_fix(const char *)
{
error->all(FLERR,
"Compute does not allow an extra compute or fix to be reset");
}
/* ----------------------------------------------------------------------
add ntimestep to list of timesteps the compute will be called on
do not add if already in list
search from top downward, since list of times is in decreasing order
------------------------------------------------------------------------- */
void Compute::addstep(bigint ntimestep)
{
// i = location in list to insert ntimestep
int i;
for (i = ntime-1; i >= 0; i--) {
if (ntimestep == tlist[i]) return;
if (ntimestep < tlist[i]) break;
}
i++;
// extend list as needed
if (ntime == maxtime) {
maxtime += DELTA;
memory->grow(tlist,maxtime,"compute:tlist");
}
// move remainder of list upward and insert ntimestep
for (int j = ntime-1; j >= i; j--) tlist[j+1] = tlist[j];
tlist[i] = ntimestep;
ntime++;
}
/* ----------------------------------------------------------------------
return 1/0 if ntimestep is or is not in list of calling timesteps
if value(s) on top of list are less than ntimestep, delete them
search from top downward, since list of times is in decreasing order
------------------------------------------------------------------------- */
int Compute::matchstep(bigint ntimestep)
{
for (int i = ntime-1; i >= 0; i--) {
if (ntimestep < tlist[i]) return 0;
if (ntimestep == tlist[i]) return 1;
if (ntimestep > tlist[i]) ntime--;
}
return 0;
}
/* ----------------------------------------------------------------------
clean out list of timesteps to call the compute on
------------------------------------------------------------------------- */
void Compute::clearstep()
{
ntime = 0;
}
diff --git a/src/compute_bond_local.cpp b/src/compute_bond_local.cpp
index b866be699..424059aa8 100644
--- a/src/compute_bond_local.cpp
+++ b/src/compute_bond_local.cpp
@@ -1,399 +1,399 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#include <math.h>
#include <string.h>
#include "compute_bond_local.h"
#include "atom.h"
#include "atom_vec.h"
#include "molecule.h"
#include "update.h"
#include "domain.h"
#include "force.h"
#include "bond.h"
#include "math_extra.h"
#include "comm.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
#define DELTA 10000
#define EPSILON 1.0e-12
enum{DIST,VELVIB,OMEGA,ENGTRANS,ENGVIB,ENGROT,ENGPOT,FORCE};
/* ---------------------------------------------------------------------- */
ComputeBondLocal::ComputeBondLocal(LAMMPS *lmp, int narg, char **arg) :
Compute(lmp, narg, arg),
bstyle(NULL)
{
if (narg < 4) error->all(FLERR,"Illegal compute bond/local command");
if (atom->avec->bonds_allow == 0)
error->all(FLERR,"Compute bond/local used when bonds are not allowed");
local_flag = 1;
comm_forward = 3;
nvalues = narg - 3;
if (nvalues == 1) size_local_cols = 0;
else size_local_cols = nvalues;
bstyle = new int[nvalues];
nvalues = 0;
for (int iarg = 3; iarg < narg; iarg++) {
if (strcmp(arg[iarg],"dist") == 0) bstyle[nvalues++] = DIST;
else if (strcmp(arg[iarg],"engpot") == 0) bstyle[nvalues++] = ENGPOT;
else if (strcmp(arg[iarg],"force") == 0) bstyle[nvalues++] = FORCE;
else if (strcmp(arg[iarg],"engvib") == 0) bstyle[nvalues++] = ENGVIB;
else if (strcmp(arg[iarg],"engrot") == 0) bstyle[nvalues++] = ENGROT;
else if (strcmp(arg[iarg],"engtrans") == 0) bstyle[nvalues++] = ENGTRANS;
else if (strcmp(arg[iarg],"omega") == 0) bstyle[nvalues++] = OMEGA;
else if (strcmp(arg[iarg],"velvib") == 0) bstyle[nvalues++] = VELVIB;
else error->all(FLERR,"Invalid keyword in compute bond/local command");
}
// set singleflag if need to call bond->single()
// set velflag if compute any quantities based on velocities
singleflag = 0;
- ghostvelflag = 0;
+ velflag = 0;
for (int i = 0; i < nvalues; i++) {
if (bstyle[i] == ENGPOT || bstyle[i] == FORCE) singleflag = 1;
if (bstyle[i] == VELVIB || bstyle[i] == OMEGA || bstyle[i] == ENGTRANS ||
bstyle[i] == ENGVIB || bstyle[i] == ENGROT) velflag = 1;
}
nmax = 0;
}
/* ---------------------------------------------------------------------- */
ComputeBondLocal::~ComputeBondLocal()
{
memory->destroy(vector);
memory->destroy(array);
delete [] bstyle;
}
/* ---------------------------------------------------------------------- */
void ComputeBondLocal::init()
{
if (force->bond == NULL)
error->all(FLERR,"No bond style is defined for compute bond/local");
// set ghostvelflag if need to acquire ghost atom velocities
if (velflag && !comm->ghost_velocity) ghostvelflag = 1;
else ghostvelflag = 0;
// do initial memory allocation so that memory_usage() is correct
initflag = 1;
ncount = compute_bonds(0);
initflag = 0;
if (ncount > nmax) reallocate(ncount);
size_local_rows = ncount;
}
/* ---------------------------------------------------------------------- */
void ComputeBondLocal::compute_local()
{
invoked_local = update->ntimestep;
// count local entries and compute bond info
ncount = compute_bonds(0);
if (ncount > nmax) reallocate(ncount);
size_local_rows = ncount;
ncount = compute_bonds(1);
}
/* ----------------------------------------------------------------------
count bonds and compute bond info on this proc
only count bond once if newton_bond is off
all atoms in interaction must be in group
all atoms in interaction must be known to proc
if bond is deleted (type = 0), do not count
if bond is turned off (type < 0), still count
if flag is set, compute requested info about bond
if bond is turned off (type < 0), energy = 0.0
------------------------------------------------------------------------- */
int ComputeBondLocal::compute_bonds(int flag)
{
int i,m,n,nb,atom1,atom2,imol,iatom,btype;
tagint tagprev;
double dx,dy,dz,rsq;
double mass1,mass2,masstotal,invmasstotal;
double xcm[3],vcm[3];
double delr1[3],delr2[3],delv1[3],delv2[3];
double r12[3],vpar1,vpar2;
double vvib,vrotsq;
double inertia,omegasq;
double mvv2e;
double engpot,engtrans,engvib,engrot,fbond;
double *ptr;
double **x = atom->x;
double **v = atom->v;
int *type = atom->type;
double *mass = atom->mass;
double *rmass = atom->rmass;
tagint *tag = atom->tag;
int *num_bond = atom->num_bond;
tagint **bond_atom = atom->bond_atom;
int **bond_type = atom->bond_type;
int *mask = atom->mask;
int *molindex = atom->molindex;
int *molatom = atom->molatom;
Molecule **onemols = atom->avec->onemols;
int nlocal = atom->nlocal;
int newton_bond = force->newton_bond;
int molecular = atom->molecular;
Bond *bond = force->bond;
// communicate ghost velocities if needed
if (ghostvelflag && !initflag) comm->forward_comm_compute(this);
// loop over all atoms and their bonds
m = n = 0;
for (atom1 = 0; atom1 < nlocal; atom1++) {
if (!(mask[atom1] & groupbit)) continue;
if (molecular == 1) nb = num_bond[atom1];
else {
if (molindex[atom1] < 0) continue;
imol = molindex[atom1];
iatom = molatom[atom1];
nb = onemols[imol]->num_bond[iatom];
}
for (i = 0; i < nb; i++) {
if (molecular == 1) {
btype = bond_type[atom1][i];
atom2 = atom->map(bond_atom[atom1][i]);
} else {
tagprev = tag[atom1] - iatom - 1;
btype = onemols[imol]->bond_type[iatom][i];
atom2 = atom->map(onemols[imol]->bond_atom[iatom][i]+tagprev);
}
if (atom2 < 0 || !(mask[atom2] & groupbit)) continue;
if (newton_bond == 0 && tag[atom1] > tag[atom2]) continue;
if (btype == 0) continue;
if (!flag) {
m++;
continue;
}
dx = x[atom1][0] - x[atom2][0];
dy = x[atom1][1] - x[atom2][1];
dz = x[atom1][2] - x[atom2][2];
domain->minimum_image(dx,dy,dz);
rsq = dx*dx + dy*dy + dz*dz;
if (btype == 0) {
engpot = fbond = 0.0;
engvib = engrot = engtrans = omegasq = vvib = 0.0;
} else {
if (singleflag) engpot = bond->single(btype,rsq,atom1,atom2,fbond);
if (velflag) {
if (rmass) {
mass1 = rmass[atom1];
mass2 = rmass[atom2];
}
else {
mass1 = mass[type[atom1]];
mass2 = mass[type[atom2]];
}
masstotal = mass1+mass2;
invmasstotal = 1.0 / (masstotal);
xcm[0] = (mass1*x[atom1][0] + mass2*x[atom2][0]) * invmasstotal;
xcm[1] = (mass1*x[atom1][1] + mass2*x[atom2][1]) * invmasstotal;
xcm[2] = (mass1*x[atom1][2] + mass2*x[atom2][2]) * invmasstotal;
vcm[0] = (mass1*v[atom1][0] + mass2*v[atom2][0]) * invmasstotal;
vcm[1] = (mass1*v[atom1][1] + mass2*v[atom2][1]) * invmasstotal;
vcm[2] = (mass1*v[atom1][2] + mass2*v[atom2][2]) * invmasstotal;
engtrans = 0.5 * masstotal * MathExtra::lensq3(vcm);
// r12 = unit bond vector from atom1 to atom2
MathExtra::sub3(x[atom2],x[atom1],r12);
MathExtra::norm3(r12);
// delr = vector from COM to each atom
// delv = velocity of each atom relative to COM
MathExtra::sub3(x[atom1],xcm,delr1);
MathExtra::sub3(x[atom2],xcm,delr2);
MathExtra::sub3(v[atom1],vcm,delv1);
MathExtra::sub3(v[atom2],vcm,delv2);
// vpar = component of delv parallel to bond vector
vpar1 = MathExtra::dot3(delv1,r12);
vpar2 = MathExtra::dot3(delv2,r12);
engvib = 0.5 * (mass1*vpar1*vpar1 + mass2*vpar2*vpar2);
// vvib = relative velocity of 2 atoms along bond direction
// vvib < 0 for 2 atoms moving towards each other
// vvib > 0 for 2 atoms moving apart
vvib = vpar2 - vpar1;
// vrotsq = tangential speed squared of atom1 only
// omegasq = omega squared, and is the same for atom1 and atom2
inertia = mass1*MathExtra::lensq3(delr1) +
mass2*MathExtra::lensq3(delr2);
vrotsq = MathExtra::lensq3(delv1) - vpar1*vpar1;
omegasq = vrotsq / MathExtra::lensq3(delr1);
engrot = 0.5 * inertia * omegasq;
// sanity check: engtotal = engtrans + engvib + engrot
//engtot = 0.5 * (mass1*MathExtra::lensq3(v[atom1]) +
// mass2*MathExtra::lensq3(v[atom2]));
//if (fabs(engtot-engtrans-engvib-engrot) > EPSILON)
// error->one(FLERR,"Sanity check on 3 energy components failed");
// scale energies by units
mvv2e = force->mvv2e;
engtrans *= mvv2e;
engvib *= mvv2e;
engrot *= mvv2e;
}
if (nvalues == 1) ptr = &vector[m];
else ptr = array[m];
for (n = 0; n < nvalues; n++) {
switch (bstyle[n]) {
case DIST:
ptr[n] = sqrt(rsq);
break;
case ENGPOT:
ptr[n] = engpot;
break;
case FORCE:
ptr[n] = sqrt(rsq)*fbond;
break;
case ENGVIB:
ptr[n] = engvib;
break;
case ENGROT:
ptr[n] = engrot;
break;
case ENGTRANS:
ptr[n] = engtrans;
break;
case OMEGA:
ptr[n] = sqrt(omegasq);
break;
case VELVIB:
ptr[n] = vvib;
break;
}
}
}
m++;
}
}
return m;
}
/* ---------------------------------------------------------------------- */
int ComputeBondLocal::pack_forward_comm(int n, int *list, double *buf,
int pbc_flag, int *pbc)
{
int i,j,m;
double **v = atom->v;
m = 0;
for (i = 0; i < n; i++) {
j = list[i];
buf[m++] = v[j][0];
buf[m++] = v[j][1];
buf[m++] = v[j][2];
}
return m;
}
/* ---------------------------------------------------------------------- */
void ComputeBondLocal::unpack_forward_comm(int n, int first, double *buf)
{
int i,m,last;
double **v = atom->v;
m = 0;
last = first + n;
for (i = first; i < last; i++) {
v[i][0] = buf[m++];
v[i][1] = buf[m++];
v[i][2] = buf[m++];
}
}
/* ---------------------------------------------------------------------- */
void ComputeBondLocal::reallocate(int n)
{
// grow vector or array and indices array
while (nmax < n) nmax += DELTA;
if (nvalues == 1) {
memory->destroy(vector);
memory->create(vector,nmax,"bond/local:vector");
vector_local = vector;
} else {
memory->destroy(array);
memory->create(array,nmax,nvalues,"bond/local:array");
array_local = array;
}
}
/* ----------------------------------------------------------------------
memory usage of local data
------------------------------------------------------------------------- */
double ComputeBondLocal::memory_usage()
{
double bytes = nmax*nvalues * sizeof(double);
return bytes;
}
diff --git a/src/compute_global_atom.cpp b/src/compute_global_atom.cpp
new file mode 100644
index 000000000..b786043a3
--- /dev/null
+++ b/src/compute_global_atom.cpp
@@ -0,0 +1,540 @@
+/* ----------------------------------------------------------------------
+ LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
+ http://lammps.sandia.gov, Sandia National Laboratories
+ Steve Plimpton, sjplimp@sandia.gov
+
+ Copyright (2003) Sandia Corporation. Under the terms of Contract
+ DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
+ certain rights in this software. This software is distributed under
+ the GNU General Public License.
+
+ See the README file in the top-level LAMMPS directory.
+------------------------------------------------------------------------- */
+
+#include <string.h>
+#include <stdlib.h>
+#include "compute_global_atom.h"
+#include "atom.h"
+#include "update.h"
+#include "domain.h"
+#include "modify.h"
+#include "fix.h"
+#include "force.h"
+#include "comm.h"
+#include "group.h"
+#include "input.h"
+#include "variable.h"
+#include "memory.h"
+#include "error.h"
+
+using namespace LAMMPS_NS;
+
+enum{COMPUTE,FIX,VARIABLE};
+enum{VECTOR,ARRAY};
+
+#define INVOKED_VECTOR 2
+#define INVOKED_ARRAY 4
+#define INVOKED_PERATOM 8
+
+#define BIG 1.0e20
+
+/* ---------------------------------------------------------------------- */
+
+ComputeGlobalAtom::ComputeGlobalAtom(LAMMPS *lmp, int narg, char **arg) :
+ Compute(lmp, narg, arg),
+ idref(NULL), which(NULL), argindex(NULL), value2index(NULL), ids(NULL),
+ indices(NULL), varatom(NULL), vecglobal(NULL)
+{
+ if (narg < 5) error->all(FLERR,"Illegal compute global/atom command");
+
+ peratom_flag = 1;
+
+ // process index arg
+
+ int iarg = 3;
+
+ if (strncmp(arg[iarg],"c_",2) == 0 ||
+ strncmp(arg[iarg],"f_",2) == 0 ||
+ strncmp(arg[iarg],"v_",2) == 0) {
+ if (arg[iarg][0] == 'c') whichref = COMPUTE;
+ else if (arg[iarg][0] == 'f') whichref = FIX;
+ else if (arg[iarg][0] == 'v') whichref = VARIABLE;
+
+ int n = strlen(arg[iarg]);
+ char *suffix = new char[n];
+ strcpy(suffix,&arg[iarg][2]);
+
+ char *ptr = strchr(suffix,'[');
+ if (ptr) {
+ if (suffix[strlen(suffix)-1] != ']')
+ error->all(FLERR,"Illegal compute global/atom command");
+ indexref = atoi(ptr+1);
+ *ptr = '\0';
+ } else indexref = 0;
+
+ n = strlen(suffix) + 1;
+ idref = new char[n];
+ strcpy(idref,suffix);
+ delete [] suffix;
+ } else error->all(FLERR,"Illegal compute global/atom command");
+
+ iarg++;
+
+ // expand args if any have wildcard character "*"
+
+ int expand = 0;
+ char **earg;
+ int nargnew = input->expand_args(narg-iarg,&arg[iarg],1,earg);
+
+ if (earg != &arg[iarg]) expand = 1;
+ arg = earg;
+
+ // parse values until one isn't recognized
+
+ which = new int[nargnew];
+ argindex = new int[nargnew];
+ ids = new char*[nargnew];
+ value2index = new int[nargnew];
+ nvalues = 0;
+
+ iarg = 0;
+ while (iarg < nargnew) {
+ ids[nvalues] = NULL;
+ if (strncmp(arg[iarg],"c_",2) == 0 ||
+ strncmp(arg[iarg],"f_",2) == 0 ||
+ strncmp(arg[iarg],"v_",2) == 0) {
+ if (arg[iarg][0] == 'c') which[nvalues] = COMPUTE;
+ else if (arg[iarg][0] == 'f') which[nvalues] = FIX;
+ else if (arg[iarg][0] == 'v') which[nvalues] = VARIABLE;
+
+ int n = strlen(arg[iarg]);
+ char *suffix = new char[n];
+ strcpy(suffix,&arg[iarg][2]);
+
+ char *ptr = strchr(suffix,'[');
+ if (ptr) {
+ if (suffix[strlen(suffix)-1] != ']')
+ error->all(FLERR,"Illegal compute global/atom command");
+ argindex[nvalues] = atoi(ptr+1);
+ *ptr = '\0';
+ } else argindex[nvalues] = 0;
+
+ n = strlen(suffix) + 1;
+ ids[nvalues] = new char[n];
+ strcpy(ids[nvalues],suffix);
+ nvalues++;
+ delete [] suffix;
+
+ } else error->all(FLERR,"Illegal compute global/atom command");
+
+ iarg++;
+ }
+
+ // if wildcard expansion occurred, free earg memory from expand_args()
+
+ if (expand) {
+ for (int i = 0; i < nargnew; i++) delete [] earg[i];
+ memory->sfree(earg);
+ }
+
+ // setup and error check both index arg and values
+
+ if (whichref == COMPUTE) {
+ int icompute = modify->find_compute(idref);
+ if (icompute < 0)
+ error->all(FLERR,"Compute ID for compute global/atom does not exist");
+
+ if (!modify->compute[icompute]->peratom_flag)
+ error->all(FLERR,"Compute global/atom compute does not "
+ "calculate a per-atom vector or array");
+ if (indexref == 0 &&
+ modify->compute[icompute]->size_peratom_cols != 0)
+ error->all(FLERR,"Compute global/atom compute does not "
+ "calculate a per-atom vector");
+ if (indexref && modify->compute[icompute]->size_peratom_cols == 0)
+ error->all(FLERR,"Compute global/atom compute does not "
+ "calculate a per-atom array");
+ if (indexref && indexref > modify->compute[icompute]->size_peratom_cols)
+ error->all(FLERR,
+ "Compute global/atom compute array is accessed out-of-range");
+
+ } else if (whichref == FIX) {
+ int ifix = modify->find_fix(idref);
+ if (ifix < 0)
+ error->all(FLERR,"Fix ID for compute global/atom does not exist");
+ if (!modify->fix[ifix]->peratom_flag)
+ error->all(FLERR,"Compute global/atom fix does not "
+ "calculate a per-atom vector or array");
+ if (indexref == 0 &&
+ modify->fix[ifix]->size_peratom_cols != 0)
+ error->all(FLERR,"Compute global/atom fix does not "
+ "calculate a per-atom vector");
+ if (indexref && modify->fix[ifix]->size_peratom_cols == 0)
+ error->all(FLERR,"Compute global/atom fix does not "
+ "calculate a per-atom array");
+ if (indexref && indexref > modify->fix[ifix]->size_peratom_cols)
+ error->all(FLERR,
+ "Compute global/atom fix array is accessed out-of-range");
+
+ } else if (whichref == VARIABLE) {
+ int ivariable = input->variable->find(idref);
+ if (ivariable < 0)
+ error->all(FLERR,"Variable name for compute global/atom does not exist");
+ if (input->variable->atomstyle(ivariable) == 0)
+ error->all(FLERR,"Compute global/atom variable is not "
+ "atom-style variable");
+ }
+
+ for (int i = 0; i < nvalues; i++) {
+ if (which[i] == COMPUTE) {
+ int icompute = modify->find_compute(ids[i]);
+ if (icompute < 0)
+ error->all(FLERR,"Compute ID for compute global/atom does not exist");
+ if (argindex[i] == 0) {
+ if (!modify->compute[icompute]->vector_flag)
+ error->all(FLERR,"Compute global/atom compute does not "
+ "calculate a global vector");
+ } else {
+ if (!modify->compute[icompute]->array_flag)
+ error->all(FLERR,"Compute global/atom compute does not "
+ "calculate a global array");
+ if (argindex[i] > modify->compute[icompute]->size_array_cols)
+ error->all(FLERR,"Compute global/atom compute array is "
+ "accessed out-of-range");
+ }
+
+ } else if (which[i] == FIX) {
+ int ifix = modify->find_fix(ids[i]);
+ if (ifix < 0)
+ error->all(FLERR,"Fix ID for compute global/atom does not exist");
+ if (argindex[i] == 0) {
+ if (!modify->fix[ifix]->vector_flag)
+ error->all(FLERR,"Compute global/atom fix does not "
+ "calculate a global vector");
+ } else {
+ if (!modify->fix[ifix]->array_flag)
+ error->all(FLERR,"Compute global/atom fix does not "
+ "calculate a global array");
+ if (argindex[i] > modify->fix[ifix]->size_array_cols)
+ error->all(FLERR,"Compute global/atom fix array is "
+ "accessed out-of-range");
+ }
+
+ } else if (which[i] == VARIABLE) {
+ int ivariable = input->variable->find(ids[i]);
+ if (ivariable < 0)
+ error->all(FLERR,"Variable name for compute global/atom "
+ "does not exist");
+ if (input->variable->vectorstyle(ivariable) == 0)
+ error->all(FLERR,"Compute global/atom variable is not "
+ "vector-style variable");
+ }
+ }
+
+ // this compute produces either a peratom vector or array
+
+ if (nvalues == 1) size_peratom_cols = 0;
+ else size_peratom_cols = nvalues;
+
+ nmax = maxvector = 0;
+ indices = NULL;
+ varatom = NULL;
+ vecglobal = NULL;
+
+ vector_atom = NULL;
+ array_atom = NULL;
+}
+
+/* ---------------------------------------------------------------------- */
+
+ComputeGlobalAtom::~ComputeGlobalAtom()
+{
+ delete [] idref;
+
+ delete [] which;
+ delete [] argindex;
+ for (int m = 0; m < nvalues; m++) delete [] ids[m];
+ delete [] ids;
+ delete [] value2index;
+
+ memory->destroy(indices);
+ memory->destroy(varatom);
+ memory->destroy(vecglobal);
+ memory->destroy(vector_atom);
+ memory->destroy(array_atom);
+}
+
+/* ---------------------------------------------------------------------- */
+
+void ComputeGlobalAtom::init()
+{
+ // set indices of all computes,fixes,variables
+
+ if (whichref == COMPUTE) {
+ int icompute = modify->find_compute(idref);
+ if (icompute < 0)
+ error->all(FLERR,"Compute ID for compute global/atom does not exist");
+ ref2index = icompute;
+ } else if (whichref == FIX) {
+ int ifix = modify->find_fix(idref);
+ if (ifix < 0)
+ error->all(FLERR,"Fix ID for compute global/atom does not exist");
+ ref2index = ifix;
+ } else if (whichref == VARIABLE) {
+ int ivariable = input->variable->find(idref);
+ if (ivariable < 0)
+ error->all(FLERR,"Variable name for compute global/atom does not exist");
+ ref2index = ivariable;
+ }
+
+ for (int m = 0; m < nvalues; m++) {
+ if (which[m] == COMPUTE) {
+ int icompute = modify->find_compute(ids[m]);
+ if (icompute < 0)
+ error->all(FLERR,"Compute ID for compute global/atom does not exist");
+ value2index[m] = icompute;
+
+ } else if (which[m] == FIX) {
+ int ifix = modify->find_fix(ids[m]);
+ if (ifix < 0)
+ error->all(FLERR,"Fix ID for compute global/atom does not exist");
+ value2index[m] = ifix;
+
+ } else if (which[m] == VARIABLE) {
+ int ivariable = input->variable->find(ids[m]);
+ if (ivariable < 0)
+ error->all(FLERR,"Variable name for compute global/atom "
+ "does not exist");
+ value2index[m] = ivariable;
+ }
+ }
+}
+
+/* ---------------------------------------------------------------------- */
+
+void ComputeGlobalAtom::compute_peratom()
+{
+ int i,j;
+
+ invoked_peratom = update->ntimestep;
+
+ // grow indices and output vector or array if necessary
+
+ if (atom->nmax > nmax) {
+ nmax = atom->nmax;
+ memory->destroy(indices);
+ memory->create(indices,nmax,"global/atom:indices");
+ if (nvalues == 1) {
+ memory->destroy(vector_atom);
+ memory->create(vector_atom,nmax,"global/atom:vector_atom");
+ } else {
+ memory->destroy(array_atom);
+ memory->create(array_atom,nmax,nvalues,"global/atom:array_atom");
+ }
+ }
+
+ // setup current peratom indices
+ // integer indices are rounded down from double values
+ // indices are decremented from 1 to N -> 0 to N-1
+
+ int *mask = atom->mask;
+ int nlocal = atom->nlocal;
+
+ if (whichref == COMPUTE) {
+ Compute *compute = modify->compute[ref2index];
+
+ if (!(compute->invoked_flag & INVOKED_PERATOM)) {
+ compute->compute_peratom();
+ compute->invoked_flag |= INVOKED_PERATOM;
+ }
+
+ if (indexref == 0) {
+ double *compute_vector = compute->vector_atom;
+ for (i = 0; i < nlocal; i++)
+ if (mask[i] & groupbit)
+ indices[i] = static_cast<int> (compute_vector[i]) - 1;
+ } else {
+ double **compute_array = compute->array_atom;
+ int im1 = indexref - 1;
+ for (i = 0; i < nlocal; i++)
+ if (mask[i] & groupbit)
+ indices[i] = static_cast<int> (compute_array[i][im1]) - 1;
+ }
+
+ } else if (whichref == FIX) {
+ if (update->ntimestep % modify->fix[ref2index]->peratom_freq)
+ error->all(FLERR,"Fix used in compute global/atom not "
+ "computed at compatible time");
+ Fix *fix = modify->fix[ref2index];
+
+ if (indexref == 0) {
+ double *fix_vector = fix->vector_atom;
+ for (i = 0; i < nlocal; i++)
+ if (mask[i] & groupbit)
+ indices[i] = static_cast<int> (fix_vector[i]) - 1;
+ } else {
+ double **fix_array = fix->array_atom;
+ int im1 = indexref - 1;
+ for (i = 0; i < nlocal; i++)
+ if (mask[i] & groupbit)
+ indices[i] = static_cast<int> (fix_array[i][im1]) - 1;
+ }
+
+ } else if (whichref == VARIABLE) {
+ if (atom->nmax > nmax) {
+ nmax = atom->nmax;
+ memory->destroy(varatom);
+ memory->create(varatom,nmax,"global/atom:varatom");
+ }
+
+ input->variable->compute_atom(ref2index,igroup,varatom,1,0);
+ for (i = 0; i < nlocal; i++)
+ if (mask[i] & groupbit)
+ indices[i] = static_cast<int> (varatom[i]) - 1;
+ }
+
+ // loop over values to fill output vector or array
+
+ for (int m = 0; m < nvalues; m++) {
+
+ // output = vector
+
+ if (argindex[m] == 0) {
+ int vmax;
+ double *source;
+
+ if (which[m] == COMPUTE) {
+ Compute *compute = modify->compute[value2index[m]];
+
+ if (!(compute->invoked_flag & INVOKED_VECTOR)) {
+ compute->compute_vector();
+ compute->invoked_flag |= INVOKED_VECTOR;
+ }
+
+ source = compute->vector;
+ vmax = compute->size_vector;
+
+ } else if (which[m] == FIX) {
+ if (update->ntimestep % modify->fix[value2index[m]]->peratom_freq)
+ error->all(FLERR,"Fix used in compute global/atom not "
+ "computed at compatible time");
+ Fix *fix = modify->fix[value2index[m]];
+ vmax = fix->size_vector;
+
+ if (vmax > maxvector) {
+ maxvector = vmax;
+ memory->destroy(vecglobal);
+ memory->create(vecglobal,maxvector,"global/atom:vecglobal");
+ }
+
+ for (i = 0; i < vmax; i++)
+ vecglobal[i] = fix->compute_vector(i);
+
+ source = vecglobal;
+
+ } else if (which[m] == VARIABLE) {
+ vmax = input->variable->compute_vector(value2index[m],&source);
+ }
+
+ if (nvalues == 1) {
+ for (i = 0; i < nlocal; i++) {
+ vector_atom[i] = 0.0;
+ if (mask[i] & groupbit) {
+ j = indices[i];
+ if (j >= 0 && j < vmax) vector_atom[i] = source[j];
+ }
+ }
+ } else {
+ for (i = 0; i < nlocal; i++) {
+ array_atom[i][m] = 0.0;
+ if (mask[i] & groupbit) {
+ j = indices[i];
+ if (j >= 0 && j < vmax) array_atom[i][m] = source[j];
+ }
+ }
+ }
+
+ // output = array
+
+ } else {
+ int vmax;
+ double *source;
+ int col = argindex[m] - 1;
+
+ if (which[m] == COMPUTE) {
+ Compute *compute = modify->compute[value2index[m]];
+
+ if (!(compute->invoked_flag & INVOKED_ARRAY)) {
+ compute->compute_array();
+ compute->invoked_flag |= INVOKED_ARRAY;
+ }
+
+ double **compute_array = compute->array;
+ vmax = compute->size_array_rows;
+
+ if (vmax > maxvector) {
+ maxvector = vmax;
+ memory->destroy(vecglobal);
+ memory->create(vecglobal,maxvector,"global/atom:vecglobal");
+ }
+
+ for (i = 0; i < vmax; i++)
+ vecglobal[i] = compute_array[i][col];
+
+ source = vecglobal;
+
+ } else if (which[m] == FIX) {
+ if (update->ntimestep % modify->fix[value2index[m]]->peratom_freq)
+ error->all(FLERR,"Fix used in compute global/atom not "
+ "computed at compatible time");
+ Fix *fix = modify->fix[value2index[m]];
+ vmax = fix->size_array_rows;
+
+ if (vmax > maxvector) {
+ maxvector = vmax;
+ memory->destroy(vecglobal);
+ memory->create(vecglobal,maxvector,"global/atom:vecglobal");
+ }
+
+ for (i = 0; i < vmax; i++)
+ vecglobal[i] = fix->compute_array(i,col);
+
+ source = vecglobal;
+
+ } else if (which[m] == VARIABLE) {
+ vmax = input->variable->compute_vector(value2index[m],&source);
+ }
+
+ if (nvalues == 1) {
+ for (i = 0; i < nlocal; i++) {
+ vector_atom[i] = 0.0;
+ if (mask[i] & groupbit) {
+ j = indices[i];
+ if (j >= 0 && j < vmax) vector_atom[i] = source[j];
+ }
+ }
+ } else {
+ for (i = 0; i < nlocal; i++) {
+ array_atom[i][m] = 0.0;
+ if (mask[i] & groupbit) {
+ j = indices[i];
+ if (j >= 0 && j < vmax) array_atom[i][m] = source[j];
+ }
+ }
+ }
+ }
+ }
+}
+
+/* ----------------------------------------------------------------------
+ memory usage of local atom-based array
+------------------------------------------------------------------------- */
+
+double ComputeGlobalAtom::memory_usage()
+{
+ double bytes = nmax*nvalues * sizeof(double);
+ bytes += nmax * sizeof(int); // indices
+ if (varatom) bytes += nmax * sizeof(double); // varatom
+ bytes += maxvector * sizeof(double); // vecglobal
+ return bytes;
+}
diff --git a/src/compute_global_atom.h b/src/compute_global_atom.h
new file mode 100644
index 000000000..439720f71
--- /dev/null
+++ b/src/compute_global_atom.h
@@ -0,0 +1,143 @@
+/* -*- 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(global/atom,ComputeGlobalAtom)
+
+#else
+
+#ifndef LMP_COMPUTE_GLOBAL_ATOM_H
+#define LMP_COMPUTE_GLOBAL_ATOM_H
+
+#include "compute.h"
+
+namespace LAMMPS_NS {
+
+class ComputeGlobalAtom : public Compute {
+ public:
+ ComputeGlobalAtom(class LAMMPS *, int, char **);
+ virtual ~ComputeGlobalAtom();
+ void init();
+ void compute_peratom();
+ double memory_usage();
+
+ protected:
+ int whichref,indexref,ref2index;
+ char *idref;
+
+ int nvalues;
+ int *which,*argindex,*value2index;
+ char **ids;
+
+ int nmax,maxvector;
+ int *indices;
+ double *varatom;
+ double *vecglobal;
+};
+
+}
+
+#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: Region ID for compute reduce/region does not exist
+
+Self-explanatory.
+
+E: Compute reduce replace requires min or max mode
+
+Self-explanatory.
+
+E: Invalid replace values in compute reduce
+
+Self-explanatory.
+
+E: Compute ID for compute reduce does not exist
+
+Self-explanatory.
+
+E: Compute reduce compute does not calculate a per-atom vector
+
+Self-explanatory.
+
+E: Compute reduce compute does not calculate a per-atom array
+
+Self-explanatory.
+
+E: Compute reduce compute array is accessed out-of-range
+
+An index for the array is out of bounds.
+
+E: Compute reduce compute does not calculate a local vector
+
+Self-explanatory.
+
+E: Compute reduce compute does not calculate a local array
+
+Self-explanatory.
+
+E: Compute reduce compute calculates global values
+
+A compute that calculates peratom or local values is required.
+
+E: Fix ID for compute reduce does not exist
+
+Self-explanatory.
+
+E: Compute reduce fix does not calculate a per-atom vector
+
+Self-explanatory.
+
+E: Compute reduce fix does not calculate a per-atom array
+
+Self-explanatory.
+
+E: Compute reduce fix array is accessed out-of-range
+
+An index for the array is out of bounds.
+
+E: Compute reduce fix does not calculate a local vector
+
+Self-explanatory.
+
+E: Compute reduce fix does not calculate a local array
+
+Self-explanatory.
+
+E: Compute reduce fix calculates global values
+
+A fix that calculates peratom or local values is required.
+
+E: Variable name for compute reduce does not exist
+
+Self-explanatory.
+
+E: Compute reduce variable is not atom-style variable
+
+Self-explanatory.
+
+E: Fix used in compute reduce not computed at compatible time
+
+Fixes generate their values on specific timesteps. Compute reduce is
+requesting a value on a non-allowed timestep.
+
+*/
diff --git a/src/compute_pressure.h b/src/compute_pressure.h
index 4ff116837..a59a64e63 100644
--- a/src/compute_pressure.h
+++ b/src/compute_pressure.h
@@ -1,92 +1,92 @@
/* -*- 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(pressure,ComputePressure)
#else
#ifndef LMP_COMPUTE_PRESSURE_H
#define LMP_COMPUTE_PRESSURE_H
#include "compute.h"
namespace LAMMPS_NS {
class ComputePressure : public Compute {
public:
ComputePressure(class LAMMPS *, int, char **);
virtual ~ComputePressure();
- void init();
- double compute_scalar();
- void compute_vector();
+ virtual void init();
+ virtual double compute_scalar();
+ virtual void compute_vector();
void reset_extra_compute_fix(const char *);
protected:
double boltz,nktv2p,inv_volume;
int nvirial,dimension;
double **vptr;
double *kspace_virial;
Compute *temperature;
char *id_temp;
double virial[6];
int keflag,pairflag,bondflag,angleflag,dihedralflag,improperflag;
int fixflag,kspaceflag;
void virial_compute(int, int);
};
}
#endif
#endif
/* ERROR/WARNING messages:
E: Illegal ... command
Self-explanatory. Check the input script syntax and compare to the
documentation for the command. You can use -echo screen as a
command-line option when running LAMMPS to see the offending line.
E: Compute pressure must use group all
Virial contributions computed by potentials (pair, bond, etc) are
computed on all atoms.
E: Could not find compute pressure temperature ID
The compute ID for calculating temperature does not exist.
E: Compute pressure temperature ID does not compute temperature
The compute ID assigned to a pressure computation must compute
temperature.
E: Compute pressure requires temperature ID to include kinetic energy
The keflag cannot be used unless a temperature compute is provided.
E: Virial was not tallied on needed timestep
You are using a thermo keyword that requires potentials to
have tallied the virial, but they didn't on this timestep. See the
variable doc page for ideas on how to make this work.
E: Must use 'kspace_modify pressure/scalar no' for tensor components with kspace_style msm
Otherwise MSM will compute only a scalar pressure. See the kspace_modify
command for details on this setting.
*/
diff --git a/src/compute_rdf.cpp b/src/compute_rdf.cpp
index 088639406..7b8b808d1 100644
--- a/src/compute_rdf.cpp
+++ b/src/compute_rdf.cpp
@@ -1,327 +1,328 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Paul Crozier (SNL), Jeff Greathouse (SNL)
------------------------------------------------------------------------- */
#include <mpi.h>
#include <math.h>
#include <stdlib.h>
#include "compute_rdf.h"
#include "atom.h"
#include "update.h"
#include "force.h"
#include "pair.h"
#include "domain.h"
#include "neighbor.h"
#include "neigh_request.h"
#include "neigh_list.h"
#include "group.h"
#include "math_const.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
using namespace MathConst;
/* ---------------------------------------------------------------------- */
ComputeRDF::ComputeRDF(LAMMPS *lmp, int narg, char **arg) :
Compute(lmp, narg, arg),
rdfpair(NULL), nrdfpair(NULL), ilo(NULL), ihi(NULL), jlo(NULL), jhi(NULL),
hist(NULL), histall(NULL), typecount(NULL), icount(NULL), jcount(NULL), duplicates(NULL)
{
if (narg < 4 || (narg-4) % 2) error->all(FLERR,"Illegal compute rdf command");
array_flag = 1;
extarray = 0;
+ dynamic_group_allow = 0;
nbin = force->inumeric(FLERR,arg[3]);
if (nbin < 1) error->all(FLERR,"Illegal compute rdf command");
if (narg == 4) npairs = 1;
else npairs = (narg-4)/2;
size_array_rows = nbin;
size_array_cols = 1 + 2*npairs;
int ntypes = atom->ntypes;
memory->create(rdfpair,npairs,ntypes+1,ntypes+1,"rdf:rdfpair");
memory->create(nrdfpair,ntypes+1,ntypes+1,"rdf:nrdfpair");
ilo = new int[npairs];
ihi = new int[npairs];
jlo = new int[npairs];
jhi = new int[npairs];
if (narg == 4) {
ilo[0] = 1; ihi[0] = ntypes;
jlo[0] = 1; jhi[0] = ntypes;
npairs = 1;
} else {
npairs = 0;
int iarg = 4;
while (iarg < narg) {
force->bounds(FLERR,arg[iarg],atom->ntypes,ilo[npairs],ihi[npairs]);
force->bounds(FLERR,arg[iarg+1],atom->ntypes,jlo[npairs],jhi[npairs]);
if (ilo[npairs] > ihi[npairs] || jlo[npairs] > jhi[npairs])
error->all(FLERR,"Illegal compute rdf command");
npairs++;
iarg += 2;
}
}
int i,j;
for (i = 1; i <= ntypes; i++)
for (j = 1; j <= ntypes; j++)
nrdfpair[i][j] = 0;
for (int m = 0; m < npairs; m++)
for (i = ilo[m]; i <= ihi[m]; i++)
for (j = jlo[m]; j <= jhi[m]; j++)
rdfpair[nrdfpair[i][j]++][i][j] = m;
memory->create(hist,npairs,nbin,"rdf:hist");
memory->create(histall,npairs,nbin,"rdf:histall");
memory->create(array,nbin,1+2*npairs,"rdf:array");
typecount = new int[ntypes+1];
icount = new int[npairs];
jcount = new int[npairs];
duplicates = new int[npairs];
}
/* ---------------------------------------------------------------------- */
ComputeRDF::~ComputeRDF()
{
memory->destroy(rdfpair);
memory->destroy(nrdfpair);
delete [] ilo;
delete [] ihi;
delete [] jlo;
delete [] jhi;
memory->destroy(hist);
memory->destroy(histall);
memory->destroy(array);
delete [] typecount;
delete [] icount;
delete [] jcount;
delete [] duplicates;
}
/* ---------------------------------------------------------------------- */
void ComputeRDF::init()
{
int i,j,m;
if (force->pair) delr = force->pair->cutforce / nbin;
else error->all(FLERR,"Compute rdf requires a pair style be defined");
delrinv = 1.0/delr;
// set 1st column of output array to bin coords
for (int i = 0; i < nbin; i++)
array[i][0] = (i+0.5) * delr;
// count atoms of each type that are also in group
int *mask = atom->mask;
int *type = atom->type;
int nlocal = atom->nlocal;
int ntypes = atom->ntypes;
for (i = 1; i <= ntypes; i++) typecount[i] = 0;
for (i = 0; i < nlocal; i++)
if (mask[i] & groupbit) typecount[type[i]]++;
// icount = # of I atoms participating in I,J pairs for each histogram
// jcount = # of J atoms participating in I,J pairs for each histogram
// duplicates = # of atoms in both groups I and J for each histogram
for (m = 0; m < npairs; m++) {
icount[m] = 0;
for (i = ilo[m]; i <= ihi[m]; i++) icount[m] += typecount[i];
jcount[m] = 0;
for (i = jlo[m]; i <= jhi[m]; i++) jcount[m] += typecount[i];
duplicates[m] = 0;
for (i = ilo[m]; i <= ihi[m]; i++)
for (j = jlo[m]; j <= jhi[m]; j++)
if (i == j) duplicates[m] += typecount[i];
}
int *scratch = new int[npairs];
MPI_Allreduce(icount,scratch,npairs,MPI_INT,MPI_SUM,world);
for (i = 0; i < npairs; i++) icount[i] = scratch[i];
MPI_Allreduce(jcount,scratch,npairs,MPI_INT,MPI_SUM,world);
for (i = 0; i < npairs; i++) jcount[i] = scratch[i];
MPI_Allreduce(duplicates,scratch,npairs,MPI_INT,MPI_SUM,world);
for (i = 0; i < npairs; i++) duplicates[i] = scratch[i];
delete [] scratch;
// need an occasional half neighbor list
int irequest = neighbor->request(this,instance_me);
neighbor->requests[irequest]->pair = 0;
neighbor->requests[irequest]->compute = 1;
neighbor->requests[irequest]->occasional = 1;
}
/* ---------------------------------------------------------------------- */
void ComputeRDF::init_list(int id, NeighList *ptr)
{
list = ptr;
}
/* ---------------------------------------------------------------------- */
void ComputeRDF::compute_array()
{
int i,j,m,ii,jj,inum,jnum,itype,jtype,ipair,jpair,ibin,ihisto;
double xtmp,ytmp,ztmp,delx,dely,delz,r;
int *ilist,*jlist,*numneigh,**firstneigh;
double factor_lj,factor_coul;
invoked_array = update->ntimestep;
// invoke half neighbor list (will copy or build if necessary)
neighbor->build_one(list);
inum = list->inum;
ilist = list->ilist;
numneigh = list->numneigh;
firstneigh = list->firstneigh;
// zero the histogram counts
for (i = 0; i < npairs; i++)
for (j = 0; j < nbin; j++)
hist[i][j] = 0;
// tally the RDF
// both atom i and j must be in fix group
// itype,jtype must have been specified by user
// consider I,J as one interaction even if neighbor pair is stored on 2 procs
// tally I,J pair each time I is central atom, and each time J is central
double **x = atom->x;
int *type = atom->type;
int *mask = atom->mask;
int nlocal = atom->nlocal;
double *special_coul = force->special_coul;
double *special_lj = force->special_lj;
int newton_pair = force->newton_pair;
for (ii = 0; ii < inum; ii++) {
i = ilist[ii];
if (!(mask[i] & groupbit)) continue;
xtmp = x[i][0];
ytmp = x[i][1];
ztmp = x[i][2];
itype = type[i];
jlist = firstneigh[i];
jnum = numneigh[i];
for (jj = 0; jj < jnum; jj++) {
j = jlist[jj];
factor_lj = special_lj[sbmask(j)];
factor_coul = special_coul[sbmask(j)];
j &= NEIGHMASK;
// if both weighting factors are 0, skip this pair
// could be 0 and still be in neigh list for long-range Coulombics
// want consistency with non-charged pairs which wouldn't be in list
if (factor_lj == 0.0 && factor_coul == 0.0) continue;
if (!(mask[j] & groupbit)) continue;
jtype = type[j];
ipair = nrdfpair[itype][jtype];
jpair = nrdfpair[jtype][itype];
if (!ipair && !jpair) continue;
delx = xtmp - x[j][0];
dely = ytmp - x[j][1];
delz = ztmp - x[j][2];
r = sqrt(delx*delx + dely*dely + delz*delz);
ibin = static_cast<int> (r*delrinv);
if (ibin >= nbin) continue;
if (ipair)
for (ihisto = 0; ihisto < ipair; ihisto++)
hist[rdfpair[ihisto][itype][jtype]][ibin] += 1.0;
if (newton_pair || j < nlocal) {
if (jpair)
for (ihisto = 0; ihisto < jpair; ihisto++)
hist[rdfpair[ihisto][jtype][itype]][ibin] += 1.0;
}
}
}
// sum histograms across procs
MPI_Allreduce(hist[0],histall[0],npairs*nbin,MPI_DOUBLE,MPI_SUM,world);
// convert counts to g(r) and coord(r) and copy into output array
// vfrac = fraction of volume in shell m
// npairs = number of pairs, corrected for duplicates
// duplicates = pairs in which both atoms are the same
double constant,vfrac,gr,ncoord,rlower,rupper,normfac;
if (domain->dimension == 3) {
constant = 4.0*MY_PI / (3.0*domain->xprd*domain->yprd*domain->zprd);
for (m = 0; m < npairs; m++) {
normfac = (icount[m] > 0) ? static_cast<double>(jcount[m])
- static_cast<double>(duplicates[m])/icount[m] : 0.0;
ncoord = 0.0;
for (ibin = 0; ibin < nbin; ibin++) {
rlower = ibin*delr;
rupper = (ibin+1)*delr;
vfrac = constant * (rupper*rupper*rupper - rlower*rlower*rlower);
if (vfrac * normfac != 0.0)
gr = histall[m][ibin] / (vfrac * normfac * icount[m]);
else gr = 0.0;
if (icount[m] != 0)
ncoord += gr * vfrac * normfac;
array[ibin][1+2*m] = gr;
array[ibin][2+2*m] = ncoord;
}
}
} else {
constant = MY_PI / (domain->xprd*domain->yprd);
for (m = 0; m < npairs; m++) {
ncoord = 0.0;
normfac = (icount[m] > 0) ? static_cast<double>(jcount[m])
- static_cast<double>(duplicates[m])/icount[m] : 0.0;
for (ibin = 0; ibin < nbin; ibin++) {
rlower = ibin*delr;
rupper = (ibin+1)*delr;
vfrac = constant * (rupper*rupper - rlower*rlower);
if (vfrac * normfac != 0.0)
gr = histall[m][ibin] / (vfrac * normfac * icount[m]);
else gr = 0.0;
if (icount[m] != 0)
ncoord += gr * vfrac * normfac;
array[ibin][1+2*m] = gr;
array[ibin][2+2*m] = ncoord;
}
}
}
}
diff --git a/src/dump.cpp b/src/dump.cpp
index a49aaecd5..f8896c8fe 100644
--- a/src/dump.cpp
+++ b/src/dump.cpp
@@ -1,1006 +1,1010 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain 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 <mpi.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "dump.h"
#include "atom.h"
#include "irregular.h"
#include "update.h"
#include "domain.h"
#include "group.h"
#include "output.h"
#include "memory.h"
#include "error.h"
#include "force.h"
#include "modify.h"
#include "fix.h"
using namespace LAMMPS_NS;
// allocate space for static class variable
Dump *Dump::dumpptr;
#define BIG 1.0e20
#define EPSILON 1.0e-6
enum{ASCEND,DESCEND};
/* ---------------------------------------------------------------------- */
Dump::Dump(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
{
MPI_Comm_rank(world,&me);
MPI_Comm_size(world,&nprocs);
int n = strlen(arg[0]) + 1;
id = new char[n];
strcpy(id,arg[0]);
igroup = group->find(arg[1]);
groupbit = group->bitmask[igroup];
n = strlen(arg[2]) + 1;
style = new char[n];
strcpy(style,arg[2]);
n = strlen(arg[4]) + 1;
filename = new char[n];
strcpy(filename,arg[4]);
comm_forward = comm_reverse = 0;
first_flag = 0;
flush_flag = 1;
format = NULL;
format_default = NULL;
format_line_user = NULL;
format_float_user = NULL;
format_int_user = NULL;
format_bigint_user = NULL;
format_column_user = NULL;
clearstep = 0;
sort_flag = 0;
append_flag = 0;
buffer_allow = 0;
buffer_flag = 0;
padflag = 0;
pbcflag = 0;
maxbuf = maxids = maxsort = maxproc = 0;
buf = bufsort = NULL;
ids = idsort = NULL;
index = proclist = NULL;
irregular = NULL;
maxsbuf = 0;
sbuf = NULL;
maxpbc = 0;
xpbc = vpbc = NULL;
imagepbc = NULL;
// parse filename for special syntax
// if contains '%', write one file per proc and replace % with proc-ID
// if contains '*', write one file per timestep and replace * with timestep
// check file suffixes
// if ends in .bin = binary file
// else if ends in .gz = gzipped text file
// else ASCII text file
fp = NULL;
singlefile_opened = 0;
compressed = 0;
binary = 0;
multifile = 0;
multiproc = 0;
nclusterprocs = nprocs;
filewriter = 0;
if (me == 0) filewriter = 1;
fileproc = 0;
multiname = NULL;
char *ptr;
if ((ptr = strchr(filename,'%'))) {
if (strstr(style,"mpiio"))
error->all(FLERR,
"Dump file MPI-IO output not allowed with % in filename");
multiproc = 1;
nclusterprocs = 1;
filewriter = 1;
fileproc = me;
MPI_Comm_split(world,me,0,&clustercomm);
multiname = new char[strlen(filename) + 16];
*ptr = '\0';
sprintf(multiname,"%s%d%s",filename,me,ptr+1);
*ptr = '%';
}
if (strchr(filename,'*')) multifile = 1;
char *suffix = filename + strlen(filename) - strlen(".bin");
if (suffix > filename && strcmp(suffix,".bin") == 0) binary = 1;
suffix = filename + strlen(filename) - strlen(".gz");
if (suffix > filename && strcmp(suffix,".gz") == 0) compressed = 1;
}
/* ---------------------------------------------------------------------- */
Dump::~Dump()
{
delete [] id;
delete [] style;
delete [] filename;
delete [] multiname;
delete [] format;
delete [] format_default;
delete [] format_line_user;
delete [] format_float_user;
delete [] format_int_user;
delete [] format_bigint_user;
// format_column_user is deallocated by child classes that use it
memory->destroy(buf);
memory->destroy(bufsort);
memory->destroy(ids);
memory->destroy(idsort);
memory->destroy(index);
memory->destroy(proclist);
delete irregular;
memory->destroy(sbuf);
if (pbcflag) {
memory->destroy(xpbc);
memory->destroy(vpbc);
memory->destroy(imagepbc);
}
if (multiproc) MPI_Comm_free(&clustercomm);
// XTC style sets fp to NULL since it closes file in its destructor
if (multifile == 0 && fp != NULL) {
if (compressed) {
if (filewriter) pclose(fp);
} else {
if (filewriter) fclose(fp);
}
fp = NULL;
}
}
/* ---------------------------------------------------------------------- */
void Dump::init()
{
init_style();
if (!sort_flag) {
memory->destroy(bufsort);
memory->destroy(ids);
memory->destroy(idsort);
memory->destroy(index);
memory->destroy(proclist);
delete irregular;
maxids = maxsort = maxproc = 0;
bufsort = NULL;
ids = idsort = NULL;
index = proclist = NULL;
irregular = NULL;
}
if (sort_flag) {
if (multiproc > 1)
error->all(FLERR,
"Cannot dump sort when multiple dump files are written");
if (sortcol == 0 && atom->tag_enable == 0)
error->all(FLERR,"Cannot dump sort on atom IDs with no atom IDs defined");
if (sortcol && sortcol > size_one)
error->all(FLERR,"Dump sort column is invalid");
if (nprocs > 1 && irregular == NULL)
irregular = new Irregular(lmp);
bigint size = group->count(igroup);
if (size > MAXSMALLINT) error->all(FLERR,"Too many atoms to dump sort");
int isize = static_cast<int> (size);
// set reorderflag = 1 if can simply reorder local atoms rather than sort
// criteria: sorting by ID, atom IDs are consecutive from 1 to Natoms
// min/max IDs of group match size of group
// compute ntotal_reorder, nme_reorder, idlo/idhi to test against later
reorderflag = 0;
int gcmcflag = 0;
for (int i = 0; i < modify->nfix; i++)
if ((strcmp(modify->fix[i]->style,"gcmc") == 0))
gcmcflag = 1;
if (sortcol == 0 && atom->tag_consecutive() && !gcmcflag) {
tagint *tag = atom->tag;
int *mask = atom->mask;
int nlocal = atom->nlocal;
tagint min = MAXTAGINT;
tagint max = 0;
for (int i = 0; i < nlocal; i++)
if (mask[i] & groupbit) {
min = MIN(min,tag[i]);
max = MAX(max,tag[i]);
}
tagint minall,maxall;
MPI_Allreduce(&min,&minall,1,MPI_LMP_TAGINT,MPI_MIN,world);
MPI_Allreduce(&max,&maxall,1,MPI_LMP_TAGINT,MPI_MAX,world);
if (maxall-minall+1 == isize) {
reorderflag = 1;
double range = maxall-minall + EPSILON;
- idlo = static_cast<int> (range*me/nprocs + minall);
+ idlo = static_cast<tagint> (range*me/nprocs + minall);
tagint idhi = static_cast<tagint> (range*(me+1)/nprocs + minall);
tagint lom1 = static_cast<tagint> ((idlo-1-minall)/range * nprocs);
tagint lo = static_cast<tagint> ((idlo-minall)/range * nprocs);
tagint him1 = static_cast<tagint> ((idhi-1-minall)/range * nprocs);
tagint hi = static_cast<tagint> ((idhi-minall)/range * nprocs);
if (me && me == lom1) idlo--;
else if (me && me != lo) idlo++;
if (me+1 == him1) idhi--;
else if (me+1 != hi) idhi++;
nme_reorder = idhi-idlo;
ntotal_reorder = isize;
}
}
}
// preallocation for PBC copies if requested
if (pbcflag && atom->nlocal > maxpbc) pbc_allocate();
}
/* ---------------------------------------------------------------------- */
int Dump::count()
{
if (igroup == 0) return atom->nlocal;
int *mask = atom->mask;
int nlocal = atom->nlocal;
int m = 0;
for (int i = 0; i < nlocal; i++)
if (mask[i] & groupbit) m++;
return m;
}
/* ---------------------------------------------------------------------- */
void Dump::write()
{
imageint *imagehold;
double **xhold,**vhold;
// if file per timestep, open new file
if (multifile) openfile();
// simulation box bounds
if (domain->triclinic == 0) {
boxxlo = domain->boxlo[0];
boxxhi = domain->boxhi[0];
boxylo = domain->boxlo[1];
boxyhi = domain->boxhi[1];
boxzlo = domain->boxlo[2];
boxzhi = domain->boxhi[2];
} else {
boxxlo = domain->boxlo_bound[0];
boxxhi = domain->boxhi_bound[0];
boxylo = domain->boxlo_bound[1];
boxyhi = domain->boxhi_bound[1];
boxzlo = domain->boxlo_bound[2];
boxzhi = domain->boxhi_bound[2];
boxxy = domain->xy;
boxxz = domain->xz;
boxyz = domain->yz;
}
// nme = # of dump lines this proc contributes to dump
nme = count();
// ntotal = total # of dump lines in snapshot
// nmax = max # of dump lines on any proc
bigint bnme = nme;
MPI_Allreduce(&bnme,&ntotal,1,MPI_LMP_BIGINT,MPI_SUM,world);
int nmax;
if (multiproc != nprocs) MPI_Allreduce(&nme,&nmax,1,MPI_INT,MPI_MAX,world);
else nmax = nme;
// write timestep header
// for multiproc,
// nheader = # of lines in this file via Allreduce on clustercomm
bigint nheader = ntotal;
if (multiproc)
MPI_Allreduce(&bnme,&nheader,1,MPI_LMP_BIGINT,MPI_SUM,clustercomm);
if (filewriter) write_header(nheader);
// insure buf is sized for packing and communicating
// use nmax to insure filewriter proc can receive info from others
// limit nmax*size_one to int since used as arg in MPI calls
if (nmax > maxbuf) {
if ((bigint) nmax * size_one > MAXSMALLINT)
error->all(FLERR,"Too much per-proc info for dump");
maxbuf = nmax;
memory->destroy(buf);
memory->create(buf,maxbuf*size_one,"dump:buf");
}
// insure ids buffer is sized for sorting
if (sort_flag && sortcol == 0 && nmax > maxids) {
maxids = nmax;
memory->destroy(ids);
memory->create(ids,maxids,"dump:ids");
}
// apply PBC on copy of x,v,image if requested
if (pbcflag) {
int nlocal = atom->nlocal;
if (nlocal > maxpbc) pbc_allocate();
if (nlocal) {
memcpy(&xpbc[0][0],&atom->x[0][0],3*nlocal*sizeof(double));
memcpy(&vpbc[0][0],&atom->v[0][0],3*nlocal*sizeof(double));
memcpy(imagepbc,atom->image,nlocal*sizeof(imageint));
}
xhold = atom->x;
vhold = atom->v;
imagehold = atom->image;
atom->x = xpbc;
atom->v = vpbc;
atom->image = imagepbc;
domain->pbc();
}
// pack my data into buf
// if sorting on IDs also request ID list from pack()
// sort buf as needed
if (sort_flag && sortcol == 0) pack(ids);
else pack(NULL);
if (sort_flag) sort();
// if buffering, convert doubles into strings
// insure sbuf is sized for communicating
// cannot buffer if output is to binary file
if (buffer_flag && !binary) {
nsme = convert_string(nme,buf);
int nsmin,nsmax;
MPI_Allreduce(&nsme,&nsmin,1,MPI_INT,MPI_MIN,world);
if (nsmin < 0) error->all(FLERR,"Too much buffered per-proc info for dump");
if (multiproc != nprocs)
MPI_Allreduce(&nsme,&nsmax,1,MPI_INT,MPI_MAX,world);
else nsmax = nsme;
if (nsmax > maxsbuf) {
maxsbuf = nsmax;
memory->grow(sbuf,maxsbuf,"dump:sbuf");
}
}
// filewriter = 1 = this proc writes to file
// ping each proc in my cluster, receive its data, write data to file
// else wait for ping from fileproc, send my data to fileproc
int tmp,nlines,nchars;
MPI_Status status;
MPI_Request request;
// comm and output buf of doubles
if (buffer_flag == 0 || binary) {
if (filewriter) {
for (int iproc = 0; iproc < nclusterprocs; iproc++) {
if (iproc) {
MPI_Irecv(buf,maxbuf*size_one,MPI_DOUBLE,me+iproc,0,world,&request);
MPI_Send(&tmp,0,MPI_INT,me+iproc,0,world);
MPI_Wait(&request,&status);
MPI_Get_count(&status,MPI_DOUBLE,&nlines);
nlines /= size_one;
} else nlines = nme;
write_data(nlines,buf);
}
if (flush_flag && fp) fflush(fp);
} else {
MPI_Recv(&tmp,0,MPI_INT,fileproc,0,world,MPI_STATUS_IGNORE);
MPI_Rsend(buf,nme*size_one,MPI_DOUBLE,fileproc,0,world);
}
// comm and output sbuf = one big string of formatted values per proc
} else {
if (filewriter) {
for (int iproc = 0; iproc < nclusterprocs; iproc++) {
if (iproc) {
MPI_Irecv(sbuf,maxsbuf,MPI_CHAR,me+iproc,0,world,&request);
MPI_Send(&tmp,0,MPI_INT,me+iproc,0,world);
MPI_Wait(&request,&status);
MPI_Get_count(&status,MPI_CHAR,&nchars);
} else nchars = nsme;
write_data(nchars,(double *) sbuf);
}
if (flush_flag && fp) fflush(fp);
} else {
MPI_Recv(&tmp,0,MPI_INT,fileproc,0,world,MPI_STATUS_IGNORE);
MPI_Rsend(sbuf,nsme,MPI_CHAR,fileproc,0,world);
}
}
// restore original x,v,image unaltered by PBC
if (pbcflag) {
atom->x = xhold;
atom->v = vhold;
atom->image = imagehold;
}
// if file per timestep, close file if I am filewriter
if (multifile) {
if (compressed) {
if (filewriter && fp != NULL) pclose(fp);
} else {
if (filewriter && fp != NULL) fclose(fp);
}
fp = NULL;
}
}
/* ----------------------------------------------------------------------
generic opening of a dump file
ASCII or binary or gzipped
some derived classes override this function
------------------------------------------------------------------------- */
void Dump::openfile()
{
// single file, already opened, so just return
if (singlefile_opened) return;
if (multifile == 0) singlefile_opened = 1;
// if one file per timestep, replace '*' with current timestep
char *filecurrent = filename;
if (multiproc) filecurrent = multiname;
if (multifile) {
char *filestar = filecurrent;
filecurrent = new char[strlen(filestar) + 16];
char *ptr = strchr(filestar,'*');
*ptr = '\0';
if (padflag == 0)
sprintf(filecurrent,"%s" BIGINT_FORMAT "%s",
filestar,update->ntimestep,ptr+1);
else {
char bif[8],pad[16];
strcpy(bif,BIGINT_FORMAT);
sprintf(pad,"%%s%%0%d%s%%s",padflag,&bif[1]);
sprintf(filecurrent,pad,filestar,update->ntimestep,ptr+1);
}
*ptr = '*';
}
// each proc with filewriter = 1 opens a file
if (filewriter) {
if (compressed) {
#ifdef LAMMPS_GZIP
char gzip[128];
sprintf(gzip,"gzip -6 > %s",filecurrent);
#ifdef _WIN32
fp = _popen(gzip,"wb");
#else
fp = popen(gzip,"w");
#endif
#else
error->one(FLERR,"Cannot open gzipped file");
#endif
} else if (binary) {
fp = fopen(filecurrent,"wb");
} else if (append_flag) {
fp = fopen(filecurrent,"a");
} else {
fp = fopen(filecurrent,"w");
}
if (fp == NULL) error->one(FLERR,"Cannot open dump file");
} else fp = NULL;
// delete string with timestep replaced
if (multifile) delete [] filecurrent;
}
/* ----------------------------------------------------------------------
parallel sort of buf across all procs
changes nme, reorders datums in buf, grows buf if necessary
------------------------------------------------------------------------- */
void Dump::sort()
{
int i,iproc;
double value;
// if single proc, swap ptrs to buf,ids <-> bufsort,idsort
if (nprocs == 1) {
if (nme > maxsort) {
maxsort = nme;
memory->destroy(bufsort);
memory->create(bufsort,maxsort*size_one,"dump:bufsort");
memory->destroy(index);
memory->create(index,maxsort,"dump:index");
if (sortcol == 0) {
memory->destroy(idsort);
memory->create(idsort,maxsort,"dump:idsort");
}
}
double *dptr = buf;
buf = bufsort;
bufsort = dptr;
if (sortcol == 0) {
tagint *iptr = ids;
ids = idsort;
idsort = iptr;
}
// if multiple procs, exchange datums between procs via irregular
} else {
// grow proclist if necessary
if (nme > maxproc) {
maxproc = nme;
memory->destroy(proclist);
memory->create(proclist,maxproc,"dump:proclist");
}
// proclist[i] = which proc Ith datum will be sent to
if (sortcol == 0) {
tagint min = MAXTAGINT;
tagint max = 0;
for (i = 0; i < nme; i++) {
min = MIN(min,ids[i]);
max = MAX(max,ids[i]);
}
tagint minall,maxall;
MPI_Allreduce(&min,&minall,1,MPI_LMP_TAGINT,MPI_MIN,world);
MPI_Allreduce(&max,&maxall,1,MPI_LMP_TAGINT,MPI_MAX,world);
// use 0.5 instead of EPSILON since atom IDs are integers
// if use EPSILON, it can be lost if 64-bit maxall-minall is too big
// then iproc == nprocs for largest ID, causing irregular to crash
double range = maxall-minall + 0.5;
for (i = 0; i < nme; i++) {
iproc = static_cast<int> ((ids[i]-minall)/range * nprocs);
proclist[i] = iproc;
}
} else {
double min = BIG;
double max = -BIG;
for (i = 0; i < nme; i++) {
value = buf[i*size_one + sortcolm1];
min = MIN(min,value);
max = MAX(max,value);
}
double minall,maxall;
MPI_Allreduce(&min,&minall,1,MPI_DOUBLE,MPI_MIN,world);
MPI_Allreduce(&max,&maxall,1,MPI_DOUBLE,MPI_MAX,world);
double range = maxall-minall + EPSILON*(maxall-minall);
if (range == 0.0) range = EPSILON;
+
+ // proc assignment is inverted if sortorder = DESCEND
+
for (i = 0; i < nme; i++) {
value = buf[i*size_one + sortcolm1];
iproc = static_cast<int> ((value-minall)/range * nprocs);
+ if (sortorder == DESCEND) iproc = nprocs-1 - iproc;
proclist[i] = iproc;
}
}
// create comm plan, grow recv bufs if necessary,
// exchange datums, destroy plan
// if sorting on atom IDs, exchange IDs also
nme = irregular->create_data(nme,proclist);
if (nme > maxsort) {
maxsort = nme;
memory->destroy(bufsort);
memory->create(bufsort,maxsort*size_one,"dump:bufsort");
memory->destroy(index);
memory->create(index,maxsort,"dump:index");
if (sortcol == 0) {
memory->destroy(idsort);
memory->create(idsort,maxsort,"dump:idsort");
}
}
irregular->exchange_data((char *) buf,size_one*sizeof(double),
(char *) bufsort);
if (sortcol == 0)
irregular->exchange_data((char *) ids,sizeof(tagint),(char *) idsort);
irregular->destroy_data();
}
// if reorder flag is set & total/per-proc counts match pre-computed values,
// then create index directly from idsort
// else quicksort of index using IDs or buf column as comparator
if (reorderflag) {
if (ntotal != ntotal_reorder) reorderflag = 0;
int flag = 0;
if (nme != nme_reorder) flag = 1;
int flagall;
MPI_Allreduce(&flag,&flagall,1,MPI_INT,MPI_SUM,world);
if (flagall) reorderflag = 0;
if (reorderflag)
for (i = 0; i < nme; i++)
index[idsort[i]-idlo] = i;
}
if (!reorderflag) {
dumpptr = this;
for (i = 0; i < nme; i++) index[i] = i;
if (sortcol == 0) qsort(index,nme,sizeof(int),idcompare);
else if (sortorder == ASCEND) qsort(index,nme,sizeof(int),bufcompare);
else qsort(index,nme,sizeof(int),bufcompare_reverse);
}
// reset buf size and maxbuf to largest of any post-sort nme values
// this insures proc 0 can receive everyone's info
int nmax;
MPI_Allreduce(&nme,&nmax,1,MPI_INT,MPI_MAX,world);
if (nmax > maxbuf) {
maxbuf = nmax;
memory->destroy(buf);
memory->create(buf,maxbuf*size_one,"dump:buf");
}
// copy data from bufsort to buf using index
int nbytes = size_one*sizeof(double);
for (i = 0; i < nme; i++)
memcpy(&buf[i*size_one],&bufsort[index[i]*size_one],nbytes);
}
/* ----------------------------------------------------------------------
compare two atom IDs
called via qsort() in sort() method
is a static method so access data via dumpptr
------------------------------------------------------------------------- */
int Dump::idcompare(const void *pi, const void *pj)
{
tagint *idsort = dumpptr->idsort;
int i = *((int *) pi);
int j = *((int *) pj);
if (idsort[i] < idsort[j]) return -1;
if (idsort[i] > idsort[j]) return 1;
return 0;
}
/* ----------------------------------------------------------------------
compare two buffer values with size_one stride
called via qsort() in sort() method
is a static method so access data via dumpptr
sort in ASCENDing order
------------------------------------------------------------------------- */
int Dump::bufcompare(const void *pi, const void *pj)
{
double *bufsort = dumpptr->bufsort;
int size_one = dumpptr->size_one;
int sortcolm1 = dumpptr->sortcolm1;
int i = *((int *) pi)*size_one + sortcolm1;
int j = *((int *) pj)*size_one + sortcolm1;
if (bufsort[i] < bufsort[j]) return -1;
if (bufsort[i] > bufsort[j]) return 1;
return 0;
}
/* ----------------------------------------------------------------------
compare two buffer values with size_one stride
called via qsort() in sort() method
is a static method so access data via dumpptr
sort in DESCENDing order
------------------------------------------------------------------------- */
int Dump::bufcompare_reverse(const void *pi, const void *pj)
{
double *bufsort = dumpptr->bufsort;
int size_one = dumpptr->size_one;
int sortcolm1 = dumpptr->sortcolm1;
int i = *((int *) pi)*size_one + sortcolm1;
int j = *((int *) pj)*size_one + sortcolm1;
if (bufsort[i] > bufsort[j]) return -1;
if (bufsort[i] < bufsort[j]) return 1;
return 0;
}
/* ----------------------------------------------------------------------
process params common to all dumps here
if unknown param, call modify_param specific to the dump
------------------------------------------------------------------------- */
void Dump::modify_params(int narg, char **arg)
{
if (narg == 0) error->all(FLERR,"Illegal dump_modify command");
int iarg = 0;
while (iarg < narg) {
if (strcmp(arg[iarg],"append") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
if (strcmp(arg[iarg+1],"yes") == 0) append_flag = 1;
else if (strcmp(arg[iarg+1],"no") == 0) append_flag = 0;
else error->all(FLERR,"Illegal dump_modify command");
iarg += 2;
} else if (strcmp(arg[iarg],"buffer") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
if (strcmp(arg[iarg+1],"yes") == 0) buffer_flag = 1;
else if (strcmp(arg[iarg+1],"no") == 0) buffer_flag = 0;
else error->all(FLERR,"Illegal dump_modify command");
if (buffer_flag && buffer_allow == 0)
error->all(FLERR,"Dump_modify buffer yes not allowed for this style");
iarg += 2;
} else if (strcmp(arg[iarg],"every") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
int idump;
for (idump = 0; idump < output->ndump; idump++)
if (strcmp(id,output->dump[idump]->id) == 0) break;
int n;
if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) {
delete [] output->var_dump[idump];
n = strlen(&arg[iarg+1][2]) + 1;
output->var_dump[idump] = new char[n];
strcpy(output->var_dump[idump],&arg[iarg+1][2]);
n = 0;
} else {
n = force->inumeric(FLERR,arg[iarg+1]);
if (n <= 0) error->all(FLERR,"Illegal dump_modify command");
}
output->every_dump[idump] = n;
iarg += 2;
} else if (strcmp(arg[iarg],"fileper") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
if (!multiproc)
error->all(FLERR,"Cannot use dump_modify fileper "
"without % in dump file name");
int nper = force->inumeric(FLERR,arg[iarg+1]);
if (nper <= 0) error->all(FLERR,"Illegal dump_modify command");
multiproc = nprocs/nper;
if (nprocs % nper) multiproc++;
fileproc = me/nper * nper;
int fileprocnext = MIN(fileproc+nper,nprocs);
nclusterprocs = fileprocnext - fileproc;
if (me == fileproc) filewriter = 1;
else filewriter = 0;
int icluster = fileproc/nper;
MPI_Comm_free(&clustercomm);
MPI_Comm_split(world,icluster,0,&clustercomm);
delete [] multiname;
multiname = new char[strlen(filename) + 16];
char *ptr = strchr(filename,'%');
*ptr = '\0';
sprintf(multiname,"%s%d%s",filename,icluster,ptr+1);
*ptr = '%';
iarg += 2;
} else if (strcmp(arg[iarg],"first") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
if (strcmp(arg[iarg+1],"yes") == 0) first_flag = 1;
else if (strcmp(arg[iarg+1],"no") == 0) first_flag = 0;
else error->all(FLERR,"Illegal dump_modify command");
iarg += 2;
} else if (strcmp(arg[iarg],"flush") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
if (strcmp(arg[iarg+1],"yes") == 0) flush_flag = 1;
else if (strcmp(arg[iarg+1],"no") == 0) flush_flag = 0;
else error->all(FLERR,"Illegal dump_modify command");
iarg += 2;
} else if (strcmp(arg[iarg],"format") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
if (strcmp(arg[iarg+1],"none") == 0) {
delete [] format_line_user;
delete [] format_int_user;
delete [] format_bigint_user;
delete [] format_float_user;
format_line_user = NULL;
format_int_user = NULL;
format_bigint_user = NULL;
format_float_user = NULL;
// pass format none to child classes which may use it
// not an error if they don't
modify_param(narg-iarg,&arg[iarg]);
iarg += 2;
continue;
}
if (iarg+3 > narg) error->all(FLERR,"Illegal dump_modify command");
if (strcmp(arg[iarg+1],"line") == 0) {
delete [] format_line_user;
int n = strlen(arg[iarg+2]) + 1;
format_line_user = new char[n];
strcpy(format_line_user,arg[iarg+2]);
iarg += 3;
} else { // pass other format options to child classes
int n = modify_param(narg-iarg,&arg[iarg]);
if (n == 0) error->all(FLERR,"Illegal dump_modify command");
iarg += n;
}
} else if (strcmp(arg[iarg],"nfile") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
if (!multiproc)
error->all(FLERR,"Cannot use dump_modify nfile "
"without % in dump file name");
int nfile = force->inumeric(FLERR,arg[iarg+1]);
if (nfile <= 0) error->all(FLERR,"Illegal dump_modify command");
nfile = MIN(nfile,nprocs);
multiproc = nfile;
int icluster = static_cast<int> ((bigint) me * nfile/nprocs);
fileproc = static_cast<int> ((bigint) icluster * nprocs/nfile);
int fcluster = static_cast<int> ((bigint) fileproc * nfile/nprocs);
if (fcluster < icluster) fileproc++;
int fileprocnext =
static_cast<int> ((bigint) (icluster+1) * nprocs/nfile);
fcluster = static_cast<int> ((bigint) fileprocnext * nfile/nprocs);
if (fcluster < icluster+1) fileprocnext++;
nclusterprocs = fileprocnext - fileproc;
if (me == fileproc) filewriter = 1;
else filewriter = 0;
MPI_Comm_free(&clustercomm);
MPI_Comm_split(world,icluster,0,&clustercomm);
delete [] multiname;
multiname = new char[strlen(filename) + 16];
char *ptr = strchr(filename,'%');
*ptr = '\0';
sprintf(multiname,"%s%d%s",filename,icluster,ptr+1);
*ptr = '%';
iarg += 2;
} else if (strcmp(arg[iarg],"pad") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
padflag = force->inumeric(FLERR,arg[iarg+1]);
if (padflag < 0) error->all(FLERR,"Illegal dump_modify command");
iarg += 2;
} else if (strcmp(arg[iarg],"pbc") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
if (strcmp(arg[iarg+1],"yes") == 0) pbcflag = 1;
else if (strcmp(arg[iarg+1],"no") == 0) pbcflag = 0;
else error->all(FLERR,"Illegal dump_modify command");
iarg += 2;
} else if (strcmp(arg[iarg],"sort") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal dump_modify command");
if (strcmp(arg[iarg+1],"off") == 0) sort_flag = 0;
else if (strcmp(arg[iarg+1],"id") == 0) {
sort_flag = 1;
sortcol = 0;
sortorder = ASCEND;
} else {
sort_flag = 1;
sortcol = force->inumeric(FLERR,arg[iarg+1]);
sortorder = ASCEND;
if (sortcol == 0) error->all(FLERR,"Illegal dump_modify command");
if (sortcol < 0) {
sortorder = DESCEND;
sortcol = -sortcol;
}
sortcolm1 = sortcol - 1;
}
iarg += 2;
} else {
int n = modify_param(narg-iarg,&arg[iarg]);
if (n == 0) error->all(FLERR,"Illegal dump_modify command");
iarg += n;
}
}
}
/* ----------------------------------------------------------------------
return # of bytes of allocated memory
------------------------------------------------------------------------- */
void Dump::pbc_allocate()
{
memory->destroy(xpbc);
memory->destroy(vpbc);
memory->destroy(imagepbc);
maxpbc = atom->nmax;
memory->create(xpbc,maxpbc,3,"dump:xbpc");
memory->create(vpbc,maxpbc,3,"dump:vbpc");
memory->create(imagepbc,maxpbc,"dump:imagebpc");
}
/* ----------------------------------------------------------------------
return # of bytes of allocated memory
------------------------------------------------------------------------- */
bigint Dump::memory_usage()
{
bigint bytes = memory->usage(buf,size_one*maxbuf);
bytes += memory->usage(sbuf,maxsbuf);
if (sort_flag) {
if (sortcol == 0) bytes += memory->usage(ids,maxids);
bytes += memory->usage(bufsort,size_one*maxsort);
if (sortcol == 0) bytes += memory->usage(idsort,maxsort);
bytes += memory->usage(index,maxsort);
bytes += memory->usage(proclist,maxproc);
if (irregular) bytes += irregular->memory_usage();
}
if (pbcflag) {
bytes += 6*maxpbc * sizeof(double);
bytes += maxpbc * sizeof(imageint);
}
return bytes;
}
diff --git a/src/finish.cpp b/src/finish.cpp
index 00d7bf9d6..0d767b42c 100644
--- a/src/finish.cpp
+++ b/src/finish.cpp
@@ -1,931 +1,931 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain 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 <mpi.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "finish.h"
#include "timer.h"
#include "universe.h"
#include "accelerator_kokkos.h"
#include "accelerator_omp.h"
#include "atom.h"
#include "atom_vec.h"
#include "molecule.h"
#include "comm.h"
#include "force.h"
#include "kspace.h"
#include "update.h"
#include "min.h"
#include "neighbor.h"
#include "neigh_list.h"
#include "neigh_request.h"
#include "output.h"
#include "memory.h"
#include "error.h"
#ifdef LMP_USER_OMP
#include "modify.h"
#include "fix_omp.h"
#include "thr_data.h"
#endif
using namespace LAMMPS_NS;
// local function prototypes, code at end of file
static void mpi_timings(const char *label, Timer *t, enum Timer::ttype tt,
MPI_Comm world, const int nprocs, const int nthreads,
const int me, double time_loop, FILE *scr, FILE *log);
#ifdef LMP_USER_OMP
static void omp_times(FixOMP *fix, const char *label, enum Timer::ttype which,
const int nthreads,FILE *scr, FILE *log);
#endif
/* ---------------------------------------------------------------------- */
Finish::Finish(LAMMPS *lmp) : Pointers(lmp) {}
/* ---------------------------------------------------------------------- */
void Finish::end(int flag)
{
int i,m,nneigh,nneighfull;
int histo[10];
int minflag,prdflag,tadflag,timeflag,fftflag,histoflag,neighflag;
double time,tmp,ave,max,min;
double time_loop,time_other,cpu_loop;
int me,nprocs;
MPI_Comm_rank(world,&me);
MPI_Comm_size(world,&nprocs);
const int nthreads = comm->nthreads;
// recompute natoms in case atoms have been lost
bigint nblocal = atom->nlocal;
MPI_Allreduce(&nblocal,&atom->natoms,1,MPI_LMP_BIGINT,MPI_SUM,world);
// choose flavors of statistical output
// flag determines caller
// flag = 0 = just loop summary
// flag = 1 = dynamics or minimization
// flag = 2 = PRD
// flag = 3 = TAD
// turn off neighflag for Kspace partition of verlet/split integrator
minflag = prdflag = tadflag = timeflag = fftflag = histoflag = neighflag = 0;
time_loop = cpu_loop = time_other = 0.0;
if (flag == 1) {
if (update->whichflag == 2) minflag = 1;
timeflag = histoflag = 1;
neighflag = 1;
if (update->whichflag == 1 &&
strncmp(update->integrate_style,"verlet/split",12) == 0 &&
universe->iworld == 1) neighflag = 0;
if (force->kspace && force->kspace_match("pppm",0)
&& force->kspace->fftbench) fftflag = 1;
}
if (flag == 2) prdflag = timeflag = histoflag = neighflag = 1;
if (flag == 3) tadflag = histoflag = neighflag = 1;
// loop stats
if (timer->has_loop()) {
// overall loop time
time_loop = timer->get_wall(Timer::TOTAL);
cpu_loop = timer->get_cpu(Timer::TOTAL);
MPI_Allreduce(&time_loop,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time_loop = tmp/nprocs;
MPI_Allreduce(&cpu_loop,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
cpu_loop = tmp/nprocs;
if (time_loop > 0.0) cpu_loop = cpu_loop/time_loop*100.0;
if (me == 0) {
int ntasks = nprocs * nthreads;
const char fmt1[] = "Loop time of %g on %d procs "
"for %d steps with " BIGINT_FORMAT " atoms\n\n";
if (screen) fprintf(screen,fmt1,time_loop,ntasks,update->nsteps,
atom->natoms);
if (logfile) fprintf(logfile,fmt1,time_loop,ntasks,update->nsteps,
atom->natoms);
// Gromacs/NAMD-style performance metric for suitable unit settings
if ( timeflag && !minflag && !prdflag && !tadflag &&
(update->nsteps > 0) && (update->dt != 0.0) &&
((strcmp(update->unit_style,"lj") == 0) ||
(strcmp(update->unit_style,"metal") == 0) ||
(strcmp(update->unit_style,"micro") == 0) ||
(strcmp(update->unit_style,"nano") == 0) ||
(strcmp(update->unit_style,"electron") == 0) ||
(strcmp(update->unit_style,"real") == 0)) ) {
double one_fs = force->femtosecond;
double t_step = ((double) time_loop) / ((double) update->nsteps);
double step_t = 1.0/t_step;
if (strcmp(update->unit_style,"lj") == 0) {
double tau_day = 24.0*3600.0 / t_step * update->dt / one_fs;
const char perf[] = "Performance: %.3f tau/day, %.3f timesteps/s\n";
if (screen) fprintf(screen,perf,tau_day,step_t);
if (logfile) fprintf(logfile,perf,tau_day,step_t);
} else {
double hrs_ns = t_step / update->dt * 1000000.0 * one_fs / 3600.0;
double ns_day = 24.0*3600.0 / t_step * update->dt / one_fs/1000000.0;
const char perf[] =
"Performance: %.3f ns/day, %.3f hours/ns, %.3f timesteps/s\n";
if (screen) fprintf(screen,perf,ns_day,hrs_ns,step_t);
if (logfile) fprintf(logfile,perf,ns_day,hrs_ns,step_t);
}
}
// CPU use on MPI tasks and OpenMP threads
#ifdef LMP_USER_OMP
const char fmt2[] =
"%.1f%% CPU use with %d MPI tasks x %d OpenMP threads\n";
if (screen) fprintf(screen,fmt2,cpu_loop,nprocs,nthreads);
if (logfile) fprintf(logfile,fmt2,cpu_loop,nprocs,nthreads);
#else
if (lmp->kokkos) {
const char fmt2[] =
"%.1f%% CPU use with %d MPI tasks x %d OpenMP threads\n";
if (screen) fprintf(screen,fmt2,cpu_loop,nprocs,lmp->kokkos->num_threads);
if (logfile) fprintf(logfile,fmt2,cpu_loop,nprocs,lmp->kokkos->num_threads);
} else {
const char fmt2[] =
"%.1f%% CPU use with %d MPI tasks x no OpenMP threads\n";
if (screen) fprintf(screen,fmt2,cpu_loop,nprocs);
if (logfile) fprintf(logfile,fmt2,cpu_loop,nprocs);
}
#endif
}
}
// avoid division by zero for very short runs
if (time_loop == 0.0) time_loop = 1.0;
if (cpu_loop == 0.0) cpu_loop = 100.0;
// get "Other" wall time for later use
if (timer->has_normal())
time_other = timer->get_wall(Timer::TOTAL) - timer->get_wall(Timer::ALL);
// minimization stats
if (minflag) {
if (me == 0) {
if (screen) fprintf(screen,"\n");
if (logfile) fprintf(logfile,"\n");
}
if (me == 0) {
if (screen) {
fprintf(screen,"Minimization stats:\n");
fprintf(screen," Stopping criterion = %s\n",
update->minimize->stopstr);
fprintf(screen," Energy initial, next-to-last, final = \n"
" %18.12g %18.12g %18.12g\n",
update->minimize->einitial,update->minimize->eprevious,
update->minimize->efinal);
fprintf(screen," Force two-norm initial, final = %g %g\n",
update->minimize->fnorm2_init,update->minimize->fnorm2_final);
fprintf(screen," Force max component initial, final = %g %g\n",
update->minimize->fnorminf_init,
update->minimize->fnorminf_final);
fprintf(screen," Final line search alpha, max atom move = %g %g\n",
update->minimize->alpha_final,
update->minimize->alpha_final*
update->minimize->fnorminf_final);
fprintf(screen," Iterations, force evaluations = %d %d\n",
update->minimize->niter,update->minimize->neval);
}
if (logfile) {
fprintf(logfile,"Minimization stats:\n");
fprintf(logfile," Stopping criterion = %s\n",
update->minimize->stopstr);
fprintf(logfile," Energy initial, next-to-last, final = \n"
" %18.12g %18.12g %18.12g\n",
update->minimize->einitial,update->minimize->eprevious,
update->minimize->efinal);
fprintf(logfile," Force two-norm initial, final = %g %g\n",
update->minimize->fnorm2_init,update->minimize->fnorm2_final);
fprintf(logfile," Force max component initial, final = %g %g\n",
update->minimize->fnorminf_init,
update->minimize->fnorminf_final);
fprintf(logfile," Final line search alpha, max atom move = %g %g\n",
update->minimize->alpha_final,
update->minimize->alpha_final*
update->minimize->fnorminf_final);
fprintf(logfile," Iterations, force evaluations = %d %d\n",
update->minimize->niter,update->minimize->neval);
}
}
}
// PRD stats using PAIR,BOND,KSPACE for dephase,dynamics,quench
if (prdflag) {
if (me == 0) {
if (screen) fprintf(screen,"\nPRD stats:\n");
if (logfile) fprintf(logfile,"\nPRD stats:\n");
}
time = timer->get_wall(Timer::DEPHASE);
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Dephase time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Dephase time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->get_wall(Timer::DYNAMICS);
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Dynamics time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Dynamics time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->get_wall(Timer::QUENCH);
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Quench time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Quench time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->get_wall(Timer::REPCOMM);
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Comm time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Comm time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->get_wall(Timer::REPOUT);
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Output time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Output time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = time_other;
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) { // XXXX: replica comm, replica output
if (screen)
fprintf(screen," Other time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Other time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
}
// TAD stats using PAIR,BOND,KSPACE for neb,dynamics,quench
if (tadflag) {
if (me == 0) {
if (screen) fprintf(screen,"\n");
if (logfile) fprintf(logfile,"\n");
}
if (screen) fprintf(screen,"TAD stats:\n");
if (logfile) fprintf(logfile,"TAD stats:\n");
time = timer->get_wall(Timer::NEB);
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," NEB time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," NEB time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->get_wall(Timer::DYNAMICS);
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Dynamics time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Dynamics time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->get_wall(Timer::QUENCH);
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Quench time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Quench time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->get_wall(Timer::REPCOMM);
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Comm time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Comm time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = timer->get_wall(Timer::REPOUT);
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Output time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Output time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
time = time_other;
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
if (me == 0) {
if (screen)
fprintf(screen," Other time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
if (logfile)
fprintf(logfile," Other time (%%) = %g (%g)\n",
time,time/time_loop*100.0);
}
}
if (timeflag && timer->has_normal()) {
if (timer->has_full()) {
const char hdr[] = "\nMPI task timing breakdown:\n"
"Section | min time | avg time | max time |%varavg| %CPU | %total\n"
"-----------------------------------------------------------------------\n";
if (me == 0) {
if (screen) fputs(hdr,screen);
if (logfile) fputs(hdr,logfile);
}
} else {
const char hdr[] = "\nMPI task timing breakdown:\n"
"Section | min time | avg time | max time |%varavg| %total\n"
"---------------------------------------------------------------\n";
if (me == 0) {
if (screen) fputs(hdr,screen);
if (logfile) fputs(hdr,logfile);
}
}
mpi_timings("Pair",timer,Timer::PAIR, world,nprocs,
nthreads,me,time_loop,screen,logfile);
if (atom->molecular)
mpi_timings("Bond",timer,Timer::BOND,world,nprocs,
nthreads,me,time_loop,screen,logfile);
if (force->kspace)
mpi_timings("Kspace",timer,Timer::KSPACE,world,nprocs,
nthreads,me,time_loop,screen,logfile);
mpi_timings("Neigh",timer,Timer::NEIGH,world,nprocs,
nthreads,me,time_loop,screen,logfile);
mpi_timings("Comm",timer,Timer::COMM,world,nprocs,
nthreads,me,time_loop,screen,logfile);
mpi_timings("Output",timer,Timer::OUTPUT,world,nprocs,
nthreads,me,time_loop,screen,logfile);
mpi_timings("Modify",timer,Timer::MODIFY,world,nprocs,
nthreads,me,time_loop,screen,logfile);
if (timer->has_sync())
mpi_timings("Sync",timer,Timer::SYNC,world,nprocs,
nthreads,me,time_loop,screen,logfile);
time = time_other;
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
const char *fmt;
if (timer->has_full())
fmt = "Other | |%- 12.4g| | | |%6.2f\n";
else
fmt = "Other | |%- 12.4g| | |%6.2f\n";
if (me == 0) {
if (screen) fprintf(screen,fmt,time,time/time_loop*100.0);
if (logfile) fprintf(logfile,fmt,time,time/time_loop*100.0);
}
}
#ifdef LMP_USER_OMP
const char thr_hdr_fmt[] =
"\nThread timing breakdown (MPI rank %d):\nTotal threaded time %.4g / %.1f%%\n";
const char thr_header[] =
"Section | min time | avg time | max time |%varavg| %total\n"
"---------------------------------------------------------------\n";
int ifix = modify->find_fix("package_omp");
// print thread breakdown only with full timer detail
if ((ifix >= 0) && timer->has_full() && me == 0) {
double thr_total = 0.0;
ThrData *td;
FixOMP *fixomp = static_cast<FixOMP *>(lmp->modify->fix[ifix]);
for (i=0; i < nthreads; ++i) {
td = fixomp->get_thr(i);
thr_total += td->get_time(Timer::ALL);
}
thr_total /= (double) nthreads;
if (thr_total > 0.0) {
if (screen) {
fprintf(screen,thr_hdr_fmt,me,thr_total,thr_total/time_loop*100.0);
fputs(thr_header,screen);
}
if (logfile) {
fprintf(logfile,thr_hdr_fmt,me,thr_total,thr_total/time_loop*100.0);
fputs(thr_header,logfile);
}
omp_times(fixomp,"Pair",Timer::PAIR,nthreads,screen,logfile);
if (atom->molecular)
omp_times(fixomp,"Bond",Timer::BOND,nthreads,screen,logfile);
if (force->kspace)
omp_times(fixomp,"Kspace",Timer::KSPACE,nthreads,screen,logfile);
omp_times(fixomp,"Neigh",Timer::NEIGH,nthreads,screen,logfile);
omp_times(fixomp,"Reduce",Timer::COMM,nthreads,screen,logfile);
}
}
#endif
if (lmp->kokkos && lmp->kokkos->ngpu > 0)
if (const char* env_clb = getenv("CUDA_LAUNCH_BLOCKING"))
if (!(strcmp(env_clb,"1") == 0)) {
error->warning(FLERR,"Timing breakdown may not be accurate since GPU/CPU overlap is enabled. "
"Using 'export CUDA_LAUNCH_BLOCKING=1' will give an accurate timing breakdown but will reduce performance");
}
// FFT timing statistics
// time3d,time1d = total time during run for 3d and 1d FFTs
// loop on timing() until nsample FFTs require at least 1.0 CPU sec
// time_kspace may be 0.0 if another partition is doing Kspace
if (fftflag) {
if (me == 0) {
if (screen) fprintf(screen,"\n");
if (logfile) fprintf(logfile,"\n");
}
int nsteps = update->nsteps;
double time3d;
int nsample = 1;
int nfft = force->kspace->timing_3d(nsample,time3d);
while (time3d < 1.0) {
nsample *= 2;
nfft = force->kspace->timing_3d(nsample,time3d);
}
time3d = nsteps * time3d / nsample;
MPI_Allreduce(&time3d,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time3d = tmp/nprocs;
double time1d;
nsample = 1;
nfft = force->kspace->timing_1d(nsample,time1d);
while (time1d < 1.0) {
nsample *= 2;
nfft = force->kspace->timing_1d(nsample,time1d);
}
time1d = nsteps * time1d / nsample;
MPI_Allreduce(&time1d,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time1d = tmp/nprocs;
double time_kspace = timer->get_wall(Timer::KSPACE);
MPI_Allreduce(&time_kspace,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time_kspace = tmp/nprocs;
double ntotal = 1.0 * force->kspace->nx_pppm *
force->kspace->ny_pppm * force->kspace->nz_pppm;
double nflops = 5.0 * ntotal * log(ntotal);
double fraction,flop3,flop1;
if (nsteps) {
if (time_kspace) fraction = time3d/time_kspace*100.0;
else fraction = 0.0;
flop3 = nfft*nflops/1.0e9/(time3d/nsteps);
flop1 = nfft*nflops/1.0e9/(time1d/nsteps);
} else fraction = flop3 = flop1 = 0.0;
if (me == 0) {
if (screen) {
fprintf(screen,"FFT time (%% of Kspce) = %g (%g)\n",time3d,fraction);
fprintf(screen,"FFT Gflps 3d (1d only) = %g %g\n",flop3,flop1);
}
if (logfile) {
fprintf(logfile,"FFT time (%% of Kspce) = %g (%g)\n",time3d,fraction);
fprintf(logfile,"FFT Gflps 3d (1d only) = %g %g\n",flop3,flop1);
}
}
}
if (histoflag) {
if (me == 0) {
if (screen) fprintf(screen,"\n");
if (logfile) fprintf(logfile,"\n");
}
tmp = atom->nlocal;
stats(1,&tmp,&ave,&max,&min,10,histo);
if (me == 0) {
if (screen) {
fprintf(screen,"Nlocal: %g ave %g max %g min\n",ave,max,min);
fprintf(screen,"Histogram:");
for (i = 0; i < 10; i++) fprintf(screen," %d",histo[i]);
fprintf(screen,"\n");
}
if (logfile) {
fprintf(logfile,"Nlocal: %g ave %g max %g min\n",ave,max,min);
fprintf(logfile,"Histogram:");
for (i = 0; i < 10; i++) fprintf(logfile," %d",histo[i]);
fprintf(logfile,"\n");
}
}
tmp = atom->nghost;
stats(1,&tmp,&ave,&max,&min,10,histo);
if (me == 0) {
if (screen) {
fprintf(screen,"Nghost: %g ave %g max %g min\n",ave,max,min);
fprintf(screen,"Histogram:");
for (i = 0; i < 10; i++) fprintf(screen," %d",histo[i]);
fprintf(screen,"\n");
}
if (logfile) {
fprintf(logfile,"Nghost: %g ave %g max %g min\n",ave,max,min);
fprintf(logfile,"Histogram:");
for (i = 0; i < 10; i++) fprintf(logfile," %d",histo[i]);
fprintf(logfile,"\n");
}
}
// find a non-skip neighbor list containing half pairwise interactions
// count neighbors in that list for stats purposes
// allow it to be Kokkos neigh list as well
for (m = 0; m < neighbor->old_nrequest; m++) {
if ((neighbor->old_requests[m]->half ||
neighbor->old_requests[m]->gran ||
neighbor->old_requests[m]->respaouter ||
neighbor->old_requests[m]->half_from_full) &&
neighbor->old_requests[m]->skip == 0 &&
neighbor->lists[m] && neighbor->lists[m]->numneigh) {
if (!neighbor->lists[m] && lmp->kokkos &&
lmp->kokkos->neigh_list_kokkos(m)) break;
else break;
}
}
nneigh = 0;
if (m < neighbor->old_nrequest) {
if (neighbor->lists[m]) {
int inum = neighbor->lists[m]->inum;
int *ilist = neighbor->lists[m]->ilist;
int *numneigh = neighbor->lists[m]->numneigh;
for (i = 0; i < inum; i++)
nneigh += numneigh[ilist[i]];
} else if (lmp->kokkos) nneigh = lmp->kokkos->neigh_count(m);
}
tmp = nneigh;
stats(1,&tmp,&ave,&max,&min,10,histo);
if (me == 0) {
if (screen) {
fprintf(screen,"Neighs: %g ave %g max %g min\n",ave,max,min);
fprintf(screen,"Histogram:");
for (i = 0; i < 10; i++) fprintf(screen," %d",histo[i]);
fprintf(screen,"\n");
}
if (logfile) {
fprintf(logfile,"Neighs: %g ave %g max %g min\n",ave,max,min);
fprintf(logfile,"Histogram:");
for (i = 0; i < 10; i++) fprintf(logfile," %d",histo[i]);
fprintf(logfile,"\n");
}
}
// find a non-skip neighbor list containing full pairwise interactions
// count neighbors in that list for stats purposes
// allow it to be Kokkos neigh list as well
for (m = 0; m < neighbor->old_nrequest; m++) {
if (neighbor->old_requests[m]->full &&
neighbor->old_requests[m]->skip == 0) {
if (lmp->kokkos && lmp->kokkos->neigh_list_kokkos(m)) break;
else break;
}
}
nneighfull = 0;
if (m < neighbor->old_nrequest) {
if (neighbor->lists[m] && neighbor->lists[m]->numneigh) {
int inum = neighbor->lists[m]->inum;
int *ilist = neighbor->lists[m]->ilist;
int *numneigh = neighbor->lists[m]->numneigh;
for (i = 0; i < inum; i++)
nneighfull += numneigh[ilist[i]];
} else if (!neighbor->lists[m] && lmp->kokkos)
nneighfull = lmp->kokkos->neigh_count(m);
tmp = nneighfull;
stats(1,&tmp,&ave,&max,&min,10,histo);
if (me == 0) {
if (screen) {
fprintf(screen,"FullNghs: %g ave %g max %g min\n",ave,max,min);
fprintf(screen,"Histogram:");
for (i = 0; i < 10; i++) fprintf(screen," %d",histo[i]);
fprintf(screen,"\n");
}
if (logfile) {
fprintf(logfile,"FullNghs: %g ave %g max %g min\n",ave,max,min);
fprintf(logfile,"Histogram:");
for (i = 0; i < 10; i++) fprintf(logfile," %d",histo[i]);
fprintf(logfile,"\n");
}
}
}
}
if (neighflag) {
if (me == 0) {
if (screen) fprintf(screen,"\n");
if (logfile) fprintf(logfile,"\n");
}
tmp = MAX(nneigh,nneighfull);
double nall;
MPI_Allreduce(&tmp,&nall,1,MPI_DOUBLE,MPI_SUM,world);
int nspec;
double nspec_all = 0;
if (atom->molecular == 1) {
int **nspecial = atom->nspecial;
int nlocal = atom->nlocal;
nspec = 0;
for (i = 0; i < nlocal; i++) nspec += nspecial[i][2];
tmp = nspec;
MPI_Allreduce(&tmp,&nspec_all,1,MPI_DOUBLE,MPI_SUM,world);
} else if (atom->molecular == 2) {
Molecule **onemols = atom->avec->onemols;
int *molindex = atom->molindex;
int *molatom = atom->molatom;
int nlocal = atom->nlocal;
int imol,iatom;
nspec = 0;
for (i = 0; i < nlocal; i++) {
if (molindex[i] < 0) continue;
imol = molindex[i];
iatom = molatom[i];
nspec += onemols[imol]->nspecial[iatom][2];
}
tmp = nspec;
MPI_Allreduce(&tmp,&nspec_all,1,MPI_DOUBLE,MPI_SUM,world);
}
if (me == 0) {
if (screen) {
if (nall < 2.0e9)
fprintf(screen,
"Total # of neighbors = %d\n",static_cast<int> (nall));
else fprintf(screen,"Total # of neighbors = %g\n",nall);
if (atom->natoms > 0)
fprintf(screen,"Ave neighs/atom = %g\n",nall/atom->natoms);
if (atom->molecular && atom->natoms > 0)
fprintf(screen,"Ave special neighs/atom = %g\n",
nspec_all/atom->natoms);
fprintf(screen,"Neighbor list builds = " BIGINT_FORMAT "\n",
neighbor->ncalls);
if (neighbor->dist_check)
fprintf(screen,"Dangerous builds = " BIGINT_FORMAT "\n",
neighbor->ndanger);
else fprintf(screen,"Dangerous builds not checked\n");
}
if (logfile) {
if (nall < 2.0e9)
fprintf(logfile,
"Total # of neighbors = %d\n",static_cast<int> (nall));
else fprintf(logfile,"Total # of neighbors = %g\n",nall);
if (atom->natoms > 0)
fprintf(logfile,"Ave neighs/atom = %g\n",nall/atom->natoms);
if (atom->molecular && atom->natoms > 0)
fprintf(logfile,"Ave special neighs/atom = %g\n",
nspec_all/atom->natoms);
fprintf(logfile,"Neighbor list builds = " BIGINT_FORMAT "\n",
neighbor->ncalls);
if (neighbor->dist_check)
fprintf(logfile,"Dangerous builds = " BIGINT_FORMAT "\n",
neighbor->ndanger);
else fprintf(logfile,"Dangerous builds not checked\n");
}
}
}
if (logfile) fflush(logfile);
}
/* ---------------------------------------------------------------------- */
void Finish::stats(int n, double *data,
double *pave, double *pmax, double *pmin,
int nhisto, int *histo)
{
int i,m;
int *histotmp;
double min = 1.0e20;
double max = -1.0e20;
double ave = 0.0;
for (i = 0; i < n; i++) {
ave += data[i];
if (data[i] < min) min = data[i];
if (data[i] > max) max = data[i];
}
int ntotal;
MPI_Allreduce(&n,&ntotal,1,MPI_INT,MPI_SUM,world);
double tmp;
MPI_Allreduce(&ave,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
ave = tmp/ntotal;
MPI_Allreduce(&min,&tmp,1,MPI_DOUBLE,MPI_MIN,world);
min = tmp;
MPI_Allreduce(&max,&tmp,1,MPI_DOUBLE,MPI_MAX,world);
max = tmp;
for (i = 0; i < nhisto; i++) histo[i] = 0;
double del = max - min;
for (i = 0; i < n; i++) {
if (del == 0.0) m = 0;
else m = static_cast<int> ((data[i]-min)/del * nhisto);
if (m > nhisto-1) m = nhisto-1;
histo[m]++;
}
memory->create(histotmp,nhisto,"finish:histotmp");
MPI_Allreduce(histo,histotmp,nhisto,MPI_INT,MPI_SUM,world);
for (i = 0; i < nhisto; i++) histo[i] = histotmp[i];
memory->destroy(histotmp);
*pave = ave;
*pmax = max;
*pmin = min;
}
/* ---------------------------------------------------------------------- */
void mpi_timings(const char *label, Timer *t, enum Timer::ttype tt,
MPI_Comm world, const int nprocs, const int nthreads,
const int me, double time_loop, FILE *scr, FILE *log)
{
double tmp, time_max, time_min, time_sq;
double time = t->get_wall(tt);
double time_cpu = t->get_cpu(tt);
if (time/time_loop < 0.001) // insufficient timer resolution!
time_cpu = 1.0;
else
time_cpu = time_cpu / time;
if (time_cpu > nthreads) time_cpu = nthreads;
MPI_Allreduce(&time,&time_min,1,MPI_DOUBLE,MPI_MIN,world);
MPI_Allreduce(&time,&time_max,1,MPI_DOUBLE,MPI_MAX,world);
time_sq = time*time;
MPI_Allreduce(&time,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time = tmp/nprocs;
MPI_Allreduce(&time_sq,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time_sq = tmp/nprocs;
MPI_Allreduce(&time_cpu,&tmp,1,MPI_DOUBLE,MPI_SUM,world);
time_cpu = tmp/nprocs*100.0;
// % variance from the average as measure of load imbalance
- if (time > 1.0e-10)
+ if ((time_sq/time - time) > 1.0e-10)
time_sq = sqrt(time_sq/time - time)*100.0;
else
time_sq = 0.0;
if (me == 0) {
tmp = time/time_loop*100.0;
if (t->has_full()) {
const char fmt[] = "%-8s|%- 12.5g|%- 12.5g|%- 12.5g|%6.1f |%6.1f |%6.2f\n";
if (scr)
fprintf(scr,fmt,label,time_min,time,time_max,time_sq,time_cpu,tmp);
if (log)
fprintf(log,fmt,label,time_min,time,time_max,time_sq,time_cpu,tmp);
time_loop = 100.0/time_loop;
} else {
const char fmt[] = "%-8s|%- 12.5g|%- 12.5g|%- 12.5g|%6.1f |%6.2f\n";
if (scr)
fprintf(scr,fmt,label,time_min,time,time_max,time_sq,tmp);
if (log)
fprintf(log,fmt,label,time_min,time,time_max,time_sq,tmp);
}
}
}
/* ---------------------------------------------------------------------- */
#ifdef LMP_USER_OMP
void omp_times(FixOMP *fix, const char *label, enum Timer::ttype which,
const int nthreads,FILE *scr, FILE *log)
{
const char fmt[] = "%-8s|%- 12.5g|%- 12.5g|%- 12.5g|%6.1f |%6.2f\n";
double time_min, time_max, time_avg, time_total, time_std;
time_min = 1.0e100;
time_max = -1.0e100;
time_total = time_avg = time_std = 0.0;
for (int i=0; i < nthreads; ++i) {
ThrData *thr = fix->get_thr(i);
double tmp=thr->get_time(which);
time_min = MIN(time_min,tmp);
time_max = MAX(time_max,tmp);
time_avg += tmp;
time_std += tmp*tmp;
time_total += thr->get_time(Timer::ALL);
}
time_avg /= nthreads;
time_std /= nthreads;
time_total /= nthreads;
- if (time_avg > 1.0e-10)
+ if ((time_std/time_avg -time_avg) > 1.0e-10)
time_std = sqrt(time_std/time_avg - time_avg)*100.0;
else
time_std = 0.0;
if (scr) fprintf(scr,fmt,label,time_min,time_avg,time_max,time_std,
time_avg/time_total*100.0);
if (log) fprintf(log,fmt,label,time_min,time_avg,time_max,time_std,
time_avg/time_total*100.0);
}
#endif
diff --git a/src/fix_ave_time.cpp b/src/fix_ave_time.cpp
index ff47af03a..56a2458aa 100644
--- a/src/fix_ave_time.cpp
+++ b/src/fix_ave_time.cpp
@@ -1,1150 +1,1152 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain 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: Pieter in 't Veld (SNL)
------------------------------------------------------------------------- */
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "fix_ave_time.h"
#include "update.h"
#include "force.h"
#include "modify.h"
#include "compute.h"
#include "input.h"
#include "variable.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
using namespace FixConst;
enum{COMPUTE,FIX,VARIABLE};
enum{ONE,RUNNING,WINDOW};
enum{SCALAR,VECTOR};
#define INVOKED_SCALAR 1
#define INVOKED_VECTOR 2
#define INVOKED_ARRAY 4
/* ---------------------------------------------------------------------- */
FixAveTime::FixAveTime(LAMMPS *lmp, int narg, char **arg) :
Fix(lmp, narg, arg),
- nvalues(0), which(NULL), argindex(NULL), value2index(NULL), offcol(NULL), varlen(NULL), ids(NULL),
- fp(NULL), offlist(NULL), format(NULL), format_user(NULL), vector(NULL), vector_total(NULL), vector_list(NULL),
+ nvalues(0), which(NULL), argindex(NULL), value2index(NULL),
+ offcol(NULL), varlen(NULL), ids(NULL),
+ fp(NULL), offlist(NULL), format(NULL), format_user(NULL),
+ vector(NULL), vector_total(NULL), vector_list(NULL),
column(NULL), array(NULL), array_total(NULL), array_list(NULL)
{
if (narg < 7) error->all(FLERR,"Illegal fix ave/time command");
MPI_Comm_rank(world,&me);
nevery = force->inumeric(FLERR,arg[3]);
nrepeat = force->inumeric(FLERR,arg[4]);
nfreq = force->inumeric(FLERR,arg[5]);
global_freq = nfreq;
dynamic_group_allow = 1;
// scan values to count them
// then read options so know mode = SCALAR/VECTOR before re-reading values
nvalues = 0;
int iarg = 6;
while (iarg < narg) {
if ((strncmp(arg[iarg],"c_",2) == 0) ||
(strncmp(arg[iarg],"f_",2) == 0) ||
(strncmp(arg[iarg],"v_",2) == 0)) {
nvalues++;
iarg++;
} else break;
}
if (nvalues == 0) error->all(FLERR,"No values in fix ave/time command");
options(iarg,narg,arg);
// expand args if any have wildcard character "*"
// this can reset nvalues
int expand = 0;
char **earg;
nvalues = input->expand_args(nvalues,&arg[6],mode,earg);
if (earg != &arg[6]) expand = 1;
arg = earg;
// parse values
which = new int[nvalues];
argindex = new int[nvalues];
value2index = new int[nvalues];
offcol = new int[nvalues];
varlen = new int[nvalues];
ids = new char*[nvalues];
for (int i = 0; i < nvalues; i++) {
if (arg[i][0] == 'c') which[i] = COMPUTE;
else if (arg[i][0] == 'f') which[i] = FIX;
else if (arg[i][0] == 'v') which[i] = VARIABLE;
int n = strlen(arg[i]);
char *suffix = new char[n];
strcpy(suffix,&arg[i][2]);
char *ptr = strchr(suffix,'[');
if (ptr) {
if (suffix[strlen(suffix)-1] != ']')
error->all(FLERR,"Illegal fix ave/time command");
argindex[i] = atoi(ptr+1);
*ptr = '\0';
} else argindex[i] = 0;
n = strlen(suffix) + 1;
ids[i] = new char[n];
strcpy(ids[i],suffix);
delete [] suffix;
}
// set off columns now that nvalues is finalized
for (int i = 0; i < nvalues; i++) offcol[i] = 0;
for (int i = 0; i < noff; i++) {
if (offlist[i] < 1 || offlist[i] > nvalues)
error->all(FLERR,"Invalid fix ave/time off column");
offcol[offlist[i]-1] = 1;
}
// setup and error check
// for fix inputs, check that fix frequency is acceptable
// set variable_length if any compute is variable length
if (nevery <= 0 || nrepeat <= 0 || nfreq <= 0)
error->all(FLERR,"Illegal fix ave/time command");
if (nfreq % nevery || nrepeat*nevery > nfreq)
error->all(FLERR,"Illegal fix ave/time command");
if (ave != RUNNING && overwrite)
error->all(FLERR,"Illegal fix ave/time command");
for (int i = 0; i < nvalues; i++) {
varlen[i] = 0;
if (which[i] == COMPUTE && mode == SCALAR) {
int icompute = modify->find_compute(ids[i]);
if (icompute < 0)
error->all(FLERR,"Compute ID for fix ave/time does not exist");
if (argindex[i] == 0 && modify->compute[icompute]->scalar_flag == 0)
error->all(FLERR,"Fix ave/time compute does not calculate a scalar");
if (argindex[i] && modify->compute[icompute]->vector_flag == 0)
error->all(FLERR,"Fix ave/time compute does not calculate a vector");
if (argindex[i] && argindex[i] > modify->compute[icompute]->size_vector &&
modify->compute[icompute]->size_vector_variable == 0)
error->all(FLERR,
"Fix ave/time compute vector is accessed out-of-range");
if (argindex[i] && modify->compute[icompute]->size_vector_variable)
varlen[i] = 1;
} else if (which[i] == COMPUTE && mode == VECTOR) {
int icompute = modify->find_compute(ids[i]);
if (icompute < 0)
error->all(FLERR,"Compute ID for fix ave/time does not exist");
if (argindex[i] == 0 && modify->compute[icompute]->vector_flag == 0)
error->all(FLERR,"Fix ave/time compute does not calculate a vector");
if (argindex[i] && modify->compute[icompute]->array_flag == 0)
error->all(FLERR,"Fix ave/time compute does not calculate an array");
if (argindex[i] &&
argindex[i] > modify->compute[icompute]->size_array_cols)
error->all(FLERR,"Fix ave/time compute array is accessed out-of-range");
if (argindex[i] == 0 && modify->compute[icompute]->size_vector_variable)
varlen[i] = 1;
if (argindex[i] && modify->compute[icompute]->size_array_rows_variable)
varlen[i] = 1;
} else if (which[i] == FIX && mode == SCALAR) {
int ifix = modify->find_fix(ids[i]);
if (ifix < 0)
error->all(FLERR,"Fix ID for fix ave/time does not exist");
if (argindex[i] == 0 && modify->fix[ifix]->scalar_flag == 0)
error->all(FLERR,"Fix ave/time fix does not calculate a scalar");
if (argindex[i] && modify->fix[ifix]->vector_flag == 0)
error->all(FLERR,"Fix ave/time fix does not calculate a vector");
if (argindex[i] && modify->fix[ifix]->size_vector_variable)
error->all(FLERR,"Fix ave/time fix vector cannot be variable length");
if (argindex[i] && argindex[i] > modify->fix[ifix]->size_vector)
error->all(FLERR,"Fix ave/time fix vector is accessed out-of-range");
if (nevery % modify->fix[ifix]->global_freq)
error->all(FLERR,
"Fix for fix ave/time not computed at compatible time");
} else if (which[i] == FIX && mode == VECTOR) {
int ifix = modify->find_fix(ids[i]);
if (ifix < 0)
error->all(FLERR,"Fix ID for fix ave/time does not exist");
if (argindex[i] == 0 && modify->fix[ifix]->vector_flag == 0)
error->all(FLERR,"Fix ave/time fix does not calculate a vector");
if (argindex[i] && modify->fix[ifix]->array_flag == 0)
error->all(FLERR,"Fix ave/time fix does not calculate an array");
if (argindex[i] && modify->fix[ifix]->size_array_rows_variable)
error->all(FLERR,"Fix ave/time fix array cannot be variable length");
if (argindex[i] && argindex[i] > modify->fix[ifix]->size_array_cols)
error->all(FLERR,"Fix ave/time fix array is accessed out-of-range");
if (nevery % modify->fix[ifix]->global_freq)
error->all(FLERR,
"Fix for fix ave/time not computed at compatible time");
} else if (which[i] == VARIABLE && mode == SCALAR) {
int ivariable = input->variable->find(ids[i]);
if (ivariable < 0)
error->all(FLERR,"Variable name for fix ave/time does not exist");
if (argindex[i] == 0 && input->variable->equalstyle(ivariable) == 0)
error->all(FLERR,"Fix ave/time variable is not equal-style variable");
if (argindex[i] && input->variable->vectorstyle(ivariable) == 0)
error->all(FLERR,"Fix ave/time variable is not vector-style variable");
} else if (which[i] == VARIABLE && mode == VECTOR) {
int ivariable = input->variable->find(ids[i]);
if (ivariable < 0)
error->all(FLERR,"Variable name for fix ave/time does not exist");
if (argindex[i] == 0 && input->variable->vectorstyle(ivariable) == 0)
error->all(FLERR,"Fix ave/time variable is not vector-style variable");
if (argindex[i])
error->all(FLERR,"Fix ave/time mode vector variable cannot be indexed");
varlen[i] = 1;
}
}
// all_variable_length = 1 if all values are variable length
// any_variable_length = 1 if any values are variable length
all_variable_length = 1;
any_variable_length = 0;
for (int i = 0; i < nvalues; i++) {
if (varlen[i] == 0) all_variable_length = 0;
if (varlen[i]) any_variable_length = 1;
}
// if VECTOR mode, check that all columns are same length
// nrows = # of rows in output array
// if all columns are variable length, just set nrows = 1 for now
column = NULL;
if (mode == VECTOR) {
if (all_variable_length == 0) nrows = column_length(0);
else nrows = 1;
memory->create(column,nrows,"ave/time:column");
}
// enable locking of row count by this fix for computes of variable length
// only if nrepeat > 1 or ave = RUNNING/WINDOW,
// so that locking spans multiple timesteps
if (any_variable_length &&
(nrepeat > 1 || ave == RUNNING || ave == WINDOW)) {
for (int i = 0; i < nvalues; i++)
if (varlen[i] && which[i] == COMPUTE) {
int icompute = modify->find_compute(ids[i]);
modify->compute[icompute]->lock_enable();
}
lockforever = 0;
}
// print file comment lines
// for mode = VECTOR, cannot use arg to print
// since array args may have been expanded to multiple vectors
if (fp && me == 0) {
clearerr(fp);
if (title1) fprintf(fp,"%s\n",title1);
else fprintf(fp,"# Time-averaged data for fix %s\n",id);
if (title2) fprintf(fp,"%s\n",title2);
else if (mode == SCALAR) {
fprintf(fp,"# TimeStep");
for (int i = 0; i < nvalues; i++) fprintf(fp," %s",earg[i]);
fprintf(fp,"\n");
} else fprintf(fp,"# TimeStep Number-of-rows\n");
if (title3 && mode == VECTOR) fprintf(fp,"%s\n",title3);
else if (mode == VECTOR) {
fprintf(fp,"# Row");
for (int i = 0; i < nvalues; i++) fprintf(fp," %s",earg[i]);
fprintf(fp,"\n");
}
if (ferror(fp))
error->one(FLERR,"Error writing file header");
filepos = ftell(fp);
}
delete [] title1;
delete [] title2;
delete [] title3;
// if wildcard expansion occurred, free earg memory from expand_args()
// wait to do this until after file comment lines are printed
if (expand) {
for (int i = 0; i < nvalues; i++) delete [] earg[i];
memory->sfree(earg);
}
// allocate memory for averaging
vector = vector_total = NULL;
vector_list = NULL;
array = array_total = NULL;
array_list = NULL;
if (mode == SCALAR) {
vector = new double[nvalues];
vector_total = new double[nvalues];
if (ave == WINDOW)
memory->create(vector_list,nwindow,nvalues,"ave/time:vector_list");
} else allocate_arrays();
// this fix produces either a global scalar or vector or array
// SCALAR mode produces either a scalar or vector
// VECTOR mode produces either a vector or array
// intensive/extensive flags set by compute,fix,variable that produces value
extlist = NULL;
if (mode == SCALAR) {
if (nvalues == 1) {
scalar_flag = 1;
if (which[0] == COMPUTE) {
Compute *compute = modify->compute[modify->find_compute(ids[0])];
if (argindex[0] == 0) extscalar = compute->extscalar;
else if (compute->extvector >= 0) extscalar = compute->extvector;
else extscalar = compute->extlist[argindex[0]-1];
} else if (which[0] == FIX) {
Fix *fix = modify->fix[modify->find_fix(ids[0])];
if (argindex[0] == 0) extscalar = fix->extscalar;
else if (fix->extvector >= 0) extscalar = fix->extvector;
else extscalar = fix->extlist[argindex[0]-1];
} else if (which[0] == VARIABLE) {
extscalar = 0;
}
} else {
vector_flag = 1;
size_vector = nrows = nvalues;
extvector = -1;
extlist = new int[nvalues];
for (int i = 0; i < nvalues; i++) {
if (which[i] == COMPUTE) {
Compute *compute = modify->compute[modify->find_compute(ids[i])];
if (argindex[i] == 0) extlist[i] = compute->extscalar;
else if (compute->extvector >= 0) extlist[i] = compute->extvector;
else extlist[i] = compute->extlist[argindex[i]-1];
} else if (which[i] == FIX) {
Fix *fix = modify->fix[modify->find_fix(ids[i])];
if (argindex[i] == 0) extlist[i] = fix->extscalar;
else if (fix->extvector >= 0) extlist[i] = fix->extvector;
else extlist[i] = fix->extlist[argindex[i]-1];
} else if (which[i] == VARIABLE) {
extlist[i] = 0;
}
}
}
} else {
if (nvalues == 1) {
vector_flag = 1;
size_vector = nrows;
if (all_variable_length) size_vector_variable = 1;
if (which[0] == COMPUTE) {
Compute *compute = modify->compute[modify->find_compute(ids[0])];
if (argindex[0] == 0) {
extvector = compute->extvector;
if (extvector == -1) {
extlist = new int[nrows];
for (int i = 0; i < nrows; i++) extlist[i] = compute->extlist[i];
}
} else extvector = compute->extarray;
} else if (which[0] == FIX) {
Fix *fix = modify->fix[modify->find_fix(ids[0])];
if (argindex[0] == 0) {
extvector = fix->extvector;
if (extvector == -1) {
extlist = new int[nrows];
for (int i = 0; i < nrows; i++) extlist[i] = fix->extlist[i];
}
} else extvector = fix->extarray;
} else if (which[0] == VARIABLE) {
extlist = new int[nrows];
for (int i = 0; i < nrows; i++) extlist[i] = 0;
}
} else {
array_flag = 1;
size_array_rows = nrows;
size_array_cols = nvalues;
if (all_variable_length) size_array_rows_variable = 1;
int value;
for (int i = 0; i < nvalues; i++) {
if (which[i] == COMPUTE) {
Compute *compute = modify->compute[modify->find_compute(ids[i])];
if (argindex[i] == 0) value = compute->extvector;
else value = compute->extarray;
} else if (which[i] == FIX) {
Fix *fix = modify->fix[modify->find_fix(ids[i])];
if (argindex[i] == 0) value = fix->extvector;
else value = fix->extarray;
} else if (which[i] == VARIABLE) {
value = 0;
}
if (value == -1)
error->all(FLERR,"Fix ave/time cannot set output array "
"intensive/extensive from these inputs");
if (i == 0) extarray = value;
else if (value != extarray)
error->all(FLERR,"Fix ave/time cannot set output array "
"intensive/extensive from these inputs");
}
}
}
// initializations
// set vector_total to zero since it accumulates
// array_total already zeroed in allocate_arrays
irepeat = 0;
iwindow = window_limit = 0;
norm = 0;
if (mode == SCALAR)
for (int i = 0; i < nvalues; i++) vector_total[i] = 0.0;
// nvalid = next step on which end_of_step does something
// add nvalid to all computes that store invocation times
// since don't know a priori which are invoked by this fix
// once in end_of_step() can set timestep for ones actually invoked
nvalid_last = -1;
nvalid = nextvalid();
modify->addstep_compute_all(nvalid);
}
/* ---------------------------------------------------------------------- */
FixAveTime::~FixAveTime()
{
// decrement lock counter in compute chunk/atom, it if still exists
if (any_variable_length &&
(nrepeat > 1 || ave == RUNNING || ave == WINDOW)) {
for (int i = 0; i < nvalues; i++)
if (varlen[i]) {
int icompute = modify->find_compute(ids[i]);
if (icompute >= 0) {
if (ave == RUNNING || ave == WINDOW)
modify->compute[icompute]->unlock(this);
modify->compute[icompute]->lock_disable();
}
}
}
delete [] format_user;
delete [] which;
delete [] argindex;
delete [] value2index;
delete [] offcol;
delete [] varlen;
for (int i = 0; i < nvalues; i++) delete [] ids[i];
delete [] ids;
delete [] extlist;
if (fp && me == 0) fclose(fp);
memory->destroy(column);
delete [] vector;
delete [] vector_total;
memory->destroy(array);
memory->destroy(array_total);
memory->destroy(array_list);
}
/* ---------------------------------------------------------------------- */
int FixAveTime::setmask()
{
int mask = 0;
mask |= END_OF_STEP;
return mask;
}
/* ---------------------------------------------------------------------- */
void FixAveTime::init()
{
// set current indices for all computes,fixes,variables
for (int i = 0; i < nvalues; i++) {
if (which[i] == COMPUTE) {
int icompute = modify->find_compute(ids[i]);
if (icompute < 0)
error->all(FLERR,"Compute ID for fix ave/time does not exist");
value2index[i] = icompute;
} else if (which[i] == FIX) {
int ifix = modify->find_fix(ids[i]);
if (ifix < 0)
error->all(FLERR,"Fix ID for fix ave/time does not exist");
value2index[i] = ifix;
} else if (which[i] == VARIABLE) {
int ivariable = input->variable->find(ids[i]);
if (ivariable < 0)
error->all(FLERR,"Variable name for fix ave/time does not exist");
value2index[i] = ivariable;
}
}
// need to reset nvalid if nvalid < ntimestep b/c minimize was performed
if (nvalid < update->ntimestep) {
irepeat = 0;
nvalid = nextvalid();
modify->addstep_compute_all(nvalid);
}
}
/* ----------------------------------------------------------------------
only does something if nvalid = current timestep
------------------------------------------------------------------------- */
void FixAveTime::setup(int vflag)
{
end_of_step();
}
/* ---------------------------------------------------------------------- */
void FixAveTime::end_of_step()
{
// skip if not step which requires doing something
// error check if timestep was reset in an invalid manner
bigint ntimestep = update->ntimestep;
if (ntimestep < nvalid_last || ntimestep > nvalid)
error->all(FLERR,"Invalid timestep reset for fix ave/time");
if (ntimestep != nvalid) return;
nvalid_last = nvalid;
if (mode == SCALAR) invoke_scalar(ntimestep);
else invoke_vector(ntimestep);
}
/* ---------------------------------------------------------------------- */
void FixAveTime::invoke_scalar(bigint ntimestep)
{
int i,m;
double scalar;
// zero if first sample within single Nfreq epoch
// if any input is variable length, initialize current length
// check for exceeding length is done below
if (irepeat == 0) {
if (any_variable_length) {
modify->clearstep_compute();
column_length(1);
modify->addstep_compute(ntimestep+nevery);
modify->addstep_compute(ntimestep+nfreq);
}
for (i = 0; i < nvalues; i++) vector[i] = 0.0;
}
// accumulate results of computes,fixes,variables to local copy
// compute/fix/variable may invoke computes so wrap with clear/add
modify->clearstep_compute();
for (i = 0; i < nvalues; i++) {
m = value2index[i];
// invoke compute if not previously invoked
// insure no out-of-range access to variable-length compute vector
if (which[i] == COMPUTE) {
Compute *compute = modify->compute[m];
if (argindex[i] == 0) {
if (!(compute->invoked_flag & INVOKED_SCALAR)) {
compute->compute_scalar();
compute->invoked_flag |= INVOKED_SCALAR;
}
scalar = compute->scalar;
} else {
if (!(compute->invoked_flag & INVOKED_VECTOR)) {
compute->compute_vector();
compute->invoked_flag |= INVOKED_VECTOR;
}
if (varlen[i] && compute->size_vector < argindex[i]) scalar = 0.0;
else scalar = compute->vector[argindex[i]-1];
}
// access fix fields, guaranteed to be ready
} else if (which[i] == FIX) {
if (argindex[i] == 0)
scalar = modify->fix[m]->compute_scalar();
else
scalar = modify->fix[m]->compute_vector(argindex[i]-1);
// evaluate equal-style or vector-style variable
// insure no out-of-range access to vector-style variable
} else if (which[i] == VARIABLE) {
if (argindex[i] == 0)
scalar = input->variable->compute_equal(m);
else {
double *varvec;
int nvec = input->variable->compute_vector(m,&varvec);
if (nvec < argindex[i]) scalar = 0.0;
else scalar = varvec[argindex[i]-1];
}
}
// add value to vector or just set directly if offcol is set
if (offcol[i]) vector[i] = scalar;
else vector[i] += scalar;
}
// done if irepeat < nrepeat
// else reset irepeat and nvalid
irepeat++;
if (irepeat < nrepeat) {
nvalid += nevery;
modify->addstep_compute(nvalid);
return;
}
irepeat = 0;
nvalid = ntimestep + nfreq - (nrepeat-1)*nevery;
modify->addstep_compute(nvalid);
// average the final result for the Nfreq timestep
double repeat = nrepeat;
for (i = 0; i < nvalues; i++)
if (offcol[i] == 0) vector[i] /= repeat;
// if ave = ONE, only single Nfreq timestep value is needed
// if ave = RUNNING, combine with all previous Nfreq timestep values
// if ave = WINDOW, combine with nwindow most recent Nfreq timestep values
if (ave == ONE) {
for (i = 0; i < nvalues; i++) vector_total[i] = vector[i];
norm = 1;
} else if (ave == RUNNING) {
for (i = 0; i < nvalues; i++) vector_total[i] += vector[i];
norm++;
} else if (ave == WINDOW) {
for (i = 0; i < nvalues; i++) {
vector_total[i] += vector[i];
if (window_limit) vector_total[i] -= vector_list[iwindow][i];
vector_list[iwindow][i] = vector[i];
}
iwindow++;
if (iwindow == nwindow) {
iwindow = 0;
window_limit = 1;
}
if (window_limit) norm = nwindow;
else norm = iwindow;
}
// insure any columns with offcol set are effectively set to last value
for (i = 0; i < nvalues; i++)
if (offcol[i]) vector_total[i] = norm*vector[i];
// output result to file
if (fp && me == 0) {
clearerr(fp);
if (overwrite) fseek(fp,filepos,SEEK_SET);
fprintf(fp,BIGINT_FORMAT,ntimestep);
for (i = 0; i < nvalues; i++) fprintf(fp,format,vector_total[i]/norm);
fprintf(fp,"\n");
if (ferror(fp))
error->one(FLERR,"Error writing out time averaged data");
fflush(fp);
if (overwrite) {
long fileend = ftell(fp);
if (fileend > 0) ftruncate(fileno(fp),fileend);
}
}
}
/* ---------------------------------------------------------------------- */
void FixAveTime::invoke_vector(bigint ntimestep)
{
int i,j,m;
// first sample within single Nfreq epoch
// zero out arrays that accumulate over many samples, but not across epochs
// invoke setup_chunks() to determine current nchunk
// re-allocate per-chunk arrays if needed
// invoke lock() in two cases:
// if nrepeat > 1: so nchunk cannot change until Nfreq epoch is over,
// will be unlocked on last repeat of this Nfreq
// if ave = RUNNING/WINDOW and not yet locked:
// set forever, will be unlocked in fix destructor
// wrap setup_chunks in clearstep/addstep b/c it may invoke computes
// both nevery and nfreq are future steps,
// since call below to cchunk->ichunk()
// does not re-invoke internal cchunk compute on this same step
if (irepeat == 0) {
if (any_variable_length) {
modify->clearstep_compute();
int nrows_new = column_length(1);
modify->addstep_compute(ntimestep+nevery);
modify->addstep_compute(ntimestep+nfreq);
if (all_variable_length && nrows_new != nrows) {
nrows = nrows_new;
memory->destroy(column);
memory->create(column,nrows,"ave/time:column");
allocate_arrays();
}
bigint ntimestep = update->ntimestep;
int lockforever_flag = 0;
for (i = 0; i < nvalues; i++) {
if (!varlen[i] || which[i] != COMPUTE) continue;
if (nrepeat > 1 && ave == ONE) {
Compute *compute = modify->compute[value2index[i]];
compute->lock(this,ntimestep,ntimestep+(nrepeat-1)*nevery);
} else if ((ave == RUNNING || ave == WINDOW) && !lockforever) {
Compute *compute = modify->compute[value2index[i]];
compute->lock(this,update->ntimestep,-1);
lockforever_flag = 1;
}
}
if (lockforever_flag) lockforever = 1;
}
for (i = 0; i < nrows; i++)
for (j = 0; j < nvalues; j++) array[i][j] = 0.0;
}
// accumulate results of computes,fixes,variables to local copy
// compute/fix/variable may invoke computes so wrap with clear/add
modify->clearstep_compute();
for (j = 0; j < nvalues; j++) {
m = value2index[j];
// invoke compute if not previously invoked
if (which[j] == COMPUTE) {
Compute *compute = modify->compute[m];
if (argindex[j] == 0) {
if (!(compute->invoked_flag & INVOKED_VECTOR)) {
compute->compute_vector();
compute->invoked_flag |= INVOKED_VECTOR;
}
double *cvector = compute->vector;
for (i = 0; i < nrows; i++)
column[i] = cvector[i];
} else {
if (!(compute->invoked_flag & INVOKED_ARRAY)) {
compute->compute_array();
compute->invoked_flag |= INVOKED_ARRAY;
}
double **carray = compute->array;
int icol = argindex[j]-1;
for (i = 0; i < nrows; i++)
column[i] = carray[i][icol];
}
// access fix fields, guaranteed to be ready
} else if (which[j] == FIX) {
Fix *fix = modify->fix[m];
if (argindex[j] == 0)
for (i = 0; i < nrows; i++)
column[i] = fix->compute_vector(i);
else {
int icol = argindex[j]-1;
for (i = 0; i < nrows; i++)
column[i] = fix->compute_array(i,icol);
}
// evaluate vector-style variable
// insure nvec = nrows, else error
// could be different on this timestep than when column_length(1) set nrows
} else if (which[j] == VARIABLE) {
double *varvec;
int nvec = input->variable->compute_vector(m,&varvec);
if (nvec != nrows)
error->all(FLERR,"Fix ave/time vector-style variable changed length");
for (i = 0; i < nrows; i++)
column[i] = varvec[i];
}
// add columns of values to array or just set directly if offcol is set
if (offcol[j]) {
for (i = 0; i < nrows; i++)
array[i][j] = column[i];
} else {
for (i = 0; i < nrows; i++)
array[i][j] += column[i];
}
}
// done if irepeat < nrepeat
// else reset irepeat and nvalid
irepeat++;
if (irepeat < nrepeat) {
nvalid += nevery;
modify->addstep_compute(nvalid);
return;
}
irepeat = 0;
nvalid = ntimestep+nfreq - (nrepeat-1)*nevery;
modify->addstep_compute(nvalid);
// unlock any variable length computes at end of Nfreq epoch
// do not unlock if ave = RUNNING or WINDOW
if (any_variable_length && nrepeat > 1 && ave == ONE) {
for (i = 0; i < nvalues; i++) {
if (!varlen[i]) continue;
Compute *compute = modify->compute[value2index[i]];
compute->unlock(this);
}
}
// average the final result for the Nfreq timestep
double repeat = nrepeat;
for (i = 0; i < nrows; i++)
for (j = 0; j < nvalues; j++)
if (offcol[j] == 0) array[i][j] /= repeat;
// if ave = ONE, only single Nfreq timestep value is needed
// if ave = RUNNING, combine with all previous Nfreq timestep values
// if ave = WINDOW, combine with nwindow most recent Nfreq timestep values
if (ave == ONE) {
for (i = 0; i < nrows; i++)
for (j = 0; j < nvalues; j++) array_total[i][j] = array[i][j];
norm = 1;
} else if (ave == RUNNING) {
for (i = 0; i < nrows; i++)
for (j = 0; j < nvalues; j++) array_total[i][j] += array[i][j];
norm++;
} else if (ave == WINDOW) {
for (i = 0; i < nrows; i++)
for (j = 0; j < nvalues; j++) {
array_total[i][j] += array[i][j];
if (window_limit) array_total[i][j] -= array_list[iwindow][i][j];
array_list[iwindow][i][j] = array[i][j];
}
iwindow++;
if (iwindow == nwindow) {
iwindow = 0;
window_limit = 1;
}
if (window_limit) norm = nwindow;
else norm = iwindow;
}
// insure any columns with offcol set are effectively set to last value
for (i = 0; i < nrows; i++)
for (j = 0; j < nvalues; j++)
if (offcol[j]) array_total[i][j] = norm*array[i][j];
// output result to file
if (fp && me == 0) {
if (overwrite) fseek(fp,filepos,SEEK_SET);
fprintf(fp,BIGINT_FORMAT " %d\n",ntimestep,nrows);
for (i = 0; i < nrows; i++) {
fprintf(fp,"%d",i+1);
for (j = 0; j < nvalues; j++) fprintf(fp,format,array_total[i][j]/norm);
fprintf(fp,"\n");
}
fflush(fp);
if (overwrite) {
long fileend = ftell(fp);
if (fileend > 0) ftruncate(fileno(fp),fileend);
}
}
}
/* ----------------------------------------------------------------------
return scalar value
------------------------------------------------------------------------- */
int FixAveTime::column_length(int dynamic)
{
int m,length,lengthone;
// determine nrows for static values
if (!dynamic) {
length = 0;
for (int i = 0; i < nvalues; i++) {
if (varlen[i]) continue;
if (which[i] == COMPUTE) {
int icompute = modify->find_compute(ids[i]);
if (argindex[i] == 0)
lengthone = modify->compute[icompute]->size_vector;
else lengthone = modify->compute[icompute]->size_array_rows;
} else if (which[i] == FIX) {
int ifix = modify->find_fix(ids[i]);
if (argindex[i] == 0) lengthone = modify->fix[ifix]->size_vector;
else lengthone = modify->fix[ifix]->size_array_rows;
} else if (which[i] == VARIABLE) {
// variables are always varlen = 1, so dynamic
}
if (length == 0) length = lengthone;
else if (lengthone != length)
error->all(FLERR,"Fix ave/time columns are inconsistent lengths");
}
}
// determine new nrows for dynamic values
// either all must be the same
// or must match other static values
// don't need to check if not MODE = VECTOR, just invoke lock_length()
if (dynamic) {
length = 0;
for (int i = 0; i < nvalues; i++) {
if (varlen[i] == 0) continue;
m = value2index[i];
if (which[i] == COMPUTE) {
Compute *compute = modify->compute[m];
lengthone = compute->lock_length();
} else if (which[i] == VARIABLE) {
double *varvec;
lengthone = input->variable->compute_vector(m,&varvec);
}
if (mode == SCALAR) continue;
if (all_variable_length) {
if (length == 0) length = lengthone;
else if (lengthone != length)
error->all(FLERR,"Fix ave/time columns are inconsistent lengths");
} else {
if (lengthone != nrows)
error->all(FLERR,"Fix ave/time columns are inconsistent lengths");
}
}
}
return length;
}
/* ----------------------------------------------------------------------
return scalar value
------------------------------------------------------------------------- */
double FixAveTime::compute_scalar()
{
if (norm) return vector_total[0]/norm;
return 0.0;
}
/* ----------------------------------------------------------------------
return Ith vector value
------------------------------------------------------------------------- */
double FixAveTime::compute_vector(int i)
{
if (i >= nrows) return 0.0;
if (norm) {
if (mode == SCALAR) return vector_total[i]/norm;
if (mode == VECTOR) return array_total[i][0]/norm;
}
return 0.0;
}
/* ----------------------------------------------------------------------
return I,J array value
------------------------------------------------------------------------- */
double FixAveTime::compute_array(int i, int j)
{
if (i >= nrows) return 0.0;
if (norm) return array_total[i][j]/norm;
return 0.0;
}
/* ----------------------------------------------------------------------
parse optional args
------------------------------------------------------------------------- */
void FixAveTime::options(int iarg, int narg, char **arg)
{
// option defaults
fp = NULL;
ave = ONE;
startstep = 0;
mode = SCALAR;
noff = 0;
offlist = NULL;
overwrite = 0;
format_user = NULL;
format = (char *) " %g";
title1 = NULL;
title2 = NULL;
title3 = NULL;
// optional args
while (iarg < narg) {
if (strcmp(arg[iarg],"file") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command");
if (me == 0) {
fp = fopen(arg[iarg+1],"w");
if (fp == NULL) {
char str[128];
sprintf(str,"Cannot open fix ave/time file %s",arg[iarg+1]);
error->one(FLERR,str);
}
}
iarg += 2;
} else if (strcmp(arg[iarg],"ave") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command");
if (strcmp(arg[iarg+1],"one") == 0) ave = ONE;
else if (strcmp(arg[iarg+1],"running") == 0) ave = RUNNING;
else if (strcmp(arg[iarg+1],"window") == 0) ave = WINDOW;
else error->all(FLERR,"Illegal fix ave/time command");
if (ave == WINDOW) {
if (iarg+3 > narg) error->all(FLERR,"Illegal fix ave/time command");
nwindow = force->inumeric(FLERR,arg[iarg+2]);
if (nwindow <= 0) error->all(FLERR,"Illegal fix ave/time command");
}
iarg += 2;
if (ave == WINDOW) iarg++;
} else if (strcmp(arg[iarg],"start") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command");
startstep = force->inumeric(FLERR,arg[iarg+1]);
iarg += 2;
} else if (strcmp(arg[iarg],"mode") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command");
if (strcmp(arg[iarg+1],"scalar") == 0) mode = SCALAR;
else if (strcmp(arg[iarg+1],"vector") == 0) mode = VECTOR;
else error->all(FLERR,"Illegal fix ave/time command");
iarg += 2;
} else if (strcmp(arg[iarg],"off") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command");
memory->grow(offlist,noff+1,"ave/time:offlist");
offlist[noff++] = force->inumeric(FLERR,arg[iarg+1]);
iarg += 2;
} else if (strcmp(arg[iarg],"overwrite") == 0) {
overwrite = 1;
iarg += 1;
} else if (strcmp(arg[iarg],"format") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/time command");
delete [] format_user;
int n = strlen(arg[iarg+1]) + 2;
format_user = new char[n];
sprintf(format_user," %s",arg[iarg+1]);
format = format_user;
iarg += 2;
} else if (strcmp(arg[iarg],"title1") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command");
delete [] title1;
int n = strlen(arg[iarg+1]) + 1;
title1 = new char[n];
strcpy(title1,arg[iarg+1]);
iarg += 2;
} else if (strcmp(arg[iarg],"title2") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command");
delete [] title2;
int n = strlen(arg[iarg+1]) + 1;
title2 = new char[n];
strcpy(title2,arg[iarg+1]);
iarg += 2;
} else if (strcmp(arg[iarg],"title3") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix ave/spatial command");
delete [] title3;
int n = strlen(arg[iarg+1]) + 1;
title3 = new char[n];
strcpy(title3,arg[iarg+1]);
iarg += 2;
} else error->all(FLERR,"Illegal fix ave/time command");
}
}
/* ----------------------------------------------------------------------
reallocate arrays for mode = VECTOR of size Nrows x Nvalues
------------------------------------------------------------------------- */
void FixAveTime::allocate_arrays()
{
memory->destroy(array);
memory->destroy(array_total);
memory->create(array,nrows,nvalues,"ave/time:array");
memory->create(array_total,nrows,nvalues,"ave/time:array_total");
if (ave == WINDOW) {
memory->destroy(array_list);
memory->create(array_list,nwindow,nrows,nvalues,"ave/time:array_list");
}
// reinitialize regrown array_total since it accumulates
for (int i = 0; i < nrows; i++)
for (int j = 0; j < nvalues; j++) array_total[i][j] = 0.0;
}
/* ----------------------------------------------------------------------
calculate nvalid = next step on which end_of_step does something
can be this timestep if multiple of nfreq and nrepeat = 1
else backup from next multiple of nfreq
startstep is lower bound on nfreq multiple
------------------------------------------------------------------------- */
bigint FixAveTime::nextvalid()
{
bigint nvalid = (update->ntimestep/nfreq)*nfreq + nfreq;
while (nvalid < startstep) nvalid += nfreq;
if (nvalid-nfreq == update->ntimestep && nrepeat == 1)
nvalid = update->ntimestep;
else
nvalid -= (nrepeat-1)*nevery;
if (nvalid < update->ntimestep) nvalid += nfreq;
return nvalid;
}
diff --git a/src/fix_nh.cpp b/src/fix_nh.cpp
index 1799a0055..718e824e0 100644
--- a/src/fix_nh.cpp
+++ b/src/fix_nh.cpp
@@ -1,2338 +1,2354 @@
/* ----------------------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing authors: Mark Stevens (SNL), Aidan Thompson (SNL)
------------------------------------------------------------------------- */
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include "fix_nh.h"
#include "math_extra.h"
#include "atom.h"
#include "force.h"
#include "group.h"
#include "comm.h"
#include "neighbor.h"
#include "irregular.h"
#include "modify.h"
#include "fix_deform.h"
#include "compute.h"
#include "kspace.h"
#include "update.h"
#include "respa.h"
#include "domain.h"
#include "memory.h"
#include "error.h"
using namespace LAMMPS_NS;
using namespace FixConst;
#define DELTAFLIP 0.1
#define TILTMAX 1.5
enum{NOBIAS,BIAS};
enum{NONE,XYZ,XY,YZ,XZ};
enum{ISO,ANISO,TRICLINIC};
/* ----------------------------------------------------------------------
NVT,NPH,NPT integrators for improved Nose-Hoover equations of motion
---------------------------------------------------------------------- */
FixNH::FixNH(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg),
rfix(NULL), id_dilate(NULL), irregular(NULL), id_temp(NULL), id_press(NULL),
eta(NULL), eta_dot(NULL), eta_dotdot(NULL),
-eta_mass(NULL), etap(NULL), etap_dot(NULL), etap_dotdot(NULL),
+eta_mass(NULL), etap(NULL), etap_dot(NULL), etap_dotdot(NULL),
etap_mass(NULL)
{
if (narg < 4) error->all(FLERR,"Illegal fix nvt/npt/nph command");
restart_global = 1;
dynamic_group_allow = 1;
time_integrate = 1;
scalar_flag = 1;
vector_flag = 1;
global_freq = 1;
extscalar = 1;
extvector = 0;
// default values
pcouple = NONE;
drag = 0.0;
allremap = 1;
id_dilate = NULL;
mtchain = mpchain = 3;
nc_tchain = nc_pchain = 1;
mtk_flag = 1;
deviatoric_flag = 0;
nreset_h0 = 0;
eta_mass_flag = 1;
omega_mass_flag = 0;
etap_mass_flag = 0;
flipflag = 1;
dipole_flag = 0;
dlm_flag = 0;
tcomputeflag = 0;
pcomputeflag = 0;
id_temp = NULL;
id_press = NULL;
// turn on tilt factor scaling, whenever applicable
dimension = domain->dimension;
scaleyz = scalexz = scalexy = 0;
if (domain->yperiodic && domain->xy != 0.0) scalexy = 1;
if (domain->zperiodic && dimension == 3) {
if (domain->yz != 0.0) scaleyz = 1;
if (domain->xz != 0.0) scalexz = 1;
}
// set fixed-point to default = center of cell
fixedpoint[0] = 0.5*(domain->boxlo[0]+domain->boxhi[0]);
fixedpoint[1] = 0.5*(domain->boxlo[1]+domain->boxhi[1]);
fixedpoint[2] = 0.5*(domain->boxlo[2]+domain->boxhi[2]);
// used by FixNVTSllod to preserve non-default value
mtchain_default_flag = 1;
tstat_flag = 0;
double t_period = 0.0;
double p_period[6];
for (int i = 0; i < 6; i++) {
p_start[i] = p_stop[i] = p_period[i] = p_target[i] = 0.0;
p_flag[i] = 0;
}
// process keywords
int iarg = 3;
while (iarg < narg) {
if (strcmp(arg[iarg],"temp") == 0) {
if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
tstat_flag = 1;
t_start = force->numeric(FLERR,arg[iarg+1]);
t_target = t_start;
t_stop = force->numeric(FLERR,arg[iarg+2]);
t_period = force->numeric(FLERR,arg[iarg+3]);
if (t_start < 0.0 || t_stop <= 0.0)
error->all(FLERR,
"Target temperature for fix nvt/npt/nph cannot be 0.0");
iarg += 4;
} else if (strcmp(arg[iarg],"iso") == 0) {
if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
pcouple = XYZ;
p_start[0] = p_start[1] = p_start[2] = force->numeric(FLERR,arg[iarg+1]);
p_stop[0] = p_stop[1] = p_stop[2] = force->numeric(FLERR,arg[iarg+2]);
p_period[0] = p_period[1] = p_period[2] =
force->numeric(FLERR,arg[iarg+3]);
p_flag[0] = p_flag[1] = p_flag[2] = 1;
if (dimension == 2) {
p_start[2] = p_stop[2] = p_period[2] = 0.0;
p_flag[2] = 0;
}
iarg += 4;
} else if (strcmp(arg[iarg],"aniso") == 0) {
if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
pcouple = NONE;
p_start[0] = p_start[1] = p_start[2] = force->numeric(FLERR,arg[iarg+1]);
p_stop[0] = p_stop[1] = p_stop[2] = force->numeric(FLERR,arg[iarg+2]);
p_period[0] = p_period[1] = p_period[2] =
force->numeric(FLERR,arg[iarg+3]);
p_flag[0] = p_flag[1] = p_flag[2] = 1;
if (dimension == 2) {
p_start[2] = p_stop[2] = p_period[2] = 0.0;
p_flag[2] = 0;
}
iarg += 4;
} else if (strcmp(arg[iarg],"tri") == 0) {
if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
pcouple = NONE;
scalexy = scalexz = scaleyz = 0;
p_start[0] = p_start[1] = p_start[2] = force->numeric(FLERR,arg[iarg+1]);
p_stop[0] = p_stop[1] = p_stop[2] = force->numeric(FLERR,arg[iarg+2]);
p_period[0] = p_period[1] = p_period[2] =
force->numeric(FLERR,arg[iarg+3]);
p_flag[0] = p_flag[1] = p_flag[2] = 1;
p_start[3] = p_start[4] = p_start[5] = 0.0;
p_stop[3] = p_stop[4] = p_stop[5] = 0.0;
p_period[3] = p_period[4] = p_period[5] =
force->numeric(FLERR,arg[iarg+3]);
p_flag[3] = p_flag[4] = p_flag[5] = 1;
if (dimension == 2) {
p_start[2] = p_stop[2] = p_period[2] = 0.0;
p_flag[2] = 0;
p_start[3] = p_stop[3] = p_period[3] = 0.0;
p_flag[3] = 0;
p_start[4] = p_stop[4] = p_period[4] = 0.0;
p_flag[4] = 0;
}
iarg += 4;
} else if (strcmp(arg[iarg],"x") == 0) {
if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
p_start[0] = force->numeric(FLERR,arg[iarg+1]);
p_stop[0] = force->numeric(FLERR,arg[iarg+2]);
p_period[0] = force->numeric(FLERR,arg[iarg+3]);
p_flag[0] = 1;
deviatoric_flag = 1;
iarg += 4;
} else if (strcmp(arg[iarg],"y") == 0) {
if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
p_start[1] = force->numeric(FLERR,arg[iarg+1]);
p_stop[1] = force->numeric(FLERR,arg[iarg+2]);
p_period[1] = force->numeric(FLERR,arg[iarg+3]);
p_flag[1] = 1;
deviatoric_flag = 1;
iarg += 4;
} else if (strcmp(arg[iarg],"z") == 0) {
if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
p_start[2] = force->numeric(FLERR,arg[iarg+1]);
p_stop[2] = force->numeric(FLERR,arg[iarg+2]);
p_period[2] = force->numeric(FLERR,arg[iarg+3]);
p_flag[2] = 1;
deviatoric_flag = 1;
iarg += 4;
if (dimension == 2)
error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation");
} else if (strcmp(arg[iarg],"yz") == 0) {
if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
p_start[3] = force->numeric(FLERR,arg[iarg+1]);
p_stop[3] = force->numeric(FLERR,arg[iarg+2]);
p_period[3] = force->numeric(FLERR,arg[iarg+3]);
p_flag[3] = 1;
deviatoric_flag = 1;
scaleyz = 0;
iarg += 4;
if (dimension == 2)
error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation");
} else if (strcmp(arg[iarg],"xz") == 0) {
if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
p_start[4] = force->numeric(FLERR,arg[iarg+1]);
p_stop[4] = force->numeric(FLERR,arg[iarg+2]);
p_period[4] = force->numeric(FLERR,arg[iarg+3]);
p_flag[4] = 1;
deviatoric_flag = 1;
scalexz = 0;
iarg += 4;
if (dimension == 2)
error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation");
} else if (strcmp(arg[iarg],"xy") == 0) {
if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
p_start[5] = force->numeric(FLERR,arg[iarg+1]);
p_stop[5] = force->numeric(FLERR,arg[iarg+2]);
p_period[5] = force->numeric(FLERR,arg[iarg+3]);
p_flag[5] = 1;
deviatoric_flag = 1;
scalexy = 0;
iarg += 4;
} else if (strcmp(arg[iarg],"couple") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
if (strcmp(arg[iarg+1],"xyz") == 0) pcouple = XYZ;
else if (strcmp(arg[iarg+1],"xy") == 0) pcouple = XY;
else if (strcmp(arg[iarg+1],"yz") == 0) pcouple = YZ;
else if (strcmp(arg[iarg+1],"xz") == 0) pcouple = XZ;
else if (strcmp(arg[iarg+1],"none") == 0) pcouple = NONE;
else error->all(FLERR,"Illegal fix nvt/npt/nph command");
iarg += 2;
} else if (strcmp(arg[iarg],"drag") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
drag = force->numeric(FLERR,arg[iarg+1]);
if (drag < 0.0) error->all(FLERR,"Illegal fix nvt/npt/nph command");
iarg += 2;
} else if (strcmp(arg[iarg],"dilate") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
if (strcmp(arg[iarg+1],"all") == 0) allremap = 1;
else {
allremap = 0;
delete [] id_dilate;
int n = strlen(arg[iarg+1]) + 1;
id_dilate = new char[n];
strcpy(id_dilate,arg[iarg+1]);
int idilate = group->find(id_dilate);
if (idilate == -1)
error->all(FLERR,"Fix nvt/npt/nph dilate group ID does not exist");
}
iarg += 2;
} else if (strcmp(arg[iarg],"tchain") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
mtchain = force->inumeric(FLERR,arg[iarg+1]);
// used by FixNVTSllod to preserve non-default value
mtchain_default_flag = 0;
if (mtchain < 1) error->all(FLERR,"Illegal fix nvt/npt/nph command");
iarg += 2;
} else if (strcmp(arg[iarg],"pchain") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
mpchain = force->inumeric(FLERR,arg[iarg+1]);
if (mpchain < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command");
iarg += 2;
} else if (strcmp(arg[iarg],"mtk") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
if (strcmp(arg[iarg+1],"yes") == 0) mtk_flag = 1;
else if (strcmp(arg[iarg+1],"no") == 0) mtk_flag = 0;
else error->all(FLERR,"Illegal fix nvt/npt/nph command");
iarg += 2;
} else if (strcmp(arg[iarg],"tloop") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
nc_tchain = force->inumeric(FLERR,arg[iarg+1]);
if (nc_tchain < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command");
iarg += 2;
} else if (strcmp(arg[iarg],"ploop") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
nc_pchain = force->inumeric(FLERR,arg[iarg+1]);
if (nc_pchain < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command");
iarg += 2;
} else if (strcmp(arg[iarg],"nreset") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
nreset_h0 = force->inumeric(FLERR,arg[iarg+1]);
if (nreset_h0 < 0) error->all(FLERR,"Illegal fix nvt/npt/nph command");
iarg += 2;
} else if (strcmp(arg[iarg],"scalexy") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
if (strcmp(arg[iarg+1],"yes") == 0) scalexy = 1;
else if (strcmp(arg[iarg+1],"no") == 0) scalexy = 0;
else error->all(FLERR,"Illegal fix nvt/npt/nph command");
iarg += 2;
} else if (strcmp(arg[iarg],"scalexz") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
if (strcmp(arg[iarg+1],"yes") == 0) scalexz = 1;
else if (strcmp(arg[iarg+1],"no") == 0) scalexz = 0;
else error->all(FLERR,"Illegal fix nvt/npt/nph command");
iarg += 2;
} else if (strcmp(arg[iarg],"scaleyz") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
if (strcmp(arg[iarg+1],"yes") == 0) scaleyz = 1;
else if (strcmp(arg[iarg+1],"no") == 0) scaleyz = 0;
else error->all(FLERR,"Illegal fix nvt/npt/nph command");
iarg += 2;
} else if (strcmp(arg[iarg],"flip") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
if (strcmp(arg[iarg+1],"yes") == 0) flipflag = 1;
else if (strcmp(arg[iarg+1],"no") == 0) flipflag = 0;
else error->all(FLERR,"Illegal fix nvt/npt/nph command");
iarg += 2;
} else if (strcmp(arg[iarg],"update") == 0) {
if (iarg+2 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
if (strcmp(arg[iarg+1],"dipole") == 0) dipole_flag = 1;
else if (strcmp(arg[iarg+1],"dipole/dlm") == 0) {
dipole_flag = 1;
dlm_flag = 1;
} else error->all(FLERR,"Illegal fix nvt/npt/nph command");
iarg += 2;
} else if (strcmp(arg[iarg],"fixedpoint") == 0) {
if (iarg+4 > narg) error->all(FLERR,"Illegal fix nvt/npt/nph command");
fixedpoint[0] = force->numeric(FLERR,arg[iarg+1]);
fixedpoint[1] = force->numeric(FLERR,arg[iarg+2]);
fixedpoint[2] = force->numeric(FLERR,arg[iarg+3]);
iarg += 4;
} else error->all(FLERR,"Illegal fix nvt/npt/nph command");
}
// error checks
if (dimension == 2 && (p_flag[2] || p_flag[3] || p_flag[4]))
error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation");
if (dimension == 2 && (pcouple == YZ || pcouple == XZ))
error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation");
if (dimension == 2 && (scalexz == 1 || scaleyz == 1 ))
error->all(FLERR,"Invalid fix nvt/npt/nph command for a 2d simulation");
if (pcouple == XYZ && (p_flag[0] == 0 || p_flag[1] == 0))
error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings");
if (pcouple == XYZ && dimension == 3 && p_flag[2] == 0)
error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings");
if (pcouple == XY && (p_flag[0] == 0 || p_flag[1] == 0))
error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings");
if (pcouple == YZ && (p_flag[1] == 0 || p_flag[2] == 0))
error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings");
if (pcouple == XZ && (p_flag[0] == 0 || p_flag[2] == 0))
error->all(FLERR,"Invalid fix nvt/npt/nph command pressure settings");
// require periodicity in tensile dimension
if (p_flag[0] && domain->xperiodic == 0)
error->all(FLERR,"Cannot use fix nvt/npt/nph on a non-periodic dimension");
if (p_flag[1] && domain->yperiodic == 0)
error->all(FLERR,"Cannot use fix nvt/npt/nph on a non-periodic dimension");
if (p_flag[2] && domain->zperiodic == 0)
error->all(FLERR,"Cannot use fix nvt/npt/nph on a non-periodic dimension");
// require periodicity in 2nd dim of off-diagonal tilt component
if (p_flag[3] && domain->zperiodic == 0)
error->all(FLERR,
"Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension");
if (p_flag[4] && domain->zperiodic == 0)
error->all(FLERR,
"Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension");
if (p_flag[5] && domain->yperiodic == 0)
error->all(FLERR,
"Cannot use fix nvt/npt/nph on a 2nd non-periodic dimension");
if (scaleyz == 1 && domain->zperiodic == 0)
error->all(FLERR,"Cannot use fix nvt/npt/nph "
"with yz scaling when z is non-periodic dimension");
if (scalexz == 1 && domain->zperiodic == 0)
error->all(FLERR,"Cannot use fix nvt/npt/nph "
"with xz scaling when z is non-periodic dimension");
if (scalexy == 1 && domain->yperiodic == 0)
error->all(FLERR,"Cannot use fix nvt/npt/nph "
"with xy scaling when y is non-periodic dimension");
if (p_flag[3] && scaleyz == 1)
error->all(FLERR,"Cannot use fix nvt/npt/nph with "
"both yz dynamics and yz scaling");
if (p_flag[4] && scalexz == 1)
error->all(FLERR,"Cannot use fix nvt/npt/nph with "
"both xz dynamics and xz scaling");
if (p_flag[5] && scalexy == 1)
error->all(FLERR,"Cannot use fix nvt/npt/nph with "
"both xy dynamics and xy scaling");
if (!domain->triclinic && (p_flag[3] || p_flag[4] || p_flag[5]))
error->all(FLERR,"Can not specify Pxy/Pxz/Pyz in "
"fix nvt/npt/nph with non-triclinic box");
if (pcouple == XYZ && dimension == 3 &&
(p_start[0] != p_start[1] || p_start[0] != p_start[2] ||
p_stop[0] != p_stop[1] || p_stop[0] != p_stop[2] ||
p_period[0] != p_period[1] || p_period[0] != p_period[2]))
error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings");
if (pcouple == XYZ && dimension == 2 &&
(p_start[0] != p_start[1] || p_stop[0] != p_stop[1] ||
p_period[0] != p_period[1]))
error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings");
if (pcouple == XY &&
(p_start[0] != p_start[1] || p_stop[0] != p_stop[1] ||
p_period[0] != p_period[1]))
error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings");
if (pcouple == YZ &&
(p_start[1] != p_start[2] || p_stop[1] != p_stop[2] ||
p_period[1] != p_period[2]))
error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings");
if (pcouple == XZ &&
(p_start[0] != p_start[2] || p_stop[0] != p_stop[2] ||
p_period[0] != p_period[2]))
error->all(FLERR,"Invalid fix nvt/npt/nph pressure settings");
if (dipole_flag) {
if (!atom->sphere_flag)
error->all(FLERR,"Using update dipole flag requires atom style sphere");
if (!atom->mu_flag)
error->all(FLERR,"Using update dipole flag requires atom attribute mu");
}
-
+
if ((tstat_flag && t_period <= 0.0) ||
(p_flag[0] && p_period[0] <= 0.0) ||
(p_flag[1] && p_period[1] <= 0.0) ||
(p_flag[2] && p_period[2] <= 0.0) ||
(p_flag[3] && p_period[3] <= 0.0) ||
(p_flag[4] && p_period[4] <= 0.0) ||
(p_flag[5] && p_period[5] <= 0.0))
error->all(FLERR,"Fix nvt/npt/nph damping parameters must be > 0.0");
// set pstat_flag and box change and restart_pbc variables
pre_exchange_flag = 0;
pstat_flag = 0;
pstyle = ISO;
for (int i = 0; i < 6; i++)
if (p_flag[i]) pstat_flag = 1;
if (pstat_flag) {
if (p_flag[0] || p_flag[1] || p_flag[2]) box_change_size = 1;
if (p_flag[3] || p_flag[4] || p_flag[5]) box_change_shape = 1;
no_change_box = 1;
if (allremap == 0) restart_pbc = 1;
// pstyle = TRICLINIC if any off-diagonal term is controlled -> 6 dof
// else pstyle = ISO if XYZ coupling or XY coupling in 2d -> 1 dof
// else pstyle = ANISO -> 3 dof
if (p_flag[3] || p_flag[4] || p_flag[5]) pstyle = TRICLINIC;
else if (pcouple == XYZ || (dimension == 2 && pcouple == XY)) pstyle = ISO;
else pstyle = ANISO;
// pre_exchange only required if flips can occur due to shape changes
- if (flipflag && (p_flag[3] || p_flag[4] || p_flag[5]))
+ if (flipflag && (p_flag[3] || p_flag[4] || p_flag[5]))
pre_exchange_flag = 1;
- if (flipflag && (domain->yz != 0.0 || domain->xz != 0.0 ||
+ if (flipflag && (domain->yz != 0.0 || domain->xz != 0.0 ||
domain->xy != 0.0))
pre_exchange_flag = 1;
}
// convert input periods to frequencies
t_freq = 0.0;
p_freq[0] = p_freq[1] = p_freq[2] = p_freq[3] = p_freq[4] = p_freq[5] = 0.0;
if (tstat_flag) t_freq = 1.0 / t_period;
if (p_flag[0]) p_freq[0] = 1.0 / p_period[0];
if (p_flag[1]) p_freq[1] = 1.0 / p_period[1];
if (p_flag[2]) p_freq[2] = 1.0 / p_period[2];
if (p_flag[3]) p_freq[3] = 1.0 / p_period[3];
if (p_flag[4]) p_freq[4] = 1.0 / p_period[4];
if (p_flag[5]) p_freq[5] = 1.0 / p_period[5];
// Nose/Hoover temp and pressure init
size_vector = 0;
if (tstat_flag) {
int ich;
eta = new double[mtchain];
// add one extra dummy thermostat, set to zero
eta_dot = new double[mtchain+1];
eta_dot[mtchain] = 0.0;
eta_dotdot = new double[mtchain];
for (ich = 0; ich < mtchain; ich++) {
eta[ich] = eta_dot[ich] = eta_dotdot[ich] = 0.0;
}
eta_mass = new double[mtchain];
size_vector += 2*2*mtchain;
}
if (pstat_flag) {
omega[0] = omega[1] = omega[2] = 0.0;
omega_dot[0] = omega_dot[1] = omega_dot[2] = 0.0;
omega_mass[0] = omega_mass[1] = omega_mass[2] = 0.0;
omega[3] = omega[4] = omega[5] = 0.0;
omega_dot[3] = omega_dot[4] = omega_dot[5] = 0.0;
omega_mass[3] = omega_mass[4] = omega_mass[5] = 0.0;
if (pstyle == ISO) size_vector += 2*2*1;
else if (pstyle == ANISO) size_vector += 2*2*3;
else if (pstyle == TRICLINIC) size_vector += 2*2*6;
if (mpchain) {
int ich;
etap = new double[mpchain];
// add one extra dummy thermostat, set to zero
etap_dot = new double[mpchain+1];
etap_dot[mpchain] = 0.0;
etap_dotdot = new double[mpchain];
for (ich = 0; ich < mpchain; ich++) {
etap[ich] = etap_dot[ich] =
etap_dotdot[ich] = 0.0;
}
etap_mass = new double[mpchain];
size_vector += 2*2*mpchain;
}
if (deviatoric_flag) size_vector += 1;
}
nrigid = 0;
rfix = NULL;
if (pre_exchange_flag) irregular = new Irregular(lmp);
else irregular = NULL;
// initialize vol0,t0 to zero to signal uninitialized
// values then assigned in init(), if necessary
vol0 = t0 = 0.0;
}
/* ---------------------------------------------------------------------- */
FixNH::~FixNH()
{
if (copymode) return;
delete [] id_dilate;
delete [] rfix;
delete irregular;
// delete temperature and pressure if fix created them
if (tcomputeflag) modify->delete_compute(id_temp);
delete [] id_temp;
if (tstat_flag) {
delete [] eta;
delete [] eta_dot;
delete [] eta_dotdot;
delete [] eta_mass;
}
if (pstat_flag) {
if (pcomputeflag) modify->delete_compute(id_press);
delete [] id_press;
if (mpchain) {
delete [] etap;
delete [] etap_dot;
delete [] etap_dotdot;
delete [] etap_mass;
}
}
}
/* ---------------------------------------------------------------------- */
int FixNH::setmask()
{
int mask = 0;
mask |= INITIAL_INTEGRATE;
mask |= FINAL_INTEGRATE;
mask |= THERMO_ENERGY;
mask |= INITIAL_INTEGRATE_RESPA;
mask |= FINAL_INTEGRATE_RESPA;
if (pre_exchange_flag) mask |= PRE_EXCHANGE;
return mask;
}
/* ---------------------------------------------------------------------- */
void FixNH::init()
{
// recheck that dilate group has not been deleted
if (allremap == 0) {
int idilate = group->find(id_dilate);
if (idilate == -1)
error->all(FLERR,"Fix nvt/npt/nph dilate group ID does not exist");
dilate_group_bit = group->bitmask[idilate];
}
// ensure no conflict with fix deform
if (pstat_flag)
for (int i = 0; i < modify->nfix; i++)
if (strcmp(modify->fix[i]->style,"deform") == 0) {
int *dimflag = ((FixDeform *) modify->fix[i])->dimflag;
if ((p_flag[0] && dimflag[0]) || (p_flag[1] && dimflag[1]) ||
(p_flag[2] && dimflag[2]) || (p_flag[3] && dimflag[3]) ||
(p_flag[4] && dimflag[4]) || (p_flag[5] && dimflag[5]))
error->all(FLERR,"Cannot use fix npt and fix deform on "
"same component of stress tensor");
}
// set temperature and pressure ptrs
int icompute = modify->find_compute(id_temp);
if (icompute < 0)
error->all(FLERR,"Temperature ID for fix nvt/npt does not exist");
temperature = modify->compute[icompute];
if (temperature->tempbias) which = BIAS;
else which = NOBIAS;
if (pstat_flag) {
icompute = modify->find_compute(id_press);
if (icompute < 0)
error->all(FLERR,"Pressure ID for fix npt/nph does not exist");
pressure = modify->compute[icompute];
}
// set timesteps and frequencies
dtv = update->dt;
dtf = 0.5 * update->dt * force->ftm2v;
dthalf = 0.5 * update->dt;
dt4 = 0.25 * update->dt;
dt8 = 0.125 * update->dt;
dto = dthalf;
p_freq_max = 0.0;
if (pstat_flag) {
p_freq_max = MAX(p_freq[0],p_freq[1]);
p_freq_max = MAX(p_freq_max,p_freq[2]);
if (pstyle == TRICLINIC) {
p_freq_max = MAX(p_freq_max,p_freq[3]);
p_freq_max = MAX(p_freq_max,p_freq[4]);
p_freq_max = MAX(p_freq_max,p_freq[5]);
}
pdrag_factor = 1.0 - (update->dt * p_freq_max * drag / nc_pchain);
}
if (tstat_flag)
tdrag_factor = 1.0 - (update->dt * t_freq * drag / nc_tchain);
// tally the number of dimensions that are barostatted
// set initial volume and reference cell, if not already done
if (pstat_flag) {
pdim = p_flag[0] + p_flag[1] + p_flag[2];
if (vol0 == 0.0) {
if (dimension == 3) vol0 = domain->xprd * domain->yprd * domain->zprd;
else vol0 = domain->xprd * domain->yprd;
h0_inv[0] = domain->h_inv[0];
h0_inv[1] = domain->h_inv[1];
h0_inv[2] = domain->h_inv[2];
h0_inv[3] = domain->h_inv[3];
h0_inv[4] = domain->h_inv[4];
h0_inv[5] = domain->h_inv[5];
}
}
boltz = force->boltz;
nktv2p = force->nktv2p;
if (force->kspace) kspace_flag = 1;
else kspace_flag = 0;
if (strstr(update->integrate_style,"respa")) {
nlevels_respa = ((Respa *) update->integrate)->nlevels;
step_respa = ((Respa *) update->integrate)->step;
dto = 0.5*step_respa[0];
}
// detect if any rigid fixes exist so rigid bodies move when box is remapped
// rfix[] = indices to each fix rigid
delete [] rfix;
nrigid = 0;
rfix = NULL;
for (int i = 0; i < modify->nfix; i++)
if (modify->fix[i]->rigid_flag) nrigid++;
if (nrigid) {
rfix = new int[nrigid];
nrigid = 0;
for (int i = 0; i < modify->nfix; i++)
if (modify->fix[i]->rigid_flag) rfix[nrigid++] = i;
}
}
/* ----------------------------------------------------------------------
compute T,P before integrator starts
------------------------------------------------------------------------- */
void FixNH::setup(int vflag)
{
// tdof needed by compute_temp_target()
t_current = temperature->compute_scalar();
tdof = temperature->dof;
-
+
// t_target is needed by NVT and NPT in compute_scalar()
// If no thermostat or using fix nphug,
// t_target must be defined by other means.
if (tstat_flag && strstr(style,"nphug") == NULL) {
compute_temp_target();
} else if (pstat_flag) {
// t0 = reference temperature for masses
// cannot be done in init() b/c temperature cannot be called there
// is b/c Modify::init() inits computes after fixes due to dof dependence
// guesstimate a unit-dependent t0 if actual T = 0.0
// if it was read in from a restart file, leave it be
if (t0 == 0.0) {
t0 = temperature->compute_scalar();
if (t0 == 0.0) {
if (strcmp(update->unit_style,"lj") == 0) t0 = 1.0;
else t0 = 300.0;
}
}
t_target = t0;
}
if (pstat_flag) compute_press_target();
if (pstat_flag) {
if (pstyle == ISO) pressure->compute_scalar();
else pressure->compute_vector();
couple();
pressure->addstep(update->ntimestep+1);
}
// masses and initial forces on thermostat variables
if (tstat_flag) {
eta_mass[0] = tdof * boltz * t_target / (t_freq*t_freq);
for (int ich = 1; ich < mtchain; ich++)
eta_mass[ich] = boltz * t_target / (t_freq*t_freq);
for (int ich = 1; ich < mtchain; ich++) {
eta_dotdot[ich] = (eta_mass[ich-1]*eta_dot[ich-1]*eta_dot[ich-1] -
boltz * t_target) / eta_mass[ich];
}
}
// masses and initial forces on barostat variables
if (pstat_flag) {
double kt = boltz * t_target;
double nkt = atom->natoms * kt;
for (int i = 0; i < 3; i++)
if (p_flag[i])
omega_mass[i] = nkt/(p_freq[i]*p_freq[i]);
if (pstyle == TRICLINIC) {
for (int i = 3; i < 6; i++)
if (p_flag[i]) omega_mass[i] = nkt/(p_freq[i]*p_freq[i]);
}
// masses and initial forces on barostat thermostat variables
if (mpchain) {
etap_mass[0] = boltz * t_target / (p_freq_max*p_freq_max);
for (int ich = 1; ich < mpchain; ich++)
etap_mass[ich] = boltz * t_target / (p_freq_max*p_freq_max);
for (int ich = 1; ich < mpchain; ich++)
etap_dotdot[ich] =
(etap_mass[ich-1]*etap_dot[ich-1]*etap_dot[ich-1] -
boltz * t_target) / etap_mass[ich];
}
}
}
/* ----------------------------------------------------------------------
1st half of Verlet update
------------------------------------------------------------------------- */
void FixNH::initial_integrate(int vflag)
{
// update eta_press_dot
if (pstat_flag && mpchain) nhc_press_integrate();
// update eta_dot
if (tstat_flag) {
compute_temp_target();
nhc_temp_integrate();
}
// need to recompute pressure to account for change in KE
// t_current is up-to-date, but compute_temperature is not
// compute appropriately coupled elements of mvv_current
if (pstat_flag) {
if (pstyle == ISO) {
temperature->compute_scalar();
pressure->compute_scalar();
} else {
temperature->compute_vector();
pressure->compute_vector();
}
couple();
pressure->addstep(update->ntimestep+1);
}
if (pstat_flag) {
compute_press_target();
nh_omega_dot();
nh_v_press();
}
nve_v();
// remap simulation box by 1/2 step
if (pstat_flag) remap();
nve_x();
// remap simulation box by 1/2 step
// redo KSpace coeffs since volume has changed
if (pstat_flag) {
remap();
if (kspace_flag) force->kspace->setup();
}
}
/* ----------------------------------------------------------------------
2nd half of Verlet update
------------------------------------------------------------------------- */
void FixNH::final_integrate()
{
nve_v();
// re-compute temp before nh_v_press()
// only needed for temperature computes with BIAS on reneighboring steps:
// b/c some biases store per-atom values (e.g. temp/profile)
// per-atom values are invalid if reneigh/comm occurred
// since temp->compute() in initial_integrate()
if (which == BIAS && neighbor->ago == 0)
t_current = temperature->compute_scalar();
if (pstat_flag) nh_v_press();
// compute new T,P after velocities rescaled by nh_v_press()
// compute appropriately coupled elements of mvv_current
t_current = temperature->compute_scalar();
tdof = temperature->dof;
if (pstat_flag) {
if (pstyle == ISO) pressure->compute_scalar();
else pressure->compute_vector();
couple();
pressure->addstep(update->ntimestep+1);
}
if (pstat_flag) nh_omega_dot();
// update eta_dot
// update eta_press_dot
if (tstat_flag) nhc_temp_integrate();
if (pstat_flag && mpchain) nhc_press_integrate();
}
/* ---------------------------------------------------------------------- */
void FixNH::initial_integrate_respa(int vflag, int ilevel, int iloop)
{
// set timesteps by level
dtv = step_respa[ilevel];
dtf = 0.5 * step_respa[ilevel] * force->ftm2v;
dthalf = 0.5 * step_respa[ilevel];
// outermost level - update eta_dot and omega_dot, apply to v
// all other levels - NVE update of v
// x,v updates only performed for atoms in group
if (ilevel == nlevels_respa-1) {
// update eta_press_dot
if (pstat_flag && mpchain) nhc_press_integrate();
// update eta_dot
if (tstat_flag) {
compute_temp_target();
nhc_temp_integrate();
}
// recompute pressure to account for change in KE
// t_current is up-to-date, but compute_temperature is not
// compute appropriately coupled elements of mvv_current
if (pstat_flag) {
if (pstyle == ISO) {
temperature->compute_scalar();
pressure->compute_scalar();
} else {
temperature->compute_vector();
pressure->compute_vector();
}
couple();
pressure->addstep(update->ntimestep+1);
}
if (pstat_flag) {
compute_press_target();
nh_omega_dot();
nh_v_press();
}
nve_v();
} else nve_v();
// innermost level - also update x only for atoms in group
// if barostat, perform 1/2 step remap before and after
if (ilevel == 0) {
if (pstat_flag) remap();
nve_x();
if (pstat_flag) remap();
}
// if barostat, redo KSpace coeffs at outermost level,
// since volume has changed
if (ilevel == nlevels_respa-1 && kspace_flag && pstat_flag)
force->kspace->setup();
}
/* ---------------------------------------------------------------------- */
void FixNH::final_integrate_respa(int ilevel, int iloop)
{
// set timesteps by level
dtf = 0.5 * step_respa[ilevel] * force->ftm2v;
dthalf = 0.5 * step_respa[ilevel];
// outermost level - update eta_dot and omega_dot, apply via final_integrate
// all other levels - NVE update of v
if (ilevel == nlevels_respa-1) final_integrate();
else nve_v();
}
/* ---------------------------------------------------------------------- */
void FixNH::couple()
{
double *tensor = pressure->vector;
if (pstyle == ISO)
p_current[0] = p_current[1] = p_current[2] = pressure->scalar;
else if (pcouple == XYZ) {
double ave = 1.0/3.0 * (tensor[0] + tensor[1] + tensor[2]);
p_current[0] = p_current[1] = p_current[2] = ave;
} else if (pcouple == XY) {
double ave = 0.5 * (tensor[0] + tensor[1]);
p_current[0] = p_current[1] = ave;
p_current[2] = tensor[2];
} else if (pcouple == YZ) {
double ave = 0.5 * (tensor[1] + tensor[2]);
p_current[1] = p_current[2] = ave;
p_current[0] = tensor[0];
} else if (pcouple == XZ) {
double ave = 0.5 * (tensor[0] + tensor[2]);
p_current[0] = p_current[2] = ave;
p_current[1] = tensor[1];
} else {
p_current[0] = tensor[0];
p_current[1] = tensor[1];
p_current[2] = tensor[2];
}
if (!ISFINITE(p_current[0]) || !ISFINITE(p_current[1]) || !ISFINITE(p_current[2]))
error->all(FLERR,"Non-numeric pressure - simulation unstable");
// switch order from xy-xz-yz to Voigt
if (pstyle == TRICLINIC) {
p_current[3] = tensor[5];
p_current[4] = tensor[4];
p_current[5] = tensor[3];
if (!ISFINITE(p_current[3]) || !ISFINITE(p_current[4]) || !ISFINITE(p_current[5]))
error->all(FLERR,"Non-numeric pressure - simulation unstable");
}
}
/* ----------------------------------------------------------------------
change box size
remap all atoms or dilate group atoms depending on allremap flag
if rigid bodies exist, scale rigid body centers-of-mass
------------------------------------------------------------------------- */
void FixNH::remap()
{
int i;
double oldlo,oldhi;
double expfac;
double **x = atom->x;
int *mask = atom->mask;
int nlocal = atom->nlocal;
double *h = domain->h;
// omega is not used, except for book-keeping
for (int i = 0; i < 6; i++) omega[i] += dto*omega_dot[i];
// convert pertinent atoms and rigid bodies to lamda coords
if (allremap) domain->x2lamda(nlocal);
else {
for (i = 0; i < nlocal; i++)
if (mask[i] & dilate_group_bit)
domain->x2lamda(x[i],x[i]);
}
if (nrigid)
for (i = 0; i < nrigid; i++)
modify->fix[rfix[i]]->deform(0);
// reset global and local box to new size/shape
// this operation corresponds to applying the
// translate and scale operations
// corresponding to the solution of the following ODE:
//
// h_dot = omega_dot * h
//
// where h_dot, omega_dot and h are all upper-triangular
// 3x3 tensors. In Voigt notation, the elements of the
// RHS product tensor are:
// h_dot = [0*0, 1*1, 2*2, 1*3+3*2, 0*4+5*3+4*2, 0*5+5*1]
//
// Ordering of operations preserves time symmetry.
double dto2 = dto/2.0;
double dto4 = dto/4.0;
double dto8 = dto/8.0;
// off-diagonal components, first half
if (pstyle == TRICLINIC) {
if (p_flag[4]) {
expfac = exp(dto8*omega_dot[0]);
h[4] *= expfac;
h[4] += dto4*(omega_dot[5]*h[3]+omega_dot[4]*h[2]);
h[4] *= expfac;
}
if (p_flag[3]) {
expfac = exp(dto4*omega_dot[1]);
h[3] *= expfac;
h[3] += dto2*(omega_dot[3]*h[2]);
h[3] *= expfac;
}
if (p_flag[5]) {
expfac = exp(dto4*omega_dot[0]);
h[5] *= expfac;
h[5] += dto2*(omega_dot[5]*h[1]);
h[5] *= expfac;
}
if (p_flag[4]) {
expfac = exp(dto8*omega_dot[0]);
h[4] *= expfac;
h[4] += dto4*(omega_dot[5]*h[3]+omega_dot[4]*h[2]);
h[4] *= expfac;
}
}
// scale diagonal components
// scale tilt factors with cell, if set
if (p_flag[0]) {
oldlo = domain->boxlo[0];
oldhi = domain->boxhi[0];
expfac = exp(dto*omega_dot[0]);
domain->boxlo[0] = (oldlo-fixedpoint[0])*expfac + fixedpoint[0];
domain->boxhi[0] = (oldhi-fixedpoint[0])*expfac + fixedpoint[0];
}
if (p_flag[1]) {
oldlo = domain->boxlo[1];
oldhi = domain->boxhi[1];
expfac = exp(dto*omega_dot[1]);
domain->boxlo[1] = (oldlo-fixedpoint[1])*expfac + fixedpoint[1];
domain->boxhi[1] = (oldhi-fixedpoint[1])*expfac + fixedpoint[1];
if (scalexy) h[5] *= expfac;
}
if (p_flag[2]) {
oldlo = domain->boxlo[2];
oldhi = domain->boxhi[2];
expfac = exp(dto*omega_dot[2]);
domain->boxlo[2] = (oldlo-fixedpoint[2])*expfac + fixedpoint[2];
domain->boxhi[2] = (oldhi-fixedpoint[2])*expfac + fixedpoint[2];
if (scalexz) h[4] *= expfac;
if (scaleyz) h[3] *= expfac;
}
// off-diagonal components, second half
if (pstyle == TRICLINIC) {
if (p_flag[4]) {
expfac = exp(dto8*omega_dot[0]);
h[4] *= expfac;
h[4] += dto4*(omega_dot[5]*h[3]+omega_dot[4]*h[2]);
h[4] *= expfac;
}
if (p_flag[3]) {
expfac = exp(dto4*omega_dot[1]);
h[3] *= expfac;
h[3] += dto2*(omega_dot[3]*h[2]);
h[3] *= expfac;
}
if (p_flag[5]) {
expfac = exp(dto4*omega_dot[0]);
h[5] *= expfac;
h[5] += dto2*(omega_dot[5]*h[1]);
h[5] *= expfac;
}
if (p_flag[4]) {
expfac = exp(dto8*omega_dot[0]);
h[4] *= expfac;
h[4] += dto4*(omega_dot[5]*h[3]+omega_dot[4]*h[2]);
h[4] *= expfac;
}
}
domain->yz = h[3];
domain->xz = h[4];
domain->xy = h[5];
// tilt factor to cell length ratio can not exceed TILTMAX in one step
if (domain->yz < -TILTMAX*domain->yprd ||
domain->yz > TILTMAX*domain->yprd ||
domain->xz < -TILTMAX*domain->xprd ||
domain->xz > TILTMAX*domain->xprd ||
domain->xy < -TILTMAX*domain->xprd ||
domain->xy > TILTMAX*domain->xprd)
error->all(FLERR,"Fix npt/nph has tilted box too far in one step - "
"periodic cell is too far from equilibrium state");
domain->set_global_box();
domain->set_local_box();
// convert pertinent atoms and rigid bodies back to box coords
if (allremap) domain->lamda2x(nlocal);
else {
for (i = 0; i < nlocal; i++)
if (mask[i] & dilate_group_bit)
domain->lamda2x(x[i],x[i]);
}
if (nrigid)
for (i = 0; i < nrigid; i++)
modify->fix[rfix[i]]->deform(1);
}
/* ----------------------------------------------------------------------
pack entire state of Fix into one write
------------------------------------------------------------------------- */
void FixNH::write_restart(FILE *fp)
{
int nsize = size_restart_global();
double *list;
memory->create(list,nsize,"nh:list");
pack_restart_data(list);
if (comm->me == 0) {
int size = nsize * sizeof(double);
fwrite(&size,sizeof(int),1,fp);
fwrite(list,sizeof(double),nsize,fp);
}
memory->destroy(list);
}
/* ----------------------------------------------------------------------
calculate the number of data to be packed
------------------------------------------------------------------------- */
int FixNH::size_restart_global()
{
int nsize = 2;
if (tstat_flag) nsize += 1 + 2*mtchain;
if (pstat_flag) {
nsize += 16 + 2*mpchain;
if (deviatoric_flag) nsize += 6;
}
return nsize;
}
/* ----------------------------------------------------------------------
pack restart data
------------------------------------------------------------------------- */
int FixNH::pack_restart_data(double *list)
{
int n = 0;
list[n++] = tstat_flag;
if (tstat_flag) {
list[n++] = mtchain;
for (int ich = 0; ich < mtchain; ich++)
list[n++] = eta[ich];
for (int ich = 0; ich < mtchain; ich++)
list[n++] = eta_dot[ich];
}
list[n++] = pstat_flag;
if (pstat_flag) {
list[n++] = omega[0];
list[n++] = omega[1];
list[n++] = omega[2];
list[n++] = omega[3];
list[n++] = omega[4];
list[n++] = omega[5];
list[n++] = omega_dot[0];
list[n++] = omega_dot[1];
list[n++] = omega_dot[2];
list[n++] = omega_dot[3];
list[n++] = omega_dot[4];
list[n++] = omega_dot[5];
list[n++] = vol0;
list[n++] = t0;
list[n++] = mpchain;
if (mpchain) {
for (int ich = 0; ich < mpchain; ich++)
list[n++] = etap[ich];
for (int ich = 0; ich < mpchain; ich++)
list[n++] = etap_dot[ich];
}
list[n++] = deviatoric_flag;
if (deviatoric_flag) {
list[n++] = h0_inv[0];
list[n++] = h0_inv[1];
list[n++] = h0_inv[2];
list[n++] = h0_inv[3];
list[n++] = h0_inv[4];
list[n++] = h0_inv[5];
}
}
return n;
}
/* ----------------------------------------------------------------------
use state info from restart file to restart the Fix
------------------------------------------------------------------------- */
void FixNH::restart(char *buf)
{
int n = 0;
double *list = (double *) buf;
int flag = static_cast<int> (list[n++]);
if (flag) {
int m = static_cast<int> (list[n++]);
if (tstat_flag && m == mtchain) {
for (int ich = 0; ich < mtchain; ich++)
eta[ich] = list[n++];
for (int ich = 0; ich < mtchain; ich++)
eta_dot[ich] = list[n++];
} else n += 2*m;
}
flag = static_cast<int> (list[n++]);
if (flag) {
omega[0] = list[n++];
omega[1] = list[n++];
omega[2] = list[n++];
omega[3] = list[n++];
omega[4] = list[n++];
omega[5] = list[n++];
omega_dot[0] = list[n++];
omega_dot[1] = list[n++];
omega_dot[2] = list[n++];
omega_dot[3] = list[n++];
omega_dot[4] = list[n++];
omega_dot[5] = list[n++];
vol0 = list[n++];
t0 = list[n++];
int m = static_cast<int> (list[n++]);
if (pstat_flag && m == mpchain) {
for (int ich = 0; ich < mpchain; ich++)
etap[ich] = list[n++];
for (int ich = 0; ich < mpchain; ich++)
etap_dot[ich] = list[n++];
} else n+=2*m;
flag = static_cast<int> (list[n++]);
if (flag) {
h0_inv[0] = list[n++];
h0_inv[1] = list[n++];
h0_inv[2] = list[n++];
h0_inv[3] = list[n++];
h0_inv[4] = list[n++];
h0_inv[5] = list[n++];
}
}
}
/* ---------------------------------------------------------------------- */
int FixNH::modify_param(int narg, char **arg)
{
if (strcmp(arg[0],"temp") == 0) {
if (narg < 2) error->all(FLERR,"Illegal fix_modify command");
if (tcomputeflag) {
modify->delete_compute(id_temp);
tcomputeflag = 0;
}
delete [] id_temp;
int n = strlen(arg[1]) + 1;
id_temp = new char[n];
strcpy(id_temp,arg[1]);
int icompute = modify->find_compute(arg[1]);
if (icompute < 0)
error->all(FLERR,"Could not find fix_modify temperature ID");
temperature = modify->compute[icompute];
if (temperature->tempflag == 0)
error->all(FLERR,
"Fix_modify temperature ID does not compute temperature");
if (temperature->igroup != 0 && comm->me == 0)
error->warning(FLERR,"Temperature for fix modify is not for group all");
// reset id_temp of pressure to new temperature ID
if (pstat_flag) {
icompute = modify->find_compute(id_press);
if (icompute < 0)
error->all(FLERR,"Pressure ID for fix modify does not exist");
modify->compute[icompute]->reset_extra_compute_fix(id_temp);
}
return 2;
} else if (strcmp(arg[0],"press") == 0) {
if (narg < 2) error->all(FLERR,"Illegal fix_modify command");
if (!pstat_flag) error->all(FLERR,"Illegal fix_modify command");
if (pcomputeflag) {
modify->delete_compute(id_press);
pcomputeflag = 0;
}
delete [] id_press;
int n = strlen(arg[1]) + 1;
id_press = new char[n];
strcpy(id_press,arg[1]);
int icompute = modify->find_compute(arg[1]);
if (icompute < 0) error->all(FLERR,"Could not find fix_modify pressure ID");
pressure = modify->compute[icompute];
if (pressure->pressflag == 0)
error->all(FLERR,"Fix_modify pressure ID does not compute pressure");
return 2;
}
return 0;
}
/* ---------------------------------------------------------------------- */
double FixNH::compute_scalar()
{
int i;
double volume;
double energy;
double kt = boltz * t_target;
double lkt_press = kt;
int ich;
if (dimension == 3) volume = domain->xprd * domain->yprd * domain->zprd;
else volume = domain->xprd * domain->yprd;
energy = 0.0;
// thermostat chain energy is equivalent to Eq. (2) in
// Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117
// Sum(0.5*p_eta_k^2/Q_k,k=1,M) + L*k*T*eta_1 + Sum(k*T*eta_k,k=2,M),
// where L = tdof
// M = mtchain
// p_eta_k = Q_k*eta_dot[k-1]
// Q_1 = L*k*T/t_freq^2
// Q_k = k*T/t_freq^2, k > 1
if (tstat_flag) {
energy += ke_target * eta[0] + 0.5*eta_mass[0]*eta_dot[0]*eta_dot[0];
for (ich = 1; ich < mtchain; ich++)
energy += kt * eta[ich] + 0.5*eta_mass[ich]*eta_dot[ich]*eta_dot[ich];
}
// barostat energy is equivalent to Eq. (8) in
// Martyna, Tuckerman, Tobias, Klein, Mol Phys, 87, 1117
// Sum(0.5*p_omega^2/W + P*V),
// where N = natoms
// p_omega = W*omega_dot
// W = N*k*T/p_freq^2
// sum is over barostatted dimensions
if (pstat_flag) {
for (i = 0; i < 3; i++)
if (p_flag[i])
energy += 0.5*omega_dot[i]*omega_dot[i]*omega_mass[i] +
p_hydro*(volume-vol0) / (pdim*nktv2p);
if (pstyle == TRICLINIC) {
for (i = 3; i < 6; i++)
if (p_flag[i])
energy += 0.5*omega_dot[i]*omega_dot[i]*omega_mass[i];
}
// extra contributions from thermostat chain for barostat
if (mpchain) {
energy += lkt_press * etap[0] + 0.5*etap_mass[0]*etap_dot[0]*etap_dot[0];
for (ich = 1; ich < mpchain; ich++)
energy += kt * etap[ich] +
0.5*etap_mass[ich]*etap_dot[ich]*etap_dot[ich];
}
// extra contribution from strain energy
if (deviatoric_flag) energy += compute_strain_energy();
}
return energy;
}
/* ----------------------------------------------------------------------
return a single element of the following vectors, in this order:
eta[tchain], eta_dot[tchain], omega[ndof], omega_dot[ndof]
etap[pchain], etap_dot[pchain], PE_eta[tchain], KE_eta_dot[tchain]
PE_omega[ndof], KE_omega_dot[ndof], PE_etap[pchain], KE_etap_dot[pchain]
PE_strain[1]
if no thermostat exists, related quantities are omitted from the list
if no barostat exists, related quantities are omitted from the list
ndof = 1,3,6 degrees of freedom for pstyle = ISO,ANISO,TRI
------------------------------------------------------------------------- */
double FixNH::compute_vector(int n)
{
int ilen;
if (tstat_flag) {
ilen = mtchain;
if (n < ilen) return eta[n];
n -= ilen;
ilen = mtchain;
if (n < ilen) return eta_dot[n];
n -= ilen;
}
if (pstat_flag) {
if (pstyle == ISO) {
ilen = 1;
if (n < ilen) return omega[n];
n -= ilen;
} else if (pstyle == ANISO) {
ilen = 3;
if (n < ilen) return omega[n];
n -= ilen;
} else {
ilen = 6;
if (n < ilen) return omega[n];
n -= ilen;
}
if (pstyle == ISO) {
ilen = 1;
if (n < ilen) return omega_dot[n];
n -= ilen;
} else if (pstyle == ANISO) {
ilen = 3;
if (n < ilen) return omega_dot[n];
n -= ilen;
} else {
ilen = 6;
if (n < ilen) return omega_dot[n];
n -= ilen;
}
if (mpchain) {
ilen = mpchain;
if (n < ilen) return etap[n];
n -= ilen;
ilen = mpchain;
if (n < ilen) return etap_dot[n];
n -= ilen;
}
}
double volume;
double kt = boltz * t_target;
double lkt_press = kt;
int ich;
if (dimension == 3) volume = domain->xprd * domain->yprd * domain->zprd;
else volume = domain->xprd * domain->yprd;
if (tstat_flag) {
ilen = mtchain;
if (n < ilen) {
ich = n;
if (ich == 0)
return ke_target * eta[0];
else
return kt * eta[ich];
}
n -= ilen;
ilen = mtchain;
if (n < ilen) {
ich = n;
if (ich == 0)
return 0.5*eta_mass[0]*eta_dot[0]*eta_dot[0];
else
return 0.5*eta_mass[ich]*eta_dot[ich]*eta_dot[ich];
}
n -= ilen;
}
if (pstat_flag) {
if (pstyle == ISO) {
ilen = 1;
if (n < ilen)
return p_hydro*(volume-vol0) / nktv2p;
n -= ilen;
} else if (pstyle == ANISO) {
ilen = 3;
if (n < ilen) {
if (p_flag[n])
return p_hydro*(volume-vol0) / (pdim*nktv2p);
else
return 0.0;
}
n -= ilen;
} else {
ilen = 6;
if (n < ilen) {
if (n > 2) return 0.0;
else if (p_flag[n])
return p_hydro*(volume-vol0) / (pdim*nktv2p);
else
return 0.0;
}
n -= ilen;
}
if (pstyle == ISO) {
ilen = 1;
if (n < ilen)
return pdim*0.5*omega_dot[n]*omega_dot[n]*omega_mass[n];
n -= ilen;
} else if (pstyle == ANISO) {
ilen = 3;
if (n < ilen) {
if (p_flag[n])
return 0.5*omega_dot[n]*omega_dot[n]*omega_mass[n];
else return 0.0;
}
n -= ilen;
} else {
ilen = 6;
if (n < ilen) {
if (p_flag[n])
return 0.5*omega_dot[n]*omega_dot[n]*omega_mass[n];
else return 0.0;
}
n -= ilen;
}
if (mpchain) {
ilen = mpchain;
if (n < ilen) {
ich = n;
if (ich == 0) return lkt_press * etap[0];
else return kt * etap[ich];
}
n -= ilen;
ilen = mpchain;
if (n < ilen) {
ich = n;
if (ich == 0)
return 0.5*etap_mass[0]*etap_dot[0]*etap_dot[0];
else
return 0.5*etap_mass[ich]*etap_dot[ich]*etap_dot[ich];
}
n -= ilen;
}
if (deviatoric_flag) {
ilen = 1;
if (n < ilen)
return compute_strain_energy();
n -= ilen;
}
}
return 0.0;
}
/* ---------------------------------------------------------------------- */
void FixNH::reset_target(double t_new)
{
t_target = t_start = t_stop = t_new;
}
/* ---------------------------------------------------------------------- */
void FixNH::reset_dt()
{
dtv = update->dt;
dtf = 0.5 * update->dt * force->ftm2v;
dthalf = 0.5 * update->dt;
dt4 = 0.25 * update->dt;
dt8 = 0.125 * update->dt;
dto = dthalf;
// If using respa, then remap is performed in innermost level
if (strstr(update->integrate_style,"respa"))
dto = 0.5*step_respa[0];
if (pstat_flag)
pdrag_factor = 1.0 - (update->dt * p_freq_max * drag / nc_pchain);
if (tstat_flag)
tdrag_factor = 1.0 - (update->dt * t_freq * drag / nc_tchain);
}
/* ----------------------------------------------------------------------
extract thermostat properties
------------------------------------------------------------------------- */
void *FixNH::extract(const char *str, int &dim)
{
dim=0;
- if (strcmp(str,"t_target") == 0) {
+ if (tstat_flag && strcmp(str,"t_target") == 0) {
return &t_target;
- } else if (strcmp(str,"mtchain") == 0) {
+ } else if (tstat_flag && strcmp(str,"t_start") == 0) {
+ return &t_start;
+ } else if (tstat_flag && strcmp(str,"t_stop") == 0) {
+ return &t_stop;
+ } else if (tstat_flag && strcmp(str,"mtchain") == 0) {
+ return &mtchain;
+ } else if (pstat_flag && strcmp(str,"mpchain") == 0) {
return &mtchain;
}
dim=1;
- if (strcmp(str,"eta") == 0) {
+ if (tstat_flag && strcmp(str,"eta") == 0) {
+ return &eta;
+ } else if (pstat_flag && strcmp(str,"etap") == 0) {
return &eta;
+ } else if (pstat_flag && strcmp(str,"p_flag") == 0) {
+ return &p_flag;
+ } else if (pstat_flag && strcmp(str,"p_start") == 0) {
+ return &p_start;
+ } else if (pstat_flag && strcmp(str,"p_stop") == 0) {
+ return &p_stop;
+ } else if (pstat_flag && strcmp(str,"p_target") == 0) {
+ return &p_target;
}
return NULL;
}
/* ----------------------------------------------------------------------
perform half-step update of chain thermostat variables
------------------------------------------------------------------------- */
void FixNH::nhc_temp_integrate()
{
int ich;
double expfac;
double kecurrent = tdof * boltz * t_current;
// Update masses, to preserve initial freq, if flag set
if (eta_mass_flag) {
eta_mass[0] = tdof * boltz * t_target / (t_freq*t_freq);
for (int ich = 1; ich < mtchain; ich++)
eta_mass[ich] = boltz * t_target / (t_freq*t_freq);
}
if (eta_mass[0] > 0.0)
eta_dotdot[0] = (kecurrent - ke_target)/eta_mass[0];
else eta_dotdot[0] = 0.0;
double ncfac = 1.0/nc_tchain;
for (int iloop = 0; iloop < nc_tchain; iloop++) {
for (ich = mtchain-1; ich > 0; ich--) {
expfac = exp(-ncfac*dt8*eta_dot[ich+1]);
eta_dot[ich] *= expfac;
eta_dot[ich] += eta_dotdot[ich] * ncfac*dt4;
eta_dot[ich] *= tdrag_factor;
eta_dot[ich] *= expfac;
}
expfac = exp(-ncfac*dt8*eta_dot[1]);
eta_dot[0] *= expfac;
eta_dot[0] += eta_dotdot[0] * ncfac*dt4;
eta_dot[0] *= tdrag_factor;
eta_dot[0] *= expfac;
factor_eta = exp(-ncfac*dthalf*eta_dot[0]);
nh_v_temp();
// rescale temperature due to velocity scaling
// should not be necessary to explicitly recompute the temperature
t_current *= factor_eta*factor_eta;
kecurrent = tdof * boltz * t_current;
if (eta_mass[0] > 0.0)
eta_dotdot[0] = (kecurrent - ke_target)/eta_mass[0];
else eta_dotdot[0] = 0.0;
for (ich = 0; ich < mtchain; ich++)
eta[ich] += ncfac*dthalf*eta_dot[ich];
eta_dot[0] *= expfac;
eta_dot[0] += eta_dotdot[0] * ncfac*dt4;
eta_dot[0] *= expfac;
for (ich = 1; ich < mtchain; ich++) {
expfac = exp(-ncfac*dt8*eta_dot[ich+1]);
eta_dot[ich] *= expfac;
eta_dotdot[ich] = (eta_mass[ich-1]*eta_dot[ich-1]*eta_dot[ich-1]
- boltz * t_target)/eta_mass[ich];
eta_dot[ich] += eta_dotdot[ich] * ncfac*dt4;
eta_dot[ich] *= expfac;
}
}
}
/* ----------------------------------------------------------------------
perform half-step update of chain thermostat variables for barostat
scale barostat velocities
------------------------------------------------------------------------- */
void FixNH::nhc_press_integrate()
{
int ich,i;
double expfac,factor_etap,kecurrent;
double kt = boltz * t_target;
double lkt_press = kt;
// Update masses, to preserve initial freq, if flag set
if (omega_mass_flag) {
double nkt = atom->natoms * kt;
for (int i = 0; i < 3; i++)
if (p_flag[i])
omega_mass[i] = nkt/(p_freq[i]*p_freq[i]);
if (pstyle == TRICLINIC) {
for (int i = 3; i < 6; i++)
if (p_flag[i]) omega_mass[i] = nkt/(p_freq[i]*p_freq[i]);
}
}
if (etap_mass_flag) {
if (mpchain) {
etap_mass[0] = boltz * t_target / (p_freq_max*p_freq_max);
for (int ich = 1; ich < mpchain; ich++)
etap_mass[ich] = boltz * t_target / (p_freq_max*p_freq_max);
for (int ich = 1; ich < mpchain; ich++)
etap_dotdot[ich] =
(etap_mass[ich-1]*etap_dot[ich-1]*etap_dot[ich-1] -
boltz * t_target) / etap_mass[ich];
}
}
kecurrent = 0.0;
for (i = 0; i < 3; i++)
if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i];
if (pstyle == TRICLINIC) {
for (i = 3; i < 6; i++)
if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i];
}
etap_dotdot[0] = (kecurrent - lkt_press)/etap_mass[0];
double ncfac = 1.0/nc_pchain;
for (int iloop = 0; iloop < nc_pchain; iloop++) {
for (ich = mpchain-1; ich > 0; ich--) {
expfac = exp(-ncfac*dt8*etap_dot[ich+1]);
etap_dot[ich] *= expfac;
etap_dot[ich] += etap_dotdot[ich] * ncfac*dt4;
etap_dot[ich] *= pdrag_factor;
etap_dot[ich] *= expfac;
}
expfac = exp(-ncfac*dt8*etap_dot[1]);
etap_dot[0] *= expfac;
etap_dot[0] += etap_dotdot[0] * ncfac*dt4;
etap_dot[0] *= pdrag_factor;
etap_dot[0] *= expfac;
for (ich = 0; ich < mpchain; ich++)
etap[ich] += ncfac*dthalf*etap_dot[ich];
factor_etap = exp(-ncfac*dthalf*etap_dot[0]);
for (i = 0; i < 3; i++)
if (p_flag[i]) omega_dot[i] *= factor_etap;
if (pstyle == TRICLINIC) {
for (i = 3; i < 6; i++)
if (p_flag[i]) omega_dot[i] *= factor_etap;
}
kecurrent = 0.0;
for (i = 0; i < 3; i++)
if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i];
if (pstyle == TRICLINIC) {
for (i = 3; i < 6; i++)
if (p_flag[i]) kecurrent += omega_mass[i]*omega_dot[i]*omega_dot[i];
}
etap_dotdot[0] = (kecurrent - lkt_press)/etap_mass[0];
etap_dot[0] *= expfac;
etap_dot[0] += etap_dotdot[0] * ncfac*dt4;
etap_dot[0] *= expfac;
for (ich = 1; ich < mpchain; ich++) {
expfac = exp(-ncfac*dt8*etap_dot[ich+1]);
etap_dot[ich] *= expfac;
etap_dotdot[ich] =
(etap_mass[ich-1]*etap_dot[ich-1]*etap_dot[ich-1] - boltz*t_target) /
etap_mass[ich];
etap_dot[ich] += etap_dotdot[ich] * ncfac*dt4;
etap_dot[ich] *= expfac;
}
}
}
/* ----------------------------------------------------------------------
perform half-step barostat scaling of velocities
-----------------------------------------------------------------------*/
void FixNH::nh_v_press()
{
double factor[3];
double **v = atom->v;
int *mask = atom->mask;
int nlocal = atom->nlocal;
if (igroup == atom->firstgroup) nlocal = atom->nfirst;
factor[0] = exp(-dt4*(omega_dot[0]+mtk_term2));
factor[1] = exp(-dt4*(omega_dot[1]+mtk_term2));
factor[2] = exp(-dt4*(omega_dot[2]+mtk_term2));
if (which == NOBIAS) {
for (int i = 0; i < nlocal; i++) {
if (mask[i] & groupbit) {
v[i][0] *= factor[0];
v[i][1] *= factor[1];
v[i][2] *= factor[2];
if (pstyle == TRICLINIC) {
v[i][0] += -dthalf*(v[i][1]*omega_dot[5] + v[i][2]*omega_dot[4]);
v[i][1] += -dthalf*v[i][2]*omega_dot[3];
}
v[i][0] *= factor[0];
v[i][1] *= factor[1];
v[i][2] *= factor[2];
}
}
} else if (which == BIAS) {
for (int i = 0; i < nlocal; i++) {
if (mask[i] & groupbit) {
temperature->remove_bias(i,v[i]);
v[i][0] *= factor[0];
v[i][1] *= factor[1];
v[i][2] *= factor[2];
if (pstyle == TRICLINIC) {
v[i][0] += -dthalf*(v[i][1]*omega_dot[5] + v[i][2]*omega_dot[4]);
v[i][1] += -dthalf*v[i][2]*omega_dot[3];
}
v[i][0] *= factor[0];
v[i][1] *= factor[1];
v[i][2] *= factor[2];
temperature->restore_bias(i,v[i]);
}
}
}
}
/* ----------------------------------------------------------------------
perform half-step update of velocities
-----------------------------------------------------------------------*/
void FixNH::nve_v()
{
double dtfm;
double **v = atom->v;
double **f = atom->f;
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;
if (rmass) {
for (int i = 0; i < nlocal; i++) {
if (mask[i] & groupbit) {
dtfm = dtf / rmass[i];
v[i][0] += dtfm*f[i][0];
v[i][1] += dtfm*f[i][1];
v[i][2] += dtfm*f[i][2];
}
}
} else {
for (int i = 0; i < nlocal; i++) {
if (mask[i] & groupbit) {
dtfm = dtf / mass[type[i]];
v[i][0] += dtfm*f[i][0];
v[i][1] += dtfm*f[i][1];
v[i][2] += dtfm*f[i][2];
}
}
}
}
/* ----------------------------------------------------------------------
perform full-step update of positions
-----------------------------------------------------------------------*/
void FixNH::nve_x()
{
double **x = atom->x;
double **v = atom->v;
int *mask = atom->mask;
int nlocal = atom->nlocal;
if (igroup == atom->firstgroup) nlocal = atom->nfirst;
// x update by full step only for atoms in group
for (int i = 0; i < nlocal; i++) {
if (mask[i] & groupbit) {
x[i][0] += dtv * v[i][0];
x[i][1] += dtv * v[i][1];
x[i][2] += dtv * v[i][2];
}
}
}
/* ----------------------------------------------------------------------
perform half-step thermostat scaling of velocities
-----------------------------------------------------------------------*/
void FixNH::nh_v_temp()
{
double **v = atom->v;
int *mask = atom->mask;
int nlocal = atom->nlocal;
if (igroup == atom->firstgroup) nlocal = atom->nfirst;
if (which == NOBIAS) {
for (int i = 0; i < nlocal; i++) {
if (mask[i] & groupbit) {
v[i][0] *= factor_eta;
v[i][1] *= factor_eta;
v[i][2] *= factor_eta;
}
}
} else if (which == BIAS) {
for (int i = 0; i < nlocal; i++) {
if (mask[i] & groupbit) {
temperature->remove_bias(i,v[i]);
v[i][0] *= factor_eta;
v[i][1] *= factor_eta;
v[i][2] *= factor_eta;
temperature->restore_bias(i,v[i]);
}
}
}
}
/* ----------------------------------------------------------------------
compute sigma tensor
needed whenever p_target or h0_inv changes
-----------------------------------------------------------------------*/
void FixNH::compute_sigma()
{
// if nreset_h0 > 0, reset vol0 and h0_inv
// every nreset_h0 timesteps
if (nreset_h0 > 0) {
int delta = update->ntimestep - update->beginstep;
if (delta % nreset_h0 == 0) {
if (dimension == 3) vol0 = domain->xprd * domain->yprd * domain->zprd;
else vol0 = domain->xprd * domain->yprd;
h0_inv[0] = domain->h_inv[0];
h0_inv[1] = domain->h_inv[1];
h0_inv[2] = domain->h_inv[2];
h0_inv[3] = domain->h_inv[3];
h0_inv[4] = domain->h_inv[4];
h0_inv[5] = domain->h_inv[5];
}
}
// generate upper-triangular half of
// sigma = vol0*h0inv*(p_target-p_hydro)*h0inv^t
// units of sigma are are PV/L^2 e.g. atm.A
//
// [ 0 5 4 ] [ 0 5 4 ] [ 0 5 4 ] [ 0 - - ]
// [ 5 1 3 ] = [ - 1 3 ] [ 5 1 3 ] [ 5 1 - ]
// [ 4 3 2 ] [ - - 2 ] [ 4 3 2 ] [ 4 3 2 ]
sigma[0] =
vol0*(h0_inv[0]*((p_target[0]-p_hydro)*h0_inv[0] +
p_target[5]*h0_inv[5]+p_target[4]*h0_inv[4]) +
h0_inv[5]*(p_target[5]*h0_inv[0] +
(p_target[1]-p_hydro)*h0_inv[5]+p_target[3]*h0_inv[4]) +
h0_inv[4]*(p_target[4]*h0_inv[0]+p_target[3]*h0_inv[5] +
(p_target[2]-p_hydro)*h0_inv[4]));
sigma[1] =
vol0*(h0_inv[1]*((p_target[1]-p_hydro)*h0_inv[1] +
p_target[3]*h0_inv[3]) +
h0_inv[3]*(p_target[3]*h0_inv[1] +
(p_target[2]-p_hydro)*h0_inv[3]));
sigma[2] =
vol0*(h0_inv[2]*((p_target[2]-p_hydro)*h0_inv[2]));
sigma[3] =
vol0*(h0_inv[1]*(p_target[3]*h0_inv[2]) +
h0_inv[3]*((p_target[2]-p_hydro)*h0_inv[2]));
sigma[4] =
vol0*(h0_inv[0]*(p_target[4]*h0_inv[2]) +
h0_inv[5]*(p_target[3]*h0_inv[2]) +
h0_inv[4]*((p_target[2]-p_hydro)*h0_inv[2]));
sigma[5] =
vol0*(h0_inv[0]*(p_target[5]*h0_inv[1]+p_target[4]*h0_inv[3]) +
h0_inv[5]*((p_target[1]-p_hydro)*h0_inv[1]+p_target[3]*h0_inv[3]) +
h0_inv[4]*(p_target[3]*h0_inv[1]+(p_target[2]-p_hydro)*h0_inv[3]));
}
/* ----------------------------------------------------------------------
compute strain energy
-----------------------------------------------------------------------*/
double FixNH::compute_strain_energy()
{
// compute strain energy = 0.5*Tr(sigma*h*h^t) in energy units
double* h = domain->h;
double d0,d1,d2;
d0 =
sigma[0]*(h[0]*h[0]+h[5]*h[5]+h[4]*h[4]) +
sigma[5]*( h[1]*h[5]+h[3]*h[4]) +
sigma[4]*( h[2]*h[4]);
d1 =
sigma[5]*( h[5]*h[1]+h[4]*h[3]) +
sigma[1]*( h[1]*h[1]+h[3]*h[3]) +
sigma[3]*( h[2]*h[3]);
d2 =
sigma[4]*( h[4]*h[2]) +
sigma[3]*( h[3]*h[2]) +
sigma[2]*( h[2]*h[2]);
double energy = 0.5*(d0+d1+d2)/nktv2p;
return energy;
}
/* ----------------------------------------------------------------------
compute deviatoric barostat force = h*sigma*h^t
-----------------------------------------------------------------------*/
void FixNH::compute_deviatoric()
{
// generate upper-triangular part of h*sigma*h^t
// units of fdev are are PV, e.g. atm*A^3
// [ 0 5 4 ] [ 0 5 4 ] [ 0 5 4 ] [ 0 - - ]
// [ 5 1 3 ] = [ - 1 3 ] [ 5 1 3 ] [ 5 1 - ]
// [ 4 3 2 ] [ - - 2 ] [ 4 3 2 ] [ 4 3 2 ]
double* h = domain->h;
fdev[0] =
h[0]*(sigma[0]*h[0]+sigma[5]*h[5]+sigma[4]*h[4]) +
h[5]*(sigma[5]*h[0]+sigma[1]*h[5]+sigma[3]*h[4]) +
h[4]*(sigma[4]*h[0]+sigma[3]*h[5]+sigma[2]*h[4]);
fdev[1] =
h[1]*( sigma[1]*h[1]+sigma[3]*h[3]) +
h[3]*( sigma[3]*h[1]+sigma[2]*h[3]);
fdev[2] =
h[2]*( sigma[2]*h[2]);
fdev[3] =
h[1]*( sigma[3]*h[2]) +
h[3]*( sigma[2]*h[2]);
fdev[4] =
h[0]*( sigma[4]*h[2]) +
h[5]*( sigma[3]*h[2]) +
h[4]*( sigma[2]*h[2]);
fdev[5] =
h[0]*( sigma[5]*h[1]+sigma[4]*h[3]) +
h[5]*( sigma[1]*h[1]+sigma[3]*h[3]) +
h[4]*( sigma[3]*h[1]+sigma[2]*h[3]);
}
/* ----------------------------------------------------------------------
compute target temperature and kinetic energy
-----------------------------------------------------------------------*/
void FixNH::compute_temp_target()
{
double delta = update->ntimestep - update->beginstep;
if (delta != 0.0) delta /= update->endstep - update->beginstep;
t_target = t_start + delta * (t_stop-t_start);
ke_target = tdof * boltz * t_target;
}
/* ----------------------------------------------------------------------
compute hydrostatic target pressure
-----------------------------------------------------------------------*/
void FixNH::compute_press_target()
{
double delta = update->ntimestep - update->beginstep;
if (delta != 0.0) delta /= update->endstep - update->beginstep;
p_hydro = 0.0;
for (int i = 0; i < 3; i++)
if (p_flag[i]) {
p_target[i] = p_start[i] + delta * (p_stop[i]-p_start[i]);
p_hydro += p_target[i];
}
if (pdim > 0) p_hydro /= pdim;
if (pstyle == TRICLINIC)
for (int i = 3; i < 6; i++)
p_target[i] = p_start[i] + delta * (p_stop[i]-p_start[i]);
// if deviatoric, recompute sigma each time p_target changes
if (deviatoric_flag) compute_sigma();
}
/* ----------------------------------------------------------------------
update omega_dot, omega
-----------------------------------------------------------------------*/
void FixNH::nh_omega_dot()
{
double f_omega,volume;
if (dimension == 3) volume = domain->xprd*domain->yprd*domain->zprd;
else volume = domain->xprd*domain->yprd;
if (deviatoric_flag) compute_deviatoric();
mtk_term1 = 0.0;
if (mtk_flag) {
if (pstyle == ISO) {
mtk_term1 = tdof * boltz * t_current;
mtk_term1 /= pdim * atom->natoms;
} else {
double *mvv_current = temperature->vector;
for (int i = 0; i < 3; i++)
if (p_flag[i])
mtk_term1 += mvv_current[i];
mtk_term1 /= pdim * atom->natoms;
}
}
for (int i = 0; i < 3; i++)
if (p_flag[i]) {
f_omega = (p_current[i]-p_hydro)*volume /
(omega_mass[i] * nktv2p) + mtk_term1 / omega_mass[i];
if (deviatoric_flag) f_omega -= fdev[i]/(omega_mass[i] * nktv2p);
omega_dot[i] += f_omega*dthalf;
omega_dot[i] *= pdrag_factor;
}
mtk_term2 = 0.0;
if (mtk_flag) {
for (int i = 0; i < 3; i++)
if (p_flag[i])
mtk_term2 += omega_dot[i];
if (pdim > 0) mtk_term2 /= pdim * atom->natoms;
}
if (pstyle == TRICLINIC) {
for (int i = 3; i < 6; i++) {
if (p_flag[i]) {
f_omega = p_current[i]*volume/(omega_mass[i] * nktv2p);
if (deviatoric_flag)
f_omega -= fdev[i]/(omega_mass[i] * nktv2p);
omega_dot[i] += f_omega*dthalf;
omega_dot[i] *= pdrag_factor;
}
}
}
}
/* ----------------------------------------------------------------------
if any tilt ratios exceed limits, set flip = 1 and compute new tilt values
do not flip in x or y if non-periodic (can tilt but not flip)
this is b/c the box length would be changed (dramatically) by flip
if yz tilt exceeded, adjust C vector by one B vector
if xz tilt exceeded, adjust C vector by one A vector
if xy tilt exceeded, adjust B vector by one A vector
check yz first since it may change xz, then xz check comes after
if any flip occurs, create new box in domain
image_flip() adjusts image flags due to box shape change induced by flip
remap() puts atoms outside the new box back into the new box
perform irregular on atoms in lamda coords to migrate atoms to new procs
important that image_flip comes before remap, since remap may change
image flags to new values, making eqs in doc of Domain:image_flip incorrect
------------------------------------------------------------------------- */
void FixNH::pre_exchange()
{
double xprd = domain->xprd;
double yprd = domain->yprd;
// flip is only triggered when tilt exceeds 0.5 by DELTAFLIP
// this avoids immediate re-flipping due to tilt oscillations
double xtiltmax = (0.5+DELTAFLIP)*xprd;
double ytiltmax = (0.5+DELTAFLIP)*yprd;
int flipxy,flipxz,flipyz;
flipxy = flipxz = flipyz = 0;
if (domain->yperiodic) {
if (domain->yz < -ytiltmax) {
domain->yz += yprd;
domain->xz += domain->xy;
flipyz = 1;
} else if (domain->yz >= ytiltmax) {
domain->yz -= yprd;
domain->xz -= domain->xy;
flipyz = -1;
}
}
if (domain->xperiodic) {
if (domain->xz < -xtiltmax) {
domain->xz += xprd;
flipxz = 1;
} else if (domain->xz >= xtiltmax) {
domain->xz -= xprd;
flipxz = -1;
}
if (domain->xy < -xtiltmax) {
domain->xy += xprd;
flipxy = 1;
} else if (domain->xy >= xtiltmax) {
domain->xy -= xprd;
flipxy = -1;
}
}
int flip = 0;
if (flipxy || flipxz || flipyz) flip = 1;
if (flip) {
domain->set_global_box();
domain->set_local_box();
domain->image_flip(flipxy,flipxz,flipyz);
double **x = atom->x;
imageint *image = atom->image;
int nlocal = atom->nlocal;
for (int i = 0; i < nlocal; i++) domain->remap(x[i],image[i]);
domain->x2lamda(atom->nlocal);
irregular->migrate_atoms();
domain->lamda2x(atom->nlocal);
}
}
/* ----------------------------------------------------------------------
memory usage of Irregular
------------------------------------------------------------------------- */
double FixNH::memory_usage()
{
double bytes = 0.0;
if (irregular) bytes += irregular->memory_usage();
return bytes;
}
diff --git a/src/version.h b/src/version.h
index 8aa825d18..1562ca3d9 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1 +1 @@
-#define LAMMPS_VERSION "17 Nov 2016"
+#define LAMMPS_VERSION "30 Nov 2016"
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/README.TXT b/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/README.TXT
deleted file mode 100644
index 32252bad0..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/README.TXT
+++ /dev/null
@@ -1,24 +0,0 @@
-
-This is an example of how to use the OPLSAA force-field in LAMMPS
-(using moltemplate.sh and Jason Lambert's oplsaa_moltemplate.py conversion tool)
-
-This example also shows how to use moltemplate in combination with PACKMOL.
-(PACKMOL is a useful program for generating atomic coordinates. In this example,
- 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
- 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.)
-
-As of 2014-4-06, this code has not been tested for accuracy.
-(See the WARNING.TXT file.)
-
-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
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/README.TXT b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/README.TXT
deleted file mode 100644
index dfbbda86d..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/README.TXT
+++ /dev/null
@@ -1,78 +0,0 @@
-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 file contains instructions for how to build molecules
- using the OPLSAA force-field. However, moltemplate is not limited to
- OPLSAA. Moltemplate allows users to access any of the force-field
- styles available in LAMMPS (including custom, user-defined force-fields).
-
-
--------- INSTRUCTIONS FOR USING OPLSAA WITH YOUR OWN MOLECULES: --------
-
-1) Download the "oplsaa.prm" file containing the OPLSAA force field
-parameters. I do not have permission to distribute this file,
-but you can download the latest version from one of these URLS:
-http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm
-http://dasher.wustl.edu/ffe/distribution/params/oplsaa.prm
-
-2) Create the "oplsaa_subset.prm" file by making a copy of the "oplsaa.prm"
-file, renaming it to "oplsaa_subset.prm", and deleting the atoms you don't need.
-For example, if you are building 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
-
-(Leave the rest of the file unmodified.)
-
-
-3) Create the "oplsaa.lt" file using this command:
-
-oplsaa_moltemplate.py oplsaa_subset.prm
-
- (Credit to Jasen Lambert for contributing this useful script.)
-
-
-4) Create the "system.data", "system.in.init", and "system.in.settings"
-files which LAMMPS will read by running:
-
-moltemplate.sh system.lt
-
-
-5)
-To run LAMMPS, you must make sure LAMMPS was built with the "USER-MISC" package.
-(because oplsaa_moltemplate.py uses dihedral_style fourier)
-To do this, type "make yes-user-misc" before compiling LAMMPS.
- http://lammps.sandia.gov/doc/Section_start.html#start_3
-
-
-6) Run LAMMPS in this order:
-
-lmp_g++ -i run.in.min # minimize the energy (to avoid atom overlap) before...
-lmp_g++ -i run.in.nvt # running the simulation at constant temperature
-
-(Replace "lmp_g++" with the name of the LAMMPS executable you are using.)
-
----- 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.
-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 "oplsaa.lt" file created by step 3) above. The "ch2group.lt",
-"ch3group.lt", and "alkane50.lt" files all refer to "oplsaa.lt",
-(as well as the "OPLSAA" force-field object which it defines). Excerpt:
-
-import "oplsaa.lt"
-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
-to generate them for you. You can also specify some of the angles and
-dihedrals explicitly, and let the force-field handle the rest.
-(Many of the molecule examples which come with moltemplate do this.)
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/README_run.sh b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/README_run.sh
deleted file mode 100755
index 9f923a6c7..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/README_run.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-# --- Running LAMMPS ---
-# -------- REQUIREMENTS: ---------
-# 1) This example requires building LAMMPS with the "USER-MISC" package.
-# (because it makes use of "gaff.lt" which uses dihedral_style fourier)
-# 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
-# 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/all_atom_examples/force_field_OPLSAA/alkane_chain_single/README_setup.sh b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/README_setup.sh
deleted file mode 100755
index 2c3c21713..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/README_setup.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
-# Create LAMMPS input files this way:
-cd moltemplate_files
-
- # Create the "oplsaa.lt" file which moltemplate will need
-
- cd oplsaa_lt_generator/
- oplsaa_moltemplate.py oplsaa_subset.prm
- mv -f oplsaa.lt ..
- cd ..
-
- # 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/
-
- # Optional:
- # Delete the "oplsaa.lt" file:
- rm -f oplsaa.lt
-
-
-
-cd ../
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch2group.lt b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch2group.lt
deleted file mode 100644
index 42f934fdd..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch2group.lt
+++ /dev/null
@@ -1,55 +0,0 @@
-
-import "oplsaa.lt" # <-- defines the "OPLSAA" force field
-
-
-CH2 inherits OPLSAA {
-
- # atom-id mol-id atom-type charge x y z
-
- write("Data Atoms") {
- $atom:C $mol:... @atom:81 0.00 0.000 0.000 0.000
- $atom:H1 $mol:... @atom:85 0.00 0.000 0.63104384422426 0.892430762954
- $atom:H2 $mol:... @atom:85 0.00 0.000 0.63104384422426 -0.892430762954
- }
-
- # Atom type numbers (@atom:80,@atom:85) are defined in "oplsaa.lt". Excerpt:
- # @atom:80 12.011 #CT "Alkane CH3-" 6 partial charge=-0.18
- # @atom:81 12.011 #CT "Alkane -CH2-" 6 partial charge=-0.12
- # @atom:85 1.008 #HC "Alkane H-C" 1 partial charge=0.06
- # In this example, atomic charges are generated by atom type (according to
- # rules in oplsaa.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.
-
- # Now specify which pairs of atoms are bonded:
- write('Data Bond List') {
- $bond:CH1 $atom:C $atom:H1
- $bond:CH2 $atom:C $atom:H2
- }
-
-} # 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.4431163316030377
-# DeltaZh = Lch*sin(theta/2) # = 0.8924307629540046
-# DeltaYh = Lch*cos(theta/2) # = 0.6310438442242609
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch3group.lt b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch3group.lt
deleted file mode 100644
index 7bb5794b9..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch3group.lt
+++ /dev/null
@@ -1,58 +0,0 @@
-
-import "oplsaa.lt" # <-- defines the "OPLSAA" force field
-
-
-CH3 inherits OPLSAA {
-
- # atom-id mol-id atom-type charge x y z
-
- write("Data Atoms") {
- $atom:C $mol:... @atom:80 0.00 0.000000 0.000000 0.000000
- $atom:H1 $mol:... @atom:85 0.00 0.000000 0.6310438442242609 0.8924307629540046
- $atom:H2 $mol:... @atom:85 0.00 0.000000 0.6310438442242609 -0.8924307629540046
- $atom:H3 $mol:... @atom:85 0.00 -0.8924307629540046 -0.6310438442242609 0.000000
- }
-
- # Atom type numbers (@atom:80,@atom:85) are defined in "oplsaa.lt". Excerpt:
- # @atom:80 12.011 #CT "Alkane CH3-" 6 partial charge=-0.18
- # @atom:81 12.011 #CT "Alkane -CH2-" 6 partial charge=-0.12
- # @atom:85 1.008 #HC "Alkane H-C" 1 partial charge=0.06
- # In this example, atomic charges are generated by atom type (according to
- # rules in oplsaa.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.
-
- # Now specify which pairs of atoms are bonded:
- 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.4431163316030377
-# DeltaZh = Lch*sin(theta/2) # = 0.8924307629540046
-# DeltaYh = Lch*cos(theta/2) # = 0.6310438442242609
-
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/README_run.sh b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/README_run.sh
deleted file mode 100755
index 9f923a6c7..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/README_run.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-# --- Running LAMMPS ---
-# -------- REQUIREMENTS: ---------
-# 1) This example requires building LAMMPS with the "USER-MISC" package.
-# (because it makes use of "gaff.lt" which uses dihedral_style fourier)
-# 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
-# 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/all_atom_examples/force_field_OPLSAA/ethylene+benzene/README_setup.sh b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/README_setup.sh
deleted file mode 100755
index 2e4ecb9ac..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/README_setup.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
-# Create LAMMPS input files this way:
-cd moltemplate_files
-
- # Create the "oplsaa.lt" file which moltemplate will need
-
- cd oplsaa_lt_generator/
- oplsaa_moltemplate.py oplsaa_subset.prm
- mv -f oplsaa.lt ..
- cd ..
-
- # 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/
-
- # Optional:
- # Delete the "oplsaa.lt" file:
- rm -f oplsaa.lt
-
-cd ../
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README.TXT b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README.TXT
deleted file mode 100644
index 61b8e281a..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README.TXT
+++ /dev/null
@@ -1,24 +0,0 @@
-
-This is an example of how to use the OPLSAA force-field in LAMMPS
-(using moltemplate.sh and Jason Lambert's oplsaa_moltemplate.py conversion tool)
-
-This example also shows how to use moltemplate in combination with PACKMOL.
-(PACKMOL is a useful program for generating atomic coordinates. In this example,
- 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
- 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.)
-
-As of 2014-12-19, this code has not been tested for accuracy.
-(See the WARNING.TXT file.)
-
-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
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_run.sh b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_run.sh
deleted file mode 100755
index 9f923a6c7..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_run.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-# --- Running LAMMPS ---
-# -------- REQUIREMENTS: ---------
-# 1) This example requires building LAMMPS with the "USER-MISC" package.
-# (because it makes use of "gaff.lt" which uses dihedral_style fourier)
-# 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
-# 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/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_setup.sh b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_setup.sh
deleted file mode 100755
index 0cf5ae795..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_setup.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-# Create the coordinates of the atoms using PACKMOL
-cd packmol_files
-
- packmol < mix_ethylene+benzene.inp
- mv -f system.xyz ../moltemplate_files/
-
-cd ..
-
-
-
-# Create LAMMPS input files this way:
-cd moltemplate_files
-
- # Create the "oplsaa.lt" file which moltemplate will need
-
- cd oplsaa_lt_generator/
- oplsaa_moltemplate.py oplsaa_subset.prm
- mv -f oplsaa.lt ..
- cd ..
-
- # run moltemplate
-
- moltemplate.sh -xyz system.xyz 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/
-
- # Optional:
- # Delete the "oplsaa.lt" file:
- rm -f oplsaa.lt
-
-
-cd ../
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/README.TXT b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/README.TXT
deleted file mode 100644
index d58e74707..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/README.TXT
+++ /dev/null
@@ -1,81 +0,0 @@
-This example is a simple simulation of many long alkane chains (hexadecane) in a
-box at room temperature and atmospheric pressure. Please read "WARNING.TXT".
-
-
-NOTE: This particular file contains instructions for how to build molecules
- using the OPLSAA force-field. However, moltemplate is not limited to
- OPLSAA. You can use other force-fields, or define your own force-fields
- (or provide a list of bonded interactions explicitly).
-
-
--------- INSTRUCTIONS: ---------
-
-1) Download the "oplsaa.prm" file containing the OPLS force field
-parameters. I do not have permission to distribute those parameters,
-but you can download them from one of these URLS:
-http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm
-http://dasher.wustl.edu/ffe/distribution/params/oplsaa.prm
-
-2) Create the "oplsaa_subset.prm" file by making a copy of the "oplsaa.prm"
-file, renaming it to "oplsaa_subset.prm", and deleting the atoms you don't need.
-For example, if you are building 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
-
-(Leave the rest of the file unmodified.)
-
-
-3) Create the "oplsaa.lt" file using this command:
-
-oplsaa_moltemplate.py oplsaa_subset.prm
-
- (Credit to Jasen Lambert for contributing this useful script.)
-
-
-4) Create the "system.data", "system.in.init", and "system.in.settings"
-files which LAMMPS will read by running:
-
-moltemplate.sh system.lt
-
-
-5)
-To run LAMMPS, you must make sure LAMMPS was built with the "USER-MISC" package.
-(because it uses dihedral_style fourier)
-To do this, type "make yes-user-misc" before compiling LAMMPS.
- http://lammps.sandia.gov/doc/Section_start.html#start_3
-
-
-6) Run LAMMPS in this order:
-
-lmp_g++ -i run.in.min
-lmp_g++ -i run.in.npt
-lmp_g++ -i run.in.nvt
-
-(Replace "lmp_g++" with the name of the LAMMPS executable you are using.)
-
----- 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.
-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 "oplsaa.lt" file created by step 3) above. The "ch2group.lt",
-"ch3group.lt", and "hexadecane.lt" files all refer to "oplsaa.lt",
-(as well as the "OPLSAA" force-field object which it defines). Excerpt:
-
-import "oplsaa.lt"
-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
-to generate them for you. You can also specify some of the angles and
-dihedrals explicitly, and let the force-field handle the rest.
-(Many of the molecule examples which come with moltemplate do this.)
-
-
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/README_run.sh b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/README_run.sh
deleted file mode 100755
index 9f923a6c7..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/README_run.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-# --- Running LAMMPS ---
-# -------- REQUIREMENTS: ---------
-# 1) This example requires building LAMMPS with the "USER-MISC" package.
-# (because it makes use of "gaff.lt" which uses dihedral_style fourier)
-# 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
-# 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/all_atom_examples/force_field_OPLSAA/hexadecane/README_setup.sh b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/README_setup.sh
deleted file mode 100755
index 2e4ecb9ac..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/README_setup.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
-# Create LAMMPS input files this way:
-cd moltemplate_files
-
- # Create the "oplsaa.lt" file which moltemplate will need
-
- cd oplsaa_lt_generator/
- oplsaa_moltemplate.py oplsaa_subset.prm
- mv -f oplsaa.lt ..
- cd ..
-
- # 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/
-
- # Optional:
- # Delete the "oplsaa.lt" file:
- rm -f oplsaa.lt
-
-cd ../
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt
deleted file mode 100644
index 42f934fdd..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt
+++ /dev/null
@@ -1,55 +0,0 @@
-
-import "oplsaa.lt" # <-- defines the "OPLSAA" force field
-
-
-CH2 inherits OPLSAA {
-
- # atom-id mol-id atom-type charge x y z
-
- write("Data Atoms") {
- $atom:C $mol:... @atom:81 0.00 0.000 0.000 0.000
- $atom:H1 $mol:... @atom:85 0.00 0.000 0.63104384422426 0.892430762954
- $atom:H2 $mol:... @atom:85 0.00 0.000 0.63104384422426 -0.892430762954
- }
-
- # Atom type numbers (@atom:80,@atom:85) are defined in "oplsaa.lt". Excerpt:
- # @atom:80 12.011 #CT "Alkane CH3-" 6 partial charge=-0.18
- # @atom:81 12.011 #CT "Alkane -CH2-" 6 partial charge=-0.12
- # @atom:85 1.008 #HC "Alkane H-C" 1 partial charge=0.06
- # In this example, atomic charges are generated by atom type (according to
- # rules in oplsaa.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.
-
- # Now specify which pairs of atoms are bonded:
- write('Data Bond List') {
- $bond:CH1 $atom:C $atom:H1
- $bond:CH2 $atom:C $atom:H2
- }
-
-} # 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.4431163316030377
-# DeltaZh = Lch*sin(theta/2) # = 0.8924307629540046
-# DeltaYh = Lch*cos(theta/2) # = 0.6310438442242609
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt
deleted file mode 100644
index 7bb5794b9..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt
+++ /dev/null
@@ -1,58 +0,0 @@
-
-import "oplsaa.lt" # <-- defines the "OPLSAA" force field
-
-
-CH3 inherits OPLSAA {
-
- # atom-id mol-id atom-type charge x y z
-
- write("Data Atoms") {
- $atom:C $mol:... @atom:80 0.00 0.000000 0.000000 0.000000
- $atom:H1 $mol:... @atom:85 0.00 0.000000 0.6310438442242609 0.8924307629540046
- $atom:H2 $mol:... @atom:85 0.00 0.000000 0.6310438442242609 -0.8924307629540046
- $atom:H3 $mol:... @atom:85 0.00 -0.8924307629540046 -0.6310438442242609 0.000000
- }
-
- # Atom type numbers (@atom:80,@atom:85) are defined in "oplsaa.lt". Excerpt:
- # @atom:80 12.011 #CT "Alkane CH3-" 6 partial charge=-0.18
- # @atom:81 12.011 #CT "Alkane -CH2-" 6 partial charge=-0.12
- # @atom:85 1.008 #HC "Alkane H-C" 1 partial charge=0.06
- # In this example, atomic charges are generated by atom type (according to
- # rules in oplsaa.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.
-
- # Now specify which pairs of atoms are bonded:
- 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.4431163316030377
-# DeltaZh = Lch*sin(theta/2) # = 0.8924307629540046
-# DeltaYh = Lch*cos(theta/2) # = 0.6310438442242609
-
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/README.TXT b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/README.TXT
deleted file mode 100644
index d323e7c71..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/README.TXT
+++ /dev/null
@@ -1,33 +0,0 @@
-This example contains a mixture of water(SPCE) and methane.
-The methane molecules use OPLSAA force-field, but the water molecules do not.
-
----- Details ----
-
-The methane molecules in this example use the OPLSAA force-field. This means
-that when we define "Methane", we only specify the atom names, bond list,
-and coordinates. We then use oplsaa_moltemplate.py and moltemplate.sh to load
-the OPLSAA force-field parameters (and atom charges) for the Methane molecule
-from an external file ("oplsaa.lt". Read the "oplsaa_lt_generator/README.TXT"
-file for details.) Consequently, the "moltemplate_files/methane.lt" file
-contains these lines which refer to OPLSAA:
-
-import "oplsaa.lt"
-Methane inherits OPLSAA { ...
-
-However the "SPCE" (water) molecules does NOT use a database to look up the
-force-field parameters for this tiny molecule.
-Instead, the "moltemplate_files/spce.lt" file declares all of the angle
-interactions, atom properties and force-field parameters for water explicitly.
-(Consequently, it makes no mention of "oplsaa.lt" or "OPLSAA".)
-
-
--------- Instructions: ---------
-
-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/all_atom_examples/force_field_OPLSAA/methane/README_run.sh b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/README_run.sh
deleted file mode 100755
index 9f923a6c7..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/README_run.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-# --- Running LAMMPS ---
-# -------- REQUIREMENTS: ---------
-# 1) This example requires building LAMMPS with the "USER-MISC" package.
-# (because it makes use of "gaff.lt" which uses dihedral_style fourier)
-# 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
-# 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/all_atom_examples/force_field_OPLSAA/methane/README_setup.sh b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/README_setup.sh
deleted file mode 100755
index 2c3c21713..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/README_setup.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
-# Create LAMMPS input files this way:
-cd moltemplate_files
-
- # Create the "oplsaa.lt" file which moltemplate will need
-
- cd oplsaa_lt_generator/
- oplsaa_moltemplate.py oplsaa_subset.prm
- mv -f oplsaa.lt ..
- cd ..
-
- # 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/
-
- # Optional:
- # Delete the "oplsaa.lt" file:
- rm -f oplsaa.lt
-
-
-
-cd ../
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/README_run.sh b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/README_run.sh
deleted file mode 100755
index 9f923a6c7..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/README_run.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-# --- Running LAMMPS ---
-# -------- REQUIREMENTS: ---------
-# 1) This example requires building LAMMPS with the "USER-MISC" package.
-# (because it makes use of "gaff.lt" which uses dihedral_style fourier)
-# 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
-# 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/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/README_setup.sh b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/README_setup.sh
deleted file mode 100755
index 2c3c21713..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/README_setup.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
-# Create LAMMPS input files this way:
-cd moltemplate_files
-
- # Create the "oplsaa.lt" file which moltemplate will need
-
- cd oplsaa_lt_generator/
- oplsaa_moltemplate.py oplsaa_subset.prm
- mv -f oplsaa.lt ..
- cd ..
-
- # 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/
-
- # Optional:
- # Delete the "oplsaa.lt" file:
- rm -f oplsaa.lt
-
-
-
-cd ../
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh
deleted file mode 100755
index 2c3c21713..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
-# Create LAMMPS input files this way:
-cd moltemplate_files
-
- # Create the "oplsaa.lt" file which moltemplate will need
-
- cd oplsaa_lt_generator/
- oplsaa_moltemplate.py oplsaa_subset.prm
- mv -f oplsaa.lt ..
- cd ..
-
- # 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/
-
- # Optional:
- # Delete the "oplsaa.lt" file:
- rm -f oplsaa.lt
-
-
-
-cd ../
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
deleted file mode 100644
index d5e469af3..000000000
--- a/tools/moltemplate/examples/all_atom_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/all_atom_examples/force_field_explicit/nanotube+water/run.in.npt b/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/run.in.npt
deleted file mode 100644
index ab6c4bbf9..000000000
--- a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/run.in.npt
+++ /dev/null
@@ -1,104 +0,0 @@
-# THIS EXAMPLE HAS NOT BEEN RIGOROUSLY TESTED.
-# (This simulation may fail.
-# However the "run.in.nvt" example in this directory should work.)
-#
-# Requirements:
-# 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.)
-# The use of fix rigid is controversial. This method is demonstrated below.
-
-# ------------------------------- Initialization Section --------------------
-
-include system.in.init
-
-# ------------------------------- Atom Definition Section -------------------
-
-read_data system.data
-
-# ------------------------------- Settings Section --------------------------
-
-include system.in.settings
-
-# ------------------------------- Run Section -------------------------------
-
-
-# Only the Cgraphene atoms are immobile.
-group mobile subtract all Cgraphene
-
-# (Note: The "Cgraphene" group was defined in system.in.settings.)
-
-
-# Unfortunately you can not use the LAMMPS "minimize" command on this system
-# because there is no way to immobilize the carbon graphene & nanotube atoms
-# during minimization. Instead, we can use langevin dynamics with a large
-# damping parameter and a small timestep.
-
-print "--------- beginning minimization (using fix langevin) ---------"
-
-timestep 0.1
-fix fxlan mobile langevin 1.0 1.0 100.0 48279
-fix fxnve mobile nve # <-- needed by fix langevin (see lammps documentation)
-thermo 100
-run 2500
-
-unfix fxlan
-unfix fxnve
-
-# -- simulation protocol --
-
-print "--------- beginning simulation (using fix nvt) ---------"
-
-timestep 0.25
-dump 1 all custom 1000 traj_npt.lammpstrj id mol type x y z ix iy iz
-
-thermo_style custom step temp pe etotal press vol epair ebond eangle edihed
-thermo 1000 # time interval for printing out "thermo" data
-
-
-
-
-
-# ------------------------- NPT ---------------------------
-
-# Set temp=300K, pressure=100bar, and equilibrate volume only in the z direction
-
-fix fxMoveStuff mobile npt temp 300 300 100 z 100 100 1000.0 dilate mobile
-
-# ------ QUESTIONABLE (see below): ------
-
-fix Ffreezestuff Cgraphene rigid/npt single temp 300 300 100 z 100 100 1000.0 force * off off off torque * off off off dilate mobile
-
-# -- Alternate npt rigid method --
-# I'm not sure which way is more correct, however
-# this also seems to behave in a reasonable-looking way:
-#fix Ffreezestuff Cgraphene rigid single force * off off off torque * off off off
-#
-# The use of either "fix rigid" or "fix rigid/npt" to immobilize
-# an object is somewhat controversial. Feel free to omit it.
-#(Neither Trung or Steve Plimpton use rigid or rigid/npt for immobilizing
-#molecules, but I noticed that at NPT, it does a better job of maintaining
-# the correct volume. However "fix rigid" has changed since then (2011),
-# so this may no longer be true. Please use this example with caution.)
-# ----------------------------------------
-
-# IMPORTANT for NPT: You must use "neigh_modify" to turn off calculation of the
-# forces between immobilized atoms.
-neigh_modify exclude group Cgraphene Cgraphene
-
-# The next two lines recalculate the temperature
-# using only the mobile degrees of freedom:
-
-compute tempMobile mobile temp
-compute pressMobile all pressure tempMobile
-
-thermo_style custom step c_tempMobile c_pressMobile temp press vol
-
-fix_modify fxMoveStuff temp tempMobile
-
-run 100000
-
-write_data system_after_npt.data
-
-# (The "write_restart" and "read_restart" commands were buggy in 2012,
-# but they should work also.)
-
diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_setup.sh b/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_setup.sh
index 88ebec9f4..1e6630a94 100755
--- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_setup.sh
+++ b/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_setup.sh
@@ -1,32 +1,28 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
# Create the coordinates of the atoms using PACKMOL
cd packmol_files
packmol < mix_lipids+water.inp
mv -f system.xyz ../moltemplate_files/
cd ..
# Create LAMMPS input files this way:
cd moltemplate_files
# run moltemplate
moltemplate.sh -xyz system.xyz 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 ../
diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/system.lt
index 4bf6101b6..0ed272710 100644
--- a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/system.lt
+++ b/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/system.lt
@@ -1,57 +1,57 @@
# 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
bond_style harmonic
angle_style harmonic
dihedral_style opls
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
}
write_once("Data Boundary") {
0.0 36.0 xlo xhi
0.0 36.0 ylo yhi
- 0.0 36.0 zlo zhi
+ -18.0 18.0 zlo zhi
}
import "solvent.lt"
import "walls.lt"
import "polymer.lt"
polymer = new Polymer
polymer.rot(-90.0, 0,0,1) # rotate it -90 degrees around the Y axis
polymer.move(19.5,22.5,16.5) # move it near the openning of the hole
####################### Notes: #########################
#
# In this example we deleted solvent and wall molecule objects.
# You can also delete a monomer inside the polymer. To do that use:
# delete polymer/monomers[6]
# You can also delete individual atoms, bonds, angles, dihedrals, & impropers
# from existing molecules. For example to delete an atom in the middle
# of the polymer try this. (Bonds and other interactions will also be removed.)
# delete polymer/monomers[6]/CA
# To delete a bond, try this
# delete polymer/bb6
# Note: This will not delete the angular interactions if they were explicitly
# defined (ie, using "Data Angles" instead of "Data Angles By Type").
# Delete explicit angle, dihedral, and improper interactions manually.
# Note: In both cases the two molecule fragments will keep the same mol counter.
diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/run.in.npt b/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/run.in.npt
index f888d5cda..0b58a8e1b 100644
--- a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/run.in.npt
+++ b/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/run.in.npt
@@ -1,70 +1,120 @@
-# -- Init Section --
+# THIS EXAMPLE HAS NOT BEEN RIGOROUSLY TESTED.
+# (This simulation may fail.
+# However the "run.in.nvt" example in this directory should work.)
+#
+# Requirements:
+# 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.)
+# The use of fix rigid is controversial. This method is demonstrated below.
+
+# ------------------------------- Initialization Section --------------------
include system.in.init
-# -- Atom Definition Section --
+# ------------------------------- Atom Definition Section -------------------
read_data system.data
-# -- Settings Section --
+# ------------------------------- Settings Section --------------------------
include system.in.settings
-# -- Run Section --
+# ------------------------------- Run Section -------------------------------
-timestep 1.0
-dump 1 all custom 500 traj_npt.lammpstrj id mol type x y z ix iy iz
+# Only the groupB atoms are immobile.
+group mobile subtract all groupB
-thermo_style custom step temp pe etotal press vol epair ebond eangle edihed
-thermo 500 # time interval for printing out "thermo" data
+# Unfortunately you can not use the LAMMPS "minimize" command on this system
+# because there is no way to immobilize the wall atoms during minimization.
+# Instead, we can use langevin dynamics with a fast
+# damping parameter and a small timestep.
+print "--------- beginning minimization (using fix langevin) ---------"
-velocity groupB zero angular
-velocity groupB zero linear
-# (I'm not sure if the two lines above are necessary, but they don't hurt.)
+timestep 0.1
+fix fxlan mobile langevin 1.0 1.0 100.0 48279
+fix fxnve mobile nve # <-- needed by fix langevin (see lammps documentation)
+thermo 100
+run 2500
-# Only the groupB atoms are immobile.
+unfix fxlan
+unfix fxnve
-group mobile subtract all groupB
+# -- simulation protocol --
-# ------------------------- NPT ---------------------------
+print "--------- beginning simulation (using fix nvt) ---------"
+
+dump 1 all custom 1000 traj_npt.lammpstrj id mol type x y z ix iy iz
+
+thermo_style custom step temp pe etotal press vol epair ebond eangle edihed
+thermo 200 # time interval for printing out "thermo" data
-# Set temp=300K, pressure=500bar, and equilibrate volume only in the z direction
-fix fMoveStuff mobile npt temp 300 300 100 z 500 500 1000.0 dilate mobile
+# ------------------------- NPT ---------------------------
+
# ------ QUESTIONABLE (see below): ------
-fix Ffreezestuff groupB rigid/npt single temp 300 300 100 z 500 500 1000.0 force * off off off torque * off off off dilate mobile
+fix Ffreezestuff groupB rigid single force * off off off torque * off off off
-# -- Alternate npt rigid method --
-# I'm not sure which way is more correct, however
-# this also seems to behave in a reasonable-looking way:
-#fix Ffreezestuff groupB rigid single force * off off off torque * off off off dilate mobile
-#
-# The use of either "fix rigid" or "fix rigid/npt" to immobilize
-# an object is somewhat controversial. Feel free to omit it.
-#(Neither Trung or Steve Plimpton use rigid or rigid/npt for immobilizing
-#molecules, but I noticed that at NPT, it does a better job of maintaining
-# the correct volume. However "fix rigid" has changed since then (2011),
-# so this may no longer be true. Please use this example with caution.)
-# ----------------------------------------
+# Comment:
+# The use of "fix rigid" to immobilize an object is somewhat controversial.
+# Feel free to omit it.
+# (Neither Trung or Steve Plimpton use fix rigid for immobilizing
+# molecules, but I noticed that at NPT, it does a better job of maintaining
+# the correct volume. However "fix rigid" has changed since then (2011),
+# so this may no longer be true. Please use this example with caution.)
+
+
+
+# Thermostat+Barostat
+# Set temp=300K, pressure=200bar, and equilibrate volume only in the z direction
-# IMPORTANT for NPT: You must use "neigh_modify" to turn off calculation of the
-# forces between immobilized atoms.
-neigh_modify exclude group groupB groupB
+fix fxMoveStuff mobile npt temp 300 300 100 z 200 200 1000.0 dilate mobile drag 2.0
-# The next two lines recalculate the temperature
-# using only the mobile degrees of freedom:
+# ----------------------------------------
+
+# The next two lines recalculate the temperature using
+# only the mobile degrees of freedom (ie. water atom velocities):
compute tempMobile mobile temp
compute pressMobile all pressure tempMobile
thermo_style custom step c_tempMobile c_pressMobile temp press vol
-fix_modify fMoveStuff temp tempMobile
+fix_modify fxMoveStuff temp tempMobile
+
+reset_timestep 0
+
+timestep 0.5
+
+run 100000
+
+timestep 1.0
+
+run 100000
-run 60000
write_data system_after_npt.data
+
+# (The "write_restart" and "read_restart" commands were buggy in 2012,
+# but they should work also.)
+
+
+
+
+
+
+
+# ----- Comment: Avoid using fix rigid/npt on large single rigid objects -----
+#
+# Use of the following is not recommended:
+#
+# fix Ffreezestuff groupB rigid/npt single temp 300 300 100 z 200 200 1000.0 force * off off off torque * off off off dilate mobile
+# (temp=300K, pressure=200bar, and equilibrate volume only in the z direction)
+#
+# In my experience, the system becomes unstable when applying "fix rigid/npt"
+# to the immobile atoms, while also applying "fix npt" on the solvent atoms.
+# (It is probably a bad idea to use two barostats simultaneously.)
+# ----------------------------------------------------------------------------
diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/run.in.nvt b/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/run.in.nvt
index 1278cb11c..c483d0b9a 100644
--- a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/run.in.nvt
+++ b/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/run.in.nvt
@@ -1,49 +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 "groupB" group was defined in the file "system.insettings")
+neigh_modify exclude group groupB groupB
+
# -- 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 groupB groupB
# Only the groupB atoms are immobile.
group mobile subtract all groupB
# 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/all_atom_examples/force_field_AMBER/WARNING.TXT b/tools/moltemplate/examples/force_field_AMBER/WARNING.TXT
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/WARNING.TXT
rename to tools/moltemplate/examples/force_field_AMBER/WARNING.TXT
diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/README.TXT b/tools/moltemplate/examples/force_field_AMBER/benzene/README.TXT
new file mode 100644
index 000000000..ba0f5e6f4
--- /dev/null
+++ b/tools/moltemplate/examples/force_field_AMBER/benzene/README.TXT
@@ -0,0 +1,10 @@
+This example shows how to build a box of benzene molecules using the
+AMBER/GAFF force-field.
+
+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
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README_run.sh b/tools/moltemplate/examples/force_field_AMBER/benzene/README_run.sh
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README_run.sh
rename to tools/moltemplate/examples/force_field_AMBER/benzene/README_run.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh b/tools/moltemplate/examples/force_field_AMBER/benzene/README_setup.sh
similarity index 78%
copy from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh
copy to tools/moltemplate/examples/force_field_AMBER/benzene/README_setup.sh
index 510ae9b40..c2db73b45 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh
+++ b/tools/moltemplate/examples/force_field_AMBER/benzene/README_setup.sh
@@ -1,32 +1,26 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
# 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/all_atom_examples/force_field_AMBER/benzene/README_visualize.txt b/tools/moltemplate/examples/force_field_AMBER/benzene/README_visualize.txt
similarity index 100%
copy from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README_visualize.txt
copy to tools/moltemplate/examples/force_field_AMBER/benzene/README_visualize.txt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/moltemplate_files/benzene.lt b/tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/benzene.lt
similarity index 95%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/moltemplate_files/benzene.lt
rename to tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/benzene.lt
index 31536f5f2..26ef1d535 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/moltemplate_files/benzene.lt
+++ b/tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/benzene.lt
@@ -1,49 +1,51 @@
import "gaff.lt"
-# From "gaff.lt":
+# The "gaff.lt" file is usually located in "src/moltemplate_force_fields".
+# Excerpt:
+#
# @atom:ca # Sp2 C in pure aromatic systems
# @atom:ha # H bonded to aromatic carbon
#
# I looked up the charge of each atom using the OPLSAA parameters
# from the "oplsaa.prm" file distributed with TINKER
# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm
# ---------------------------------------------------------------
# This is NOT how AmberTools assigns charge, and it will NOT
# reproduce the behavior of AMBER force-fields.
Benzene inherits GAFF {
# atomID molID atomType charge X Y Z
write('Data Atoms') {
$atom:C1 $mol @atom:ca -0.115 5.274 1.999 -8.568
$atom:C2 $mol @atom:ca -0.115 6.627 2.018 -8.209
$atom:C3 $mol @atom:ca -0.115 7.366 0.829 -8.202
$atom:C4 $mol @atom:ca -0.115 6.752 -0.379 -8.554
$atom:C5 $mol @atom:ca -0.115 5.399 -0.398 -8.912
$atom:C6 $mol @atom:ca -0.115 4.660 0.791 -8.919
$atom:H11 $mol @atom:ha 0.115 4.704 2.916 -8.573
$atom:H21 $mol @atom:ha 0.115 7.101 2.950 -7.938
$atom:H31 $mol @atom:ha 0.115 8.410 0.844 -7.926
$atom:H41 $mol @atom:ha 0.115 7.322 -1.296 -8.548
$atom:H51 $mol @atom:ha 0.115 4.925 -1.330 -9.183
$atom:H61 $mol @atom:ha 0.115 3.616 0.776 -9.196
}
write('Data Bond List') {
$bond:C12 $atom:C1 $atom:C2
$bond:C23 $atom:C2 $atom:C3
$bond:C34 $atom:C3 $atom:C4
$bond:C45 $atom:C4 $atom:C5
$bond:C56 $atom:C5 $atom:C6
$bond:C61 $atom:C6 $atom:C1
$bond:C1H1 $atom:C1 $atom:H11
$bond:C2H2 $atom:C2 $atom:H21
$bond:C3H3 $atom:C3 $atom:H31
$bond:C4H4 $atom:C4 $atom:H41
$bond:C5H5 $atom:C5 $atom:H51
$bond:C6H6 $atom:C6 $atom:H61
}
} # Benzene
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/system.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/moltemplate_files/system.lt
rename to tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/system.lt
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/optional_cleanup/README_remove_irrelevant_info.sh
rename to tools/moltemplate/examples/force_field_AMBER/benzene/optional_cleanup/README_remove_irrelevant_info.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/run.in.npt b/tools/moltemplate/examples/force_field_AMBER/benzene/run.in.npt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/run.in.npt
rename to tools/moltemplate/examples/force_field_AMBER/benzene/run.in.npt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/run.in.nvt b/tools/moltemplate/examples/force_field_AMBER/benzene/run.in.nvt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/run.in.nvt
rename to tools/moltemplate/examples/force_field_AMBER/benzene/run.in.nvt
diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README.TXT b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README.TXT
new file mode 100644
index 000000000..b02f184dd
--- /dev/null
+++ b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README.TXT
@@ -0,0 +1,13 @@
+This example shows how to simulate a mixture of ethylene and benzene
+using the AMBER/GAFF force field.
+
+As of 2016-11-21, this code has not been tested for accuracy.
+(See the WARNING.TXT file.)
+
+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
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/README_run.sh b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_run.sh
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/README_run.sh
rename to tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_run.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README_setup.sh b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_setup.sh
similarity index 78%
copy from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README_setup.sh
copy to tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_setup.sh
index 510ae9b40..0e2a17d9b 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README_setup.sh
+++ b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_setup.sh
@@ -1,32 +1,25 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
-
# 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/all_atom_examples/force_field_AMBER/ethylene+benzene/README_visualize.txt b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_visualize.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/README_visualize.txt
rename to tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_visualize.txt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/images/benzene.jpg b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/benzene.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/images/benzene.jpg
rename to tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/benzene.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg
rename to tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/images/ethylene.jpg b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/ethylene.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/images/ethylene.jpg
rename to tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/ethylene.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/moltemplate_files/benzene.lt b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/benzene.lt
similarity index 92%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/moltemplate_files/benzene.lt
rename to tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/benzene.lt
index f4a560ad0..47b1505c5 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/moltemplate_files/benzene.lt
+++ b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/benzene.lt
@@ -1,47 +1,47 @@
+
import "gaff.lt"
-# The "gaff.lt" file is usually located in $MOLTEMPLATE_PATH (and is
-# distributed with moltemplate. See the "Installation" section in the manual.)
+# The "gaff.lt" file is usually located in "src/moltemplate_force_fields".
# It contains definitions of the atoms "ca", "ha", as well as the bonded
# and non-bonded interactions between them (and many other atoms).
#
# Moltemplate is only a simple text manipulation tool. It cannot
# calculate atomic charge using quantom chemistry methods.
# Atom charges for this example were taken from the OPLSAA force field file:
# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm
# However, normally simulations in AMBER are assigned charges using the
# "HF/6-31G* RESP2" or "AM1-BCC3" methods using AmberTools.
Benzene inherits GAFF {
write('Data Atoms') {
$atom:C1 $mol @atom:ca 0.115 5.274 1.999 -8.568
$atom:C2 $mol @atom:ca 0.115 6.627 2.018 -8.209
$atom:C3 $mol @atom:ca 0.115 7.366 0.829 -8.202
$atom:C4 $mol @atom:ca 0.115 6.752 -0.379 -8.554
$atom:C5 $mol @atom:ca 0.115 5.399 -0.398 -8.912
$atom:C6 $mol @atom:ca 0.115 4.660 0.791 -8.919
$atom:H11 $mol @atom:ha -0.115 4.704 2.916 -8.573
$atom:H21 $mol @atom:ha -0.115 7.101 2.950 -7.938
$atom:H31 $mol @atom:ha -0.115 8.410 0.844 -7.926
$atom:H41 $mol @atom:ha -0.115 7.322 -1.296 -8.548
$atom:H51 $mol @atom:ha -0.115 4.925 -1.330 -9.183
$atom:H61 $mol @atom:ha -0.115 3.616 0.776 -9.196
}
write('Data Bond List') {
$bond:C12 $atom:C1 $atom:C2
$bond:C23 $atom:C2 $atom:C3
$bond:C34 $atom:C3 $atom:C4
$bond:C45 $atom:C4 $atom:C5
$bond:C56 $atom:C5 $atom:C6
$bond:C61 $atom:C6 $atom:C1
$bond:C1H1 $atom:C1 $atom:H11
$bond:C2H2 $atom:C2 $atom:H21
$bond:C3H3 $atom:C3 $atom:H31
$bond:C4H4 $atom:C4 $atom:H41
$bond:C5H5 $atom:C5 $atom:H51
$bond:C6H6 $atom:C6 $atom:H61
}
} # Benzene
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/moltemplate_files/charges_come_from_OPLSAA/oplsaa_subset.prm b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/charges_come_from_OPLSAA/oplsaa_subset.prm
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/moltemplate_files/charges_come_from_OPLSAA/oplsaa_subset.prm
rename to tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/charges_come_from_OPLSAA/oplsaa_subset.prm
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/moltemplate_files/ethylene.lt b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/ethylene.lt
similarity index 89%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/moltemplate_files/ethylene.lt
rename to tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/ethylene.lt
index 2b1c75921..cad6ea4a8 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/moltemplate_files/ethylene.lt
+++ b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/ethylene.lt
@@ -1,38 +1,38 @@
+
import "gaff.lt"
-# The "gaff.lt" file is usually located in $MOLTEMPLATE_PATH (and is
-# distributed with moltemplate. See the "Installation" section in the manual.)
+# The "gaff.lt" file is usually located in "src/moltemplate_force_fields".
# It contains definitions of the atoms "c2", "hc", as well as the bonded
# and non-bonded interactions between them (and many other atoms).
#
# Moltemplate is only a simple text manipulation tool. It cannot
# calculate atomic charge using quantom chemistry methods.
# Atom charges for this example were taken from the OPLSAA force field file:
# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm
# However, normally simulations in AMBER are assigned charges using the
# "HF/6-31G* RESP2" or "AM1-BCC3" methods using AmberTools.
Ethylene inherits GAFF {
# atom-id mol-id atom-type charge X Y Z
write('Data Atoms') {
$atom:C1 $mol @atom:c2 -0.23 -0.6695 0.000000 0.000000
$atom:C2 $mol @atom:c2 -0.23 0.6695 0.000000 0.000000
$atom:H11 $mol @atom:hc 0.115 -1.234217 -0.854458 0.000000
$atom:H12 $mol @atom:hc 0.115 -1.234217 0.854458 0.000000
$atom:H21 $mol @atom:hc 0.115 1.234217 -0.854458 0.000000
$atom:H22 $mol @atom:hc 0.115 1.234217 0.854458 0.000000
}
write('Data Bond List') {
$bond:C12 $atom:C1 $atom:C2
$bond:C1H1 $atom:C1 $atom:H11
$bond:C1H2 $atom:C1 $atom:H12
$bond:C2H1 $atom:C2 $atom:H21
$bond:C2H2 $atom:C2 $atom:H22
}
} # Ethylene
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/system.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/moltemplate_files/system.lt
rename to tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/system.lt
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/optional_cleanup/README_remove_irrelevant_info.sh
rename to tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/optional_cleanup/README_remove_irrelevant_info.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/run.in.npt b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.npt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/run.in.npt
rename to tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.npt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/run.in.nvt b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.nvt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/run.in.nvt
rename to tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.nvt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/README.TXT b/tools/moltemplate/examples/force_field_AMBER/hexadecane/README.TXT
similarity index 96%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/README.TXT
rename to tools/moltemplate/examples/force_field_AMBER/hexadecane/README.TXT
index 64ec594c6..a3f011167 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/README.TXT
+++ b/tools/moltemplate/examples/force_field_AMBER/hexadecane/README.TXT
@@ -1,44 +1,44 @@
This example is a simple simulation of 288 hexadecane molecules in a box at
room temperature and atmospheric pressure. Please read the WARNING.TXT file.
-------- REQUIREMENTS: ---------
This example requires building LAMMPS with the "USER-MISC" package.
(because it uses dihedral_style fourier)
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
run a short simulation are provided in other README files:
step 1) to setup the LAMMPS input files, run this file:
README_setup.sh
(Currently there is a bug which makes this step slow.
I'll fix it later -Andrew 2013-10-15.)
step 2) to run LAMMPS, follow the instructions in this file:
README_run.sh
------------ NOTE: There are two versions of this example. ----------------
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 "common" subdirectory).
+(located in the "src/moltemplate_force_fields/" subdirectory).
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,
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
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
relying on some kind of mysterious "black box" to do it for them.)
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/README_run.sh b/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_run.sh
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/README_run.sh
rename to tools/moltemplate/examples/force_field_AMBER/hexadecane/README_run.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/README_setup.sh b/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_setup.sh
similarity index 78%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/README_setup.sh
rename to tools/moltemplate/examples/force_field_AMBER/hexadecane/README_setup.sh
index 510ae9b40..c2db73b45 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/README_setup.sh
+++ b/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_setup.sh
@@ -1,32 +1,26 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
# 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/all_atom_examples/force_field_AMBER/hexadecane/README_visualize.txt b/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_visualize.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/README_visualize.txt
rename to tools/moltemplate/examples/force_field_AMBER/hexadecane/README_visualize.txt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/WARNING.TXT b/tools/moltemplate/examples/force_field_AMBER/hexadecane/WARNING.TXT
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/WARNING.TXT
rename to tools/moltemplate/examples/force_field_AMBER/hexadecane/WARNING.TXT
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg b/tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg
rename to tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg b/tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg
rename to tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/images/hexadecane_LR.jpg b/tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/images/hexadecane_LR.jpg
rename to tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/moltemplate_files/ch2group.lt b/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch2group.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/moltemplate_files/ch2group.lt
rename to tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch2group.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/moltemplate_files/ch3group.lt b/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch3group.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/moltemplate_files/ch3group.lt
rename to tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch3group.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/moltemplate_files/hexadecane.lt b/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/hexadecane.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/moltemplate_files/hexadecane.lt
rename to tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/hexadecane.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/system.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/moltemplate_files/system.lt
rename to tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/system.lt
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/optional_cleanup/README_remove_irrelevant_info.sh
rename to tools/moltemplate/examples/force_field_AMBER/hexadecane/optional_cleanup/README_remove_irrelevant_info.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/run.in.npt b/tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.npt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/run.in.npt
rename to tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.npt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/run.in.nvt b/tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.nvt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/hexadecane/run.in.nvt
rename to tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.nvt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README.TXT b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README.TXT
similarity index 57%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README.TXT
rename to tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README.TXT
index 2e8cef307..b57d0e76c 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README.TXT
+++ b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README.TXT
@@ -1,51 +1,41 @@
-This is an example of how to use "canned" force-fields in like GAFF in LAMMPS.
-In this example, we specify only the atom names, bond connectivity,
-(and coordinates and charge), and use moltemplate to
-load the GAFF parameters from an external file (gaff.lt)
-(...instead of specifying them explicitly in the molecule definition).
-
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 paramters are defined explicitly in common/tip3p_2004.lt)
-For this to work, make sure you have defined the MOLTEMPLATE_PATH
-environment variable and set it to "common". See manual for more details.)
+(The water molecule paramters are defined explicitly in
+ src/moltemplate_force_fields/tip3p_2004.lt)
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
----------------- CHARGE ----------------------
NOTE: The GAFF force-field DOES NOT ASSIGN ATOM CHARGE.
In this example, atom charges were taken from the OPLSAA force field file:
http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm
This is not the charge in AMBER simunlations is typically assigned.
(As of 2014, it is assigned using the "HF/6-31G* RESP2" or "AM1-BCC3"
methods using AmberTools (which are not available in moltemplate).
http://ambermd.org/doc6/html/AMBER-sh-19.4.html
http://ambermd.org/tutorials/basic/tutorial4b/)
-------- REQUIREMENTS: ---------
-1) This example requires building LAMMPS with the "USER-MISC" package.
- (because it makes use of "gaff.lt" which uses dihedral_style fourier)
- To do this, type "make yes-user-misc" before compiling LAMMPS.
- http://lammps.sandia.gov/doc/Section_start.html#start_3
- 2) You must define your MOLTEMPLATE_PATH environment variable
- and set it to the "common" subdirectory of your moltemplate distribution.
- (See the "Installation" section in the moltemplate manual.)
+ This example requires building LAMMPS with the "USER-MISC" package.
+ (because it makes use of "gaff.lt" which uses dihedral_style fourier)
+ 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
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/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
similarity index 100%
copy from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
copy to tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/README_setup.sh b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh
similarity index 78%
copy from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/README_setup.sh
copy to tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh
index 510ae9b40..c2db73b45 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/README_setup.sh
+++ b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh
@@ -1,32 +1,26 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
# 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/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_visualize.txt b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_visualize.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_visualize.txt
rename to tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_visualize.txt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/images/isobutane.jpg b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/isobutane.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/images/isobutane.jpg
rename to tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/isobutane.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=0_LR.jpg b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=0_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=0_LR.jpg
rename to tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=0_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=840ps_LR.jpg b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=840ps_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=840ps_LR.jpg
rename to tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=840ps_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/images/water.jpg b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/images/water.jpg
rename to tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/isobutane.lt b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/isobutane.lt
similarity index 93%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/isobutane.lt
rename to tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/isobutane.lt
index 22b1048d1..e244d4427 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/isobutane.lt
+++ b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/isobutane.lt
@@ -1,56 +1,56 @@
+
import "gaff.lt"
-# The "gaff.lt" file is usually located in $MOLTEMPLATE_PATH (and is
-# distributed with moltemplate. See the "Installation" section in the manual.)
+# The "gaff.lt" file is usually located in "src/moltemplate_force_fields".
# It contains definitions of the atoms "c3", "h1", as well as the bonded
# and non-bonded interactions between them (and many other atoms).
#
# Moltemplate is only a simple text manipulation tool. It cannot
# calculate atomic charge using quantom chemistry methods.
# Atom charges for this example were taken from the OPLSAA force field file:
# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm
# However, normally simulations in AMBER are assigned charges using the
# "HF/6-31G* RESP2" or "AM1-BCC3" methods using AmberTools.
Isobutane inherits GAFF {
# atomID molID atomTyle charge X Y Z
write('Data Atoms') {
$atom:C0 $mol:. @atom:c3 -0.0600 -0.001 -0.001 -0.439
$atom:C1 $mol:. @atom:c3 -0.1800 -1.257 -0.726 0.078
$atom:C2 $mol:. @atom:c3 -0.1800 1.258 -0.726 0.072
$atom:C3 $mol:. @atom:c3 -0.1800 -0.001 1.453 0.069
$atom:H0 $mol:. @atom:hc 0.0600 -0.003 -0.004 -1.439
$atom:H11 $mol:. @atom:hc 0.0600 -2.075 -0.255 -0.254
$atom:H12 $mol:. @atom:hc 0.0600 -1.256 -0.724 1.078
$atom:H13 $mol:. @atom:hc 0.0600 -1.259 -1.669 -0.253
$atom:H21 $mol:. @atom:hc 0.0600 2.074 -0.255 -0.264
$atom:H22 $mol:. @atom:hc 0.0600 1.258 -1.669 -0.259
$atom:H23 $mol:. @atom:hc 0.0600 1.261 -0.724 1.072
$atom:H31 $mol:. @atom:hc 0.0600 -0.817 1.923 -0.263
$atom:H32 $mol:. @atom:hc 0.0600 0.816 1.923 -0.268
$atom:H33 $mol:. @atom:hc 0.0600 0.003 1.456 1.070
}
# The "." in "$mol:." refers to this molecule object's molecule ID
# (It means we do not expect this molecule to be a group or a subunit
# of a larger molecule. Otherwise we would use "$mol:..." instead.)
write('Data Bond List') {
$bond:C01 $atom:C0 $atom:C1
$bond:C02 $atom:C0 $atom:C2
$bond:C03 $atom:C0 $atom:C3
$bond:C0H $atom:C0 $atom:H0
$bond:C1H1 $atom:C1 $atom:H11
$bond:C1H2 $atom:C1 $atom:H12
$bond:C1H3 $atom:C1 $atom:H13
$bond:C2H1 $atom:C2 $atom:H21
$bond:C2H2 $atom:C2 $atom:H22
$bond:C2H3 $atom:C2 $atom:H23
$bond:C3H1 $atom:C3 $atom:H31
$bond:C3H2 $atom:C3 $atom:H32
$bond:C3H3 $atom:C3 $atom:H33
}
} # Isobutane
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/system.lt
similarity index 74%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/system.lt
rename to tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/system.lt
index 50c539250..e10f0bcec 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/system.lt
+++ b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/system.lt
@@ -1,32 +1,29 @@
import "tip3p_2004.lt"
# <- This defines the TIP3P water molecule. This file is
- # located in the "common" directory. You can either copy it
- # here, or (preferably), you can define a MOLTEMPLATE_PATH
- # environment variable and point it to "common".
- # (as explained in the installation section of the manual).
+ # located in the "src/moltemplate_force_fields" directory.
import "isobutane.lt" # <- defines the "Isobutane" molecule type.
# Periodic boundary conditions:
write_once("Data Boundary") {
0.0 41.50 xlo xhi
0.0 41.50 ylo yhi
0.0 41.50 zlo zhi
}
# The next command generates a (rather dense) cubic lattice with
# spacing 3.45 Angstroms. (The pressure must be equilibrated later.)
wat = new TIP3P_2004 [12].move(0.00, 0.00, 3.45)
[12].move(0.00, 3.45, 0.00)
[12].move(3.45, 0.00, 0.00)
isobutane = new Isobutane [4].move(0, 0, 10.35)
[4].move(0, 10.35, 0)
[4].move(10.35, 0, 0)
# move the isobutane molecules slightly to reduce overlap with the water
isobutane[*][*][*].move(1.725, 1.725, 1.725)
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/optional_cleanup/README_remove_irrelevant_info.sh
rename to tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/optional_cleanup/README_remove_irrelevant_info.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/run.in.npt b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.npt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/run.in.npt
rename to tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.npt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/run.in.nvt b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.nvt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/run.in.nvt
rename to tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.nvt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/WARNING.TXT b/tools/moltemplate/examples/force_field_OPLSAA/WARNING.TXT
similarity index 91%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/WARNING.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/WARNING.TXT
index e95cac192..0d8c8e030 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/WARNING.TXT
+++ b/tools/moltemplate/examples/force_field_OPLSAA/WARNING.TXT
@@ -1,29 +1,28 @@
# -------- WARNING: --------
This directory contains some examples of all-atom simulations using the OPLSAA
-force field, prepared using Jason Lambert's oplsaa_moltemplate.py conversion
-tool, and moltemplate.
+force field.
This software is experimental, and the force-fields and equilbration protocols
have not been tested carefully by me. There is no gaurantee that simulations
prepared using moltemplate will reproduce the behavior of other MD codes.
# -------- REQUEST FOR HELP: --------
If you notice a problem with these examples, please report it.
Peer-review is the only way to improve this software (or any software).
Other suggestions are also welcome!
(Contact jewett.aij@gmail.com, 2014-4-19)
--- Improper angles ---
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
between what moltemplate and other molecule builders generates.)
-----------
For more details how to use the OPLSAA force-field, read the "README.TXT"
file located in "ethylene/moltemplate_files/oplsaa_lt_generator/README.TXT"
diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README.TXT
new file mode 100644
index 000000000..abef639d4
--- /dev/null
+++ b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README.TXT
@@ -0,0 +1,40 @@
+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.
+
+1) Create the "system.data", "system.in.init", and "system.in.settings"
+files which LAMMPS will read by running:
+
+moltemplate.sh system.lt
+
+
+2) Run LAMMPS in this order:
+
+lmp_mpi -i run.in.min # minimize the energy (to avoid atom overlap) before...
+lmp_mpi -i run.in.nvt # running the simulation at constant temperature
+
+(The name of the LAMMPS executable, eg "lmp_mpi", may vary.)
+
+---- 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.
+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",
+(as well as the "OPLSAA" force-field object which it defines). Excerpt:
+
+import "loplsaa.lt"
+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
+to generate them for you. You can also specify some of the angles and
+dihedrals explicitly, and let the force-field handle the rest.
+(Many of the examples which come with moltemplate do this.)
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_run.sh
similarity index 77%
copy from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
copy to tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_run.sh
index 9f923a6c7..b31401f13 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
+++ b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_run.sh
@@ -1,39 +1,34 @@
# --- Running LAMMPS ---
-# -------- REQUIREMENTS: ---------
-# 1) This example requires building LAMMPS with the "USER-MISC" package.
-# (because it makes use of "gaff.lt" which uses dihedral_style fourier)
-# 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
# 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.min # minimization
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/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_setup.sh
similarity index 69%
copy from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh
copy to tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_setup.sh
index 510ae9b40..54a6484da 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh
+++ b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_setup.sh
@@ -1,32 +1,26 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
# 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/
+ 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
+# 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/all_atom_examples/force_field_OPLSAA/alkane_chain_single/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_visualize.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/README_visualize.txt
rename to tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_visualize.txt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/images/ch2_ry90.jpg b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/ch2_ry90.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/images/ch2_ry90.jpg
rename to tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/ch2_ry90.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/images/ch3_ry60.jpg b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/ch3_ry60.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/images/ch3_ry60.jpg
rename to tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/ch3_ry60.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/images/t=0.jpg b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/t=0.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/images/t=0.jpg
rename to tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/t=0.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/images/t=1ns.jpg b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/t=1ns.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/images/t=1ns.jpg
rename to tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/t=1ns.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/alkane50.lt b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/alkane50.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/alkane50.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/alkane50.lt
diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch2group.lt b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch2group.lt
new file mode 100644
index 000000000..510b7e111
--- /dev/null
+++ b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch2group.lt
@@ -0,0 +1,82 @@
+# 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:
+
+import "oplsaa.lt" # <-- defines the standard "OPLSAA" force field
+import "loplsaa.lt" # <-- custom parameters for long alkane chains taken from
+ # Sui et al. J.Chem.Theory.Comp (2012), 8, 1459
+ # To use the ordinary OPLSAA force field parameters,
+ # (instead of the Sui et al. parameters), change the
+ # atom types below from "@atom:81L","@atom:85LCH2" to
+ # "@atom:81" and "@atom:85" (defined in "oplsaa.lt")
+
+
+
+# Then define "CH2":
+
+
+CH2 inherits OPLSAA {
+
+ # atom-id mol-id atom-type charge x y z
+
+ write("Data Atoms") {
+ $atom:C $mol:... @atom:81L 0.0 0.000000 0.000000 0.000000
+ $atom:H1 $mol:... @atom:85LCH2 0.0 0.000000 0.631044 0.892431
+ $atom:H2 $mol:... @atom:85LCH2 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",
+ # which is usually located in the "src/moltemplate_force_fields/" subdirectory
+ # @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/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch3group.lt b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch3group.lt
new file mode 100644
index 000000000..b01c8c0cd
--- /dev/null
+++ b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch3group.lt
@@ -0,0 +1,83 @@
+# 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:
+
+import "oplsaa.lt" # <-- defines the standard "OPLSAA" force field
+import "loplsaa.lt" # <-- custom parameters for long alkane chains taken from
+ # Sui et al. J.Chem.Theory.Comp (2012), 8, 1459
+ # To use the ordinary OPLSAA force field parameters,
+ # (instead of the Sui et al. parameters), change the
+ # atom types below from "@atom:80L","@atom:85LCH3" to
+ # "@atom:80" and "@atom:85" (defined in "oplsaa.lt")
+
+
+
+# Then define "CH3":
+
+
+CH3 inherits OPLSAA {
+
+ # atom-id mol-id atom-type charge x y z
+
+ write("Data Atoms") {
+ $atom:C $mol:... @atom:80L 0.0 0.000000 0.000000 0.000000
+ $atom:H1 $mol:... @atom:85LCH3 0.0 0.000000 0.631044 0.892431
+ $atom:H2 $mol:... @atom:85LCH3 0.0 0.000000 0.631044 -0.892431
+ $atom:H3 $mol:... @atom:85LCH3 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
+ }
+
+ # 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.
+
+} # 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/common/oplsaa/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
similarity index 100%
rename from tools/moltemplate/common/oplsaa/AUTHOR.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/README.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/README.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm
rename to tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/system.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/system.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/system.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/run.in.min b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/run.in.min
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/run.in.min
rename to tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/run.in.min
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/run.in.nvt b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/run.in.nvt
similarity index 100%
copy from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/run.in.nvt
copy to tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/run.in.nvt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README.TXT
similarity index 65%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/README.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README.TXT
index f78addd5e..f744e1718 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/README.TXT
+++ b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README.TXT
@@ -1,13 +1,12 @@
This is an example of how to use the OPLSAA force-field in LAMMPS
-(using moltemplate.sh and Jason Lambert's oplsaa_moltemplate.py conversion tool)
-As of 2014-12-19, this code has not been tested for accuracy.
+As of 2016-11-21, this code has not been tested for accuracy.
(See the WARNING.TXT file.)
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
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_run.sh
similarity index 81%
copy from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
copy to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_run.sh
index 9f923a6c7..5f8286664 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
+++ b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_run.sh
@@ -1,39 +1,34 @@
# --- Running LAMMPS ---
-# -------- REQUIREMENTS: ---------
-# 1) This example requires building LAMMPS with the "USER-MISC" package.
-# (because it makes use of "gaff.lt" which uses dihedral_style fourier)
-# 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
# 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/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_setup.sh
similarity index 69%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_setup.sh
index 510ae9b40..54a6484da 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh
+++ b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_setup.sh
@@ -1,32 +1,26 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
# 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/
+ 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
+# 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/all_atom_examples/force_field_OPLSAA/ethylene+benzene/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_visualize.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/README_visualize.txt
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_visualize.txt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/images/benzene.jpg b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/benzene.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/images/benzene.jpg
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/benzene.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/images/ethylene.jpg b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/ethylene.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/images/ethylene.jpg
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/ethylene.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/benzene.lt b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/benzene.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/benzene.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/benzene.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/ethylene.lt b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/ethylene.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/ethylene.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/ethylene.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/README.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/README.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/README.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/README.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_minimal.prm
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_minimal.prm
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_simplified.prm
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_simplified.prm
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/system.lt
similarity index 99%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/system.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/system.lt
index 1a7cc0967..49458a5b4 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/system.lt
+++ b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/system.lt
@@ -1,29 +1,28 @@
import "ethylene.lt" # <- defines the "Ethylene" molecule type.
import "benzene.lt" # <- defines the "Benzene" molecule type.
# Periodic boundary conditions:
write_once("Data Boundary") {
0.0 80.00 xlo xhi
0.0 80.00 ylo yhi
0.0 80.00 zlo zhi
}
# Create 1000 ethylenes and 500 benzenes
ethylenes = new Ethylene[10].move(8.0, 0, 0)
[10].move(0, 8.0, 0)
[10].move(0, 0, 8.0)
benzenes = new Benzene[10].move(8.0, 0, 0)
[10].move(0, 8.0, 0)
[5].move(0, 0, 16.0)
# Now shift the positions of all of the benzene molecules,
# to reduce the chance that they overlap with the ethylene molecules.
benzenes[*][*][*].move(4.0, 4.0, 4.0)
-
# Note: There is also an example which shows how to generate the coordinates
# using PACKMOL. (That allows us to omit the coordinates and .move() commands.)
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/run.in.npt b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/run.in.npt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/run.in.npt
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/run.in.npt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/run.in.nvt b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/run.in.nvt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/run.in.nvt
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/run.in.nvt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README.TXT
similarity index 86%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README.TXT
index 32252bad0..af95dca52 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README.TXT
+++ b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README.TXT
@@ -1,24 +1,23 @@
This is an example of how to use the OPLSAA force-field in LAMMPS
-(using moltemplate.sh and Jason Lambert's oplsaa_moltemplate.py conversion tool)
This example also shows how to use moltemplate in combination with PACKMOL.
(PACKMOL is a useful program for generating atomic coordinates. In this example,
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
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.)
-As of 2014-4-06, this code has not been tested for accuracy.
+As of 2016-11-21, this code has not been tested for accuracy.
(See the WARNING.TXT file.)
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
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_run.sh
similarity index 81%
copy from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
copy to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_run.sh
index 9f923a6c7..5f8286664 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
+++ b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_run.sh
@@ -1,39 +1,34 @@
# --- Running LAMMPS ---
-# -------- REQUIREMENTS: ---------
-# 1) This example requires building LAMMPS with the "USER-MISC" package.
-# (because it makes use of "gaff.lt" which uses dihedral_style fourier)
-# 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
# 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/all_atom_examples/force_field_AMBER/ethylene+benzene/README_setup.sh b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_setup.sh
similarity index 67%
copy from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/README_setup.sh
copy to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_setup.sh
index 510ae9b40..60daffc2b 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/README_setup.sh
+++ b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_setup.sh
@@ -1,32 +1,37 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
+
+# Create the coordinates of the atoms using PACKMOL
+cd packmol_files
+
+ packmol < mix_ethylene+benzene.inp
+ mv -f system.xyz ../moltemplate_files/
+
+cd ..
# Create LAMMPS input files this way:
cd moltemplate_files
# run moltemplate
- moltemplate.sh system.lt
+ moltemplate.sh -xyz system.xyz 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/
+ 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
+# 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/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_visualize.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_visualize.txt
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_visualize.txt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/benzene.jpg b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/benzene.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/benzene.jpg
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/benzene.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene+benzene_box80x80x80_LR.jpg b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene+benzene_box80x80x80_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene+benzene_box80x80x80_LR.jpg
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene+benzene_box80x80x80_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene.jpg b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene.jpg
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/benzene.lt b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/benzene.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/benzene.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/benzene.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/ethylene.lt b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/ethylene.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/ethylene.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/ethylene.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/README.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/README.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/README.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/README.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_minimal.prm
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_minimal.prm
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_simplified.prm
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_simplified.prm
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/system.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/system.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/system.lt
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/system.xyz
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/system.xyz
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/README.TXT
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/README.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/README.TXT
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/benzene.xyz b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/benzene.xyz
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/benzene.xyz
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/benzene.xyz
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/ethylene.xyz b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/ethylene.xyz
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/ethylene.xyz
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/ethylene.xyz
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/mix_ethylene+benzene.inp b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/mix_ethylene+benzene.inp
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/mix_ethylene+benzene.inp
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/mix_ethylene+benzene.inp
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.npt b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.npt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.npt
rename to tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.npt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.nvt b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.nvt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.nvt
rename to tools/moltemplate/examples/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/force_field_OPLSAA/hexadecane/README.TXT
new file mode 100644
index 000000000..eceba67ef
--- /dev/null
+++ b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README.TXT
@@ -0,0 +1,43 @@
+This example is a simple simulation of many long alkane chains (hexadecane) in a
+box at room temperature and atmospheric pressure. Please read "WARNING.TXT".
+
+NOTE: This particular example uses the OPLSAA force-field
+ However, moltemplate is not limited to OPLSAA.
+
+1) Create the "system.data", "system.in.init", and "system.in.settings"
+files which LAMMPS will read by running:
+
+moltemplate.sh system.lt
+
+
+2) Run LAMMPS in this order:
+
+lmp_mpi -i run.in.min # minimize the energy (to avoid atom overlap) before...
+lmp_mpi -i run.in.npt # running the simulation at constant pressure
+lmp_mpi -i run.in.nvt # running the simulation at constant temperature
+
+(The name of the LAMMPS executable, eg "lmp_mpi", may vary.)
+
+---- 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.
+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",
+(as well as the "OPLSAA" force-field object which it defines). Excerpt:
+
+import "loplsaa.lt"
+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
+to generate them for you. You can also specify some of the angles and
+dihedrals explicitly, and let the force-field handle the rest.
+(Many of the examples which come with moltemplate do this.)
+
+
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_run.sh
similarity index 81%
copy from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
copy to tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_run.sh
index 9f923a6c7..5f8286664 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
+++ b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_run.sh
@@ -1,39 +1,34 @@
# --- Running LAMMPS ---
-# -------- REQUIREMENTS: ---------
-# 1) This example requires building LAMMPS with the "USER-MISC" package.
-# (because it makes use of "gaff.lt" which uses dihedral_style fourier)
-# 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
# 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/all_atom_examples/force_field_AMBER/ethylene+benzene/README_setup.sh b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_setup.sh
similarity index 69%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/README_setup.sh
rename to tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_setup.sh
index 510ae9b40..33b505dbb 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/ethylene+benzene/README_setup.sh
+++ b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_setup.sh
@@ -1,32 +1,29 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
# 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/
+ 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
+# 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/all_atom_examples/force_field_OPLSAA/hexadecane/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_visualize.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/README_visualize.txt
rename to tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_visualize.txt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/WARNING.TXT b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/WARNING.TXT
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/WARNING.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/hexadecane/WARNING.TXT
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg
rename to tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg
rename to tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/images/hexadecane_LR.jpg b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/images/hexadecane_LR.jpg
rename to tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_LR.jpg
diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt
new file mode 100644
index 000000000..510b7e111
--- /dev/null
+++ b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt
@@ -0,0 +1,82 @@
+# 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:
+
+import "oplsaa.lt" # <-- defines the standard "OPLSAA" force field
+import "loplsaa.lt" # <-- custom parameters for long alkane chains taken from
+ # Sui et al. J.Chem.Theory.Comp (2012), 8, 1459
+ # To use the ordinary OPLSAA force field parameters,
+ # (instead of the Sui et al. parameters), change the
+ # atom types below from "@atom:81L","@atom:85LCH2" to
+ # "@atom:81" and "@atom:85" (defined in "oplsaa.lt")
+
+
+
+# Then define "CH2":
+
+
+CH2 inherits OPLSAA {
+
+ # atom-id mol-id atom-type charge x y z
+
+ write("Data Atoms") {
+ $atom:C $mol:... @atom:81L 0.0 0.000000 0.000000 0.000000
+ $atom:H1 $mol:... @atom:85LCH2 0.0 0.000000 0.631044 0.892431
+ $atom:H2 $mol:... @atom:85LCH2 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",
+ # which is usually located in the "src/moltemplate_force_fields/" subdirectory
+ # @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/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt
new file mode 100644
index 000000000..b01c8c0cd
--- /dev/null
+++ b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt
@@ -0,0 +1,83 @@
+# 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:
+
+import "oplsaa.lt" # <-- defines the standard "OPLSAA" force field
+import "loplsaa.lt" # <-- custom parameters for long alkane chains taken from
+ # Sui et al. J.Chem.Theory.Comp (2012), 8, 1459
+ # To use the ordinary OPLSAA force field parameters,
+ # (instead of the Sui et al. parameters), change the
+ # atom types below from "@atom:80L","@atom:85LCH3" to
+ # "@atom:80" and "@atom:85" (defined in "oplsaa.lt")
+
+
+
+# Then define "CH3":
+
+
+CH3 inherits OPLSAA {
+
+ # atom-id mol-id atom-type charge x y z
+
+ write("Data Atoms") {
+ $atom:C $mol:... @atom:80L 0.0 0.000000 0.000000 0.000000
+ $atom:H1 $mol:... @atom:85LCH3 0.0 0.000000 0.631044 0.892431
+ $atom:H2 $mol:... @atom:85LCH3 0.0 0.000000 0.631044 -0.892431
+ $atom:H3 $mol:... @atom:85LCH3 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
+ }
+
+ # 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.
+
+} # 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/examples/all_atom_examples/force_field_OPLSAA/hexadecane/moltemplate_files/hexadecane.lt b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/hexadecane.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/moltemplate_files/hexadecane.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/hexadecane.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/README.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/README.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm
rename to tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/system.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/moltemplate_files/system.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/system.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/run.in.npt b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.npt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/run.in.npt
rename to tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.npt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/run.in.nvt b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.nvt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/run.in.nvt
rename to tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.nvt
diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/methane/README.TXT
new file mode 100644
index 000000000..9f9e9d099
--- /dev/null
+++ b/tools/moltemplate/examples/force_field_OPLSAA/methane/README.TXT
@@ -0,0 +1,24 @@
+This example demonstrates how to build a simulation containing a box of methane.
+(Not a very interesting example.)
+
+---- Details ----
+
+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
+contains these lines which refer to OPLSAA:
+
+import "oplsaa.lt"
+Methane inherits OPLSAA { ...
+
+-------- Instructions: ---------
+
+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/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh b/tools/moltemplate/examples/force_field_OPLSAA/methane/README_run.sh
similarity index 81%
copy from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
copy to tools/moltemplate/examples/force_field_OPLSAA/methane/README_run.sh
index 9f923a6c7..5f8286664 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
+++ b/tools/moltemplate/examples/force_field_OPLSAA/methane/README_run.sh
@@ -1,39 +1,34 @@
# --- Running LAMMPS ---
-# -------- REQUIREMENTS: ---------
-# 1) This example requires building LAMMPS with the "USER-MISC" package.
-# (because it makes use of "gaff.lt" which uses dihedral_style fourier)
-# 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
# 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/all_atom_examples/force_field_AMBER/benzene/README_setup.sh b/tools/moltemplate/examples/force_field_OPLSAA/methane/README_setup.sh
similarity index 69%
copy from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README_setup.sh
copy to tools/moltemplate/examples/force_field_OPLSAA/methane/README_setup.sh
index 510ae9b40..6aa6c06f4 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README_setup.sh
+++ b/tools/moltemplate/examples/force_field_OPLSAA/methane/README_setup.sh
@@ -1,32 +1,28 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
# 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/
+ 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
+# 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/all_atom_examples/force_field_OPLSAA/methane/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/methane/README_visualize.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/README_visualize.txt
rename to tools/moltemplate/examples/force_field_OPLSAA/methane/README_visualize.txt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/moltemplate_files/methane.lt b/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/methane.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/moltemplate_files/methane.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/methane.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/README.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/README.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm
rename to tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/system.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/moltemplate_files/system.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/system.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/run.in.npt b/tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.npt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/run.in.npt
rename to tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.npt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/run.in.nvt b/tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.nvt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/run.in.nvt
rename to tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.nvt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README.TXT
similarity index 68%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/README.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README.TXT
index d323e7c71..5ad3a04b5 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/README.TXT
+++ b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README.TXT
@@ -1,33 +1,30 @@
This example contains a mixture of water(SPCE) and methane.
The methane molecules use OPLSAA force-field, but the water molecules do not.
---- Details ----
-The methane molecules in this example use the OPLSAA force-field. This means
-that when we define "Methane", we only specify the atom names, bond list,
-and coordinates. We then use oplsaa_moltemplate.py and moltemplate.sh to load
-the OPLSAA force-field parameters (and atom charges) for the Methane molecule
-from an external file ("oplsaa.lt". Read the "oplsaa_lt_generator/README.TXT"
-file for details.) Consequently, the "moltemplate_files/methane.lt" file
+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
contains these lines which refer to OPLSAA:
import "oplsaa.lt"
Methane inherits OPLSAA { ...
However the "SPCE" (water) molecules does NOT use a database to look up the
force-field parameters for this tiny molecule.
Instead, the "moltemplate_files/spce.lt" file declares all of the angle
interactions, atom properties and force-field parameters for water explicitly.
(Consequently, it makes no mention of "oplsaa.lt" or "OPLSAA".)
-
-------- Instructions: ---------
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/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_run.sh
similarity index 81%
copy from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
copy to tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_run.sh
index 9f923a6c7..5f8286664 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
+++ b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_run.sh
@@ -1,39 +1,34 @@
# --- Running LAMMPS ---
-# -------- REQUIREMENTS: ---------
-# 1) This example requires building LAMMPS with the "USER-MISC" package.
-# (because it makes use of "gaff.lt" which uses dihedral_style fourier)
-# 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
# 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/all_atom_examples/force_field_AMBER/benzene/README_setup.sh b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_setup.sh
similarity index 69%
copy from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README_setup.sh
copy to tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_setup.sh
index 510ae9b40..6aa6c06f4 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README_setup.sh
+++ b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_setup.sh
@@ -1,32 +1,28 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
# 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/
+ 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
+# 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/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_visualize.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/README_visualize.txt
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_visualize.txt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/methane.lt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/methane.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/methane.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/methane.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/README.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/README.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/spce.lt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/spce.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/spce.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/spce.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/system.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/system.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/system.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/run.in.npt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.npt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/run.in.npt
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.npt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/run.in.nvt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.nvt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/run.in.nvt
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.nvt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README.TXT
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README.TXT
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh
similarity index 69%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh
index bf0ed3371..71a18b0ab 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh
+++ b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh
@@ -1,26 +1,20 @@
# --- Running LAMMPS ---
-# -------- REQUIREMENTS: ---------
-# 1) This example requires building LAMMPS with the "USER-MISC" package.
-# (because it makes use of "gaff.lt" which uses dihedral_style fourier)
-# 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
# 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_examples/force_field_AMBER/benzene/README_setup.sh b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh
similarity index 69%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README_setup.sh
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh
index 510ae9b40..6aa6c06f4 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README_setup.sh
+++ b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh
@@ -1,32 +1,28 @@
-# -------- REQUIREMENTS: ---------
-# You must define your MOLTEMPLATE_PATH environment variable
-# and set it to the "common" subdirectory of your moltemplate distribution.
-# (See the "Installation" section in the moltemplate manual.)
-
-
# 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/
+ 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
+# 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/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_visualize.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_visualize.txt
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_visualize.txt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/TEST_density_estimate.txt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/TEST_density_estimate.txt
similarity index 85%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/TEST_density_estimate.txt
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/TEST_density_estimate.txt
index e45ceba66..9dc50b389 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/TEST_density_estimate.txt
+++ b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/TEST_density_estimate.txt
@@ -1,21 +1,20 @@
This system contains 1728 water molecules
-(I looked the force field parameters using the "oplsaa_moltemplate.py" script.
- This is SPC water I think.)
+(This is SPC water I think.)
Then I ran a short simulation for 170000 timesteps at 300Kelvin and 1 atm.
(that's when it crashed. I'll worry about why later...)
Anyway, the average volume was 52149.8 (in Angstroms^3)
(for the last 80000 timesteps, after it had equilibrated)
Given that the mass of water is 18.0154 grams per mole, I'm getting
this value for the density:
density = (1728*18.0154/6.02214129e23) / (52149.8*1e-30*1e6)
= 0.991 (in grams per mL)
I'm only looking for gross errors in the OPLSAA force-field.
So I'm satisfied with a 1% error.
But I realize this is not a particularly rigorous test.
Andrew 2014-5-21
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/README.TXT
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/README.TXT
diff --git a/tools/moltemplate/examples/all_atom_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
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/spc.lt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/spc.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/spc.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/spc.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/system.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/system.lt
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/system.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.npt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.npt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.npt
rename to tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.npt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.nvt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.nvt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.nvt
rename to tools/moltemplate/examples/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/force_field_OPLSUA_united_atom/propane/README.TXT
new file mode 100644
index 000000000..036c6e756
--- /dev/null
+++ b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README.TXT
@@ -0,0 +1,21 @@
+This example was contributed by Yue Chun Chiu (Chinese University of Hong Kong)
+(Thanks!)
+
+This is a simulation of propane using the OPLSUA force-field.
+(It uses the OPLSUA force field even though the file names begin with "oplsaa")
+
+IMPORTANT: This is NOT an all-atom simulation.
+ OPLSUA is a united-atom force-field.
+ Hydrogen atoms are not represented explicitly.
+ The force-field has been adjusted accordingly.
+
+-------- Instructions: ---------
+
+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/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_run.sh
similarity index 81%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
rename to tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_run.sh
index 9f923a6c7..5f8286664 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh
+++ b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_run.sh
@@ -1,39 +1,34 @@
# --- Running LAMMPS ---
-# -------- REQUIREMENTS: ---------
-# 1) This example requires building LAMMPS with the "USER-MISC" package.
-# (because it makes use of "gaff.lt" which uses dihedral_style fourier)
-# 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
# 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/force_field_OPLSUA_united_atom/propane/README_setup.sh
new file mode 100755
index 000000000..412634dfe
--- /dev/null
+++ b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_setup.sh
@@ -0,0 +1,33 @@
+# Create LAMMPS input files this way:
+cd moltemplate_files
+
+ # run moltemplate
+
+ moltemplate.sh system.lt
+
+ ######################### WEIRD LAMMPS QUIRK:###############################
+ # The default pair_style used with the OPLSAA forcefield requires that SOME
+ # atoms have non-zero charge. Unfortunately, in this example none of them do.
+ # (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
+ # 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
+
+ # 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.
+ # 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 ../
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_visualize.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/README_visualize.txt
rename to tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_visualize.txt
diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/propane.lt b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/propane.lt
new file mode 100644
index 000000000..d82d8cfd9
--- /dev/null
+++ b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/propane.lt
@@ -0,0 +1,31 @@
+import "oplsaa.lt"
+
+
+Propane inherits OPLSAA {
+
+ # atomID molID atomTyle charge X Y Z
+ write('Data Atoms') {
+ $atom:CH3a $mol:. @atom:10 0.0 -0.748 -0.015 0.024
+ $atom:CH2 $mol:. @atom:13 0.0 0.558 0.420 -0.278
+ $atom:CH3b $mol:. @atom:10 0.0 0.716 1.404 0.137
+ }
+
+ write('Data Bond List') {
+ $bond:CC1 $atom:CH3a $atom:CH2
+ $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)
+ # @atom:10 "N-Alkane CH3- (UA)"
+ # @atom:13 "Alkanes -CH2- (UA)"
+ #
+ # NOTE: UA means united atom (no explicit hydrogens).
+ # The first 56 atoms in the "oplsaa.lt" file are united atoms
+ #
+ # NOTE: Charges will be assigned by OPLSAA, so we leave them 0.0 here.
+ #
+ # (The "." in "$mol:." refers to this molecule-object's molecule-ID number.
+ # The "." simply means this molecule is not a part of a larger molecule.)
+
+}
diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/system.lt
new file mode 100644
index 000000000..6f266aac3
--- /dev/null
+++ b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/system.lt
@@ -0,0 +1,37 @@
+import "propane.lt"
+
+# Periodic boundary conditions:
+write_once("Data Boundary") {
+ 0.0 36.0 xlo xhi
+ 0.0 36.0 ylo yhi
+ 0.0 36.0 zlo zhi
+}
+
+# Now add methane molecules:
+
+propanes = new Propane [6].move(0, 0, 6)
+ [6].move(0, 6, 0)
+ [6].move(6, 0, 0)
+
+propanes[*][*][*].move(2.0, 2.0, 2.0)
+
+
+
+
+
+
+
+######################### WEIRD LAMMPS QUIRK:###############################
+# The default pair_style used with the OPLSAA forcefield requires that SOME
+# atoms have non-zero charge. Unfortunately, in this example none of them do.
+# (This does not happen very often.)
+# Since you don't need long-range coulombics in this example, LAMMPS will
+# terminate with an error message and ask you to use a more efficient pair_style
+# 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
+#
+# This will override the pair_style and pair_coeff commands in the
+# system.in.init and system.in.settings files (created by moltemplate):
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/run.in.nvt b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.npt
similarity index 53%
copy from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/run.in.nvt
copy to tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.npt
index d5b77423a..c1115f67b 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/run.in.nvt
+++ b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.npt
@@ -1,38 +1,43 @@
# PREREQUISITES:
#
-# 1) You must use moltemplate.sh to create 3 files:
+# You must use moltemplate.sh to create 3 files:
# system.data system.in.init system.in.settings
# (Follow the instructions in README_setup.sh,
# or run the file as a script using ./README_setup.sh)
-# 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"
+read_data "system.data"
# ------------------------------- Settings Section --------------------------
include "system.in.settings"
include "system.in.charges"
# ------------------------------- Run Section -------------------------------
-# -- simulation protocol --
+# -- minimization 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
+thermo_style custom step temp etotal press vol
+minimize 6.0e-5 1.0e-6 500 400000
+
+write_data system_after_min.data
+
+# -- simulation protocol --
+
+reset_timestep 0
+timestep 1.0
+dump 1 all custom 200 traj_npt.lammpstrj id mol type x y z ix iy iz element
+velocity all create 200.0 4928459 rot yes mom yes dist gaussian
+fix fxnpt all npt temp 200.0 200.0 100.0 iso 1.0 1.0 1000.0
+neigh_modify delay 5 every 1 check yes
-run 1000000
+run 100000
-write_data system_after_nvt.data
+write_data system_after_npt.data
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/run.in.nvt b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.nvt
similarity index 53%
rename from tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/run.in.nvt
rename to tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.nvt
index d5b77423a..115bfe527 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_OPLSAA/alkane_chain_single/run.in.nvt
+++ b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.nvt
@@ -1,38 +1,39 @@
# PREREQUISITES:
#
-# 1) You must use moltemplate.sh to create 3 files:
+# You must use moltemplate.sh to create 3 files:
# system.data system.in.init system.in.settings
# (Follow the instructions in README_setup.sh,
# or run the file as a script using ./README_setup.sh)
-# 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"
+#read_data "system.data"
+read_data "system_after_npt.data"
# ------------------------------- Settings Section --------------------------
include "system.in.settings"
include "system.in.charges"
# ------------------------------- Run Section -------------------------------
-# -- simulation protocol --
+# -- 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
+reset_timestep 0
+timestep 2.0
thermo 500
-#thermo_modify flush yes
+thermo_style custom step temp etotal press
+dump 1 all custom 2000 traj_nvt.lammpstrj id mol type x y z ix iy iz element type
+dump_modify 1 element "C" "C"
+velocity all create 200.0 4928459 rot yes mom yes dist gaussian
+fix fxnvt all nvt temp 200.0 200.0 100.0
+neigh_modify delay 5 every 1 check yes
-run 1000000
+run 1000000
-write_data system_after_nvt.data
+write_data system_after_nvt.data
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/README.TXT b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README.TXT
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/README.TXT
rename to tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README.TXT
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/README_setup.sh b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_setup.sh
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/README_setup.sh
rename to tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_setup.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/README_visualize.txt b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_visualize.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/README_visualize.txt
rename to tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_visualize.txt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/images/AlCell_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCell_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/images/AlCell_LR.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCell_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/images/AlCrystal10x10x10_t=0steps_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=0steps_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/images/AlCrystal10x10x10_t=0steps_LR.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=0steps_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/images/AlCrystal10x10x10_t=20000steps_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=20000steps_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/images/AlCrystal10x10x10_t=20000steps_LR.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=20000steps_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/moltemplate_files/README.sh b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/README.sh
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/moltemplate_files/README.sh
rename to tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/README.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/moltemplate_files/al_cell.lt b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/al_cell.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/moltemplate_files/al_cell.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/al_cell.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/system.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/moltemplate_files/system.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/system.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/run.in b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/run.in
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/aluminum_crystal_strain/run.in
rename to tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/run.in
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/README_run.sh b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_run.sh
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/README_run.sh
rename to tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_run.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/README_setup.sh b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_setup.sh
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/README_setup.sh
rename to tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_setup.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/README_visualize.txt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_visualize.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/README_visualize.txt
rename to tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_visualize.txt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/images/ice_rect8_crystal_3x2x2_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/images/ice_rect8_crystal_3x2x2_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/images/ice_rect8_crystal_3x2x2_LR.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/images/ice_rect8_crystal_3x2x2_LR.jpg
diff --git a/tools/moltemplate/common/images/ice_rect8_unitcell.png b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/images/ice_rect8_unitcell.png
similarity index 100%
rename from tools/moltemplate/common/images/ice_rect8_unitcell.png
rename to tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/images/ice_rect8_unitcell.png
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/moltemplate_files/spce.lt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/moltemplate_files/spce.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce.lt
diff --git a/tools/moltemplate/common/spce_ice_rect16.lt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect16.lt
similarity index 100%
rename from tools/moltemplate/common/spce_ice_rect16.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect16.lt
diff --git a/tools/moltemplate/common/spce_ice_rect32.lt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect32.lt
similarity index 100%
rename from tools/moltemplate/common/spce_ice_rect32.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect32.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/moltemplate_files/spce_ice_rect8.lt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect8.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/moltemplate_files/spce_ice_rect8.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect8.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/system.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/moltemplate_files/system.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/system.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/run.in.npt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.npt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/run.in.npt
rename to tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.npt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/run.in.nvt b/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.nvt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/run.in.nvt
rename to tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.nvt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/README.TXT b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README.TXT
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/README.TXT
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README.TXT
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/README_realistic_junctions.txt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_realistic_junctions.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/README_realistic_junctions.txt
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_realistic_junctions.txt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/README_run.sh b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_run.sh
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/README_run.sh
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_run.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/README_setup.sh b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_setup.sh
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/README_setup.sh
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_setup.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/README_visualize.txt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_visualize.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/README_visualize.txt
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_visualize.txt
diff --git a/tools/moltemplate/common/images/graphene_unit_cell.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/graphene_unit_cell.jpg
similarity index 100%
rename from tools/moltemplate/common/images/graphene_unit_cell.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/graphene_unit_cell.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/images/nanotube+walls+water_side_pbc_t=0ps_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=0ps_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/images/nanotube+walls+water_side_pbc_t=0ps_LR.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=0ps_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/images/nanotube+walls+water_side_pbc_t=108ps_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=108ps_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/images/nanotube+walls+water_side_pbc_t=108ps_LR.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=108ps_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/images/nanotube+walls+water_side_pbc_t=305ps_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=305ps_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/images/nanotube+walls+water_side_pbc_t=305ps_LR.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=305ps_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/images/nanotube+walls+water_top_nopbc_t=0_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_top_nopbc_t=0_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/images/nanotube+walls+water_top_nopbc_t=0_LR.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_top_nopbc_t=0_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/images/nanotube+walls_side_nopbc_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls_side_nopbc_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/images/nanotube+walls_side_nopbc_LR.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls_side_nopbc_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/images/water_side_nopbc_LR.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/water_side_nopbc_LR.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/images/water_side_nopbc_LR.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/water_side_nopbc_LR.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/README.sh b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/README.sh
similarity index 91%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/README.sh
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/README.sh
index be179e852..1cc480669 100755
--- a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/README.sh
+++ b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/README.sh
@@ -1,32 +1,32 @@
# This is a small version of a carbon-nanotube, water capillary system.
# It was inspired by this paper:
#
# Laurent Joly, J. Chem. Phys. 135(21):214705 (2011)
#
# 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.
#
# 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.)
# Most likely some of the files in this example (like graphene.lt, tip3p2004.lt)
-# are not in this directory, but are in the "common" directory.
-# Set MOLTEMPLATE_PATH to point to the "common" directory.
+# are not in this directory, but are in the "src/moltemplate_force_fields/"
+# subdirectory.
#
# -----------------------------------------------------------
#
# To run moltemplate, use:
moltemplate.sh system.lt
# If you have VMD installed, you can run it this way to visualize the system:
#
# moltemplate.sh -vmd system.lt
#
# Either way, this will generate the following files (which LAMMPS reads):
# system.data, system.in, system.in.init, system.in.settings
diff --git a/tools/moltemplate/common/graphene.lt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene.lt
similarity index 100%
rename from tools/moltemplate/common/graphene.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/graphene_walls.lt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene_walls.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/graphene_walls.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene_walls.lt
diff --git a/tools/moltemplate/common/graphite.lt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphite.lt
similarity index 100%
rename from tools/moltemplate/common/graphite.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphite.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/nanotube.lt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/nanotube.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/nanotube.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/nanotube.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/spce.lt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/spce.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/spce.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/spce.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/system.lt
similarity index 95%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/system.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/system.lt
index 844e28732..d7c610fc0 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/system.lt
+++ b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/system.lt
@@ -1,29 +1,29 @@
# This is a small version of a carbon-nanotube, water capillary system. It was
# inspired by this paper: Laurent Joly, J. Chem. Phys. 135(21):214705 (2011)
import "graphene_walls.lt"
import "nanotube.lt"
import "water_box.lt"
# ------------ boundary conditions ------------
write_once("Data Boundary") {
-15.98682895386 15.98682895386 xlo xhi
-14.91 14.91 ylo yhi
- 0.0 80.00 zlo zhi
+ -31.0 31.00 zlo zhi
}
# ---------------------------------------------
write_once("In Settings") {
# --- We must eventually specify the interactions between the atoms ---
# --- in different molecule types (graphene-water interactions). ---
# (See Laurent Joly, J. Chem. Phys. 135(21):214705 (2011) for details
pair_coeff @atom:Graphene/C @atom:SPCE/O lj/cut/coul/long 0.114 3.28
pair_coeff @atom:Graphene/C @atom:SPCE/H lj/cut/coul/long 0.0 3.28
}
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/water_box.lt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/water_box.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/water_box.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/water_box.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/watmw.lt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/watmw.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/watmw.lt
rename to tools/moltemplate/examples/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/force_field_explicit_parameters/nanotube+water/run.in.npt
new file mode 100644
index 000000000..2728a1f5a
--- /dev/null
+++ b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.npt
@@ -0,0 +1,147 @@
+# PREREQUISITES:
+#
+# You must use moltemplate.sh to create 3 files:
+# system.data system.in.init system.in.settings
+# (You do not need to run LAMMPS to equilibrate the system before
+# using this file.)
+#
+# Requirements:
+# 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.)
+# The use of fix rigid is controversial. This method is demonstrated below.
+# THIS EXAMPLE HAS NOT BEEN RIGOROUSLY TESTED. This simulation may fail.
+# (However the "run.in.nvt" example in this directory should work.)
+# ------------------------------- Initialization 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: group "cGraphene" was defined in the file "system.insettings")
+neigh_modify exclude group Cgraphene Cgraphene
+
+# ------------------------------- Run Section -------------------------------
+
+
+# Only the Cgraphene atoms are immobile.
+group mobile subtract all Cgraphene
+
+# (Note: The "Cgraphene" group was defined in system.in.settings.)
+
+
+# Unfortunately you can not use the LAMMPS "minimize" command on this system
+# because there is no way to immobilize the carbon graphene & nanotube atoms
+# during minimization. Instead, we can use langevin dynamics with a fast
+# damping parameter and a small timestep.
+
+print "--------- beginning minimization (using fix langevin) ---------"
+
+timestep 0.1
+fix fxlan mobile langevin 1.0 1.0 100.0 48279
+fix fxnve mobile nve # <-- needed by fix langevin (see lammps documentation)
+thermo 100
+run 2500
+
+unfix fxlan
+unfix fxnve
+
+# -- simulation protocol --
+
+print "--------- beginning simulation (using fix nvt) ---------"
+
+dump 1 all custom 1000 traj_npt.lammpstrj id mol type x y z ix iy iz
+
+thermo_style custom step temp pe etotal press vol epair ebond eangle edihed
+thermo 200 # time interval for printing out "thermo" data
+
+
+
+
+
+# ------------------------- NPT ---------------------------
+
+
+# ------ QUESTIONABLE (see below): ------
+
+fix Ffreezestuff Cgraphene rigid single force * off off off torque * off off off
+
+# Comment:
+# The use of "fix rigid" to immobilize an object is somewhat controversial.
+# Feel free to omit it.
+# (Neither Trung or Steve Plimpton use fix rigid for immobilizing
+# molecules, but I noticed that at NPT, it does a better job of maintaining
+# the correct volume. However "fix rigid" has changed since then (2011),
+# so this may no longer be true. Please use this example with caution.)
+
+
+
+# Thermostat+Barostat
+# Set temp=300K, pressure=200bar, and equilibrate volume only in the z direction
+
+fix fxMoveStuff mobile npt temp 300 300 100 z 200 200 1000.0 dilate mobile drag 2.0
+
+# ----------------------------------------
+
+# The next two lines recalculate the temperature using
+# only the mobile degrees of freedom (ie. water atom velocities):
+
+compute tempMobile mobile temp
+compute pressMobile all pressure tempMobile
+
+thermo_style custom step c_tempMobile c_pressMobile temp press vol
+
+fix_modify fxMoveStuff temp tempMobile
+
+reset_timestep 0
+
+timestep 0.25
+
+run 100000
+
+timestep 0.5
+
+run 200000
+
+# Hopefully the barostat is no longer oscillating. Increase the timestep and
+# also get get rid of "drag 2.0". (A non-zero drag parameter will result in
+# unrealistic fluctuations of volume under NPT conditions.)
+# drag 2.0 <-- commenting out
+#
+# Set temp=300K, pressure=0bar, and equilibrate volume only in the z direction
+unfix fxMoveStuff
+fix fxMoveStuff mobile npt temp 300 300 100 z 0 0 1000.0 dilate mobile
+fix_modify fxMoveStuff temp tempMobile
+
+timestep 0.5
+
+run 1000000
+
+write_data system_after_npt.data
+
+# (The "write_restart" and "read_restart" commands were buggy in 2012,
+# but they should work also.)
+
+
+
+
+
+
+
+# ----- Comment: Avoid using fix rigid/npt on large single rigid objects -----
+#
+# Use of the following is not recommended:
+#
+# fix Ffreezestuff Cgraphene rigid/npt single temp 300 300 100 z 200 200 1000.0 force * off off off torque * off off off dilate mobile
+# (temp=300K, pressure=200bar, and equilibrate volume only in the z direction)
+#
+# In my experience, the system becomes unstable when applying "fix rigid/npt"
+# to the immobile atoms, while also applying "fix npt" on the solvent atoms.
+# (It is probably a bad idea to use two barostats simultaneously.)
+# ----------------------------------------------------------------------------
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/run.in.nvt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.nvt
similarity index 84%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/run.in.nvt
rename to tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.nvt
index a86e9227a..86253c45b 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/run.in.nvt
+++ b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.nvt
@@ -1,76 +1,78 @@
# PREREQUISITES:
#
# You must use moltemplate.sh to create 3 files:
# system.data system.in.init system.in.settings
# (You do not need to run LAMMPS to equilibrate the system before
# using this file.)
# ----------------------------- Initialization 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: group "cGraphene" was defined in the file "system.insettings")
+neigh_modify exclude group Cgraphene Cgraphene
# ----------------------------- Run Section -------------------------------
# Only the Cgraphene atoms are immobile.
group mobile subtract all Cgraphene
# (Note: The "Cgraphene" group was defined in system.in.settings.)
# -- minimization protocol --
# Unfortunately you can not use the LAMMPS "minimize" command on this system
# because there is no way to immobilize the carbon graphene & nanotube atoms
-# during minimization. Instead, we can use langevin dynamics with a large
+# during minimization. Instead, we can use langevin dynamics with a fast
# damping parameter and a small timestep.
print "--------- beginning minimization (using fix langevin) ---------"
timestep 0.1
fix fxlan mobile langevin 1.0 1.0 100.0 48279
fix fxnve mobile nve # <-- needed by fix langevin (see lammps documentation)
thermo 100
run 2500
unfix fxlan
unfix fxnve
# -- simulation protocol --
print "--------- beginning simulation (using fix nvt) ---------"
-timestep 1.0
-dump 1 all custom 500 traj_nvt.lammpstrj id mol type x y z ix iy iz
+dump 1 all custom 1000 traj_nvt.lammpstrj id mol type x y z ix iy iz
thermo_style custom step temp pe etotal press vol epair #ebond eangle edihed
thermo 500 # time interval for printing out "thermo" data
-
# Integrate the equations of motion:
fix fxMoveStuff mobile nvt temp 300.0 300.0 100.0
# The next two lines recalculate the temperature
# using only the mobile degrees of freedom:
compute tempMobile mobile temp
fix_modify fxMoveStuff temp tempMobile
-restart 5000000 restart_nvt
-run 10000000
+
+timestep 2.0
+run 5000000
write_data system_after_nvt.data
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/README_run.sh b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_run.sh
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/README_run.sh
rename to tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_run.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/README_setup.sh b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_setup.sh
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/README_setup.sh
rename to tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_setup.sh
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README_visualize.txt b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_visualize.txt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_AMBER/benzene/README_visualize.txt
rename to tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_visualize.txt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/images/Cl.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Cl.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/images/Cl.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Cl.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/images/Na.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Na.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/images/Na.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Na.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/images/wat.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/wat.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/images/wat.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/wat.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=0.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=0.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=0.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=0.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=100ps.jpg b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=100ps.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=100ps.jpg
rename to tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=100ps.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/moltemplate_files/ions.lt b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/ions.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/moltemplate_files/ions.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/ions.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/moltemplate_files/spce.lt b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/spce.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/moltemplate_files/spce.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/spce.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/moltemplate_files/system.lt b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/system.lt
similarity index 83%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/moltemplate_files/system.lt
rename to tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/system.lt
index f43f4263e..639222d18 100644
--- a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/moltemplate_files/system.lt
+++ b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/system.lt
@@ -1,52 +1,49 @@
import "spce.lt" # <- This defines the SPCE water molecule. This file is
- # located in the "common" directory. You can either copy it
- # here, or (preferably), you can define a MOLTEMPLATE_PATH
- # environment variable and point it to "common".
- # (as explained in the installation section of the manual).
+ # located in the "src/moltemplate_force_fields" directory.
import "ions.lt" # <- This defines the ions "NaIon" and "ClIon".
# Periodic boundary conditions:
write_once("Data Boundary") {
0.0 34.50 xlo xhi
0.0 34.50 ylo yhi
0.0 34.50 zlo zhi
}
# The next command generates a (rather dense) cubic lattice with
# spacing 3.45 Angstroms. (The pressure must be equilibrated later.)
wat = new SPCE [10].move(0.00, 0.00, 3.45)
[10].move(0.00, 3.45, 0.00)
[10].move(3.45, 0.00, 0.00)
# We now create a 2x2x2 lattice of Na+ and Cl- ions:
na = new NaIon [2].move(0,0,17.25)
[2].move(0,17.25,0)
[2].move(17.25,0,0)
cl = new ClIon [2].move(0,0,17.25)
[2].move(0,17.25,0)
[2].move(17.25,0,0)
na[*][*][*].move(5.175,5.175,5.6)
cl[*][*][*].move(12.075,12.075,12.5)
# (The (5.175,5.175,5.175) and (12.075,12.075,12.075) translational shifts
# prevent the Na and Cl ions from overlapping
# with the water molecules or each other.)
# Comment: Fortunately the ions and the water in this example share the
# same force-field styles (so their was no need to use "hybrid" styles).
# If this were not the case, you might need to add something like this.
#
# write_once("In Init") {
# # -- Styles for the combined system (overrides earlier settings) --
# pair_style hybrid lj/charmm/coul/long 9.0 10.0 10.0 NEWPAIRSTYLE
# bond_style hybrid harmonic NEWBONDSTYLE
# angle_style hybrid harmonic NEWANGLESTYLE
# }
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/run.in.npt b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.npt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/run.in.npt
rename to tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.npt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/run.in.nvt b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.nvt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/waterSPCE+Na+Cl/run.in.nvt
rename to tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.nvt
diff --git a/tools/moltemplate/moltemplate_manual.pdf b/tools/moltemplate/moltemplate_manual.pdf
index 24ebb0815..14246f155 100644
Binary files a/tools/moltemplate/moltemplate_manual.pdf and b/tools/moltemplate/moltemplate_manual.pdf differ
diff --git a/tools/moltemplate/src/bonds_by_type.py b/tools/moltemplate/src/bonds_by_type.py
old mode 100755
new mode 100644
index ae915e724..786a6a8a8
--- a/tools/moltemplate/src/bonds_by_type.py
+++ b/tools/moltemplate/src/bonds_by_type.py
@@ -1,381 +1,370 @@
#!/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.
"""
bonds_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:
bonds_by_type.py -atoms atoms.data \\
-bonds bonds.data \\
-bondsbytype bonds_by_type.data \\
> new_bonds.data
"""
# -bonds-ids-atom-pairs bonds_ids_atom_pairs.data \\
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
def LookupBondTypes(bond_types,
bond_ids,
bond_pairs,
lines_atoms,
lines_bonds,
lines_bondsbytype,
atom_style,
section_name,
prefix='',
suffix='',
bond_ids_offset=0):
#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,
generate them and store them in the bond_ids list.)
Input (continued):
This function requires:
...a list of bonded pairs of atoms
stored in the lines_bonds variable (from the "Data Bond List"
or "Data Bonds AtomId AtomId" sections)
...and a list of atom types
stored in the lines_atoms variable (from the "Data Atoms" section)
...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
prefix + str(number) + suffix
(where "number" begins at bond_ids_offset+1)
"""
column_names = AtomStyle2ColNames(atom_style)
i_atomid, i_atomtype, i_molid = ColNames2AidAtypeMolid(column_names)
atomids = []
atomtypes = []
atomids2types = {}
for iv in range(0, len(lines_atoms)):
line = lines_atoms[iv].strip()
if '#' in line:
icomment = line.find('#')
line = (line[:icomment]).strip()
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.'))
tokens = ttree_lex.SplitQuotedString(line)
atomid = ttree_lex.EscCharStrToChar(tokens[i_atomid])
atomids.append(atomid)
atomtype = ttree_lex.EscCharStrToChar(tokens[i_atomtype])
atomtypes.append(atomtype)
atomids2types[atomid] = atomtype
assert(isinstance(bond_ids, list))
assert(isinstance(bond_types, list))
assert(isinstance(bond_pairs, list))
del bond_ids[:]
del bond_types[:]
del bond_pairs[:]
for ie in range(0, len(lines_bonds)):
line = lines_bonds[ie].strip()
if '#' in line:
icomment = line.find('#')
line = (line[:icomment]).strip()
if len(line) == 0:
continue
tokens = ttree_lex.SplitQuotedString(line)
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])) )
+ ttree_lex.EscCharStrToChar(tokens[1])) )
else:
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])) )
else:
raise(ttree_lex.InputError('Incorrect number of columns on line '+str(ie+1)+' of \"'+section_name+'\" section.'))
- #elif section_name == "Data Bonds BondType AtomId AtomId":
- # if len(tokens) == 3:
- # bondid_n = bond_ids_offset + len(bond_ids) + 1
- # bond_ids.append(prefix+str(bondid_n)+suffix)
- # bond_types.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.'))
-
else:
raise(ttree_lex.InputError('Internal Error ('+g_program_name+'): Unknown section name: \"'+section_name+'\"'))
assert(len(bond_types) == 0)
typepattern_to_coefftypes = []
for i in range(0, len(lines_bondsbytype)):
line = lines_bondsbytype[i].strip()
if '#' in line:
icomment = line.find('#')
line = (line[:icomment]).strip()
if len(line) > 0:
tokens = ttree_lex.SplitQuotedString(line)
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'))
coefftype = ttree_lex.EscCharStrToChar(tokens[0])
typepattern = []
for typestr in tokens[1:]:
if ((len(typestr) >= 2) and
(typestr[0] == '/') and (typestr[-1] == '/')):
regex_str = typestr[1:-1]
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)):
bond_types.append(None)
for ie in range(0, len(bond_ids)):
bondid = bond_ids[ie]
(atomid1, atomid2) = bond_pairs[ie]
if atomid1 not in atomids2types:
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')
if atomid2 not in atomids2types:
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')
atomtype1 = atomids2types[atomid1]
atomtype2 = atomids2types[atomid2]
- #for n in range(0, len(typepattern_to_coefftypes)):
for typepattern, coefftype in typepattern_to_coefftypes:
# 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)):
# ("MatchesAll()" defined in "ttree_lex.py")
bond_types[ie] = coefftype
for ie in range(0, len(bond_ids)):
if not bond_types[ie]:
(atomid1, atomid2) = bond_pairs[ie]
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')
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+' ')
if sys.version < '3':
sys.stderr.write(' (python version < 3)\n')
else:
sys.stderr.write('\n')
try:
fname_atoms = None
- fname_bonds = None
+ fname_bond_list = None
fname_bondsbytype = None
section_name = 'Data Bond List' # (This will be replaced later.)
atom_style = 'full'
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:
i = 1
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')
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])
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]
+ 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'
# ' text which might appear in the "Bonds No Types" section of a LAMMPS data file.\n')
- fname_bonds = argv[i+1]
+ fname_bond_list = argv[i+1]
section_name = "Data Bond List"
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')
#raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing\n'
# ' text which might appear in the "'+section_name+' By Type" section\n'
# ' of a LAMMPS data file.\n')
fname_bondsbytype = argv[i+1]
del(argv[i:i+2])
elif ((argv[i].lower() == '-atom-style') or
(argv[i].lower() == '-atom_style')):
if i+1 >= len(argv):
raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a an atom_style name.\n'
' (Or single quoted string which includes a space-separated\n'
' list of column names.)\n')
atom_style = argv[i+1]
del(argv[i:i+2])
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])
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])
elif argv[i][0] == '-':
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')
bond_types = []
bond_ids = []
bond_pairs = []
fatoms = open(fname_atoms, 'r')
- fbonds = open(fname_bonds, 'r')
+ fbonds = open(fname_bond_list, 'r')
fbondsbytype = open(fname_bondsbytype, 'r')
lines_atoms = fatoms.readlines()
lines_bonds = fbonds.readlines()
lines_bondsbytype = fbondsbytype.readlines()
fatoms.close()
fbonds.close()
fbondsbytype.close()
LookupBondTypes(bond_types,
bond_ids,
bond_pairs,
lines_atoms,
lines_bonds,
lines_bondsbytype,
atom_style,
section_name,
prefix='',
suffix='')
assert(len(bond_types) == len(bond_ids) == len(bond_pairs))
ie=0
N = len(bond_types)
for ie in range(0, N):
sys.stdout.write(bond_ids[ie] + ' ' +
bond_types[ie] + ' ' +
bond_pairs[ie][0] + ' ' +
bond_pairs[ie][1] + '\n')
except (ValueError, ttree_lex.InputError) as err:
sys.stderr.write('\n'+str(err)+'\n')
sys.exit(-1)
diff --git a/tools/moltemplate/src/bonds_by_type.py b/tools/moltemplate/src/chargepairs_by_type.py
old mode 100755
new mode 100644
similarity index 54%
copy from tools/moltemplate/src/bonds_by_type.py
copy to tools/moltemplate/src/chargepairs_by_type.py
index ae915e724..0d006abd5
--- a/tools/moltemplate/src/bonds_by_type.py
+++ b/tools/moltemplate/src/chargepairs_by_type.py
@@ -1,381 +1,389 @@
#!/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.
"""
- bonds_by_type.py reads a LAMMPS data file (or an excerpt of a LAMMPS)
+ 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 additional interactions
- in LAMMPS format consistent with those type (to the standard out).
+ (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:
- bonds_by_type.py -atoms atoms.data \\
- -bonds bonds.data \\
- -bondsbytype bonds_by_type.data \\
- > new_bonds.data
+ 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
+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
-def LookupBondTypes(bond_types,
- bond_ids,
- bond_pairs,
- lines_atoms,
- lines_bonds,
- lines_bondsbytype,
- atom_style,
- section_name,
- prefix='',
- suffix='',
- bond_ids_offset=0):
- #report_progress = False):
+def LookupChargePairs(chargebyatomid,
+ #bond_ids,
+ #bond_pairs,
+ lines_atoms,
+ lines_bonds,
+ lines_bond_list,
+ lines_chargepairsbytype,
+ atom_style,
+ section_name,
+ prefix='',
+ suffix=''):
+ #bond_ids_offset=0):
+ #report_progress = False):
"""
- LookupBondTypes() looks up bond types.
+ LookupChargePairs() looks up partial-charge pair contributions from the
+ types of atoms participating in a bond.
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,
- generate them and store them in the bond_ids list.)
-
+ ...It looks up the corresponding change in the partial charges for
+ each pair of atoms and stores this in the "chargebyatomid" dictionary.
Input (continued):
This function requires:
...a list of bonded pairs of atoms
stored in the lines_bonds variable (from the "Data Bond List"
or "Data Bonds AtomId AtomId" sections)
...and a list of atom types
stored in the lines_atoms variable (from the "Data Atoms" section)
- ...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
- prefix + str(number) + suffix
- (where "number" begins at bond_ids_offset+1)
+ ...and a list of charge-pairs-as-a-function-of-atom-types
+ stored in the lines_chargepairsbytype (from the "Data Bonds By Type" section)
"""
column_names = AtomStyle2ColNames(atom_style)
i_atomid, i_atomtype, i_molid = ColNames2AidAtypeMolid(column_names)
atomids = []
atomtypes = []
atomids2types = {}
for iv in range(0, len(lines_atoms)):
line = lines_atoms[iv].strip()
if '#' in line:
icomment = line.find('#')
line = (line[:icomment]).strip()
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.'))
tokens = ttree_lex.SplitQuotedString(line)
atomid = ttree_lex.EscCharStrToChar(tokens[i_atomid])
atomids.append(atomid)
atomtype = ttree_lex.EscCharStrToChar(tokens[i_atomtype])
atomtypes.append(atomtype)
atomids2types[atomid] = atomtype
- assert(isinstance(bond_ids, list))
- assert(isinstance(bond_types, list))
- assert(isinstance(bond_pairs, list))
- del bond_ids[:]
- del bond_types[:]
- del bond_pairs[:]
+ #assert(isinstance(bond_ids, list))
+ #assert(isinstance(bond_types, list))
+ #assert(isinstance(bond_pairs, list))
+ #del bond_ids[:]
+ #del bond_types[:]
+ #del bond_pairs[:]
+ bond_pairs = []
- for ie in range(0, len(lines_bonds)):
+ for ie in range(0, len(lines_bond_list)):
+ line = lines_bond_list[ie].strip()
+ if '#' in line:
+ icomment = line.find('#')
+ line = (line[:icomment]).strip()
+ if len(line) == 0:
+ 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])) )
+ else:
+ 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()
if '#' in line:
icomment = line.find('#')
line = (line[:icomment]).strip()
-
if len(line) == 0:
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])) )
+ else:
+ raise(ttree_lex.InputError('Incorrect number of columns on line '+str(ie+1)+' of \"'+section_name+'\" section.'))
- 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])) )
- else:
- 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])) )
- else:
- raise(ttree_lex.InputError('Incorrect number of columns on line '+str(ie+1)+' of \"'+section_name+'\" section.'))
-
- #elif section_name == "Data Bonds BondType AtomId AtomId":
- # if len(tokens) == 3:
- # bondid_n = bond_ids_offset + len(bond_ids) + 1
- # bond_ids.append(prefix+str(bondid_n)+suffix)
- # bond_types.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.'))
- else:
- raise(ttree_lex.InputError('Internal Error ('+g_program_name+'): Unknown section name: \"'+section_name+'\"'))
+ #for ie in range(0, len(lines_bonds_atomid_atomid)):
+ # line = lines_bonds_atomid_atomid[ie].strip()
+ # if '#' in line:
+ # icomment = line.find('#')
+ # line = (line[:icomment]).strip()
+ # if len(line) == 0:
+ # continue
+ # tokens = ttree_lex.SplitQuotedString(line)
+ # 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])) )
+ # 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_coefftypes = []
+ typepattern_to_chargepairs = []
+ warning_unassigned_chargepairs = None
- for i in range(0, len(lines_bondsbytype)):
- line = lines_bondsbytype[i].strip()
+ for i in range(0, len(lines_chargepairsbytype)):
+ line = lines_chargepairsbytype[i].strip()
if '#' in line:
icomment = line.find('#')
line = (line[:icomment]).strip()
if len(line) > 0:
tokens = ttree_lex.SplitQuotedString(line)
- if (len(tokens) != 3):
- raise(ttree_lex.InputError('Error: Wrong number of columns in the \"Bonds By Type\" section of data file.\n'
+ 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 3 columns\n'))
+ 'Expected 4 columns\n'))
- coefftype = ttree_lex.EscCharStrToChar(tokens[0])
+ chargepair = (float(tokens[2]),
+ float(tokens[3]))
+
typepattern = []
- for typestr in tokens[1:]:
+ for typestr in tokens[:2]:
if ((len(typestr) >= 2) and
(typestr[0] == '/') and (typestr[-1] == '/')):
regex_str = typestr[1:-1]
typepattern.append( re.compile(regex_str) )
else:
typepattern.append(ttree_lex.EscCharStrToChar(typestr))
- typepattern_to_coefftypes.append([typepattern, coefftype])
-
-
+ typepattern_to_chargepairs.append([typepattern, chargepair])
- assert(len(bond_ids) == len(bond_pairs))
- for ie in range(0,len(bond_ids)):
- bond_types.append(None)
-
- for ie in range(0, len(bond_ids)):
- bondid = bond_ids[ie]
- (atomid1, atomid2) = bond_pairs[ie]
+ for atomid1, atomid2 in bond_pairs:
if atomid1 not in atomids2types:
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')
if atomid2 not in atomids2types:
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')
+
atomtype1 = atomids2types[atomid1]
atomtype2 = atomids2types[atomid2]
- #for n in range(0, len(typepattern_to_coefftypes)):
- for typepattern, coefftype in typepattern_to_coefftypes:
-
+ for typepattern, chargepair in typepattern_to_chargepairs:
# 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)):
+ if ttree_lex.MatchesAll((atomtype1, atomtype2), typepattern):
# ("MatchesAll()" defined in "ttree_lex.py")
+ chargebyatomid[atomid1] += chargepair[0]
+ chargebyatomid[atomid2] += chargepair[1]
+ elif ttree_lex.MatchesAll((atomtype2, atomtype1), typepattern):
+ chargebyatomid[atomid1] += chargepair[1]
+ chargebyatomid[atomid2] += chargepair[0]
+ else:
+ if not warning_unassigned_chargepairs:
+ warning_unassigned_chargepairs = (atomid1, atomid2)
- bond_types[ie] = coefftype
- for ie in range(0, len(bond_ids)):
- if not bond_types[ie]:
- (atomid1, atomid2) = bond_pairs[ie]
- 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')
+ if warning_unassigned_chargepairs:
+ sys.stderr.write('---------------------------------------------------------------------------\n'
+ 'Warning: bonds found between atoms with no partial-charge rules.\n'
+ ' This means that somewhere you are using a force-field\n'
+ ' which assigns atomic charge according to the bonds these atoms\n'
+ ' participate in, AND at least one pair of bonded atoms does NOT have\n'
+ ' a rule defined to assign charges to that pair of atoms.\n'
+ ' This can happen if there is a problem with the force-field file\n'
+ ' 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')
+
if __name__ == "__main__":
g_program_name = __file__.split('/')[-1] # = 'nbody_by_type.py'
- g_date_str = '2015-11-09'
+ g_date_str = '2016-10-16'
g_version_str = '0.11'
####### Main Code Below: #######
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:
sys.stderr.write('\n')
try:
fname_atoms = None
fname_bonds = None
- fname_bondsbytype = None
+ fname_bond_list = None
+ fname_chargepairsbytype = None
section_name = 'Data Bond List' # (This will be replaced later.)
atom_style = 'full'
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:
i = 1
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')
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])
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])
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'
# ' text which might appear in the "Bonds No Types" section of a LAMMPS data file.\n')
- fname_bonds = argv[i+1]
+ fname_bond_list = argv[i+1]
section_name = "Data Bond List"
del(argv[i:i+2])
- elif argv[i].lower() == '-bondsbytype':
+ elif ((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')
#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]
+ fname_chargepairsbytype = argv[i+1]
del(argv[i:i+2])
elif ((argv[i].lower() == '-atom-style') or
(argv[i].lower() == '-atom_style')):
if i+1 >= len(argv):
raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a an atom_style name.\n'
' (Or single quoted string which includes a space-separated\n'
' list of column names.)\n')
atom_style = argv[i+1]
del(argv[i:i+2])
- 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])
-
- 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])
-
elif argv[i][0] == '-':
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')
bond_types = []
- bond_ids = []
- bond_pairs = []
-
fatoms = open(fname_atoms, 'r')
- fbonds = open(fname_bonds, 'r')
- fbondsbytype = open(fname_bondsbytype, 'r')
+ lines_bonds = []
+ lines_bond_list = []
+ fbonds = fbond_list = None
+ try:
+ if fname_bonds != None:
+ fbonds = open(fname_bonds, 'r')
+ lines_bonds = fbonds.readlines()
+ fbonds.close()
+ 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:
+ 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'
+ ' (This error may be a bug in moltemplate.)\n')
+ fchargepairsbytype = open(fname_chargepairsbytype, 'r')
lines_atoms = fatoms.readlines()
- lines_bonds = fbonds.readlines()
- lines_bondsbytype = fbondsbytype.readlines()
+
+ lines_chargepairsbytype = fchargepairsbytype.readlines()
fatoms.close()
- fbonds.close()
- fbondsbytype.close()
-
- LookupBondTypes(bond_types,
- bond_ids,
- bond_pairs,
- lines_atoms,
- lines_bonds,
- lines_bondsbytype,
- atom_style,
- section_name,
- prefix='',
- suffix='')
-
- assert(len(bond_types) == len(bond_ids) == len(bond_pairs))
-
- ie=0
- N = len(bond_types)
- for ie in range(0, N):
- sys.stdout.write(bond_ids[ie] + ' ' +
- bond_types[ie] + ' ' +
- bond_pairs[ie][0] + ' ' +
- bond_pairs[ie][1] + '\n')
-
+ fchargepairsbytype.close()
+ chargebyatomid = defaultdict(float)
+
+ LookupChargePairs(chargebyatomid,
+ lines_atoms,
+ lines_bonds,
+ lines_bond_list,
+ lines_chargepairsbytype,
+ atom_style,
+ section_name)
+
+ for atomid, charge in chargebyatomid.items():
+ sys.stdout.write(' set atom ' + str(atomid) +
+ ' charge ' + str(charge) + '\n')
except (ValueError, ttree_lex.InputError) as err:
sys.stderr.write('\n'+str(err)+'\n')
sys.exit(-1)
diff --git a/tools/moltemplate/src/dump2data.py b/tools/moltemplate/src/dump2data.py
old mode 100755
new mode 100644
diff --git a/tools/moltemplate/src/extract_lammps_data.py b/tools/moltemplate/src/extract_lammps_data.py
old mode 100755
new mode 100644
diff --git a/tools/moltemplate/src/ltemplify.py b/tools/moltemplate/src/ltemplify.py
old mode 100755
new mode 100644
index 2909456d2..3ce6cb8e7
--- a/tools/moltemplate/src/ltemplify.py
+++ b/tools/moltemplate/src/ltemplify.py
@@ -1,3361 +1,3361 @@
#!/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
from ttree_lex import *
from lttree_styles import *
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
try:
g_program_name = __file__.split('/')[-1] # = 'ltemplify.py'
g_version_str = '0.51'
g_date_str = '2015-10-27'
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_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 = sys.argv
+ 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] == '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
# --- 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_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)
diff --git a/tools/moltemplate/src/lttree.py b/tools/moltemplate/src/lttree.py
old mode 100755
new mode 100644
diff --git a/tools/moltemplate/src/lttree_check.py b/tools/moltemplate/src/lttree_check.py
old mode 100755
new mode 100644
index ad4625eed..78b84b8ca
--- a/tools/moltemplate/src/lttree_check.py
+++ b/tools/moltemplate/src/lttree_check.py
@@ -1,2211 +1,2222 @@
#!/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.
"""
lttree_check.py
The original template file format supports any variable types or file names.
However if you plan to process template files using lttree.py to create
LAMMPS-readable input/data files, then variables and file names obey certain
naming conventions. This code attempts to insure these conventions are obeyed
and to make sure that necessary variables are defined.
-- This code checks static variables (@) and basic LAMMPS syntax --
This program makes an attempt to check that the variables and file names
which appear in an "lttree" file are not mispelled (or miscapitlised).
It also attempts to check that LAMMPS syntax conventions are obeyed.
(It checks that the appropriate type of variable is located in each column).
It also attempts to check that all of the needed coeffs are defined.
-- This code does NOT check instance variables ($) --
This code does not check to make sure that all references to instance variables
(such as $atom, $bond, $angle, $dihedral, $improper or $mol variables) are valid
This means a user's input script command (like the "group" command) could refer
to an $atom or $mol which was never defined, and this code would not detect it.
(Why: Checking for instance variables requires building the entire instance tree
and checking references uses up additional memory after that. I do not do this
because memory is often very scarce after building the instance tree.)
Instead, we could check for these kinds of errors when post-processing of
the files generated by lttree.py or moltemplate.sh.
-- This is not the pretiest code I've ever written. --
"""
import sys
#from ttree import *
from lttree_styles import *
from lttree import *
from ttree_lex import InputError
if sys.version < '2.6':
raise InputError('Error: Alas, you must upgrade to a newer version of python.')
#g_no_check_msg = \
# "(If this error message is wrong, and/or you would like to continue anyway,\n"+\
# "try running moltemplate again using the \"-nocheck\" command-line-argument.)\n"
g_no_check_msg = \
'(To continue anyway, run moltemplate using the \"-nocheck\" argument.)\n'
def CheckCommonVarNames(prefix, descr_str, suffix, srcloc):
""" Check the name of variables in a lttree-file to confirm
that they follow the conventions used by lttree.
Almost any variable/category name is permitted, except for
names which closely match those reserved by lttree.
"""
cat_name, cat_ptkns, leaf_ptkns = \
DescrToCatLeafPtkns(descr_str,
srcloc)
if (cat_name.lower()=='mol'):
if (cat_name != 'mol'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Variable category: \"'+cat_name+'\" does not match, yet overlaps\n'+
'closely with a reserved lttree variable category.\n'
'Perhaps you meant \"mol\"?')
elif (cat_name.lower()=='group'):
if (cat_name != 'group'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Variable category: \"'+cat_name+'\" does not match, yet overlaps\n'+
'closely with a reserved lttree variable category.\n'
'Perhaps you meant \"group\"?')
elif (cat_name.lower()=='fix'):
if (cat_name != 'fix'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Variable category: \"'+cat_name+'\" does not match, yet overlaps\n'+
'closely with a reserved lttree variable category.\n'
'Use \"fix\" instead.')
elif (cat_name.lower()=='atom'):
if (cat_name != 'atom'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Illegal lttree variable category: \"'+cat_name+'\"\n'+
'Use \"atom\" instead.')
elif (cat_name.lower()=='bond'):
if (cat_name != 'bond'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Variable category: \"'+cat_name+'\" does not match, yet overlaps\n'+
'closely with a reserved lttree variable category.\n'
'Use \"bond\" instead.')
elif (cat_name.lower()=='angle'):
if (cat_name != 'angle'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Variable category: \"'+cat_name+'\" does not match, yet overlaps\n'+
'closely with a reserved lttree variable category.\n'
'Use \"angle\" instead.')
elif (cat_name.lower()=='dihedral'):
if (cat_name != 'dihedral'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Variable category: \"'+cat_name+'\" does not match, yet overlaps\n'+
'closely with a reserved lttree variable category.\n'
'Use \"dihedral\" instead.')
elif (cat_name.lower()=='improper'):
if (cat_name != 'improper'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Variable category: \"'+cat_name+'\" does not match, yet overlaps\n'+
'closely with a reserved lttree variable category.\n'
'Use \"improper\" instead.')
else:
sys.stderr.write('-----------------------------------------------------\n'+
'WARNING: in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
' Unrecognised template variable category: \"'+cat_name+'\"\n'+
'-----------------------------------------------------\n')
def CheckDataFileNames(filename,
srcloc,
write_command,
fnames_found):
N_data_prefix = len(data_prefix)
#data_prefix_no_space = data_prefix.rstrip()
N_data_prefix_no_space = len(data_prefix)
section_name = filename[N_data_prefix:]
if ((section_name.lower() == 'atom') or
(section_name.lower() == 'atoms')):
if (filename != data_atoms):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_atoms+'\"?')
elif (write_command == 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write(\"'+filename+'\") instead.\n')
elif ((section_name.lower() == 'velocities') or
(section_name.lower() == 'velocity')):
if (filename != data_velocities):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_velocities+'\"?')
elif (write_command == 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write(\"'+filename+'\") instead.\n')
elif ((section_name.lower() == 'mass') or
(section_name.lower() == 'masses')):
if (filename != data_masses):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_masses+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower() == 'ellipsoids') or
(section_name.lower() == 'ellipsoid') or
(section_name.lower() == 'elipsoids') or
(section_name.lower() == 'elipsoid')):
if (filename != data_ellipsoids):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_ellipsoids+'\"?')
elif (write_command == 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write(\"'+filename+'\") instead.\n')
elif ((section_name.lower() == 'triangle') or
(section_name.lower() == 'triangles')):
if (filename != data_triangles):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_triangles+'\"?')
elif (write_command == 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write(\"'+filename+'\") instead.\n')
elif ((section_name.lower() == 'line') or
(section_name.lower() == 'lines')):
if (filename != data_lines):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_lines+'\"?')
elif (write_command == 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write(\"'+filename+'\") instead.\n')
elif ((section_name.lower().find('pair coef') == 0) or
(section_name.lower().find('pair_coef') == 0) or
(section_name.lower().find('paircoef') == 0) or
(section_name.lower().find('pair by type') == 0) or
(section_name.lower().find('pair bytype') == 0) or
(section_name.lower().find('pair_by_type') == 0) or
(section_name.lower().find('pair_bytype') == 0) or
(section_name.lower().find('pairbytype') == 0)):
if (filename != data_pair_coeffs):
err_msg = 'Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+\
'Output file name (\"'+filename+'\") does not match,\n'+\
'yet overlaps closely with reserved lttree-file name.\n'+\
'Perhaps you meant \"'+data_pair_coeffs+'\"?'
if ((section_name.lower().find('by type') != -1) or
(section_name.lower().find('by_type') != -1) or
(section_name.lower().find('bytype') != -1)):
err_msg += '\n (Note: "pair" parameters are always assigned by type.\n'+\
' There\'s no need to specify \"by type\")'
raise InputError(err_msg)
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower().find('bond coef') == 0) or
(section_name.lower().find('bond_coef') == 0) or
(section_name.lower().find('bondcoef') == 0)):
if (filename != data_bond_coeffs):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_bond_coeffs+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower().find('angle coef') == 0) or
(section_name.lower().find('angle_coef') == 0) or
(section_name.lower().find('anglecoef') == 0)):
if (filename != data_angle_coeffs):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_angle_coeffs+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower().find('dihedral coef') == 0) or
(section_name.lower().find('dihedral_coef') == 0) or
(section_name.lower().find('dihedralcoef') == 0)):
if (filename != data_dihedral_coeffs):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_dihedral_coeffs+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower().find('improper coef') == 0) or
(section_name.lower().find('improper_coef') == 0) or
(section_name.lower().find('impropercoef') == 0)):
if (filename != data_improper_coeffs):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_improper_coeffs+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
# -- class2 data sections --
elif ((section_name.lower().find('bondbond coef') == 0) or
(section_name.lower().find('bondbond_coef') == 0) or
(section_name.lower().find('bondbondcoef') == 0)):
if (filename != data_bondbond_coeffs):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_bondbond_coeffs+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower().find('bondangle coef') == 0) or
(section_name.lower().find('bondangle_coef') == 0) or
(section_name.lower().find('bondanglecoef') == 0)):
if (filename != data_bondangle_coeffs):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_bondangle_coeffs+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower().find('middlebondtorsion coef') == 0) or
(section_name.lower().find('middlebondtorsion_coef') == 0) or
(section_name.lower().find('middlebondtorsioncoef') == 0) or
(section_name.lower().find('middlebondtorision coef') == 0) or
(section_name.lower().find('middlebondtorision_coef') == 0) or
(section_name.lower().find('middlebondtorisioncoef') == 0)):
if (filename != data_middlebondtorsion_coeffs):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_middlebondtorsion_coeffs+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower().find('endbondtorsion coef') == 0) or
(section_name.lower().find('endbondtorsion_coef') == 0) or
(section_name.lower().find('endbondtorsioncoef') == 0) or
(section_name.lower().find('endbondtorision coef') == 0) or
(section_name.lower().find('endbondtorision_coef') == 0) or
(section_name.lower().find('endbondtorisioncoef') == 0)):
if (filename != data_endbondtorsion_coeffs):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_endbondtorsion_coeffs+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower().find('angletorsion coef') == 0) or
(section_name.lower().find('angletorsion_coef') == 0) or
(section_name.lower().find('angletorsioncoef') == 0) or
(section_name.lower().find('angletorision coef') == 0) or
(section_name.lower().find('angletorision_coef') == 0) or
(section_name.lower().find('angletorisioncoef') == 0)):
if (filename != data_angletorsion_coeffs):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_angletorsion_coeffs+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower().find('angleangletorsion coef') == 0) or
(section_name.lower().find('angleangletorsion_coef') == 0) or
(section_name.lower().find('angleangletorsioncoef') == 0) or
(section_name.lower().find('angleangletorision coef') == 0) or
(section_name.lower().find('angleangletorision_coef') == 0) or
(section_name.lower().find('angleangletorisioncoef') == 0)):
if (filename != data_angleangletorsion_coeffs):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_angleangletorsion_coeffs+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower().find('bondbond13 coef') == 0) or
(section_name.lower().find('bondbond13_coef') == 0) or
(section_name.lower().find('bondbond13coef') == 0)):
if (filename != data_bondbond13_coeffs):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_bondbond13_coeffs+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower().find('angleangle coef') == 0) or
(section_name.lower().find('angleangle_coef') == 0) or
(section_name.lower().find('angleanglecoef') == 0)):
if (filename != data_angleangle_coeffs):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_angleangle_coeffs+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower() == 'bonds by type') or
(section_name.lower() == 'bonds bytype') or
(section_name.lower() == 'bonds_by_type') or
(section_name.lower() == 'bonds_bytype') or
(section_name.lower() == 'bondsbytype') or
(section_name.lower() == 'bond by type') or
(section_name.lower() == 'bond bytype') or
(section_name.lower() == 'bond_by_type') or
(section_name.lower() == 'bond_bytype') or
(section_name.lower() == 'bondbytype')):
if (filename != data_bonds_by_type):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_bonds_by_type+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower() == 'angles by type') or
(section_name.lower() == 'angles bytype') or
(section_name.lower() == 'angles_by_type') or
(section_name.lower() == 'angles_bytype') or
(section_name.lower() == 'anglesbytype') or
(section_name.lower() == 'angle by type') or
(section_name.lower() == 'angle bytype') or
(section_name.lower() == 'angle_by_type') or
(section_name.lower() == 'angle_bytype') or
(section_name.lower() == 'anglebytype')):
if (filename != data_angles_by_type):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_angles_by_type+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower() == 'dihedrals by type') or
(section_name.lower() == 'dihedrals bytype') or
(section_name.lower() == 'dihedrals_by_type') or
(section_name.lower() == 'dihedrals_bytype') or
(section_name.lower() == 'dihedralsbytype') or
(section_name.lower() == 'dihedral by type') or
(section_name.lower() == 'dihedral bytype') or
(section_name.lower() == 'dihedral_by_type') or
(section_name.lower() == 'dihedral_bytype') or
(section_name.lower() == 'dihedralbytype')):
if (filename != data_dihedrals_by_type):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_dihedrals_by_type+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower() == 'impropers by type') or
(section_name.lower() == 'impropers bytype') or
(section_name.lower() == 'impropers_by_type') or
(section_name.lower() == 'impropers_bytype') or
(section_name.lower() == 'impropersbytype') or
(section_name.lower() == 'improper by type') or
(section_name.lower() == 'improper bytype') or
(section_name.lower() == 'improper_by_type') or
(section_name.lower() == 'improper_bytype') or
(section_name.lower() == 'improperbytype')):
if (filename != data_impropers_by_type):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_impropers_by_type+'\"?')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((section_name.lower() == 'bonds') or
(section_name.lower() == 'bond')):
if (filename != data_bonds):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_bonds+'\"?')
elif (write_command == 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write(\"'+filename+'\") instead.\n')
elif ((section_name.lower().find('bond list') == 0) or
(section_name.lower().find('bonds list') == 0) or
(section_name.lower().find('bond_list') == 0) or
(section_name.lower().find('bonds_list') == 0)):
if (filename != data_bond_list):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_bonds_by_type+'\"?')
elif (write_command != 'write'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write(\"'+filename+'\") instead.\n')
elif ((section_name.lower() == 'angles') or
(section_name.lower() == 'angle')):
if (filename != data_angles):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_angles+'\"?')
elif (write_command == 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write(\"'+filename+'\") instead.\n')
elif ((section_name.lower() == 'dihedrals') or
(section_name.lower() == 'dihedral')):
if (filename != data_dihedrals):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_dihedrals+'\"?')
elif (write_command == 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write(\"'+filename+'\") instead.\n')
elif ((section_name.lower() == 'impropers') or
(section_name.lower() == 'improper')):
if (filename != data_impropers):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_impropers+'\"?')
elif (write_command == 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write(\"'+filename+'\") instead.\n')
elif ((section_name.lower() == 'box boundaries') or
(section_name.lower() == 'box boundary') or
(section_name.lower() == 'boundaries') or
(section_name.lower() == 'boundary') or
(section_name.lower() == 'boundary conditions') or
(section_name.lower() == 'periodic boundaries') or
(section_name.lower() == 'periodic boundary conditions') or
(section_name.lower() == 'periodic_boundaries') or
(section_name.lower() == 'periodic_boundary_conditions') or
(section_name.lower() == 'pbc')):
if ((filename != data_boundary) and
(filename != data_pbc)):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_boundary+'\"?\n'
'(Specify periodic boundary conditions this way.)')
elif (write_command != 'write_once'):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
'want to use the '+write_command+'() command with \"'+filename+'\".\n'
'You should probably use write_once(\"'+filename+'\") instead.\n')
elif (filename == data_pbc):
sys.stderr.write('WARNING: write_once(\"'+data_pbc+'\") is depreciated.\n'
' Use write_once(\"'+data_boundary+'\") instead.\n')
def CheckCommonFileNames(filename,
srcloc,
write_command,
filenames_found):
"""
Check the write() or write_once() statements in a
lttree-file to make sure that the files being written
follow the conventions used by lttree.
Almost any file name is permitted, except for file names
which closely match those reserved by lttree.
"""
filenames_found.add(filename)
N_data_prefix = len(data_prefix)
#data_prefix_no_space = data_prefix.rstrip()
N_data_prefix_no_space = len(data_prefix_no_space)
if ((filename[:N_data_prefix].lower() == data_prefix.lower()) and
(filename[:N_data_prefix] != data_prefix)):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'The beginning of output file (\"'+filename+'\")\n'
'does not match yet overlaps closely with a reserved lttree-file name prefix.\n'
'(\"'+data_prefix+'\"). Perhaps you meant \"'+data_prefix+filename[N_data_prefix:]+'\"?')
# check did they forget the space?
if (filename[:N_data_prefix_no_space] == data_prefix_no_space):
if (filename[:N_data_prefix] == data_prefix):
CheckDataFileNames(filename,
srcloc,
write_command,
filenames_found)
else:
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'The beginning of output file (\"'+filename+'\")\n'
'does not match yet overlaps closely with a reserved lttree-file name prefix.\n'
'(\"'+data_prefix+'\"). Perhaps you meant \"'+data_prefix+filename[N_data_prefix_no_space:]+'\"?')
elif ((filename.lower() == 'box boundaries') or
(filename.lower() == 'box boundary') or
(filename.lower() == 'boundaries') or
(filename.lower() == 'boundary') or
(filename.lower() == 'boundary conditions') or
(filename.lower() == 'periodic boundaries') or
(filename.lower() == 'periodic boundary conditions') or
(filename.lower() == 'periodic_boundaries') or
(filename.lower() == 'periodic_boundary_conditions') or
(filename.lower() == 'pbc')):
# In that case (for one thing) they forgot the data_prefix
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+data_boundary+'\"?\n'
'(Specify periodic boundary conditions this way.)')
elif ((filename.lower() == 'init') or
(filename.lower() == 'in init') or
(filename.lower() == 'ininit') or
(filename.lower() == 'initialize') or
(filename.lower() == 'in initialize') or
(filename.lower() == 'ininitialize')):
if (filename != in_init):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+in_init+'\"?')
#elif (write_command != 'write_once'):
# raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
# 'When using moltemplate.sh to build LAMMPS input files, you probably do not\n'
# 'want to use the '+write_command+'() command with \"'+filename+'\".\n'
# 'You should probably use write_once(\"'+filename+'\") instead.\n')
elif ((filename.lower() == 'settings') or
(filename.lower() == 'in settings') or
(filename.lower() == 'insettings')):
if (filename != in_settings):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+in_settings+'\"?')
elif ((filename.lower() == 'set_coords') or
(filename.lower() == 'set coords') or
(filename.lower() == 'setcoords') or
(filename.lower() == 'in set_coords') or
(filename.lower() == 'in set coords') or
(filename.lower() == 'in setcoords')):
if (filename != in_set_coords):
raise InputError('Probable typo in '+ErrorLeader(srcloc.infile,srcloc.lineno)+'\n\n'+
'Output file name (\"'+filename+'\") does not match,\n'
'yet overlaps closely with reserved lttree-file name.\n'
'Perhaps you meant \"'+in_set_coords+'\"?')
def CheckSyntaxCheap(lex):
""" Parse() builds a static tree of StaticObjs by parsing text file.
-The "lex" argument is afile or input stream which has been converted
to a "TemplateLexer" object (similar to the python's built-in shlex lexer).
"""
fnames_found = set([])
prematurely_read_token = None
while True:
if prematurely_read_token == None:
command = lex.get_token()
else:
command = prematurely_read_token
prematurely_read_token = None
#print('Parse(): token = \"'+command+'\", '+lex.error_leader())
if command == lex.eof:
#print('Parse(): EOF encountered\n')
break
if ((command == 'write') or (command == 'write_once')):
open_paren = lex.get_token()
#print('Parse(): open_paren=\"'+open_paren+'\"')
if open_paren=='{':
# ..then the user neglected to specify the "filename" file-name
# argument. In that case, supply the default, ''.
# (which is shorthand for the standard out in this case)
open_curly = open_paren[0]
open_paren = ''
close_paren = ''
filename = ''
srcloc = lex.GetSrcLoc()
else:
filename = lex.get_token()
if filename == ')':
filename == ''
close_paren = ')'
else:
close_paren = lex.get_token()
open_curly = lex.get_token()
srcloc = lex.GetSrcLoc()
if ((open_curly != '{') or
((open_paren == '') and (close_paren != '')) or
((open_paren == '(') and (close_paren != ')'))):
raise InputError('Error: in '+lex.error_leader()+'\n\n'
'Syntax error at beginning of '+command+' command.')
filename = RemoveOuterQuotes(filename, lex.quotes)
# The previous line is similar to:
#filename = filename.strip(lex.quotes)
CheckCommonFileNames(filename, lex.GetSrcLoc(), command, fnames_found)
tmpl_contents = lex.ReadTemplate()
StaticObj.CleanupReadTemplate(tmpl_contents, lex)
for entry in tmpl_contents:
if (type(entry) is VarRef):
CheckCommonVarNames(entry.prefix,
entry.descr_str,
entry.suffix,
entry.srcloc)
#if (data_velocities not in fnames_found):
# sys.stderr.write('-------------------------------------------------\n'
# 'WARNING: \"'+data_velocities+'\" file not found\n'
# '-------------------------------------------------\n')
#if (data_pair_coeffs not in fnames_found):
# sys.stderr.write('-------------------------------------------------\n'
# 'WARNING: \"'+data_pair_coeffs+'\" file not found\n'
# '-------------------------------------------------\n')
if (data_atoms not in fnames_found):
sys.stderr.write('WARNING: \"'+data_atoms+'\" file not found\n')
if (data_masses not in fnames_found):
sys.stderr.write('WARNING: \"'+data_masses+'\" file not found\n')
#if (data_bonds not in fnames_found):
# sys.stderr.write('--------------------------------------------------\n'
# 'WARNING: \"'+data_bonds+'\" file not found\n'
# '--------------------------------------------------\n')
#if (data_angles not in fnames_found):
# sys.stderr.write('--------------------------------------------------\n'
# 'WARNING: \"'+data_angles+'\" file not found\n'
# '--------------------------------------------------\n')
#if (data_dihedrals not in fnames_found):
# sys.stderr.write('--------------------------------------------------\n'
# 'WARNING: \"'+data_dihedrals+'\" file not found\n'
# '--------------------------------------------------\n')
#if (data_impropers not in fnames_found):
# sys.stderr.write('--------------------------------------------------\n'
# 'WARNING: \"'+data_impropers+'\" file not found\n'
# '--------------------------------------------------\n')
#if (data_bond_coeffs not in fnames_found):
# sys.stderr.write('--------------------------------------------------\n'
# 'WARNING: \"'+data_bond_coeffs+'\" file not found\n'
# '--------------------------------------------------\n')
#if (data_angle_coeffs not in fnames_found):
# sys.stderr.write('--------------------------------------------------\n'
# 'WARNING: \"'+data_angle_coeffs+'\" file not found\n'
# '--------------------------------------------------\n')
#if (data_dihedral_coeffs not in fnames_found):
# sys.stderr.write('--------------------------------------------------\n'
# 'WARNING: \"'+data_dihedral_coeffs+'\" file not found\n'
# '--------------------------------------------------\n')
#if (data_improper_coeffs not in fnames_found):
# sys.stderr.write('--------------------------------------------------\n'
# 'WARNING: \"'+data_imrpoper_coeffs+'\" file not found\n'
# '--------------------------------------------------\n')
if (in_init not in fnames_found):
sys.stderr.write('WARNING: \"'+in_init+'\" file not found\n')
if (in_settings not in fnames_found):
sys.stderr.write('WARNING: \"'+in_settings+'\" file not found\n')
def CheckSyntaxStatic(context_node,
root_node,
atom_column_names,
data_pair_coeffs_defined,
data_bond_coeffs_defined,
data_angle_coeffs_defined,
data_dihedral_coeffs_defined,
data_improper_coeffs_defined,
in_pair_coeffs_defined,
in_bond_coeffs_defined,
in_angle_coeffs_defined,
in_dihedral_coeffs_defined,
in_improper_coeffs_defined,
search_instance_commands):
if search_instance_commands:
assert(isinstance(context_node, StaticObj))
commands = context_node.instance_commands
else:
# Note: Leaf nodes contain no commands, so skip them
if (not hasattr(context_node, 'commands')):
return
# Otherwise process their commands
commands = context_node.commands
for command in commands:
if isinstance(command, WriteFileCommand):
filename = command.filename
if filename == None: # (The "create_var" command causes this)
pass
elif (filename.find(in_prefix) == 0): #if filename begins with "In "
CheckInFileSyntax(command.tmpl_list,
root_node,
in_pair_coeffs_defined,
in_bond_coeffs_defined,
in_angle_coeffs_defined,
in_dihedral_coeffs_defined,
in_improper_coeffs_defined)
elif filename == 'Data Atoms':
table = TableFromTemplate(command.tmpl_list,
[[' ', '\t', '\r'], '\n'],
[True, False])
for i in range(0, len(table)):
assert(hasattr(table[i], '__len__'))
if len(table[i]) == 0:
pass # skip blank lines
elif ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(len(table[i][0].text) > 0) and
(table[i][0].text == '#')):
pass # skip comment lines
else:
syntax_err = False
if len(table[i]) < len(atom_column_names):
syntax_err = True
else:
syntax_err = False
for j in range(0, len(atom_column_names)):
if ((atom_column_names[j].lower() == 'atom-id') and
(not ((j < len(table[i])) and
isinstance(table[i][j], VarRef) and
(table[i][j].prefix in ('$','${')) and
(ExtractCatName(table[i][j].descr_str) == 'atom')))):
syntax_err = True
elif ((atom_column_names[j].lower() == 'molecule-id') and
(not ((j < len(table[i])) and
isinstance(table[i][j], VarRef) and
(table[i][j].prefix in ('$','${')) and
(ExtractCatName(table[i][j].descr_str) == 'mol')))):
syntax_err = True
elif ((atom_column_names[j].lower() == 'atom-type') and
(not ((j < len(table[i])) and
(isinstance(table[i][j], VarRef)) and
(table[i][j].prefix in ('@', '@{')) and
(table[i][j].nptr.cat_name == 'atom') and
(table[i][j].nptr.cat_node == root_node)))):
syntax_err = True
if syntax_err:
correct_rows_list = [s for s in atom_column_names]
for j in range(0, len(correct_rows_list)):
if correct_rows_list[j].lower() == 'atom-id':
correct_rows_list[j] = '$atom:id'
elif correct_rows_list[j].lower() == 'atom-type':
correct_rows_list[j] = '@atom:type'
elif correct_rows_list[j].lower() == 'molecule-id':
correct_rows_list[j] = '$mol:id'
correct_rows_msg = ' '.join(correct_rows_list)
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Invalid "Data Atoms" syntax.\n'+
'Each line of the \"Data Atoms\" section should have this format:\n\n'
' '+correct_rows_msg+'\n\n'
'You may have forgotten to specify the LAMMPS atom_style.\n'+
'(You can do this running moltemplate with the -atom-style _style_ argument.)\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
elif filename == 'Data Bonds':
table = TableFromTemplate(command.tmpl_list,
[[' ', '\t', '\r'], '\n'],
[True, False])
for i in range(0, len(table)):
syntax_err = False
assert(hasattr(table[i], '__len__'))
if len(table[i]) > 0:
if ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(len(table[i][0].text) > 0) and
(table[i][0].text == '#')):
pass
else:
if len(table[i]) < 4:
syntax_err = True
table_entry = table[i][0]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'bond'))):
syntax_err = True
if len(table[i]) > 1:
table_entry = table[i][1]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('@', '@{')) and
(table_entry.nptr.cat_name == 'bond') and
(table_entry.nptr.cat_node == root_node))):
syntax_err = True
if len(table[i]) > 2:
table_entry = table[i][2]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'atom'))):
syntax_err = True
if len(table[i]) > 3:
table_entry = table[i][3]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'atom'))):
syntax_err = True
if syntax_err:
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Incorrect "Data Bonds" syntax.\n'+
'Each line of the \"Data Bonds\" section should have this format:\n\n'
' $bond:id @bond:type $atom:id1 $atom:id2\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
elif filename == 'Data Bond List':
table = TableFromTemplate(command.tmpl_list,
[[' ', '\t', '\r'], '\n'],
[True, False])
for i in range(0, len(table)):
syntax_err = False
assert(hasattr(table[i], '__len__'))
if len(table[i]) > 0:
if ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(len(table[i][0].text) > 0) and
(table[i][0].text == '#')):
pass
else:
if len(table[i]) < 3:
syntax_err = True
table_entry = table[i][0]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'bond'))):
syntax_err = True
if len(table[i]) > 1:
table_entry = table[i][1]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'atom'))):
syntax_err = True
if len(table[i]) > 2:
table_entry = table[i][2]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'atom'))):
syntax_err = True
if syntax_err:
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Incorrect "Data Bond List" syntax.\n'+
'Each lines in this section should have this format:\n\n'
' $bond:id $atom:id1 $atom:id2\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
elif filename == 'Data Angles':
table = TableFromTemplate(command.tmpl_list,
[[' ', '\t', '\r'], '\n'],
[True, False])
for i in range(0, len(table)):
syntax_err = False
assert(hasattr(table[i], '__len__'))
if len(table[i]) > 0:
if ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(len(table[i][0].text) > 0) and
(table[i][0].text == '#')):
pass
else:
if len(table[i]) < 5:
syntax_err = True
table_entry = table[i][0]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'angle'))):
syntax_err = True
if len(table[i]) > 1:
table_entry = table[i][1]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('@', '@{')) and
(table_entry.nptr.cat_name == 'angle') and
(table_entry.nptr.cat_node == root_node))):
syntax_err = True
if len(table[i]) > 2:
table_entry = table[i][2]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'atom'))):
syntax_err = True
if len(table[i]) > 3:
table_entry = table[i][3]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'atom'))):
syntax_err = True
if len(table[i]) > 4:
table_entry = table[i][4]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'atom'))):
syntax_err = True
if syntax_err:
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Incorrect "Data Angles" syntax.\n'+
'Each line of the \"Data Angles\" section should have this format:\n\n'
' $angle:id @angle:type $atom:id1 $atom:id2 $atom:id3\n'+
'----------------------------------------------------\n\n'+
g_no_check_msg)
elif filename == 'Data Dihedrals':
table = TableFromTemplate(command.tmpl_list,
[[' ', '\t', '\r'], '\n'],
[True, False])
for i in range(0, len(table)):
syntax_err = False
assert(hasattr(table[i], '__len__'))
if len(table[i]) > 0:
if ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(len(table[i][0].text) > 0) and
(table[i][0].text == '#')):
pass
else:
if len(table[i]) < 6:
syntax_err = True
table_entry = table[i][0]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'dihedral'))):
syntax_err = True
if len(table[i]) > 1:
table_entry = table[i][1]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('@', '@{')) and
(table_entry.nptr.cat_name == 'dihedral') and
(table_entry.nptr.cat_node == root_node))):
syntax_err = True
if len(table[i]) > 2:
table_entry = table[i][2]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'atom'))):
syntax_err = True
if len(table[i]) > 3:
table_entry = table[i][3]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'atom'))):
syntax_err = True
if len(table[i]) > 4:
table_entry = table[i][4]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'atom'))):
syntax_err = True
if len(table[i]) > 5:
table_entry = table[i][5]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'atom'))):
syntax_err = True
if syntax_err:
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Incorrect "Data Dihedrals" syntax.\n'+
'Each line of the \"Data Dihedrals\" section should have this format:\n\n'
' $dihedral:id @dihedral:type $atom:id1 $atom:id2 $atom:id3 $atom:id4\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
elif filename == 'Data Impropers':
table = TableFromTemplate(command.tmpl_list,
[[' ', '\t', '\r'], '\n'],
[True, False])
for i in range(0, len(table)):
syntax_err = False
assert(hasattr(table[i], '__len__'))
if len(table[i]) > 0:
if ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(len(table[i][0].text) > 0) and
(table[i][0].text == '#')):
pass
else:
if len(table[i]) < 6:
syntax_err = True
table_entry = table[i][0]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'improper'))):
syntax_err = True
if len(table[i]) > 1:
table_entry = table[i][1]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('@', '@{')) and
(table_entry.nptr.cat_name == 'improper') and
(table_entry.nptr.cat_node == root_node))):
syntax_err = True
if len(table[i]) > 2:
table_entry = table[i][2]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'atom'))):
syntax_err = True
if len(table[i]) > 3:
table_entry = table[i][3]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'atom'))):
syntax_err = True
if len(table[i]) > 4:
table_entry = table[i][4]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'atom'))):
syntax_err = True
if len(table[i]) > 5:
table_entry = table[i][5]
if (not ((isinstance(table_entry, VarRef)) and
(table_entry.prefix in ('$','${')) and
(ExtractCatName(table_entry.descr_str) == 'atom'))):
syntax_err = True
if syntax_err:
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Incorrect "Data Impropers" syntax.\n'+
'Each line of the \"Data Impropers\" section should have this format:\n\n'
' $improper:id @improper:type $atom:id1 $atom:id2 $atom:id3 $atom:id4\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
# A simple wildcard is the character "*" on its own.
# These are okay.
# A "compound" wildcard expression is something like
# 5*7 or
# 5* or
# *7 or
# @{bond:A}*@bond:B or
# @{bond:A}* or
# *@bond:B
# LAMMPS allows this but in moltemplate this causes
# unintended side-effects. Check for these now.
if filename in set(['Data Bond Coeffs',
'Data Angle Coeffs',
'Data Dihedral Coeffs',
'Data Improper Coeffs',
'Data Pair Coeffs']):
table = TableFromTemplate(command.tmpl_list,
[[' ','\t','\r'], '\n'],
[True, False])
for i in range(0, len(table)):
assert(hasattr(table[i], '__len__'))
if len(table[i]) > 0:
if (isinstance(table[i][0], TextBlock) and
table[i][0].text == '*'):
if filename == 'Data Bond Coeffs':
data_bond_coeffs_defined.add('*')
elif filename == 'Data Angle Coeffs':
data_angle_coeffs_defined.add('*')
elif filename == 'Data Dihedral Coeffs':
data_dihedral_coeffs_defined.add('*')
elif filename == 'Data Improper Coeffs':
data_improper_coeffs_defined.add('*')
elif filename == 'Data Pair Coeffs':
data_pair_coeffs_defined.add(('*','*'))
else:
compound_wildcard = False
if (len(table[i]) > 1):
if hasattr(table[i][0],'__len__'):
ltmpl = table[i][0]
else:
ltmpl = [table[i][0]]
for entry in ltmpl:
if (isinstance(entry, TextBlock) and
('*' in entry.text)):
compound_wildcard = True
elif (isinstance(entry, VarRef) and
('*' in entry.descr_str)):
compound_wildcard = True
if compound_wildcard:
raise InputError('--- Paranoid checking: ---\n'
' Possible error near '+
ErrorLeader(entry.srcloc.infile,
entry.srcloc.lineno)+'\n'
'The wildcard symbol, \"*\", is not recommended within \"'+filename+'\".\n'
'It is safer to specify the parameters for each type explicitly.\n'
'You CAN use \"*\" wildcards, but you must disable syntax checking. To get\n'
'past this error message, run moltemplate.sh using the \"-nocheck\" option.\n')
if filename == 'Data Bond Coeffs':
# Commenting the next line out. We did this already:
#table = TableFromTemplate(command.tmpl_list,
# [[' ','\t','\r'], '\n'],
# [True, False])
for i in range(0, len(table)):
if len(table[i]) == 0:
pass
elif ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(table[i][0].text == '*')):
pass # we dealt with this case earlier
elif ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(len(table[i][0].text) > 0) and
(table[i][0].text == '#')):
pass #Ignore comment lines (postprocessing removes them)
elif (not (isinstance(table[i][0], VarRef) and
(table[i][0].prefix in ('@', '@{')) and
(table[i][0].nptr.cat_name == 'bond') and
(table[i][0].nptr.cat_node == root_node))):
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Incorrect "Data Bond Coeffs" syntax.\n'
' Each line of the \"Data Bond Coeffs\" section\n'
' should have the following syntax:\n\n'+
' @bond:type list-of-parameters...\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
else:
data_bond_coeffs_defined.add(table[i][0].binding)
elif filename == 'Data Angle Coeffs':
# Commenting the next line out. We did this already:
#table = TableFromTemplate(command.tmpl_list,
# [[' ','\t','\r'], '\n'],
# [True, False])
for i in range(0, len(table)):
if len(table[i]) == 0:
pass
elif ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(table[i][0].text == '*')):
pass # we dealt with this case earlier
elif ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(len(table[i][0].text) > 0) and
(table[i][0].text == '#')):
pass #Ignore comment lines (postprocessing removes them)
elif (not (isinstance(table[i][0], VarRef) and
(table[i][0].prefix in ('@', '@{')) and
(table[i][0].nptr.cat_name == 'angle') and
(table[i][0].nptr.cat_node == root_node))):
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Incorrect "Data Angle Coeffs" syntax.\n'
' Each line of the \"Data Angle Coeffs\" section\n'
' should have the following syntax:\n\n'+
' @angle:type list-of-parameters...\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
else:
data_angle_coeffs_defined.add(table[i][0].binding)
elif filename == 'Data Dihedral Coeffs':
# Commenting the next line out. We did this already:
#table = TableFromTemplate(command.tmpl_list,
# [[' ','\t','\r'], '\n'],
# [True, False])
for i in range(0, len(table)):
if len(table[i]) == 0:
pass
elif ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(table[i][0].text == '*')):
pass # we dealt with this case earlier
elif ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(len(table[i][0].text) > 0) and
(table[i][0].text == '#')):
pass #Ignore comment lines (postprocessing removes them)
elif (not (isinstance(table[i][0], VarRef) and
(table[i][0].prefix in ('@', '@{')) and
(table[i][0].nptr.cat_name == 'dihedral') and
(table[i][0].nptr.cat_node == root_node))):
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Incorrect "Data Dihedral Coeffs" syntax.\n'
' Each line of the \"Data Dihedral Coeffs\" section\n'
' should have the following syntax:\n\n'+
' @dihedral:type list-of-parameters...\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
else:
data_dihedral_coeffs_defined.add(table[i][0].binding)
elif filename == 'Data Improper Coeffs':
# Commenting the next line out. We did this already:
#table = TableFromTemplate(command.tmpl_list,
# [[' ','\t','\r'], '\n'],
# [True, False])
for i in range(0, len(table)):
if len(table[i]) == 0:
pass
elif ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(table[i][0].text == '*')):
pass # we dealt with this case earlier
elif ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(len(table[i][0].text) > 0) and
(table[i][0].text == '#')):
pass #Ignore comment lines (postprocessing removes them)
elif (not (isinstance(table[i][0], VarRef) and
(table[i][0].prefix in ('@', '@{')) and
(table[i][0].nptr.cat_name == 'improper') and
(table[i][0].nptr.cat_node == root_node))):
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Incorrect "Data Improper Coeffs" syntax.\n'
' Each line of the \"Data Improper Coeffs\" section\n'
' should have the following syntax:\n\n'+
' @improper:type list-of-parameters...\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
else:
data_improper_coeffs_defined.add(table[i][0].binding)
elif filename == 'Data Pair Coeffs':
# Commenting the next line out. We did this already:
#table = TableFromTemplate(command.tmpl_list,
# [[' ','\t','\r'], '\n'],
# [True, False])
for i in range(0, len(table)):
if len(table[i]) == 0:
pass
elif ((len(table[i]) > 0) and
isinstance(table[i][0], TextBlock) and
(table[i][0].text == '*')):
pass # we dealt with this case earlier
elif ((len(table[i]) > 0) and
isinstance(table[i][0], TextBlock) and
(len(table[i][0].text) > 0) and
(table[i][0].text == '#')):
pass #Ignore comment lines (postprocessing removes them)
elif (not ((len(table[i]) > 0) and
isinstance(table[i][0], VarRef) and
(table[i][0].prefix in ('@', '@{')) and
(table[i][0].nptr.cat_name == 'atom') and
(table[i][0].nptr.cat_node == root_node))):
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Incorrect "Data Pair Coeffs" syntax.\n'
' Each line of the \"Data Pair Coeffs\" section\n'
' should have the following syntax:\n\n'+
' @atom:type list-of-parameters...\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
else:
data_pair_coeffs_defined.add((table[i][0].binding,
table[i][0].binding))
elif filename == 'Data Bonds By Type':
table = TableFromTemplate(command.tmpl_list,
[[' ','\t','\r'], '\n'],
[True, False])
for i in range(0, len(table)):
if len(table[i]) == 0:
pass
elif ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(len(table[i][0].text) > 0) and
(table[i][0].text == '#')):
pass #Ignore comment lines (postprocessing removes them)
elif (not ((len(table[i]) >= 3) and
isinstance(table[i][0], VarRef) and
(table[i][0].prefix in ('@', '@{')) and
(table[i][0].nptr.cat_name == 'bond') and
(table[i][0].nptr.cat_node == root_node))):
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Incorrect \"Data Bonds By Type\" syntax.\n'
' Each line of the \"Data Bonds By Type\" section should begin with an\n'
' @bond:type variable followed by 2 atom types.\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
elif filename == 'Data Angles By Type':
table = TableFromTemplate(command.tmpl_list,
[[' ','\t','\r'], '\n'],
[True, False])
for i in range(0, len(table)):
if len(table[i]) == 0:
pass
elif ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(len(table[i][0].text) > 0) and
(table[i][0].text == '#')):
pass #Ignore comment lines (postprocessing removes them)
elif (not ((len(table[i]) >= 4) and
isinstance(table[i][0], VarRef) and
(table[i][0].prefix in ('@', '@{')) and
(table[i][0].nptr.cat_name == 'angle') and
(table[i][0].nptr.cat_node == root_node))):
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Incorrect \"Data Angles By Type\" syntax.\n'
' Each line of the \"Data Angles By Type\" section should begin with an\n'
' @angle:type variable followed by 3 atom types (and 2 optional bond types).\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
elif filename == 'Data Dihedrals By Type':
table = TableFromTemplate(command.tmpl_list,
[[' ','\t','\r'], '\n'],
[True, False])
for i in range(0, len(table)):
if len(table[i]) == 0:
pass
elif ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(len(table[i][0].text) > 0) and
(table[i][0].text == '#')):
pass #Ignore comment lines (postprocessing removes them)
elif (not ((len(table[i]) >= 5) and
isinstance(table[i][0], VarRef) and
(table[i][0].prefix in ('@', '@{')) and
(table[i][0].nptr.cat_name == 'dihedral') and
(table[i][0].nptr.cat_node == root_node))):
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Incorrect \"Data Dihedrals By Type\" syntax.\n'
' Each line of the \"Data Dihedrals By Type\" section should begin with a\n\n'
' @dihedral:type variable followed by 4 atom types (and 3 optional bond types).\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
elif filename == 'Data Impropers By Type':
table = TableFromTemplate(command.tmpl_list,
[[' ','\t','\r'], '\n'],
[True, False])
for i in range(0, len(table)):
if len(table[i]) == 0:
pass
elif ((len(table[i]) > 1) and
isinstance(table[i][0], TextBlock) and
(len(table[i][0].text) > 0) and
(table[i][0].text == '#')):
pass #Ignore comment lines (postprocessing removes them)
elif (not ((len(table[i]) >= 5) and
isinstance(table[i][0], VarRef) and
(table[i][0].prefix in ('@', '@{')) and
(table[i][0].nptr.cat_name == 'improper') and
(table[i][0].nptr.cat_node == root_node))):
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Incorrect \"Data Impropers By Type\" syntax.\n'
' Each line of the \"Data Impropers By Type\" section should begin with an\n\n'
' @improper:type variable followed by 4 atom types (and 3 optional bond types).\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
# Recursively invoke AssignVarPtrs() on all (non-leaf) child nodes:
for child in context_node.children.values():
CheckSyntaxStatic(child,
root_node,
atom_column_names,
data_pair_coeffs_defined,
data_bond_coeffs_defined,
data_angle_coeffs_defined,
data_dihedral_coeffs_defined,
data_improper_coeffs_defined,
in_pair_coeffs_defined,
in_bond_coeffs_defined,
in_angle_coeffs_defined,
in_dihedral_coeffs_defined,
in_improper_coeffs_defined,
search_instance_commands)
def CheckInFileSyntax(tmpl_list,
root_node,
pair_coeffs_defined,
bond_coeffs_defined,
angle_coeffs_defined,
dihedral_coeffs_defined,
improper_coeffs_defined):
table = TableFromTemplate(tmpl_list,
[[' ','\t','\r'], '\n'],
[True, False])
for i in range(0, len(table)):
assert(hasattr(table[i], '__len__'))
if len(table[i]) > 0:
if ((isinstance(table[i][0], TextBlock)) and
(table[i][0].text in set(['bond_coeff',
'angle_coeff',
'dihedral_coeff',
'improper_coeff']))):
if len(table[i]) > 1: # if not deal with error later
if (isinstance(table[i][1], TextBlock) and
table[i][1].text == '*'):
if table[i][0].text == 'bond_coeff':
bond_coeffs_defined.add('*')
elif table[i][0].text == 'angle_coeff':
angle_coeffs_defined.add('*')
elif table[i][0].text == 'dihedral_coeff':
dihedral_coeffs_defined.add('*')
elif table[i][0].text == 'improper_coeff':
improper_coeffs_defined.add('*')
else:
compound_wildcard = False
if (len(table[i]) > 1):
if hasattr(table[i][1], '__len__'):
ltmpl = table[i][1]
else:
ltmpl = [table[i][1]]
for entry in ltmpl:
if (isinstance(entry, TextBlock) and
('*' in entry.text)):
compound_wildcard = True
elif (isinstance(entry, VarRef) and
('*' in entry.descr_str)):
compound_wildcard = True
if compound_wildcard:
raise InputError('---- Paranoid checking: ---\n'
' Possible error near '+
ErrorLeader(entry.srcloc.infile,
entry.srcloc.lineno)+'\n'
'The wildcard symbol, \"*\", is not recommended within a \"'+table[i][0].text+'\".\n'
'command. It is safer to specify the parameters for each bond type explicitly.\n'
'You CAN use \"*\" wildcards, but you must disable syntax checking. To get\n'
'past this error message, run moltemplate.sh using the \"-nocheck\" option.\n')
if ((isinstance(table[i][0], TextBlock)) and
((table[i][0].text.lower() == 'bondcoeff') or
(table[i][0].text.lower() == 'bond_coeff'))):
if table[i][0].text != 'bond_coeff':
raise InputError('----------------------------------------------------\n'+
' Spelling error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Use \"bond_coeff\", not \"'+table[i][0].text+'\"\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
if ((len(table[i]) > 1) and
isinstance(table[i][1], TextBlock) and
(table[i][1].text == '*')):
pass # we dealt with this case earlier
elif (not ((len(table[i]) > 1) and
(isinstance(table[i][1], VarRef)) and
(table[i][1].prefix in ('@', '@{')) and
(table[i][1].nptr.cat_name == 'bond') and
(table[i][1].nptr.cat_node == root_node))):
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Invalid \"bond_coeff\" command.\n\n'+
' Each \"bond_coeff\" command should have the following syntax:\n\n'+
' bond_coeff @bond:type [optional style] list-of-parameters...\n'+
'----------------------------------------------------\n\n'+
g_no_check_msg)
else:
bond_coeffs_defined.add(table[i][1].binding)
if ((isinstance(table[i][0], TextBlock)) and
((table[i][0].text.lower() == 'anglecoeff') or
(table[i][0].text.lower() == 'angle_coeff'))):
if table[i][0].text != 'angle_coeff':
raise InputError('----------------------------------------------------\n'+
' Spelling error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Use \"angle_coeff\", not \"'+table[i][0].text+'\"\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
if ((len(table[i]) > 1) and
isinstance(table[i][1], TextBlock) and
(table[i][1].text == '*')):
pass # we dealt with this case earlier
elif (not ((len(table[i]) > 1) and
(isinstance(table[i][1], VarRef)) and
(table[i][1].prefix in ('@', '@{')) and
(table[i][1].nptr.cat_name == 'angle') and
(table[i][1].nptr.cat_node == root_node))):
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Invalid \"angle_coeff\" command.\n\n'+
' Each \"angle_coeff\" command should have the following syntax:\n\n'+
' angle_coeff @angle:type [optional style] list-of-parameters...\n'+
'----------------------------------------------------\n\n'+
g_no_check_msg)
else:
angle_coeffs_defined.add(table[i][1].binding)
if ((isinstance(table[i][0], TextBlock)) and
((table[i][0].text.lower() == 'dihedralcoeff') or
(table[i][0].text.lower() == 'dihedral_coeff'))):
if table[i][0].text != 'dihedral_coeff':
raise InputError('----------------------------------------------------\n'+
' Spelling error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Use \"dihedral_coeff\", not \"'+table[i][0].text+'\"\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
if ((len(table[i]) > 1) and
isinstance(table[i][1], TextBlock) and
(table[i][1].text == '*')):
pass # we dealt with this case earlier
elif (not ((len(table[i]) > 1) and
(isinstance(table[i][1], VarRef)) and
(table[i][1].prefix in ('@', '@{')) and
(table[i][1].nptr.cat_name == 'dihedral') and
(table[i][1].nptr.cat_node == root_node))):
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Invalid \"dihedral_coeff\" command.\n\n'+
' Each \"dihedral_coeff\" command should have the following syntax:\n\n'+
' dihedral_coeff @dihedral:type [optional style] list-of-parameters...\n'+
'----------------------------------------------------\n\n'+
g_no_check_msg)
else:
dihedral_coeffs_defined.add(table[i][1].binding)
if ((isinstance(table[i][0], TextBlock)) and
((table[i][0].text.lower() == 'impropercoeff') or
(table[i][0].text.lower() == 'improper_coeff'))):
if table[i][0].text != 'improper_coeff':
raise InputError('----------------------------------------------------\n'+
' Spelling error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Use \"improper_coeff\", not \"'+table[i][0].text+'\"\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
if ((len(table[i]) > 1) and
isinstance(table[i][1], TextBlock) and
(table[i][1].text == '*')):
pass # we dealt with this case earlier
elif (not ((len(table[i]) > 1) and
(isinstance(table[i][1], VarRef)) and
(table[i][1].prefix in ('@', '@{')) and
(table[i][1].nptr.cat_name == 'improper') and
(table[i][1].nptr.cat_node == root_node))):
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Invalid \"improper_coeff\" command.\n\n'+
' Each \"improper_coeff\" command should have the following syntax:\n\n'+
' improper_coeff @improper:type [optional style] list-of-parameters...\n'+
'----------------------------------------------------\n\n'+
g_no_check_msg)
else:
improper_coeffs_defined.add(table[i][1].binding)
elif ((isinstance(table[i][0], TextBlock)) and
((table[i][0].text.lower() == 'paircoeff') or
(table[i][0].text.lower() == 'pair_coeff'))):
if table[i][0].text != 'pair_coeff':
raise InputError('----------------------------------------------------\n'+
' Spelling error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Use \"pair_coeff\", not \"'+table[i][0].text+'\"\n'+
'----------------------------------------------------\n'+
g_no_check_msg)
if len(table[i]) > 2: # if not, deal with error later
if ((isinstance(table[i][1], TextBlock) and
(table[i][1].text == '*')) and
(isinstance(table[i][1], TextBlock) and
(table[i][1].text == '*'))):
pair_coeffs_defined.add(('*','*'))
else:
compound_wildcard = False
assert(len(table[i]) > 1)
if hasattr(table[i][1], '__len__'):
ltmpl = table[i][1]
else:
ltmpl = [table[i][1]]
for entry in ltmpl:
if (isinstance(entry, TextBlock) and
('*' in entry.text)):
compound_wildcard = True
elif (isinstance(entry, VarRef) and
('*' in entry.descr_str)):
compound_wildcard = True
if hasattr(table[i][2], '__len__'):
ltmpl = table[i][2]
else:
ltmpl = [table[i][2]]
for entry in ltmpl:
if (isinstance(entry, TextBlock) and
('*' in entry.text)):
compound_wildcard = True
elif (isinstance(entry, VarRef) and
('*' in entry.descr_str)):
compound_wildcard = True
if compound_wildcard:
raise InputError('---- Paranoid checking: ---\n'
' Possible error near '+
ErrorLeader(entry.srcloc.infile,
entry.srcloc.lineno)+'\n'
'The wildcard symbol, \"*\", is not recommended within a \"pair_coeff\" command.\n'
'It is safer to specify the parameters for each bond type explicitly.\n'
'You CAN use \"*\" wildcards, but you must disable syntax checking. To get\n'
'past this error message, run moltemplate.sh using the \"-nocheck\" option.\n')
if ((len(table[i]) > 2) and
(isinstance(table[i][1], TextBlock) and
(table[i][1].text == '*')) and
(isinstance(table[i][2], TextBlock) and
(table[i][2].text == '*'))):
pass # we dealt with this case earlier
elif (not ((len(table[i]) > 2) and
(isinstance(table[i][1], VarRef)) and
(table[i][1].prefix in ('@', '@{')) and
(table[i][1].nptr.cat_name == 'atom') and
(table[i][1].nptr.cat_node == root_node) and
(isinstance(table[i][2], VarRef)) and
(table[i][2].prefix in ('@', '@{')) and
(table[i][2].nptr.cat_name == 'atom') and
(table[i][2].nptr.cat_node == root_node))):
raise InputError('----------------------------------------------------\n'+
' Syntax error near '+
ErrorLeader(table[i][0].srcloc.infile,
table[i][0].srcloc.lineno)+'\n'
' Invalid \"pair_coeff\" command.\n\n'+
' Each \"pair_coeff\" command should have the following syntax:\n\n'+
' pair_coeff @atom:typeI @atom:typeJ [optional style] list-of-parameters...\n'+
'----------------------------------------------------\n\n'+
g_no_check_msg)
else:
pair_coeffs_defined.add((table[i][1].binding, table[i][2].binding))
def LttreeCheckParseArgs(argv, settings):
LttreeParseArgs(argv, settings)
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.)
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:
settings.infile = argv[1]
try:
settings.lex = TemplateLexer(open(settings.infile, 'r'),
settings.infile) # Parse text from file
except IOError:
sys.stderr.write('Error: unable to open file\n'
' \"'+settings.infile+'\"\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'
' Unrecognized argument.\n'
' (That or there is some other problem with the argument list.)\n'
' The problem begins with these arguments:\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')
####### control flow begins here: #######
if __name__ == "__main__":
g_program_name = __file__.split('/')[-1] # = 'lttree_check.py'
g_version_str = '0.76'
g_date_str = '2014-12-19'
sys.stderr.write(g_program_name+' v'+g_version_str+' '+g_date_str+'\n')
try:
# Parse the argument list and instantiate the lexer we will be using:
#settings = BasicUISettings()
#BasicUIParseArgs(sys.argv, settings)
settings = LttreeSettings()
LttreeCheckParseArgs(sys.argv, settings)
# Invoke syntax checker pass:
# This first check only checks for very simple mistakes
# (mispelled versions of standard files or variable names).
CheckSyntaxCheap(settings.lex)
settings.lex.instream.close()
# Now read the file again.
# This time parse it using StaticObj.ReadTemplate().
# (This will allow us to check for deeper problems.)
del settings.lex
settings.lex = TemplateLexer(open(settings.infile, 'r'),
settings.infile)
static_tree_root = StaticObj('', None) # The root of the static tree
# has name '' (equivalent to '/')
sys.stderr.write(g_program_name+': parsing the class definitions...')
static_tree_root.Parse(settings.lex)
sys.stderr.write(' done\n'+g_program_name+': looking up classes...')
static_tree_root.LookupStaticRefs()
sys.stderr.write(' done\n'+g_program_name+': looking up @variables...')
AssignStaticVarPtrs(static_tree_root,
search_instance_commands=False)
+ replace_var_pairs = {}
+ FindReplacementVarPairs(static_tree_root, replace_var_pairs)
+ ReplaceVars(static_tree_root, replace_var_pairs,
+ search_instance_commands=False)
AssignStaticVarPtrs(static_tree_root,
search_instance_commands=True)
+ ReplaceVars(static_tree_root, replace_var_pairs,
+ search_instance_commands=True)
sys.stderr.write(' done\n')
#sys.stderr.write(' done\n\nclass_def_tree = ' + str(static_tree_root) + '\n\n')
data_pair_coeffs_defined = set([])
data_bond_coeffs_defined = set([])
data_angle_coeffs_defined = set([])
data_dihedral_coeffs_defined = set([])
data_improper_coeffs_defined = set([])
in_pair_coeffs_defined = set([])
in_bond_coeffs_defined = set([])
in_angle_coeffs_defined = set([])
in_dihedral_coeffs_defined = set([])
in_improper_coeffs_defined = set([])
# Now check the static syntax
# Here we check the contents of the the "write_once()" commands:
CheckSyntaxStatic(static_tree_root,
static_tree_root,
settings.column_names,
data_pair_coeffs_defined,
data_bond_coeffs_defined,
data_angle_coeffs_defined,
data_dihedral_coeffs_defined,
data_improper_coeffs_defined,
in_pair_coeffs_defined,
in_bond_coeffs_defined,
in_angle_coeffs_defined,
in_dihedral_coeffs_defined,
in_improper_coeffs_defined,
search_instance_commands=False)
# Here we check the contents of the the "write()" commands:
CheckSyntaxStatic(static_tree_root,
static_tree_root,
settings.column_names,
data_pair_coeffs_defined,
data_bond_coeffs_defined,
data_angle_coeffs_defined,
data_dihedral_coeffs_defined,
data_improper_coeffs_defined,
in_pair_coeffs_defined,
in_bond_coeffs_defined,
in_angle_coeffs_defined,
in_dihedral_coeffs_defined,
in_improper_coeffs_defined,
search_instance_commands=True)
if 'bond' in static_tree_root.categories:
if ((len(data_bond_coeffs_defined) > 0) and
(len(in_bond_coeffs_defined) > 0)):
raise InputError('---------------------------------------------------------------------\n'+
' Syntax error: You can EITHER use \"bond_coeff\" commands\n'+
' OR you can have a \"Data Bond Coeffs\" section.\n'+
' LAMMPS will not allow both (...as of late 2012)\n'+
'---------------------------------------------------------------------\n'+
g_no_check_msg)
#' If this is no longer true, to override this error message you must\n'+
#' disable error checking by running moltemplate with the -nocheck option.\n')
if len(data_bond_coeffs_defined) > 0:
bond_coeffs_defined = data_bond_coeffs_defined
else:
bond_coeffs_defined = in_bond_coeffs_defined
bond_bindings = static_tree_root.categories['bond'].bindings
for nd,bond_binding in bond_bindings.items():
if not nd.IsDeleted():
if ((not (bond_binding in bond_coeffs_defined)) and
(not HasWildCard(bond_binding.full_name)) and
(not ('*' in bond_coeffs_defined))):
raise InputError('---------------------------------------------------------------------\n'+
' Syntax error: Missing bond coeff.\n\n'+
' No coeffs for the \"'+bond_binding.full_name+'\" bond type have been\n'+
'defined, but a reference to that bond type was discovered\n'+
'near '+ErrorLeader(bond_binding.refs[0].srcloc.infile,
bond_binding.refs[0].srcloc.lineno)+'. Check this file and also check\n'
'your \"bond_coeff\" commands or your \"Data Bond Coeffs" section.\n'
'---------------------------------------------------------------------\n'+
g_no_check_msg)
if 'angle' in static_tree_root.categories:
if ((len(data_angle_coeffs_defined) > 0) and
(len(in_angle_coeffs_defined) > 0)):
raise InputError('---------------------------------------------------------------------\n'+
' Syntax error: You can EITHER use \"angle_coeff\" commands\n'+
' OR you can have a \"Data Angle Coeffs\" section.\n'+
' LAMMPS will not allow both (...as of late 2012)\n'+
'---------------------------------------------------------------------\n'+
g_no_check_msg)
#' If this is no longer true, to override this error message you must\n'+
#' disable error checking by running moltemplate with the -nocheck option.\n')
if len(data_angle_coeffs_defined) > 0:
angle_coeffs_defined = data_angle_coeffs_defined
else:
angle_coeffs_defined = in_angle_coeffs_defined
angle_bindings = static_tree_root.categories['angle'].bindings
for nd,angle_binding in angle_bindings.items():
if not nd.IsDeleted():
if ((not (angle_binding in angle_coeffs_defined)) and
#(not HasWildCard(angle_binding.full_name)) and
(not ('*' in angle_coeffs_defined))):
raise InputError('---------------------------------------------------------------------\n'+
' Syntax error: Missing angle coeff.\n\n'+
' No coeffs for the \"'+angle_binding.full_name+'\" angle type have been\n'+
'defined, but a reference to that angle type was discovered\n'+
'near '+ErrorLeader(angle_binding.refs[0].srcloc.infile,
angle_binding.refs[0].srcloc.lineno)+'. Check this file and\n'
'also check your \"angle_coeff\" commands or your \"Data Angle Coeffs" section.\n'+
'---------------------------------------------------------------------\n'+
g_no_check_msg)
if 'dihedral' in static_tree_root.categories:
if ((len(data_dihedral_coeffs_defined) > 0) and
(len(in_dihedral_coeffs_defined) > 0)):
raise InputError('---------------------------------------------------------------------\n'+
' Syntax error: You can EITHER use \"dihedral_coeff\" commands\n'+
' OR you can have a \"Data Dihedral Coeffs\" section.\n'+
' LAMMPS will not allow both (...as of late 2012)\n'+
'---------------------------------------------------------------------\n'+
g_no_check_msg)
#' If this is no longer true, to override this error message you must\n'+
#' disable error checking by running moltemplate with the -nocheck option.\n')
if len(data_dihedral_coeffs_defined) > 0:
dihedral_coeffs_defined = data_dihedral_coeffs_defined
else:
dihedral_coeffs_defined = in_dihedral_coeffs_defined
dihedral_bindings = static_tree_root.categories['dihedral'].bindings
for nd,dihedral_binding in dihedral_bindings.items():
if not nd.IsDeleted():
if ((not (dihedral_binding in dihedral_coeffs_defined)) and
#(not HasWildCard(dihedral_binding.full_name)) and
(not ('*' in dihedral_coeffs_defined))):
raise InputError('---------------------------------------------------------------------\n'+
' Syntax error: Missing dihedral coeff.\n\n'+
' No coeffs for the \"'+dihedral_binding.full_name+'\" dihedral type have been\n'+
'defined, but a reference to that dihedral type was discovered\n'+
'near '+ErrorLeader(dihedral_binding.refs[0].srcloc.infile,
dihedral_binding.refs[0].srcloc.lineno)+'. Check this file and\n'
'also check your \"dihedral_coeff\" commands or your \"Data Dihedral Coeffs" section.\n'+
'---------------------------------------------------------------------\n'+
g_no_check_msg)
if 'improper' in static_tree_root.categories:
if ((len(data_improper_coeffs_defined) > 0) and
(len(in_improper_coeffs_defined) > 0)):
raise InputError('---------------------------------------------------------------------\n'+
' Syntax error: You can EITHER use \"improper_coeff\" commands\n'+
' OR you can have a \"Data Improper Coeffs\" section.\n'+
' LAMMPS will not allow both (...as of late 2012)\n'+
'---------------------------------------------------------------------\n'+
g_no_check_msg)
#' If this is no longer true, to override this error message you must\n'+
#' disable error checking by running moltemplate with the -nocheck option.\n')
if len(data_improper_coeffs_defined) > 0:
improper_coeffs_defined = data_improper_coeffs_defined
else:
improper_coeffs_defined = in_improper_coeffs_defined
improper_bindings = static_tree_root.categories['improper'].bindings
for nd,improper_binding in improper_bindings.items():
if not nd.IsDeleted():
if ((not (improper_binding in improper_coeffs_defined)) and
#(not HasWildCard(improper_binding.full_name)) and
(not ('*' in improper_coeffs_defined))):
raise InputError('---------------------------------------------------------------------\n'+
' Syntax error: Missing improper coeff.\n\n'+
' No coeffs for the \"'+improper_binding.full_name+'\" improper type have been\n'+
'defined, but a reference to that improper type was discovered\n'+
'near '+ErrorLeader(improper_binding.refs[0].srcloc.infile,
improper_binding.refs[0].srcloc.lineno)+'. Check this file and\n'
'also check your \"improper_coeff\" commands or your \"Data Improper Coeffs" section.\n'+
'---------------------------------------------------------------------\n'+
g_no_check_msg)
if 'atom' in static_tree_root.categories:
if ((len(data_pair_coeffs_defined) > 0) and
(len(in_pair_coeffs_defined) > 0)):
raise InputError('---------------------------------------------------------------------\n'+
' Syntax error: You can EITHER use \"pair_coeff\" commands\n'+
' OR you can have a \"Data Pair Coeffs\" section.\n'+
' LAMMPS will not allow both (...as of late 2012)\n'+
'---------------------------------------------------------------------\n'+
g_no_check_msg)
#' If this is no longer true, to override this error message you must\n'+
#' disable error checking by running moltemplate with the -nocheck option.\n')
if len(data_pair_coeffs_defined) > 0:
pair_coeffs_defined = data_pair_coeffs_defined
else:
pair_coeffs_defined = in_pair_coeffs_defined
atom_bindings = static_tree_root.categories['atom'].bindings
for nd,atom_binding in atom_bindings.items():
if not nd.IsDeleted():
if ((not ((atom_binding,atom_binding)
in
pair_coeffs_defined)) and
(not HasWildCard(atom_binding.full_name)) and
- (not (('*','*') in pair_coeffs_defined))):
+ (not (('*','*') in pair_coeffs_defined)) and
+ (not (atom_binding.nptr.cat_name,
+ atom_binding.nptr.cat_node,
+ atom_binding.nptr.leaf_node)
+ in replace_var_pairs)):
+
raise InputError('---------------------------------------------------------------------\n'+
' Syntax error: Missing pair coeff.\n\n'+
' No pair coeffs for the \"'+atom_binding.full_name+'\" atom type have been\n'+
'defined, but a reference to that atom type was discovered\n'+
'near '+ErrorLeader(atom_binding.refs[0].srcloc.infile,
atom_binding.refs[0].srcloc.lineno)+'. Check this file and\n'
'also check your \"pair_coeff\" commands or your \"Data Pair Coeffs" section.\n\n'+
g_no_check_msg)
#else:
# raise InputError('Error: No atom types (@atom) have been defined.\n')
sys.stderr.write(g_program_name+': -- No errors detected. --\n')
exit(0)
except (ValueError, InputError) as err:
sys.stderr.write('\n'+str(err)+'\n')
sys.exit(1)
diff --git a/tools/moltemplate/src/lttree_postprocess.py b/tools/moltemplate/src/lttree_postprocess.py
old mode 100755
new mode 100644
diff --git a/tools/moltemplate/src/moltemplate.sh b/tools/moltemplate/src/moltemplate.sh
index ed1506fde..3a8d17bcd 100755
--- a/tools/moltemplate/src/moltemplate.sh
+++ b/tools/moltemplate/src/moltemplate.sh
@@ -1,2033 +1,2110 @@
#!/usr/bin/env bash
# (note: Classic Bourne shell (#!/bin/sh) also worked at some point.)
# Author: Andrew Jewett (jewett.aij at g mail)
-# http://www.chem.ucsb.edu/~sheagroup
+# http://www.moltemplate.org
# License: 3-clause BSD License (See LICENSE.TXT)
# Copyright (c) 2012, Regents of the University of California
# All rights reserved.
G_PROGRAM_NAME="moltemplate.sh"
-G_VERSION="1.34"
-G_DATE="2015-11-18"
+G_VERSION="1.40"
+G_DATE="2016-10-19"
echo "${G_PROGRAM_NAME} v${G_VERSION} ${G_DATE}" >&2
echo "" >&2
# Check for python:
# I prefer python over python3 because python3 requires slightly
# more memory. Use regular python (ie 2.7) when available.
if which python > /dev/null; then
PYTHON_COMMAND='python'
elif which python3 > /dev/null; then
PYTHON_COMMAND='python3'
else
echo "Error: $G_PROGRAM_NAME requires python or python3" >&2
exit 1
fi
# First, determine the directory in which this shell script is located.
# (The python script files should also be located here as well.)
#SCRIPT_DIR=$(dirname $0)
SCRIPT_DIR=`dirname "$0"`
MSG_BAD_INSTALL=$(cat <<EOF
INSTALLATION ERROR:
Follow the instructions in the "Installation" chapter of the moltemplate manual.
(Note: You may need to log out and log in again before the changes take effect.)
EOF
)
ERR_BAD_INSTALL()
{
echo "$MSG_BAD_INSTALL" >&2
exit 1
}
ERR_INTERNAL()
{
echo " !!!!!! Possible internal error !!!!!!" >&2
echo "This could be a bug in moltemplate." >&2
echo "Please report this error." >&2
echo "(And please include the last few lines of moltemplate output preceeding this.)" >&2
echo " Thank you." >&2
exit 100
}
MOLTEMPLATE_FILES_NEEDED=$(cat <<EOF
ttree.py
lttree.py
lttree_check.py
lttree_postprocess.py
nbody_by_type.py
nbody_fix_ttree_assignments.py
nbody_reorder_atoms.py
pdbsort.py
postprocess_input_script.py
remove_duplicate_atoms.py
remove_duplicates_nbody.py
renumber_DATA_first_column.py
ttree_render.py
dump2data.py
raw2data.py
EOF
)
OIFS=$IFS
#IFS=$'\n'
IFS="
"
for f in $MOLTEMPLATE_FILES_NEEDED; do
if [ ! -s "${SCRIPT_DIR}/$f" ]; then
echo "Error: Missing file \"${SCRIPT_DIR}/$f\"" >&2
ERR_BAD_INSTALL
fi
done
IFS=$OIFS
-IMOLPATH=""
-if [ -n "${MOLTEMPLATE_PATH}" ]; then
- IMOLPATH="-importpath \"${MOLTEMPLATE_PATH}\""
+# Directory moltemplate looks for popular force-fields files:
+#IMOLPATH=""
+#if [ -n "${MOLTEMPLATE_PATH}" ]; then
+# IMOLPATH="-importpath \"${MOLTEMPLATE_PATH}\""
+#fi
+if [ -d "${SCRIPT_DIR}/moltemplate_force_fields" ]; then
+ IMOLPATH="-importpath \"${SCRIPT_DIR}/moltemplate_force_fields\""
+else
+ IMOLPATH=""
fi
# command that invokes lttree.py
LTTREE_COMMAND="$PYTHON_COMMAND \"${SCRIPT_DIR}/lttree.py\" ${IMOLPATH}"
# command that invokes lttree_check.py
LTTREE_CHECK_COMMAND="$PYTHON_COMMAND \"${SCRIPT_DIR}/lttree_check.py\" ${IMOLPATH}"
# command that invokes lttree_postprocess.py
LTTREE_POSTPROCESS_COMMAND="$PYTHON_COMMAND \"${SCRIPT_DIR}/lttree_postprocess.py\" ${IMOLPATH}"
# -----------------------------------------------------------
# If everything worked, then running ttree usually
# generates the following files:
#
# Users of lttree typically generate the following files:
# The variable below refer to file names generated by
# write() and write_once() commands in a lttree-file.
# (I keep changing my mind what I want these names to be.)
data_prefix="Data "
data_prefix_no_space="Data"
data_header="Data Header"
data_atoms="Data Atoms"
data_masses="Data Masses"
data_velocities="Data Velocities"
data_bonds="Data Bonds"
data_bond_list="Data Bond List"
+data_bonds_atomid_atomid="Data Bonds AtomId AtomId"
data_angles="Data Angles"
data_dihedrals="Data Dihedrals"
data_impropers="Data Impropers"
data_bond_coeffs="Data Bond Coeffs"
data_angle_coeffs="Data Angle Coeffs"
data_dihedral_coeffs="Data Dihedral Coeffs"
data_improper_coeffs="Data Improper Coeffs"
data_pair_coeffs="Data Pair Coeffs"
data_pairij_coeffs="Data PairIJ Coeffs"
# interactions-by-type (not id. This is not part of the LAMMPS standard.)
+data_chargepairs_by_type="Data Charge Pairs By Type"
data_bonds_by_type="Data Bonds By Type"
data_angles_by_type="Data Angles By Type"
data_dihedrals_by_type="Data Dihedrals By Type"
data_impropers_by_type="Data Impropers By Type"
# class2 data sections
data_bondbond_coeffs="Data BondBond Coeffs"
data_bondangle_coeffs="Data BondAngle Coeffs"
data_middlebondtorsion_coeffs="Data MiddleBondTorsion Coeffs"
data_endbondtorsion_coeffs="Data EndBondTorsion Coeffs"
data_angletorsion_coeffs="Data AngleTorsion Coeffs"
data_angleangletorsion_coeffs="Data AngleAngleTorsion Coeffs"
data_bondbond13_coeffs="Data BondBond13 Coeffs"
data_angleangle_coeffs="Data AngleAngle Coeffs"
# sections for non-point-like particles:
data_ellipsoids="Data Ellipsoids"
data_lines="Data Lines"
data_triangles="Data Triangles"
# periodic boundary conditions
data_boundary="Data Boundary"
# (for backward compatibility), an older version of this file was named:
data_pbc="Data PBC"
# ---------------------------------------------------------------
# Note: The files above are fragments of a LAMMPS data file.
# In addition, moltemplate will probably also generate the following files:
# (These files represent different sections of the LAMMPS input script.)
# ---------------------------------------------------------------
in_prefix="In "
in_prefix_no_space="In"
in_init="In Init"
in_settings="In Settings"
in_coords="In Coords"
+in_charges="In Charges"
# If present, the various "In " files contain commands which should be
# included by the user in their LAMMPS input script. (This task is left
# to the user.) However, the "Data " files are processed and pasted together
# automatically in order to build a LAMMPS data file.
# ---------------------------------------------------------------
tmp_atom_coords="tmp_atom_coords.dat" #<-temporary file for storing coordinates
MOLTEMPLATE_TEMP_FILES=$(cat <<EOF
*.template
ttree_assignments.txt
$tmp_atom_coords
$data_masses
$data_pair_coeffs
$data_pairij_coeffs
$data_bond_coeffs
$data_angle_coeffs
$data_dihedral_coeffs
$data_improper_coeffs
$data_atoms
$data_velocities
$data_bonds
$data_bond_list
$data_angles
$data_dihedrals
$data_impropers
$data_bondbond_coeffs
$data_bondangle_coeffs
$data_middlebondtorsion_coeffs
$data_endbondtorsion_coeffs
$data_angletorsion_coeffs
$data_angleangletorsion_coeffs
$data_bondbond13_coeffs
$data_angleangle_coeffs
$data_ellipsoids
$data_lines
$data_triangles
$data_boundary
$data_bonds_by_type*
${data_angles_by_type}*
${data_dihedrals_by_type}*
${data_impropers_by_type}*
$in_init
$in_settings
EOF
)
OIFS=$IFS
#IFS=$'\n'
IFS="
"
for f in $MOLTEMPLATE_TEMP_FILES; do
#echo "removing [$f]"
rm -f "$f"
done
IFS=$OIFS
rm -rf output_ttree
SYNTAX_MSG=$(cat <<EOF
Syntax example:
Usage:
moltemplate.sh [-atomstyle style] \
[-pdb/-xyz 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"
-xyz xyz_file An optional xyz_file argument can 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 An optional pdb_file argument can be supplied as an argument
following "-pdb".
This should be a PDB file (with ATOM or HETATM records) with
the coordinates you wish to appear in the LAMMPS data file.
(The atoms must appear in the same order 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 2012-2-13.
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 moltemplat.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.
-overlay-angles Normally, moltemplate.sh checks to see if multiple angle
-overlay-dihedrals interactions are defined for the same triplet of atoms.
-overlay-impropers If so, it deletes the redundant ones (keeping the last one).
-overlay-bonds (It does the same thing for bonds, dihedrals, and impropers.)
Use these options to prevent that behavoir.
EOF
)
# --- Periodic boundary box information (default) ---
# We will determine these numbers later.
TRICLINIC=""
BOXSIZE_MINX=0.0
BOXSIZE_MINY=0.0
BOXSIZE_MINZ=0.0
BOXSIZE_MAXX=""
BOXSIZE_MAXY=""
BOXSIZE_MAXZ=""
BOXSIZE_XY=0.0
BOXSIZE_XZ=0.0
BOXSIZE_YZ=0.0
if [ "$1" = "--help" ]; then
echo "$SYNTAX_MSG" >&2
exit 0
fi
# --- Did the user specify a file containing atomic coordinates?
rm -f "$tmp_atom_coords"
# Optional files containing atom coordinates:
PDB_FILE=""
XYZ_FILE=""
RAW_FILE=""
LT_FILE=""
OUT_FILE_BASE="system"
# REMOVE_DUPLICATE variables:
# ...If true (default), then any duplicate entries in the lists of bonds
# bonds, angles, dihedrals, or impropers in the LAMMPS DATA file
# are removed, giving priority to the most recent entry in the list.
# (This might not be necessary, but I want to be careful.)
REMOVE_DUPLICATE_BONDS="true"
REMOVE_DUPLICATE_ANGLES="true"
REMOVE_DUPLICATE_DIHEDRALS="true"
REMOVE_DUPLICATE_IMPROPERS="true"
RUN_VMD_AT_END=""
ARGC=0
for A in "$@"; do
A_FIRSTCHAR="$(echo $A| cut -c 1)"
# (Note to self: this next line only works in bash, not classic sh.)
if [ "$A_FIRSTCHAR" = "\$" ]; then
A="\\$A" # put an extra slash in front to prevent expansion later
fi
ARGC=$((ARGC+1))
eval ARGV${ARGC}=\"$A\"
done
TTREE_ARGS=""
ATOM_STYLE=""
ATOM_STYLE_ARG=""
i=0
while [ "$i" -lt "$ARGC" ]; do
i=$((i+1))
eval A=\${ARGV${i}}
if [ "$A" = "-nocheck" ]; then
# Disable syntax checking by undefining LTTREE_CHECK_COMMAND
unset LTTREE_CHECK_COMMAND
unset LTTREE_POSTPROCESS_COMMAND
elif [ "$A" = "-overlay-bonds" ]; then
# In that case, do not remove duplicate bond interactions
unset REMOVE_DUPLICATE_BONDS
elif [ "$A" = "-overlay-angles" ]; then
# In that case, do not remove duplicate angle interactions
unset REMOVE_DUPLICATE_ANGLES
elif [ "$A" = "-overlay-dihedrals" ]; then
# In that case, do not remove duplicate dihedral interactions
unset REMOVE_DUPLICATE_DIHEDRALS
elif [ "$A" = "-overlay-impropers" ]; then
# In that case, do not remove duplicate improper interactions
unset REMOVE_DUPLICATE_IMPROPERS
elif [ "$A" = "-vmd" ]; then
RUN_VMD_AT_END="true"
elif [ "$A" = "-raw" ]; then
if [ "$i" -eq "$ARGC" ]; then
echo "$SYNTAX_MSG" >&2
exit 7
fi
i=$((i+1))
eval A=\${ARGV${i}}
RAW_FILE=$A
if [ ! -s "$RAW_FILE" ]; then
echo "$SYNTAX_MSG" >&2
echo "-----------------------" >&2
echo "" >&2
echo "Error: Unable to open RAW-file \"$RAW_FILE\"." >&2
echo " (File is empty or does not exist.)" >&2
exit 8
fi
#echo " (extracting coordinates from \"$RAW_FILE\")" >&2
awk '{if (NF==3) {print $0}}' < "$RAW_FILE" > "$tmp_atom_coords"
elif [ "$A" = "-xyz" ]; then
if [ "$i" -eq "$ARGC" ]; then
echo "$SYNTAX_MSG" >&2
exit 7
fi
i=$((i+1))
eval A=\${ARGV${i}}
XYZ_FILE=$A
if [ ! -s "$XYZ_FILE" ]; then
echo "$SYNTAX_MSG" >&2
echo "-----------------------" >&2
echo "" >&2
echo "Error: Unable to open XYZ-file \"$XYZ_FILE\"." >&2
echo " (File is empty or does not exist.)" >&2
exit 8
fi
#echo " (extracting coordinates from \"$XYZ_FILE\")" >&2
# "isnum(x)" returns 1 or 0 depending upon whether or not
# a string is numeric.
#http://rosettacode.org/wiki/Determine_if_a_string_is_numeric#AWK
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} }}}}' < "$XYZ_FILE" > "$tmp_atom_coords"
elif [ "$A" = "-pdb" ]; then
if [ "$i" -eq "$ARGC" ]; then
echo "$SYNTAX_MSG" >&2
exit 9
fi
i=$((i+1))
eval A=\${ARGV${i}}
PDB_FILE=$A
if [ ! -s "$PDB_FILE" ]; then
echo "$SYNTAX_MSG" >&2
echo "-----------------------" >&2
echo "" >&2
echo "Error: Unable to open PDB-file \"$PDB_FILE\"." >&2
echo " (File is empty or does not exist.)" >&2
exit 10
fi
#echo " (extracting coordinates from \"$PDB_FILE\")" >&2
if grep -q '^ATOM \|^HETATM' "$PDB_FILE"; then
# Extract the coords from the "ATOM" records in the PDB file
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/pdbsort.py" < "$PDB_FILE" \
| awk '/^ATOM |^HETATM/{print substr($0,31,8)" "substr($0,39,8)" "substr($0,47,8)}' > "$tmp_atom_coords"; then
ERR_INTERNAL
fi
else
echo "$SYNTAX_MSG" >&2
echo "-----------------------" >&2
echo "" >&2
echo "Error: File \"$PDB_FILE\" is not a valid PDB file." >&2
exit 11
fi
# Now extract the periodic bounding-box informatio from the PDB file
# The CRYST1 records are described at:
# http://deposit.rcsb.org/adit/docs/pdb_atom_format.html
BOXSIZE_A=-1.0
BOXSIZE_B=-1.0
BOXSIZE_C=-1.0
ALPHA=" 90.00" #Note: The space before the number in " 90.00" is intentional.
BETA=" 90.00" # Later we will check to see if the system is triclinic
GAMMA=" 90.00" # by comparing these strings for equality with " 90.00"
if grep -qF "CRYST1" "$PDB_FILE"; then
BOXSIZE_A=`awk '/CRYST1/{print substr($0,8,8)}' < "$PDB_FILE"`
BOXSIZE_B=`awk '/CRYST1/{print substr($0,17,8)}' < "$PDB_FILE"`
BOXSIZE_C=`awk '/CRYST1/{print substr($0,26,8)}' < "$PDB_FILE"`
ALPHA=`awk '/CRYST1/{print substr($0,35,6)}' < "$PDB_FILE"`
BETA=`awk '/CRYST1/{print substr($0,42,6)}' < "$PDB_FILE"`
GAMMA=`awk '/CRYST1/{print substr($0,49,6)}' < "$PDB_FILE"`
fi
if [ `echo "$ALPHA!=90.0"|bc` -eq 1 ] || [ `echo "$BETA!=90.0"|bc` -eq 1 ] || [ `echo "$GAMMA!=90.0"|bc` -eq 1 ]; then
# I transform the parameters from one format to the other by inverting
# the transformation formula from the LAMMPS documentation (which matches
# http://www.ccl.net/cca/documents/molecular-modeling/node4.html)
# Disclaimer:
# As of September 2012, I have not tested the code below. I think the
# equations are correct, but I don't know if their are special cases
# that require the coordinates to be rotated or processed beforehand.
# This is an experimental feature.
TRICLINIC="True"
PI=3.1415926535897931
BOXSIZE_X=$BOXSIZE_A
BOXSIZE_Y=`awk "BEGIN{print $BOXSIZE_B*sin($GAMMA*$PI/180.0)}"`
BOXSIZE_XY=`awk "BEGIN{print $BOXSIZE_B*cos($GAMMA*$PI/180.0)}"`
BOXSIZE_XZ=`awk "BEGIN{print $BOXSIZE_C*cos($BETA*$PI/180.0)}"`
BOXSIZE_YZ=`awk "BEGIN{ca=cos($ALPHA*$PI/180.0); cb=cos($BETA*$PI/180.0); cg=cos($GAMMA*$PI/180.0); sg=sin($GAMMA*$PI/180.0); c=$BOXSIZE_C; print c*(ca-(cg*cb))/sg}"`
BOXSIZE_Z=`awk "BEGIN{print sqrt(($BOXSIZE_C**2)-(($BOXSIZE_XZ**2)+($BOXSIZE_YZ**2)))}"`
else
BOXSIZE_X=$BOXSIZE_A
BOXSIZE_Y=$BOXSIZE_B
BOXSIZE_Z=$BOXSIZE_C
BOXSIZE_XY=0.0
BOXSIZE_XZ=0.0
BOXSIZE_YZ=0.0
fi
BOXSIZE_MINX=0.0
BOXSIZE_MINY=0.0
BOXSIZE_MINZ=0.0
BOXSIZE_MAXX=$BOXSIZE_X
BOXSIZE_MAXY=$BOXSIZE_Y
BOXSIZE_MAXZ=$BOXSIZE_Z
elif [ "$A" = "-atomstyle" ] || [ "$A" = "-atom-style" ] || [ "$A" = "-atom_style" ]; then
if [ "$i" -eq "$ARGC" ]; then
echo "$SYNTAX_MSG" >&2
exit 7
fi
i=$((i+1))
eval A=\${ARGV${i}}
if [ -z "$A" ]; then
echo "$SYNTAX_MSG" >&2
echo "-----------------------" >&2
echo "" >&2
echo "Error: The \"-atomstyle\" argument should be followed by an atom style." >&2
- echo " (See the \"atom_style\" command in the LAMMPS documentation.\n" >&2
- echo " Note: hybrid atom styles are allowed but should be enclosed in quotes.)\n" >&2
+ echo " (See the \"atom_style\" command in the LAMMPS documentation." >&2
+ echo " Note: hybrid atom styles are allowed but should be enclosed in quotes.)" >&2
exit 8
fi
#echo " (atom_style=\"$A\")" >&2
#echo "" >&2
ATOM_STYLE="$A"
ATOM_STYLE_ARG="-atomstyle \"$A\""
# (minor detail: $ATOM_STYLE_ARG should also be appended to TTREE_ARGS)
if [ -z "$TTREE_ARGS" ]; then
TTREE_ARGS="$ATOM_STYLE_ARG"
else
TTREE_ARGS="${TTREE_ARGS} $ATOM_STYLE_ARG"
fi
#else: If the arguments are not understood in this script, then
# pass them on to "lttree.py"
else
A_FIRSTCHAR="$(echo $A| cut -c 1)"
if [ "$A_FIRSTCHAR" = "\$" ]; then
A="\\$A" # put an extra slash in front to prevent expansion later
fi
if [ -z "$TTREE_ARGS" ]; then
TTREE_ARGS="\"$A\""
else
TTREE_ARGS="${TTREE_ARGS} \"$A\""
fi
# Check to see if this string ($A) ends in .lt or .LT
# If so, then set the base name of the output files
# to equal the base name of the .LT file being read.
# (Being careful here.
# Sometimes the last argument is not the .lt or .LT file.
# Sometimes that file appears earlier in the argument list.
# I want to supply a default value.)
#
# Note, in bash you can use:
# if [ "${LAST_ARG/%.lt/}" -neq "$LAST_ARG" ]; then
# OUT_FILE_BASE="${LAST_ARG/%.lt/}"
# But in the original bourn shell (sh), this does not work.
# Instead we use a hack involving basename and dirname:
if [ "$A_FIRSTCHAR" != "-" ]; then
DN=`dirname "$A"`
if [ "$DN" = "." ]; then
DN=""
else
DN="${DN}/"
fi
BN=`basename "$A" .lt`
if [ "${DN}${BN}" != "$A" ]; then
OUT_FILE_BASE="$BN"
else
BN=`basename "$A" .LT`
if [ "${DN}${BN}" != "$A" ]; then
OUT_FILE_BASE="$BN"
fi
fi
fi
fi
done
if [ -z "$ATOM_STYLE" ]; then
- #echo '########################################################\n' >&2
- #echo '## WARNING: atom_style unspecified ##\n' >&2
- #echo '## Assuming atom_style = \"full\" ##\n' >&2
- #echo '########################################################\n' >&2
+ #echo '########################################################' >&2
+ #echo '## WARNING: atom_style unspecified ##' >&2
+ #echo '## Assuming atom_style = \"full\" ##' >&2
+ #echo '########################################################' >&2
ATOM_STYLE="full"
fi
OUT_FILE_INPUT_SCRIPT="${OUT_FILE_BASE}.in"
OUT_FILE_INIT="${OUT_FILE_BASE}.in.init"
OUT_FILE_SETTINGS="${OUT_FILE_BASE}.in.settings"
OUT_FILE_DATA="${OUT_FILE_BASE}.data"
OUT_FILE_COORDS="${OUT_FILE_BASE}.in.coords"
rm -f "$OUT_FILE_INPUT_SCRIPT" "$OUT_FILE_INIT" "$OUT_FILE_SETTINGS" "$OUT_FILE_DATA" "$OUT_FILE_COORDS"
# --------------------------------------------------------------------
# --- Now run ttree/lttree to generate the file fragments we need. ---
# ------ (Afterwards, we will paste these fragments together.) -----
# --------------------------------------------------------------------
# If checking is not disabled, then first check for common spelling errors.
if [ -n "$LTTREE_CHECK_COMMAND" ]; then
if ! eval $LTTREE_CHECK_COMMAND $TTREE_ARGS; then
exit 1
fi
fi
# --- Run ttree. ---
#
# 3, 2, 1, ...
if ! eval $LTTREE_COMMAND $TTREE_ARGS; then
exit 2
fi
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# > Traceback (most recent call last):
# > File "./lttree.py", line...
# .-.
# (0.0)
# '=.|m|.='
# .='`"``=.
#
# Hopefully this does not happen.
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo "" >&2
# Attempt to remove any the DOS return-cairrage characters
# from inside the standard LAMMPS files generated by the user:
# (Users are free to put whatever weird characters they want in other
# (custom) auxilliary files. But not in the standard LAMMPS files.)
OIFS=$IFS
#IFS=$'\n'
IFS="
"
for file in $MOLTEMPLATE_TEMP_FILES; do
if [ -e "$file" ]; then
#dos2unix < "$file" > "$file.dos2unix"
tr -d '\r' < "$file" > "$file.dos2unix"
rm -f "$file" >/dev/null 2>&1 || true
mv -f "$file.dos2unix" "$file"
fi
done
IFS=$OIFS
if [ -s "${data_atoms}" ]; then
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/remove_duplicate_atoms.py" \
< "${data_atoms}" \
> "${data_atoms}.tmp"; then
ERR_INTERNAL
fi
mv -f "${data_atoms}.tmp" "${data_atoms}"
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/remove_duplicate_atoms.py" \
< "${data_atoms}.template" \
> "${data_atoms}.tmp"; then
ERR_INTERNAL
fi
mv -f "${data_atoms}.tmp" "${data_atoms}.template"
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/renumber_DATA_first_column.py" \
< "${data_atoms}" \
> "${data_atoms}.tmp"; then
ERR_INTERNAL
fi
mv -f "${data_atoms}.tmp" "${data_atoms}"
else
- echo "Error: There are no atoms in your system." >&2
+ echo "Error: There are no atoms in your system. Suggestions:" >&2
+ echo "" >&2
+ echo " Make sure that you have the correct number of curly parenthesis {}." >&2
+ echo " (Extra \"}\" parenthesis can cause this error.)" >&2
+ echo "" >&2
+ echo " Your files must contain at least one" >&2
+ echo " write(\"${data_atoms}\")" >&2
+ echo " command. These commands are typically located somewhere in" >&2
+ echo " one of the molecule object(s) you have defined." >&2
echo "" >&2
- echo " Make sure that the object(s) you created are indeed molecules." >&2
- echo " (Molecule objects must contain at least one" >&2
- echo " write(\"${data_atoms}\") command.)" >&2
+ echo " This error often occurs if your input files lack \"new\" commands." >&2
+ echo " Once you have defined a type of molecule, you must create a copy" >&2
+ echo " of it using \"new\", if you want it to appear in your simulation." >&2
+ echo " See the moltemplate manual or online tutorials for examples." >&2
echo "" >&2
- echo " (This error often occurs if you instantiated an object" >&2
- echo " which you thought was a molecule, but it is actually" >&2
- echo " only a namespace, a force-field name or category" >&2
- echo " containing the definitions of other molecules.)" >&2
+ echo " (This error also occurs if you instantiated an object using \"new\"" >&2
+ echo " which you thought was a molecule, but it is actually only a" >&2
+ echo " namespace, a force-field name or category containing only the" >&2
+ echo " definitions of other molecules, lacking any atoms of its own.)" >&2
echo "" >&2
exit 200
fi
+# ---------------- ChargePairs By Type ------------------
+# Assign atom charge according to who they are bonded to
+
+if [ -s "$data_chargepairs_by_type" ]; then
+ echo "Looking up partial charge contributions from bonds" >&2
+ #-- Generate a file containing bondid bondtype atomid1 atomid2 --
+ if ! $PYTHON_COMMAND "${SCRIPT_DIR}/chargepairs_by_type.py" \
+ -atom-style "$ATOM_STYLE" \
+ -atoms "${data_atoms}.template" \
+ -bonds "${data_bonds}.template" \
+ -bond-list "${data_bond_list}.template" \
+ -chargepairsbytype "${data_chargepairs_by_type}.template" \
+ > gen_charges.template.tmp; then
+ exit 4
+ fi
+
+ # ---- cleanup: ----
+ # ---- Create or re-build the "${in_charges}.template" file ----
+ # Instert these lines into the "${in_charges}.template" file which includes
+ # the newly generated interactions. (Note: these are in .template format)
+
+ cp gen_charges.template.tmp new_charges.template.tmp
+ if [ -s "${in_charges}.template" ]; then
+ # Then append existing "Bonds" to the end of the generated interactions
+ # (Hopefully this way they will override those interactions.)
+ cat "${in_charges}.template" >> new_charges.template.tmp
+ fi
+ mv -f new_charges.template.tmp "${in_charges}.template"
+
+ # ---- Re-build (render) the "$in_charges" file ----
+ # Now substitute these variable values (assignments) into the variable
+ # names present in the .template file. (We want to convert the file from
+ # a .template format into an ordinary (numeric) LAMMPS data-section format.)
+ if ! $PYTHON_COMMAND "${SCRIPT_DIR}/ttree_render.py" \
+ ttree_assignments.txt \
+ < "${in_charges}.template" \
+ >> "${in_charges}"; then
+ exit 6
+ fi
+ echo "" >&2
+
+ rm -f gen_charges.template.tmp new_charges.template.tmp
+
+ echo "" >&2
+fi
+
+
+
# ---------------- Interactions By Type -----------------
# At the time of writing, bonded-interactions-by-atom-type were not
# understood by LAMMPS. These features require auxilliary python scripts.
# These data sections must be processed before everything else (because
# they effect the other data sections, and the ttree_assignments.txt file.)
# -------------------------------------------------------
if [ -s "${data_bond_list}.template" ]; then
if [ ! -s "$data_bonds_by_type" ]; then
- echo "Error: You have a \"Data Bond List\", section somewhere\n"
- echo " without a \"Data Bonds By Type\" section to support it.\n"
- echo " (Did you mean to use \"Data Bonds\" instead?)\n"
+ echo "Error: You have a \"Data Bond List\", section somewhere"
+ echo " without a \"Data Bonds By Type\" section to support it."
+ echo " (Did you mean to use \"Data Bonds\" instead?)"
echo "Details:"
- echo " Unlike the \"Data Bonds\" section, the \"Data Bond List\" section\n"
- echo " allows the user to omit the bond types. Instead moltemplate attempts\n"
- echo " to infer the type of bond by considering the pair of atom types.\n"
- echo " However you must define a \"Data Bonds By Type\" section\n"
- echo " to make this feature work (or use \"Data Bonds\" instead).\n"
+ echo " Unlike the \"Data Bonds\" section, the \"Data Bond List\" section"
+ echo " allows the user to omit the bond types. Instead moltemplate attempts"
+ echo " to infer the type of bond by considering the pair of atom types."
+ echo " However you must define a \"Data Bonds By Type\" section"
+ echo " to make this feature work (or use \"Data Bonds\" instead)."
exit 15
fi
echo "Looking up bond types according to atom type" >&2
#-- Generate a file containing bondid bondtype atomid1 atomid2 --
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/bonds_by_type.py" \
-atom-style "$ATOM_STYLE" \
-atoms "${data_atoms}.template" \
-bond-list "${data_bond_list}.template" \
-bondsbytype "${data_bonds_by_type}.template" \
-prefix '$/bond:bytype' > gen_bonds.template.tmp; then
exit 4
fi
# ---- cleanup: ----
# ---- Create or re-build the "${data_bonds}.template" file ----
# Instert these lines into the "${data_bonds}.template" file which includes
# the newly generated interactions. (Note: these are in .template format)
cp gen_bonds.template.tmp new_bonds.template.tmp
if [ -s "${data_bonds}.template" ]; then
# Then append existing "Bonds" to the end of the generated interactions
# (Hopefully this way they will override those interactions.)
cat "${data_bonds}.template" >> new_bonds.template.tmp
fi
mv -f new_bonds.template.tmp "${data_bonds}.template"
# ------ THE NEXT STEP IS NOT CURRENTLY NEEDED ------
# All of the $bond variables have already been created, they just lack types
# However we will need to do this if the user wants to omits the bond-ids.
# In case I plan to allow the user to omit bond-ids, I leave this code here.
#
#echo "(Repairing ttree_assignments.txt file after bonds added.)" >&2
#
## ---- Repair the ttree_assignments.txt file ----
## The next 2 lines extract the variable names from data_new.template.tmp
## and instert them into the appropriate place in ttree_assignments.txt
## (renumbering the relevant variable-assignments to avoid clashes).
#if ! $PYTHON_COMMAND "${SCRIPT_DIR}/nbody_fix_ttree_assignments.py" \
# '/bond' gen_bonds.template.tmp \
# < ttree_assignments.txt \
# > ttree_assignments.tmp; then
# exit 5
#fi
#
#echo "(Rendering ttree_assignments.tmp file after bonds added.)" >&2
#mv -f ttree_assignments.tmp ttree_assignments.txt
# ----------------------------------------------------
# ---- Re-build (render) the "$data_bonds" file ----
# Now substitute these variable values (assignments) into the variable
# names present in the .template file. (We want to convert the file from
# a .template format into an ordinary (numeric) LAMMPS data-section format.)
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/ttree_render.py" \
ttree_assignments.txt \
< "${data_bonds}.template" \
> "$data_bonds"; then
exit 6
fi
echo "" >&2
rm -f gen_bonds.template.tmp new_bonds.template.tmp
+
+ echo "" >&2
+
fi
+
+
+
+
+
+
+
for FILE in "$data_angles_by_type"*.template; do
if [ ! -s "$FILE" ] || [ ! -s "$data_bonds" ]; then
break; # This handles with the special cases that occur when
# 1) There are no bonds in your system
# 2) "$data_angles_by_type"*.template matches nothing
fi
echo "Generating 3-body angle interactions by atom/bond type" >&2
# Extract the text between parenthesis (if present, empty-str otherwise)
# Example: FILE="Data Angles By Type (gaff_angle.py)"
SUBGRAPH_SCRIPT=`echo "$FILE" | awk '/\(.*\)/ {print $0}' | cut -d'(' -f2-| cut -d')' -f 1`
# Example: (continued) SUBGRAPH_SCRIPT should equal "gaff_angle.py"
if [ -z "$SUBGRAPH_SCRIPT" ]; then
SUBGRAPH_SCRIPT="nbody_Angles.py"
else
echo "(using the rules in \"$SUBGRAPH_SCRIPT\")" >&2
if [ ! -s "${SCRIPT_DIR}/nbody_alternate_symmetry/$SUBGRAPH_SCRIPT" ]; then
- echo "Error: File \"$SUBGRAPH_SCRIPT\" not found.\n" >&2
- echo " It should be located in this directory:\n" >&2
- echo " ${SCRIPT_DIR}/nbody_alternate_symmetry/\n" >&2
+ echo "Error: File \"$SUBGRAPH_SCRIPT\" not found." >&2
+ echo " It should be located in this directory:" >&2
+ echo " ${SCRIPT_DIR}/nbody_alternate_symmetry/" >&2
exit 4
fi
fi
#-- Generate a file containing the list of interactions on separate lines --
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/nbody_by_type.py" \
-subgraph "${SUBGRAPH_SCRIPT}" \
-section "Angles" \
-sectionbytype "Angles By Type" \
-atom-style "$ATOM_STYLE" \
-atoms "${data_atoms}.template" \
-bonds "${data_bonds}.template" \
-nbodybytype "${FILE}" \
-prefix '$/angle:bytype' > gen_angles.template.tmp; then
exit 4
#WARNING: DO NOT REPLACE THIS WITH
#if ! $NBODY_COMMAND ...<-this sometimes causes a shell quotes-related error
fi
# ---- cleanup: ----
# ---- Re-build the "${data_angles}.template" file ----
# Instert these lines into the "${data_angles}.template" file which includes
# the newly generated interactions. (Note: these are in .template format)
cp gen_angles.template.tmp new_angles.template.tmp
if [ -s "${data_angles}.template" ]; then
# Then append existing "Angles" to the end of the generated interactions
# (Hopefully this way they will override those interactions.)
cat "${data_angles}.template" >> new_angles.template.tmp
fi
mv -f new_angles.template.tmp "${data_angles}.template"
echo "(Repairing ttree_assignments.txt file after angles added.)" >&2
# ---- Repair the ttree_assignments.txt file ----
# The next 2 lines extract the variable names from data_new.template.tmp
# and instert them into the appropriate place in ttree_assignments.txt
# (renumbering the relevant variable-assignments to avoid clashes).
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/nbody_fix_ttree_assignments.py" \
'/angle' gen_angles.template.tmp \
< ttree_assignments.txt \
> ttree_assignments.tmp; then
exit 5
fi
echo "(Rendering ttree_assignments.tmp file after angles added.)" >&2
# ---- Re-build (render) the "$data_angles" file ----
# Now substitute these variable values (assignments) into the variable
# names present in the .template file. (We want to convert the file from
# a .template format into an ordinary (numeric) LAMMPS data-section format.)
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/ttree_render.py" \
ttree_assignments.tmp \
< "${data_angles}.template" \
> "$data_angles"; then
exit 6
fi
echo "" >&2
mv -f ttree_assignments.tmp ttree_assignments.txt
rm -f gen_angles.template.tmp new_angles.template.tmp
done
FILE_dihedrals_by_type1=""
FILE_dihedrals_by_type2=""
for FILE in "$data_dihedrals_by_type"*.template; do
if [ ! -s "$FILE" ] || [ ! -s "$data_bonds" ]; then
break; # This handles with the special cases that occur when
# 1) There are no bonds in your system
# 2) "$data_dihedrals_by_type"*.template matches nothing
fi
echo "Generating 4-body dihedral interactions by atom/bond type" >&2
# Extract the text between parenthesis (if present, empty-str otherwise)
# Example: FILE="Data Dihedrals By Type (gaff_dih.py)"
SUBGRAPH_SCRIPT=`echo "$FILE" | awk '/\(.*\)/ {print $0}' | cut -d'(' -f2-| cut -d')' -f 1`
# Example: (continued) SUBGRAPH_SCRIPT should equal "gaff_dih.py"
if [ -z "$SUBGRAPH_SCRIPT" ]; then
SUBGRAPH_SCRIPT="nbody_Dihedrals.py"
else
echo "(using the rules in \"$SUBGRAPH_SCRIPT\")" >&2
if [ ! -s "${SCRIPT_DIR}/nbody_alternate_symmetry/$SUBGRAPH_SCRIPT" ]; then
- echo "Error: File \"$SUBGRAPH_SCRIPT\" not found.\n" >&2
- echo " It should be located in this directory:\n" >&2
- echo " ${SCRIPT_DIR}/nbody_alternate_symmetry/\n" >&2
+ echo "Error: File \"$SUBGRAPH_SCRIPT\" not found." >&2
+ echo " It should be located in this directory:" >&2
+ echo " ${SCRIPT_DIR}/nbody_alternate_symmetry/" >&2
exit 4
fi
fi
FILE_dihedrals_by_type2="$FILE_impropers_by_type1"
FILE_dihedrals_by_type1="$FILE"
#-- Generate a file containing the list of interactions on separate lines --
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/nbody_by_type.py" \
-subgraph "${SUBGRAPH_SCRIPT}" \
-section "Dihedrals" \
-sectionbytype "Dihedrals By Type" \
-atom-style "$ATOM_STYLE" \
-atoms "${data_atoms}.template" \
-bonds "${data_bonds}.template" \
-nbodybytype "${FILE}" \
-prefix '$/dihedral:bytype' > gen_dihedrals.template.tmp; then
exit 4
#WARNING: DO NOT REPLACE THIS WITH
#if ! $NBODY_COMMAND ...<-this sometimes causes a shell quotes-related error
fi
# ---- cleanup: ----
# ---- Re-build the "${data_dihedrals}.template" file ----
# Instert these lines into the "${data_dihedrals}.template" file which includes
# the newly generated interactions. (Note: these are in .template format)
cp gen_dihedrals.template.tmp new_dihedrals.template.tmp
if [ -s "${data_dihedrals}.template" ]; then
# Then append existing "Dihedrals" to the end of the generated interactions
# (Hopefully this way they will override those interactions.)
cat "${data_dihedrals}.template" >> new_dihedrals.template.tmp
fi
mv -f new_dihedrals.template.tmp "${data_dihedrals}.template"
echo "(Repairing ttree_assignments.txt file after dihedrals added.)" >&2
# ---- Repair the ttree_assignments.txt file ----
# The next 2 lines extract the variable names from data_new.template.tmp
# and instert them into the appropriate place in ttree_assignments.txt
# (renumbering the relevant variable-assignments to avoid clashes).
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/nbody_fix_ttree_assignments.py" \
'/dihedral' gen_dihedrals.template.tmp \
< ttree_assignments.txt \
> ttree_assignments.tmp; then
exit 5
fi
echo "(Rendering ttree_assignments.tmp file after dihedrals added.)" >&2
# ---- Re-build (render) the "$data_dihedrals" file ----
# Now substitute these variable values (assignments) into the variable
# names present in the .template file. (We want to convert the file from
# a .template format into an ordinary (numeric) LAMMPS data-section format.)
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/ttree_render.py" \
ttree_assignments.tmp \
< "${data_dihedrals}.template" \
> "$data_dihedrals"; then
exit 6
fi
echo "" >&2
mv -f ttree_assignments.tmp ttree_assignments.txt
rm -f gen_dihedrals.template.tmp new_dihedrals.template.tmp
done
FILE_impropers_by_type1=""
FILE_impropers_by_type2=""
for FILE in "$data_impropers_by_type"*.template; do
if [ ! -s "$FILE" ] || [ ! -s "$data_bonds" ]; then
break; # This handles with the special cases that occur when
# 1) There are no bonds in your system
# 2) "$data_impropers_by_type"*.template matches nothing
fi
echo "Generating 4-body improper interactions by atom/bond type" >&2
# Extract the text between parenthesis (if present, empty-str otherwise)
# Example: FILE="Data Impropers By Type (gaff_impr.py)"
SUBGRAPH_SCRIPT=`echo "$FILE" | awk '/\(.*\)/ {print $0}' | cut -d'(' -f2-| cut -d')' -f 1`
# Example: (continued) SUBGRAPH_SCRIPT should equal "gaff_impr.py"
if [ -z "$SUBGRAPH_SCRIPT" ]; then
SUBGRAPH_SCRIPT="nbody_Impropers.py"
else
echo "(using the rules in \"$SUBGRAPH_SCRIPT\")" >&2
if [ ! -s "${SCRIPT_DIR}/nbody_alternate_symmetry/$SUBGRAPH_SCRIPT" ]; then
- echo "Error: File \"$SUBGRAPH_SCRIPT\" not found.\n" >&2
- echo " It should be located in this directory:\n" >&2
- echo " ${SCRIPT_DIR}/nbody_alternate_symmetry/\n" >&2
+ echo "Error: File \"$SUBGRAPH_SCRIPT\" not found." >&2
+ echo " It should be located in this directory:" >&2
+ echo " ${SCRIPT_DIR}/nbody_alternate_symmetry/" >&2
exit 4
fi
fi
FILE_impropers_by_type2="$FILE_impropers_by_type1"
FILE_impropers_by_type1="$FILE"
#-- Generate a file containing the list of interactions on separate lines --
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/nbody_by_type.py" \
-subgraph "${SUBGRAPH_SCRIPT}" \
-section "Impropers" \
-sectionbytype "Impropers By Type" \
-atom-style "$ATOM_STYLE" \
-atoms "${data_atoms}.template" \
-bonds "${data_bonds}.template" \
-nbodybytype "${FILE}" \
-prefix '$/improper:bytype' > gen_impropers.template.tmp; then
exit 4
#WARNING: DO NOT REPLACE THIS WITH
#if ! $NBODY_COMMAND ...<-this sometimes causes a shell quotes-related error
fi
# ---- cleanup: ----
# ---- Re-build the "${data_impropers}.template" file ----
# Instert these lines into the "${data_impropers}.template" file which includes
# the newly generated interactions. (Note: these are in .template format)
cp gen_impropers.template.tmp new_impropers.template.tmp
if [ -s "${data_impropers}.template" ]; then
# Then append existing "Impropers" to the end of the generated interactions
# (Hopefully this way they will override those interactions.)
cat "${data_impropers}.template" >> new_impropers.template.tmp
fi
mv -f new_impropers.template.tmp "${data_impropers}.template"
echo "(Repairing ttree_assignments.txt file after impropers added.)" >&2
# ---- Repair the ttree_assignments.txt file ----
# The next 2 lines extract the variable names from data_new.template.tmp
# and instert them into the appropriate place in ttree_assignments.txt
# (renumbering the relevant variable-assignments to avoid clashes).
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/nbody_fix_ttree_assignments.py" \
'/improper' gen_impropers.template.tmp \
< ttree_assignments.txt \
> ttree_assignments.tmp; then
exit 5
fi
echo "(Rendering ttree_assignments.tmp file after impropers added.)" >&2
# ---- Re-build (render) the "$data_impropers" file ----
# Now substitute these variable values (assignments) into the variable
# names present in the .template file. (We want to convert the file from
# a .template format into an ordinary (numeric) LAMMPS data-section format.)
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/ttree_render.py" \
ttree_assignments.tmp \
< "${data_impropers}.template" \
> "$data_impropers"; then
exit 6
fi
echo "" >&2
mv -f ttree_assignments.tmp ttree_assignments.txt
rm -f gen_impropers.template.tmp new_impropers.template.tmp
done
if [ -n "$LTTREE_POSTPROCESS_COMMAND" ]; then
echo "" >&2
if ! eval $LTTREE_POSTPROCESS_COMMAND $TTREE_ARGS; then
exit 3
fi
echo "" >&2
fi
# -------------------------------------------------------
# If present, then remove duplicate bonds, angles, dihedrals, and impropers
# (unless overridden by the user).
# -------------------------------------------------------
if [ -s "${data_masses}" ]; then
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/remove_duplicate_atoms.py" \
< "${data_masses}" \
> "${data_masses}.tmp"; then
ERR_INTERNAL
fi
mv -f "${data_masses}.tmp" "${data_masses}"
fi
if [ -s "${data_bonds}" ]; then
if [ ! -z $REMOVE_DUPLICATE_BONDS ]; then
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/nbody_reorder_atoms.py" \
Bonds \
nbody_Bonds.py \
< "${data_bonds}" \
> "${data_bonds}.tmp"; then
ERR_INTERNAL
fi
cp -f "${data_bonds}.tmp" "${data_bonds}"
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/remove_duplicates_nbody.py" 2 \
< "${data_bonds}" \
> "${data_bonds}.tmp"; then
ERR_INTERNAL
fi
mv "${data_bonds}.tmp" "${data_bonds}"
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/remove_duplicates_nbody.py" 2 \
< "${data_bonds}.template" \
> "${data_bonds}.tmp"; then
ERR_INTERNAL
fi
mv "${data_bonds}.tmp" "${data_bonds}.template"
fi
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/renumber_DATA_first_column.py" \
< "${data_bonds}" \
> "${data_bonds}.tmp"; then
ERR_INTERNAL
fi
mv -f "${data_bonds}.tmp" "${data_bonds}"
fi
if [ -s "${data_angles}" ]; then
if [ ! -z $REMOVE_DUPLICATE_ANGLES ]; then
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/nbody_reorder_atoms.py" \
Angles \
nbody_Angles.py \
< "${data_angles}" \
> "${data_angles}.tmp"; then
ERR_INTERNAL
fi
cp -f "${data_angles}.tmp" "${data_angles}"
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/remove_duplicates_nbody.py" 3 \
< "${data_angles}" \
> "${data_angles}.tmp"; then
ERR_INTERNAL
fi
mv "${data_angles}.tmp" "${data_angles}"
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/remove_duplicates_nbody.py" 3 \
< "${data_angles}.template" \
> "${data_angles}.tmp"; then
ERR_INTERNAL
fi
mv "${data_angles}.tmp" "${data_angles}".template
fi
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/renumber_DATA_first_column.py" \
< "${data_angles}" \
> "${data_angles}.tmp"; then
ERR_INTERNAL
fi
mv -f "${data_angles}.tmp" "${data_angles}"
fi
if [ -s "${data_dihedrals}" ]; then
if [ ! -z $REMOVE_DUPLICATE_DIHEDRALS ]; then
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/nbody_reorder_atoms.py" \
Dihedrals \
nbody_Dihedrals.py \
< "${data_dihedrals}" \
> "${data_dihedrals}.tmp"; then
ERR_INTERNAL
fi
cp -f "${data_dihedrals}.tmp" "${data_dihedrals}"
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/remove_duplicates_nbody.py" 4 \
< "${data_dihedrals}" \
> "${data_dihedrals}.tmp"; then
ERR_INTERNAL
fi
mv "${data_dihedrals}.tmp" "${data_dihedrals}"
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/remove_duplicates_nbody.py" 4 \
< "${data_dihedrals}.template" \
> "${data_dihedrals}.tmp"; then
ERR_INTERNAL
fi
mv "${data_dihedrals}.tmp" "${data_dihedrals}.template"
fi
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/renumber_DATA_first_column.py" \
< "${data_dihedrals}" \
> "${data_dihedrals}.tmp"; then
ERR_INTERNAL
fi
mv -f "${data_dihedrals}.tmp" "${data_dihedrals}"
if [ ! -z $FILE_dihedrals_by_type2 ]; then
MSG_MULTIPLE_DIHEDRAL_RULES=$(cat <<EOF
#############################################################################
WARNING:
It appears as though multiple conflicting rules were used to generate
DIHEDRAL interactions. (This can occur when combining molecules built with
different force-field rules). In your case, you are using rules defined here:
"$FILE_dihedrals_by_type2"
"$FILE_dihedrals_by_type1"
(Files ending in .py are located here:
$SCRIPT_DIR/nbody_alternate_symmetry/)
If the molecules built using these two different force-field settings are not
connected, AND if you do NOT override force-field dihedrals with explicitly
defined dihedrals, then you can probably ignore this warning message. Otherwise
please check the list of dihedral interactions to make sure they are correct!
(It might help to build a much smaller system using the same molecule types.)
#############################################################################
EOF
)
echo "$MSG_MULTIPLE_DIHEDRAL_RULES" >&2
fi
fi
if [ -s "${data_impropers}" ]; then
if [ ! -z $REMOVE_DUPLICATE_IMPROPERS ]; then
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/nbody_reorder_atoms.py" \
Impropers \
nbody_Impropers.py \
< "${data_impropers}" \
> "${data_impropers}.tmp"; then
ERR_INTERNAL
fi
cp -f "${data_impropers}.tmp" "${data_impropers}"
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/remove_duplicates_nbody.py" 4 \
< "${data_impropers}" \
> "${data_impropers}.tmp"; then
ERR_INTERNAL
fi
mv "${data_impropers}.tmp" "${data_impropers}"
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/remove_duplicates_nbody.py" 4 \
< "${data_impropers}.template" \
> "${data_impropers}.tmp"; then
ERR_INTERNAL
fi
mv "${data_impropers}.tmp" "${data_impropers}.template"
fi
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/renumber_DATA_first_column.py" \
< "${data_impropers}" \
> "${data_impropers}.tmp"; then
ERR_INTERNAL
fi
mv -f "${data_impropers}.tmp" "${data_impropers}"
if [ ! -z $FILE_impropers_by_type2 ]; then
MSG_MULTIPLE_IMPROPER_RULES=$(cat <<EOF
#############################################################################
WARNING:
It appears as though multiple conflicting rules were used to generate
IMPROPER interactions. (This can occur when combining molecules built with
different force-field rules.) In your case, you are using rules defined here:
"$FILE_impropers_by_type2"
"$FILE_impropers_by_type1"
(Files ending in .py are located here:
$SCRIPT_DIR/nbody_alternate_symmetry/)
If the molecules built using these two different force-field settings are not
connected, AND if you do NOT override force-field imrpopers with explicitly
defined impropers, then you can probably ignore this warning message. Otherwise
please check the list of improper interactions to make sure they are correct!
(It might help to build a much smaller system using the same molecule types.)
#############################################################################
EOF
)
echo "$MSG_MULTIPLE_IMPROPER_RULES" >&2
fi
fi
# -------------------------------------------------------
NATOMTYPES=`awk '/^@\/atom:/{n++}END{print n}' < ttree_assignments.txt`
NBONDTYPES=`awk '/^@\/bond:/{n++}END{print n}' < ttree_assignments.txt`
NANGLETYPES=`awk '/^@\/angle:/{n++}END{print n}' < ttree_assignments.txt`
NDIHEDRALTYPES=`awk '/^@\/dihedral:/{n++}END{print n}' < ttree_assignments.txt`
NIMPROPERTYPES=`awk '/^@\/improper:/{n++}END{print n}' < ttree_assignments.txt`
#NATOMS=`awk '/^\$\/atom:/{n++}END{print n}' < ttree_assignments.txt`
#NBONDS=`awk '/^\$\/bond:/{n++}END{print n}' < ttree_assignments.txt`
#NANGLES=`awk '/^\$\/angle:/{n++}END{print n}' < ttree_assignments.txt`
#NDIHEDRALS=`awk '/^\$\/dihedral:/{n++}END{print n}' < ttree_assignments.txt`
#NIMPROPERS=`awk '/^\$\/improper:/{n++}END{print n}' < ttree_assignments.txt`
NATOMS="0"
NBONDS="0"
NANGLES="0"
NDIHEDRALS="0"
NIMPROPERS="0"
if [ -s "${data_atoms}" ]; then
NATOMS=`awk 'END{print NR}' < "${data_atoms}"`
fi
if [ -s "${data_bonds}" ]; then
NBONDS=`awk 'END{print NR}' < "${data_bonds}"`
fi
if [ -s "${data_angles}" ]; then
NANGLES=`awk 'END{print NR}' < "${data_angles}"`
fi
if [ -s "${data_dihedrals}" ]; then
NDIHEDRALS=`awk 'END{print NR}' < "${data_dihedrals}"`
fi
if [ -s "${data_impropers}" ]; then
NIMPROPERS=`awk 'END{print NR}' < "${data_impropers}"`
fi
rm -f "$OUT_FILE_DATA"
echo "LAMMPS Description" > "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
echo " $NATOMS atoms" >> "$OUT_FILE_DATA"
if [ -n "$NBONDS" ]; then
echo " $NBONDS bonds" >> "$OUT_FILE_DATA"
fi
if [ -n "$NANGLES" ]; then
echo " $NANGLES angles" >> "$OUT_FILE_DATA"
fi
if [ -n "$NDIHEDRALS" ]; then
echo " $NDIHEDRALS dihedrals" >> "$OUT_FILE_DATA"
fi
if [ -n "$NIMPROPERS" ]; then
echo " $NIMPROPERS impropers" >> "$OUT_FILE_DATA"
fi
echo "" >> "$OUT_FILE_DATA"
echo " $NATOMTYPES atom types" >> "$OUT_FILE_DATA"
if [ -n "$NBONDTYPES" ]; then
echo " $NBONDTYPES bond types" >> "$OUT_FILE_DATA"
fi
if [ -n "$NANGLETYPES" ]; then
echo " $NANGLETYPES angle types" >> "$OUT_FILE_DATA"
fi
if [ -n "$NDIHEDRALTYPES" ]; then
echo " $NDIHEDRALTYPES dihedral types" >> "$OUT_FILE_DATA"
fi
if [ -n "$NIMPROPERTYPES" ]; then
echo " $NIMPROPERTYPES improper types" >> "$OUT_FILE_DATA"
fi
echo "" >> "$OUT_FILE_DATA"
# --- PERIODIC BOUNDARY CONDITIONS ---
# Note: If there is a "$data_boundary" file present, it overrides any settings
# which may have been stored in a pdb file or other external file.
if [ -s "$data_pbc" ] && [ ! -s "$data_boundary" ]; then
mv -f "$data_pbc" "$data_boundary"
echo "WARNING: write_once(\"$data_pbc\") is depreciated" >&2
echo " Use write_once(\"$data_boundary\") instead" >&2
fi
if [ -s "$data_boundary" ]; then
# Copy the boundary conditions from the "$data_boundary" file.
# Don't assume there is only one line containing "xlo xhi", for example.
# It's possible the user wrote the boundary conditions multiple times.
# As always, the most recent setting overrides the earlier settings.
BOXSIZE_MINX=`tr -d '\015' < "$data_boundary" | awk '{if ($3=="xlo") {xlo=$1}} END{print xlo}'`
BOXSIZE_MAXX=`tr -d '\015' < "$data_boundary" | awk '{if ($4=="xhi") {xhi=$2}} END{print xhi}'`
BOXSIZE_MINY=`tr -d '\015' < "$data_boundary" | awk '{if ($3=="ylo") {ylo=$1}} END{print ylo}'`
BOXSIZE_MAXY=`tr -d '\015' < "$data_boundary" | awk '{if ($4=="yhi") {yhi=$2}} END{print yhi}'`
BOXSIZE_MINZ=`tr -d '\015' < "$data_boundary" | awk '{if ($3=="zlo") {zlo=$1}} END{print zlo}'`
BOXSIZE_MAXZ=`tr -d '\015' < "$data_boundary" | awk '{if ($4=="zhi") {zhi=$2}} END{print zhi}'`
if [ -z "$BOXSIZE_MINX" ] || [ -z "$BOXSIZE_MAXX" ]; then
echo "Error: Problem with box boundary format (\"xlo xhi\") in \"$data_boundary\"" >&2
exit 12
fi
if [ -z "$BOXSIZE_MINY" ] || [ -z "$BOXSIZE_MAXY" ]; then
echo "Error: Problem with box boundary format (\"ylo yhi\") in \"$data_boundary\"" >&2
exit 12
fi
if [ -z "$BOXSIZE_MINZ" ] || [ -z "$BOXSIZE_MAXZ" ]; then
echo "Error: Problem with box boundary format (\"zlo zhi\") in \"$data_boundary\"" >&2
exit 12
fi
BOXSIZE_XY=`awk '{if ($4=="xy") {xy=$1}} END{print xy}' < "$data_boundary"`
BOXSIZE_XZ=`awk '{if ($5=="xz") {xz=$2}} END{print xz}' < "$data_boundary"`
BOXSIZE_YZ=`awk '{if ($6=="yz") {yz=$3}} END{print yz}' < "$data_boundary"`
if [ -n "$BOXSIZE_XY" ] || [ -n "$BOXSIZE_XZ" ] || [ -n "$BOXSIZE_YZ" ]; then
if [ -n "$BOXSIZE_XY" ] && [ -n "$BOXSIZE_XZ" ] && [ -n "$BOXSIZE_YZ" ]; then
#echo "triclinic_parameters: XY XZ YZ = $BOXSIZE_XY $BOXSIZE_XZ $BOXSIZE_YZ" >&2
TRICLINIC="True"
else
echo "Error: Problem with triclinic format (\"xy xz yz\") in \"$data_boundary\"" >&2
exit 13
fi
fi
fi
if [ -z "$BOXSIZE_MINX" ] || [ -z "$BOXSIZE_MAXX" ] || [ -z "$BOXSIZE_MINY" ] || [ -z "$BOXSIZE_MAXY" ] || [ -z "$BOXSIZE_MINZ" ] || [ -z "$BOXSIZE_MAXZ" ]; then
echo "Periodic boundary conditions unspecified. Attempting to generate automatically." >&2
# By default, disable triclinic
BOXSIZE_XY=""
BOXSIZE_XZ=""
BOXSIZE_YZ=""
TRICLINIC=""
if [ -s "$tmp_atom_coords" ]; then
# Estimate the minimimum, maximum x,y,z values
# from the coordinate data.
MINMAX_BOUNDS=`awk 'BEGIN{first=1}{if (NF>=3){x=$1; y=$2; z=$3; if (first) {first=0; xmin=x; xmax=x; ymin=y; ymax=y; zmin=z; zmax=z;} else {if (x<xmin) xmin=x; if (x>xmax) xmax=x; if (y<ymin) ymin=y; if (y>ymax) ymax=y; if (z<zmin) zmin=z; if (z>zmax) zmax=z;}}} END{print xmin" "xmax" "ymin" "ymax" "zmin" "zmax;}' < "$tmp_atom_coords"`
# ...and add a narrow margin (10%) around the boundaries:
BOXSIZE_MINX=`echo $MINMAX_BOUNDS | awk "{margin=0.1; width=$2-$1; print $1-0.5*margin*width}"`
BOXSIZE_MAXX=`echo $MINMAX_BOUNDS | awk "{margin=0.1; width=$2-$1; print $2+0.5*margin*width}"`
BOXSIZE_MINY=`echo $MINMAX_BOUNDS | awk "{margin=0.1; width=$4-$3; print $3-0.5*margin*width}"`
BOXSIZE_MAXY=`echo $MINMAX_BOUNDS | awk "{margin=0.1; width=$4-$3; print $4+0.5*margin*width}"`
BOXSIZE_MINZ=`echo $MINMAX_BOUNDS | awk "{margin=0.1; width=$6-$5; print $5-0.5*margin*width}"`
BOXSIZE_MAXZ=`echo $MINMAX_BOUNDS | awk "{margin=0.1; width=$6-$5; print $6+0.5*margin*width}"`
else
# By default, choose some reasonably large box:
BOXSIZE_MINX="-100.0"
BOXSIZE_MAXX="100.0"
BOXSIZE_MINY="-100.0"
BOXSIZE_MAXY="100.0"
BOXSIZE_MINZ="-100.0"
BOXSIZE_MAXZ="100.0"
# ...and print message scolding the user for being lazy
echo "----------------------------------------------------------------------" >&2
echo "---- WARNING: Unable to determine periodic boundary conditions. ----" >&2
echo "---- (A default cube of volume=(200.0)^3 was used. ----" >&2
echo "---- This is probably not what you want!) ----" >&2
echo "---- It is recommended that you specify your periodic boundary ----" >&2
echo "---- by adding a write_once(\"Boundary\") command to your .lt file. ----" >&2
echo "---- For example: ----" >&2
#echo "----------------------------------------------------------------------" >&2
echo "---- ----" >&2
echo "---- write_once(\"Boundary\") { ----" >&2
echo "---- 2.51 46.79 xlo xhi ----" >&2
echo "---- -4.38 35.824 ylo yhi ----" >&2
echo "---- 0.3601 42.95 zlo zhi ----" >&2
echo "---- } ----" >&2
echo "----------------------------------------------------------------------" >&2
fi
fi
if [ -z "$TRICLINIC" ]; then
echo " $BOXSIZE_MINX $BOXSIZE_MAXX xlo xhi" >> "$OUT_FILE_DATA"
echo " $BOXSIZE_MINY $BOXSIZE_MAXY ylo yhi" >> "$OUT_FILE_DATA"
echo " $BOXSIZE_MINZ $BOXSIZE_MAXZ zlo zhi" >> "$OUT_FILE_DATA"
else
echo "triclinic parameters: XY XZ YZ = $BOXSIZE_XY $BOXSIZE_XZ $BOXSIZE_YZ" >&2
echo "" >&2
# Otherwise, this is a triclinic (non orthoganal) crystal basis.
# LAMMPS represents triclinic symmetry using a different set of parameters
# (lx,ly,lz,xy,xz,yz) than the PDB file format (alpha,beta,gamma).
echo " $BOXSIZE_MINX $BOXSIZE_MAXX xlo xhi" >> "$OUT_FILE_DATA"
echo " $BOXSIZE_MINY $BOXSIZE_MAXY ylo yhi" >> "$OUT_FILE_DATA"
echo " $BOXSIZE_MINZ $BOXSIZE_MAXZ zlo zhi" >> "$OUT_FILE_DATA"
#echo " 0.000000 $BOXSIZE_X xlo xhi" >> "$OUT_FILE_DATA"
#echo " 0.000000 $BOXSIZE_Y ylo yhi" >> "$OUT_FILE_DATA"
#echo " 0.000000 $BOXSIZE_Z zlo zhi" >> "$OUT_FILE_DATA"
echo " $BOXSIZE_XY $BOXSIZE_XZ $BOXSIZE_YZ xy xz yz" >> "$OUT_FILE_DATA"
#echo "a,b,c,alpha,beta,gamma = $BOXSIZE_A,$BOXSIZE_B,$BOXSIZE_C,$ALPHA,$BETA,$GAMMA"
fi
echo "" >> "$OUT_FILE_DATA"
if [ -s "$data_header" ]; then
cat "$data_header" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
fi
if [ -s "$data_masses" ]; then
echo "Masses" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_masses" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
else
echo "WARNING: missing file \"$data_masses\"" >&2
fi
if [ -s "$data_pair_coeffs" ]; then
echo "Pair Coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_pair_coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
PAIR_COEFFS_IN_DATA="true"
fi
if [ -s "$data_pairij_coeffs" ]; then
echo "PairIJ Coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_pairij_coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
PAIR_COEFFS_IN_DATA="true"
fi
if [ -n "$PAIR_COEFFS_IN_DATA" ]; then
if [ ! -s "$in_settings" ] || (! grep -q pair_coeff "$in_settings"); then
echo "WARNING: no pair coeffs have been set!" >&2
fi
fi
if [ -s "$data_bond_coeffs" ]; then
echo "Bond Coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_bond_coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
else
if [ -n "$NBONDTYPES" ] && ( [ ! -s "$in_settings" ] || (! grep -q bond_coeff "$in_settings") ); then
echo "WARNING: no bond coeff have been set!" >&2
fi
fi
if [ -s "$data_angle_coeffs" ]; then
echo "Angle Coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_angle_coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
else
if [ -n "$NANGLETYPES" ] && ( [ ! -s "$in_settings" ] || (! grep -q angle_coeff "$in_settings") ); then
echo "WARNING: no angle coeffs have been set!" >&2
fi
fi
if [ -s "$data_dihedral_coeffs" ]; then
echo "Dihedral Coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_dihedral_coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
else
if [ -n "$NDIHEDRALTYPES" ] && ( [ ! -s "$in_settings" ] || (! grep -q dihedral_coeff "$in_settings") ); then
echo "WARNING: no dihedral coeffs have been set!" >&2
fi
fi
if [ -s "$data_improper_coeffs" ]; then
echo "Improper Coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_improper_coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
else
if [ -n "$NIMPROPERTYPES" ] && ( [ ! -s "$in_settings" ] || (! grep -q improper_coeff "$in_settings") ); then
echo "WARNING: no improper coeffs have been set!" >&2
fi
fi
# data file sections specific to class2 force-fields:
if [ -s "$data_bondbond_coeffs" ]; then
echo "BondBond Coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_bondbond_coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
fi
if [ -s "$data_bondangle_coeffs" ]; then
echo "BondAngle Coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_bondangle_coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
fi
if [ -s "$data_middlebondtorsion_coeffs" ]; then
echo "MiddleBondTorsion Coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_middlebondtorsion_coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
fi
if [ -s "$data_endbondtorsion_coeffs" ]; then
echo "EndBondTorsion Coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_endbondtorsion_coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
fi
if [ -s "$data_angletorsion_coeffs" ]; then
echo "AngleTorsion Coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_angletorsion_coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
fi
if [ -s "$data_angleangletorsion_coeffs" ]; then
echo "AngleAngleTorsion Coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_angleangletorsion_coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
fi
if [ -s "$data_bondbond13_coeffs" ]; then
echo "BondBond13 Coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_bondbond13_coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
fi
if [ -s "$data_angleangle_coeffs" ]; then
echo "AngleAngle Coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_angleangle_coeffs" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
fi
if [ -s "$data_atoms" ]; then
if [ -n "$ATOM_STYLE" ]; then
echo "Atoms # $ATOM_STYLE" >> "$OUT_FILE_DATA"
else
echo "Atoms # full" >> "$OUT_FILE_DATA"
fi
#if [ -s "$tmp_atom_coords" ]; then
# echo "# (Note: x,y,z coordinates may overlap and can be modified later.)" >> "$OUT_FILE_DATA"
#else
# echo "" >> "$OUT_FILE_DATA"
#fi
echo "" >> "$OUT_FILE_DATA"
cat "$data_atoms" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
else
echo "WARNING: missing file \"$data_atoms\"" >&2
fi
if [ -s "$data_ellipsoids" ]; then
echo "Ellipsoids" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_ellipsoids" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
fi
if [ -s "$data_triangles" ]; then
echo "Triangles" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_triangles" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
fi
if [ -s "$data_lines" ]; then
echo "Lines" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_lines" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
fi
if [ -s "$data_velocities" ]; then
echo "Velocities" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_velocities" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
#else
# echo "Velocities" >> "$OUT_FILE_DATA"
# echo "" >> "$OUT_FILE_DATA"
# awk '{print $1 " 0.0 0.0 0.0"}' < "$data_atoms" >> "$OUT_FILE_DATA"
# echo "" >> "$OUT_FILE_DATA"
fi
if [ -s "$data_bonds" ]; then
echo "Bonds" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_bonds" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
#else
# echo "WARNING: missing file \"$data_bonds\"" >&2
fi
if [ -s "$data_angles" ]; then
echo "Angles" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_angles" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
#else
# echo "WARNING: missing file \"$data_angles\"" >&2
fi
if [ -s "$data_dihedrals" ]; then
echo "Dihedrals" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_dihedrals" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
#else
# echo "WARNING: missing file \"$data_dihedrals\"" >&2
fi
if [ -s "$data_impropers" ]; then
echo "Impropers" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$data_impropers" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
#else
# echo "WARNING: missing file \"$data_impropers\"" >&2
fi
rm -f $OUT_FILE_INPUT_SCRIPT
if [ -s "$in_init" ]; then
echo "" >> $OUT_FILE_INPUT_SCRIPT
cp -f "$in_init" $OUT_FILE_INIT
echo "" >> $OUT_FILE_INPUT_SCRIPT
echo "# ----------------- Init Section -----------------" >> $OUT_FILE_INPUT_SCRIPT
echo "" >> $OUT_FILE_INPUT_SCRIPT
echo "include \"$OUT_FILE_INIT\"" >> $OUT_FILE_INPUT_SCRIPT
#echo "# \"$in_init\" typically contains various styles, dimensions, and units:" >> $OUT_FILE_INPUT_SCRIPT
#echo "include \"$in_init\"" >> $OUT_FILE_INPUT_SCRIPT
#cat "$in_init" >> $OUT_FILE_INPUT_SCRIPT
echo "" >> $OUT_FILE_INPUT_SCRIPT
fi
echo "" >> $OUT_FILE_INPUT_SCRIPT
echo "# ----------------- Atom Definition Section -----------------" >> $OUT_FILE_INPUT_SCRIPT
echo "" >> $OUT_FILE_INPUT_SCRIPT
echo "read_data \"$OUT_FILE_DATA\"" >> $OUT_FILE_INPUT_SCRIPT
echo "" >> $OUT_FILE_INPUT_SCRIPT
echo "# ----------------- Settings Section -----------------" >> $OUT_FILE_INPUT_SCRIPT
echo "" >> $OUT_FILE_INPUT_SCRIPT
if [ -s "$in_settings" ]; then
#echo "# \"$in_settings\" typically contains coeffs, fixes, groups & modify commands:" >> $OUT_FILE_INPUT_SCRIPT
#echo "include \"$in_settings\"" >> $OUT_FILE_INPUT_SCRIPT
#cat "$in_settings" >> $OUT_FILE_INPUT_SCRIPT
cp -f "$in_settings" $OUT_FILE_SETTINGS
echo "include \"$OUT_FILE_SETTINGS\"" >> $OUT_FILE_INPUT_SCRIPT
echo "" >> $OUT_FILE_INPUT_SCRIPT
fi
if [ -s "$tmp_atom_coords" ]; then
NATOMS=`awk '/^\\\$\/atom:/{n++}END{print n}' < ttree_assignments.txt`
NATOMCRDS=`awk '{if (NF>=3) natom+=1} END{print(natom)}' < "$tmp_atom_coords"`
if [ $NATOMS -ne $NATOMCRDS ]; then
echo "Error: Number of atoms in coordinate file provided by user ($NATOMCRDS)" >&2
echo "does not match the number of atoms generated in ttree file ($NATOMS)" >&2
exit 14
fi
# Copy the coordinates in $tmp_atom_coords into $OUT_FILE_DATA
rm -f "$OUT_FILE_COORDS"
if ! eval $PYTHON_COMMAND "${SCRIPT_DIR}/raw2data.py" $ATOM_STYLE_ARG "$OUT_FILE_DATA" < "$tmp_atom_coords" > "$OUT_FILE_COORDS"; then
ERR_INTERNAL
fi
mv -f "$OUT_FILE_COORDS" "$OUT_FILE_DATA"
echo "copied atomic coordinates into $OUT_FILE_DATA"
# Previously, in earlier versions of moltemplate, we used to
# create a new input script containing "set" commands which the
# user was supposed to tell LAMMPS to read using an "include" command.
# If for some reason, you want to go back to doing it that way, then
# uncomment the following 6 lines:
#
#rm -f "$OUT_FILE_COORDS"
#awk '{if (NF>=3) {natom++; print "set atom "natom" x "$1" y "$2" z "$3" image 0 0 0"}}' < "$tmp_atom_coords" >> "$OUT_FILE_COORDS"
#echo "# Load the atom coordinates:" >> $OUT_FILE_INPUT_SCRIPT
#echo "" >> $OUT_FILE_INPUT_SCRIPT
#echo "include \"$OUT_FILE_COORDS\"" >> $OUT_FILE_INPUT_SCRIPT
#echo "" >> $OUT_FILE_INPUT_SCRIPT
else
rm -f "$OUT_FILE_COORDS"
# echo "Warning: (moltemplate.sh)" >&2
# echo " Atomic coordinates were not supplied externally" >&2
# echo " (for example using the \"-pdb\" or \"-xyz\" arguments)." >&2
# echo " Hopefully you used rot(), trans() lttree commands to move" >&2
# echo " molecules to non-overlapping positions." >&2
fi
# ############## CLEAN UP ################
# A lot of files have been created along the way.
# However only a few of them are actually useful.
#
# Optional: clean up some non-essential temporary
# files created by running ttree
# We move the non-essential files into a different directory
# (but we don't delete them).
if [ ! -d output_ttree ]; then
mkdir output_ttree
fi
# Move temporary files into the "output_ttree/" directory:
OIFS=$IFS
#IFS=$'\n'
IFS="
"
+rm -f ttree_replacements.txt >/dev/null 2>&1 || true
for file in $MOLTEMPLATE_TEMP_FILES; do
if [ -e "$file" ]; then
rm -f "output_ttree/$file" >/dev/null 2>&1 || true
#echo "file=\"$file\""
mv "$file" output_ttree/ >/dev/null 2>&1 || true
fi
done
IFS=$OIFS
# ############## DEAL WITH CUSTOM NON-STANDARD SECTIONS ################
# N_data_prefix=`expr length "$data_prefix"` <-- not posix compliant. AVOID
N_data_prefix=${#data_prefix} #<-- works even if $data_prefix contains spaces
ls "${data_prefix}"* 2> /dev/null | while read file_name; do
#If using bash:
#SECTION_NAME="${file_name:$N_data_prefix}"
#If using sh:
#SECTION_NAME=`expr substr "$file_name" $(($N_data_prefix+1)) 1000000` <-- not posix compliant. AVOID
SECTION_NAME=`echo "" | awk "END{print substr(\"$file_name\",$((N_data_prefix+1)),1000000)}"`
# Create a new section in the data file
# matching the portion of the name of
# the file after the data_prefix.
echo "" >> "$OUT_FILE_DATA"
echo "$SECTION_NAME" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
cat "$file_name" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
mv -f "$file_name" output_ttree/
done
if [ -e "$data_prefix_no_space" ]; then
echo "" >> "$OUT_FILE_DATA"
cat "$data_prefix_no_space" >> "$OUT_FILE_DATA"
echo "" >> "$OUT_FILE_DATA"
mv -f "$data_prefix_no_space" output_ttree/
fi
if [ -e "$OUT_FILE_DATA" ]; then
mv -f "$OUT_FILE_DATA" "$OUT_FILE_DATA.tmp" >/dev/null 2>&1 || true
#dos2unix < "$OUT_FILE_DATA.tmp" > "$OUT_FILE_DATA"
tr -d '\r' < "$OUT_FILE_DATA.tmp" > "$OUT_FILE_DATA"
rm -f "$OUT_FILE_DATA.tmp" >/dev/null 2>&1 || true
fi
#N_in_prefix=`expr length "$in_prefix"` <-- not posix compliant. AVOID.
N_in_prefix=${#in_prefix} #<-- works even if $in_prefix contains spaces
ls "${in_prefix}"* 2> /dev/null | while read file_name; do
#If using bash:
#SECTION_NAME="${file_name:$N_in_prefix}"
#If using sh:
#SECTION_NAME=`expr substr "$file_name" $(($N_in_prefix+1)) 1000000` <-- not posix compliant. AVOID
SECTION_NAME=`echo "" | awk "END{print substr(\"$file_name\",$((N_in_prefix+1)),1000000)}"`
FILE_SUFFIX=`echo "$SECTION_NAME" | awk '{print tolower($0)}'`
# Create a new section in the lammps input script
# matching the portion of the name of
# the file after the in_prefix.
echo "" >> $OUT_FILE_INPUT_SCRIPT
echo "# ----------------- $SECTION_NAME Section -----------------" >> $OUT_FILE_INPUT_SCRIPT
cp -f "$file_name" ${OUT_FILE_INPUT_SCRIPT}.${FILE_SUFFIX}
echo "" >> $OUT_FILE_INPUT_SCRIPT
echo "include \"${OUT_FILE_INPUT_SCRIPT}.${FILE_SUFFIX}\"" >> $OUT_FILE_INPUT_SCRIPT
echo "" >> $OUT_FILE_INPUT_SCRIPT
mv -f "$file_name" output_ttree/
done
if [ -e "$in_prefix_no_space" ]; then
echo "" >> $OUT_FILE_INPUT_SCRIPT
cat "$in_prefix_no_space" >> $OUT_FILE_INPUT_SCRIPT
echo "" >> $OUT_FILE_INPUT_SCRIPT
mv -f "$in_prefix_no_space" output_ttree/
fi
# Swap the order of atom types I, J in all "pair_coeff I J ..." commands
# whenever I > J. Do this for every input script file generated by moltemplate.
# (Perhaps later I'll check to make sure the user did not specify contradictory
# "pair_coeff I J ..." and "pair_coeff J I ..." commands, but I won't do it
# here, because at this point we've thrown away the original atom type names,
# so there's no easy way to explain the problem to the user if there is one.)
echo "" > input_scripts_so_far.tmp
for file_name in "$OUT_FILE_INIT" "$OUT_FILE_INPUT_SCRIPT" "$OUT_FILE_SETTINGS"; do
if [ -s "$file_name" ]; then
echo "postprocessing file \"$file_name\"" >&2
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/postprocess_input_script.py" input_scripts_so_far.tmp < "$file_name" > "$file_name.tmp"; then
ERR_INTERNAL
fi
echo "" >&2
mv -f "$file_name.tmp" "$file_name"
#cat "$file_name" >> input_scripts_so_far.tmp
#dos2unix < "$file_name" >> input_scripts_so_far.tmp
tr -d '\r' < "$file_name" >> input_scripts_so_far.tmp
# Delete all "bond_style" statements when no bond types are defined
if [ -z "$NBONDTYPES" ]; then
awk '{if ($1!="bond_style") print $0}' < "$file_name" > "${file_name}.tmp"
mv -f "$file_name.tmp" "$file_name"
fi
# Delete all "angle_style" statements when no angle types are defined
if [ -z "$NANGLETYPES" ]; then
awk '{if ($1!="angle_style") print $0}' < "$file_name" > "${file_name}.tmp"
mv -f "$file_name.tmp" "$file_name"
fi
# Delete all "dihedral_style" statements when no dihedral types are defined
if [ -z "$NDIHEDRALTYPES" ]; then
awk '{if ($1!="dihedral_style") print $0}' < "$file_name" > "${file_name}.tmp"
mv -f "$file_name.tmp" "$file_name"
fi
# Delete all "improper_style" statements when no improper types are defined
if [ -z "$NIMPROPERTYPES" ]; then
awk '{if ($1!="improper_style") print $0}' < "$file_name" > "${file_name}.tmp"
mv -f "$file_name.tmp" "$file_name"
fi
fi
done
ls "${in_prefix}"* 2> /dev/null | while read file_name; do
echo "postprocessing file \"$file_name\"" >&2
if ! $PYTHON_COMMAND "${SCRIPT_DIR}/postprocess_input_script.py" input_scripts_so_far.tmp < "$file_name" > "$file_name".tmp; then
ERR_INTERNAL
fi
echo "" >&2
mv "$file_name".tmp "$file_name"
cat "$file_name" >> input_scripts_so_far.tmp
done
rm -f input_scripts_so_far.tmp
# ############ Optional: Add a fake run section as an example ############
echo "" >> $OUT_FILE_INPUT_SCRIPT
echo "# ----------------- Run Section -----------------" >> $OUT_FILE_INPUT_SCRIPT
echo "" >> $OUT_FILE_INPUT_SCRIPT
echo "# The lines above define the system you want to simulate." >> $OUT_FILE_INPUT_SCRIPT
echo "# What you do next is up to you." >> $OUT_FILE_INPUT_SCRIPT
echo "# Typically a user would minimize and equilibrate" >> $OUT_FILE_INPUT_SCRIPT
echo "# the system using commands similar to the following:" >> $OUT_FILE_INPUT_SCRIPT
echo "# ---- examples ----" >> $OUT_FILE_INPUT_SCRIPT
echo "#" >> $OUT_FILE_INPUT_SCRIPT
echo "# -- minimize --" >> $OUT_FILE_INPUT_SCRIPT
echo "# minimize 1.0e-5 1.0e-7 1000 10000" >> $OUT_FILE_INPUT_SCRIPT
echo "# (Note: Some fixes, for example \"shake\", interfere with the minimize command," >> $OUT_FILE_INPUT_SCRIPT
echo "# You can use the \"unfix\" command to disable them before minimization.)" >> $OUT_FILE_INPUT_SCRIPT
echo "# -- declare time step for normal MD --" >> $OUT_FILE_INPUT_SCRIPT
echo "# timestep 1.0" >> $OUT_FILE_INPUT_SCRIPT
echo "# -- run at constant pressure (Nose-Hoover)--" >> $OUT_FILE_INPUT_SCRIPT
#echo "# timestep 1.0" >> $OUT_FILE_INPUT_SCRIPT
echo "# fix fxnpt all npt temp 300.0 300.0 100.0 iso 1.0 1.0 1000.0 drag 1.0">>$OUT_FILE_INPUT_SCRIPT
echo "# -- ALTERNATELY, run at constant volume (Nose-Hoover) --" >> $OUT_FILE_INPUT_SCRIPT
echo "# fix fxnvt all nvt temp 300.0 300.0 500.0 tchain 1" >> $OUT_FILE_INPUT_SCRIPT
echo "# -- ALTERNATELY, run at constant volume using Langevin dynamics. --" >> $OUT_FILE_INPUT_SCRIPT
echo "# -- (This is good for sparse CG polymers in implicit solvent.) --" >> $OUT_FILE_INPUT_SCRIPT
echo "# fix fxLAN all langevin 300.0 300.0 5000 48279" >> $OUT_FILE_INPUT_SCRIPT
echo "# fix fxNVE all nve #(<--needed by fix langevin)" >> $OUT_FILE_INPUT_SCRIPT
echo "# -- Now, finally run the simulation --" >> $OUT_FILE_INPUT_SCRIPT
echo "# run 50000" >> $OUT_FILE_INPUT_SCRIPT
#echo "# write_restart system_after_nvt.rst" >> $OUT_FILE_INPUT_SCRIPT
#echo "# run 50000" >> $OUT_FILE_INPUT_SCRIPT
#echo "# write_restart system_after_npt.rst" >> $OUT_FILE_INPUT_SCRIPT
echo "# ---- (end of examples) ----">> $OUT_FILE_INPUT_SCRIPT
#echo "# It is the responsibility of the user to learn LAMMPS and specify these">>$OUT_FILE_INPUT_SCRIPT
#echo "# these commands." >> $OUT_FILE_INPUT_SCRIPT
echo "" >> $OUT_FILE_INPUT_SCRIPT
# Finally, if the -vmd argument was included, start up VMD and
# view the system (using topotools to convert the
if [ ! -z $RUN_VMD_AT_END ]; then
echo "topo readlammpsdata $OUT_FILE_DATA full" > vmd_viz_moltemplate.tcl.tmp
bn=`basename $OUT_FILE_DATA .data`
echo "animate write psf $bn.psf" >> vmd_viz_moltemplate.tcl.tmp
vmd -e vmd_viz_moltemplate.tcl.tmp
rm -rf vmd_viz_moltemplate.tcl.tmp
fi
diff --git a/tools/moltemplate/src/docs_useful_scripts/docs_dump2data.txt b/tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_dump2data.txt
similarity index 100%
rename from tools/moltemplate/src/docs_useful_scripts/docs_dump2data.txt
rename to tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_dump2data.txt
diff --git a/tools/moltemplate/src/docs_useful_scripts/docs_extract_lammps_data.txt b/tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_extract_lammps_data.txt
similarity index 100%
rename from tools/moltemplate/src/docs_useful_scripts/docs_extract_lammps_data.txt
rename to tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_extract_lammps_data.txt
diff --git a/tools/moltemplate/src/docs_useful_scripts/docs_raw2data.txt b/tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_raw2data.txt
similarity index 100%
rename from tools/moltemplate/src/docs_useful_scripts/docs_raw2data.txt
rename to tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_raw2data.txt
diff --git a/tools/moltemplate/common/amber/README.TXT b/tools/moltemplate/src/moltemplate_force_fields/amber/README.TXT
similarity index 100%
rename from tools/moltemplate/common/amber/README.TXT
rename to tools/moltemplate/src/moltemplate_force_fields/amber/README.TXT
diff --git a/tools/moltemplate/common/amber/amberparm2lt.sh b/tools/moltemplate/src/moltemplate_force_fields/amber/amberparm2lt.sh
similarity index 100%
rename from tools/moltemplate/common/amber/amberparm2lt.sh
rename to tools/moltemplate/src/moltemplate_force_fields/amber/amberparm2lt.sh
diff --git a/tools/moltemplate/common/amber/amberparm_angle_to_lt.py b/tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_angle_to_lt.py
similarity index 100%
rename from tools/moltemplate/common/amber/amberparm_angle_to_lt.py
rename to tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_angle_to_lt.py
diff --git a/tools/moltemplate/common/amber/amberparm_bond_to_lt.py b/tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_bond_to_lt.py
similarity index 100%
rename from tools/moltemplate/common/amber/amberparm_bond_to_lt.py
rename to tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_bond_to_lt.py
diff --git a/tools/moltemplate/common/amber/amberparm_dihedral_to_lt.py b/tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_dihedral_to_lt.py
similarity index 100%
rename from tools/moltemplate/common/amber/amberparm_dihedral_to_lt.py
rename to tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_dihedral_to_lt.py
diff --git a/tools/moltemplate/common/amber/amberparm_improper_to_lt.py b/tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_improper_to_lt.py
similarity index 100%
rename from tools/moltemplate/common/amber/amberparm_improper_to_lt.py
rename to tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_improper_to_lt.py
diff --git a/tools/moltemplate/common/amber/amberparm_mass_to_lt.py b/tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_mass_to_lt.py
similarity index 100%
rename from tools/moltemplate/common/amber/amberparm_mass_to_lt.py
rename to tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_mass_to_lt.py
diff --git a/tools/moltemplate/common/amber/amberparm_pair_to_lt.py b/tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_pair_to_lt.py
similarity index 100%
rename from tools/moltemplate/common/amber/amberparm_pair_to_lt.py
rename to tools/moltemplate/src/moltemplate_force_fields/amber/amberparm_pair_to_lt.py
diff --git a/tools/moltemplate/common/gaff.lt b/tools/moltemplate/src/moltemplate_force_fields/gaff.lt
similarity index 99%
rename from tools/moltemplate/common/gaff.lt
rename to tools/moltemplate/src/moltemplate_force_fields/gaff.lt
index 9506cef9c..82063a721 100644
--- a/tools/moltemplate/common/gaff.lt
+++ b/tools/moltemplate/src/moltemplate_force_fields/gaff.lt
@@ -1,11782 +1,11789 @@
# This is the 1.7 version of GAFF (from AmberTools15), downloaded 2015-8-17.
# NOTE: Corrections were made to the amberparm2lt.sh converter on 2014-5-19, so
# this version of gaff.lt differs from earlier versions using the same source
####################################################################
# To use this, LAMMPS currently must be compiled with the USER-MISC package.
# (Type "make yes-user-misc" into the shell before compiling LAMMPS.)
####################################################################
# This moltemplate (LT) file was generated automatically using
# amber/amberparm2lt.sh gaff.dat GAFF > gaff.lt
####################################################################
# Background information and usage explanation:
# This file contanis a list of atom types and rules for generating bonded
# interactions between these atoms (hopefully) according to AMBER conventions.
# By using the atom types shown below in your own molecules, bonds and angular
# interactions will be automatically generated.
# AMBER (GAFF) force-field parameters will also be assigned to each angle
# interaction (according to these atom types).
# One way to apply the GAFF force field to a particular type of molecule, is
# to use the "inherits" keyword when you define that molecule. For example:
+#
# import("gaff.lt")
# MoleculeType inherits GAFF {
# write_once("Data Atoms") {
# $atom:C1 $mol:... @atom:cx 0.0 4.183 3.194 13.285
# $atom:C2 $mol:... @atom:cx 0.0 4.291 4.618 13.382
# : : :
# }
# }
+#
#(See "Inheritance" and "short names vs. full names" in the moltemplate manual.)
####################################################################
# Moltemplate can not assign atom charge. You must assign atomic
# charges yourself. (Moltemplate is only a simple text manipulation tool.)
####################################################################
+
+
+
+
+
GAFF {
# ----------------------------------------------------------------------
# The basic atom nomenclature and conventions are explained here:
# http://ambermd.org/antechamber/gaff.pdf
# For reference, the original gaff.dat file and format documenation are here:
# http://ambermd.org/AmberTools-get.html
# http://ambermd.org/formats.html#parm.dat
# ----------------------------------------------------------------------
write_once("Data Masses") {
@atom:c 12.01 # Sp2 C carbonyl group
@atom:c1 12.01 # Sp C
@atom:c2 12.01 # Sp2 C
@atom:c3 12.01 # Sp3 C
@atom:ca 12.01 # Sp2 C in pure aromatic systems
@atom:cp 12.01 # Head Sp2 C that connect two rings in biphenyl sys.
@atom:cq 12.01 # Head Sp2 C that connect two rings in biphenyl sys. identical to cp
@atom:cc 12.01 # Sp2 carbons in non-pure aromatic systems
@atom:cd 12.01 # Sp2 carbons in non-pure aromatic systems, identical to cc
@atom:ce 12.01 # Inner Sp2 carbons in conjugated systems
@atom:cf 12.01 # Inner Sp2 carbons in conjugated systems, identical to ce
@atom:cg 12.01 # Inner Sp carbons in conjugated systems
@atom:ch 12.01 # Inner Sp carbons in conjugated systems, identical to cg
@atom:cx 12.01 # Sp3 carbons in triangle systems
@atom:cy 12.01 # Sp3 carbons in square systems
@atom:cu 12.01 # Sp2 carbons in triangle systems
@atom:cv 12.01 # Sp2 carbons in square systems
@atom:cz 12.01 # Sp2 carbon in guanidine group
@atom:h1 1.008 # H bonded to aliphatic carbon with 1 electrwd. group
@atom:h2 1.008 # H bonded to aliphatic carbon with 2 electrwd. group
@atom:h3 1.008 # H bonded to aliphatic carbon with 3 electrwd. group
@atom:h4 1.008 # H bonded to non-sp3 carbon with 1 electrwd. group
@atom:h5 1.008 # H bonded to non-sp3 carbon with 2 electrwd. group
@atom:ha 1.008 # H bonded to aromatic carbon
@atom:hc 1.008 # H bonded to aliphatic carbon without electrwd. group
@atom:hn 1.008 # H bonded to nitrogen atoms
@atom:ho 1.008 # Hydroxyl group
@atom:hp 1.008 # H bonded to phosphate
@atom:hs 1.008 # Hydrogen bonded to sulphur
@atom:hw 1.008 # Hydrogen in water
@atom:hx 1.008 # H bonded to C next to positively charged group
@atom:f 19.00 # Fluorine
@atom:cl 35.45 # Chlorine
@atom:br 79.90 # Bromine
@atom:i 126.9 # Iodine
@atom:n 14.01 # Sp2 nitrogen in amide groups
@atom:n1 14.01 # Sp N
@atom:n2 14.01 # aliphatic Sp2 N with two connected atoms
@atom:n3 14.01 # Sp3 N with three connected atoms
@atom:n4 14.01 # Sp3 N with four connected atoms
@atom:na 14.01 # Sp2 N with three connected atoms
@atom:nb 14.01 # Sp2 N in pure aromatic systems
@atom:nc 14.01 # Sp2 N in non-pure aromatic systems
@atom:nd 14.01 # Sp2 N in non-pure aromatic systems, identical to nc
@atom:ne 14.01 # Inner Sp2 N in conjugated systems
@atom:nf 14.01 # Inner Sp2 N in conjugated systems, identical to ne
@atom:nh 14.01 # Amine N connected one or more aromatic rings
@atom:no 14.01 # Nitro N
@atom:o 16.00 # Oxygen with one connected atom
@atom:oh 16.00 # Oxygen in hydroxyl group
@atom:os 16.00 # Ether and ester oxygen
@atom:ow 16.00 # Oxygen in water
@atom:p2 30.97 # Phosphate with two connected atoms
@atom:p3 30.97 # Phosphate with three connected atoms, such as PH3
@atom:p4 30.97 # Phosphate with three connected atoms, such as O=P(CH3)2
@atom:p5 30.97 # Phosphate with four connected atoms, such as O=P(OH)3
@atom:pb 30.97 # Sp2 P in pure aromatic systems
@atom:pc 30.97 # Sp2 P in non-pure aromatic systems
@atom:pd 30.97 # Sp2 P in non-pure aromatic systems, identical to pc
@atom:pe 30.97 # Inner Sp2 P in conjugated systems
@atom:pf 30.97 # Inner Sp2 P in conjugated systems, identical to pe
@atom:px 30.97 # Special p4 in conjugated systems
@atom:py 30.97 # Special p5 in conjugated systems
@atom:s 32.06 # S with one connected atom
@atom:s2 32.06 # S with two connected atom, involved at least one double bond
@atom:s4 32.06 # S with three connected atoms
@atom:s6 32.06 # S with four connected atoms
@atom:sh 32.06 # Sp3 S connected with hydrogen
@atom:ss 32.06 # Sp3 S in thio-ester and thio-ether
@atom:sx 32.06 # Special s4 in conjugated systems
@atom:sy 32.06 # Special s6 in conjugated systems
} # (end of masses)
write_once("In Settings") {
pair_coeff @atom:h1 @atom:h1 lj/charmm/coul/long 0.0157 2.47135304412 # Veenstra et al JCC,8,(1992),963
pair_coeff @atom:h2 @atom:h2 lj/charmm/coul/long 0.0157 2.29317330049 # Veenstra et al JCC,8,(1992),963
pair_coeff @atom:h3 @atom:h3 lj/charmm/coul/long 0.0157 2.11499355687 # Veenstra et al JCC,8,(1992),963
pair_coeff @atom:h4 @atom:h4 lj/charmm/coul/long 0.0150 2.51055258772 # Spellmeyer, one electrowithdr. neighbor
pair_coeff @atom:h5 @atom:h5 lj/charmm/coul/long 0.0150 2.42146271591 # Spellmeyer, two electrowithdr. neighbor
pair_coeff @atom:ha @atom:ha lj/charmm/coul/long 0.0150 2.59964245953 # Spellmeyer
pair_coeff @atom:hc @atom:hc lj/charmm/coul/long 0.0157 2.64953278775 # OPLS
pair_coeff @atom:hn @atom:hn lj/charmm/coul/long 0.0157 1.06907846177 # !Ferguson base pair geom.
pair_coeff @atom:ho @atom:ho lj/charmm/coul/long 0.0000 0.0 # OPLS Jorgensen, JACS,110,(1988),1657
pair_coeff @atom:hp @atom:hp lj/charmm/coul/long 0.0157 1.06907846177 # same to hs (be careful !)
pair_coeff @atom:hs @atom:hs lj/charmm/coul/long 0.0157 1.06907846177 # W. Cornell CH3SH --> CH3OH FEP
pair_coeff @atom:hw @atom:hw lj/charmm/coul/long 0.0000 0.0 # OPLS Jorgensen, JACS,110,(1988),1657
pair_coeff @atom:hx @atom:hx lj/charmm/coul/long 0.0157 1.95997717991 # Veenstra et al JCC,8,(1992),963
pair_coeff @atom:o @atom:o lj/charmm/coul/long 0.2100 2.95992190115 # OPLS
pair_coeff @atom:oh @atom:oh lj/charmm/coul/long 0.2104 3.06647338784 # OPLS
pair_coeff @atom:os @atom:os lj/charmm/coul/long 0.1700 3.00001234347 # OPLS ether
pair_coeff @atom:ow @atom:ow lj/charmm/coul/long 0.1520 3.15075240658 # TIP3P water model
pair_coeff @atom:c @atom:c lj/charmm/coul/long 0.0860 3.39966950842 # OPLS
pair_coeff @atom:c1 @atom:c1 lj/charmm/coul/long 0.2100 3.39966950842 # cp C DLM 11/2007 well depth from OPLS replacing 0.0860
pair_coeff @atom:c2 @atom:c2 lj/charmm/coul/long 0.0860 3.39966950842 # sp2 atom in the middle of C=CD-CD=C
pair_coeff @atom:c3 @atom:c3 lj/charmm/coul/long 0.1094 3.39966950842 # OPLS
pair_coeff @atom:ca @atom:ca lj/charmm/coul/long 0.0860 3.39966950842 # OPLS
pair_coeff @atom:cc @atom:cc lj/charmm/coul/long 0.0860 3.39966950842 # OPLS
pair_coeff @atom:cd @atom:cd lj/charmm/coul/long 0.0860 3.39966950842 # OPLS
pair_coeff @atom:ce @atom:ce lj/charmm/coul/long 0.0860 3.39966950842 # OPLS
pair_coeff @atom:cf @atom:cf lj/charmm/coul/long 0.0860 3.39966950842 # OPLS
pair_coeff @atom:cg @atom:cg lj/charmm/coul/long 0.2100 3.39966950842 # DLM 12/2007 as c1
pair_coeff @atom:ch @atom:ch lj/charmm/coul/long 0.2100 3.39966950842 # DLM 12/2007 as c1
pair_coeff @atom:cp @atom:cp lj/charmm/coul/long 0.0860 3.39966950842 # OPLS
pair_coeff @atom:cq @atom:cq lj/charmm/coul/long 0.0860 3.39966950842 # OPLS
pair_coeff @atom:cu @atom:cu lj/charmm/coul/long 0.0860 3.39966950842 # OPLS
pair_coeff @atom:cv @atom:cv lj/charmm/coul/long 0.0860 3.39966950842 # OPLS
pair_coeff @atom:cx @atom:cx lj/charmm/coul/long 0.0860 3.39966950842 # OPLS
pair_coeff @atom:cy @atom:cy lj/charmm/coul/long 0.0860 3.39966950842 # OPLS
pair_coeff @atom:cz @atom:cz lj/charmm/coul/long 0.0860 3.39966950842 # OPLS
pair_coeff @atom:n @atom:n lj/charmm/coul/long 0.1700 3.24999852378 # OPLS
pair_coeff @atom:n1 @atom:n1 lj/charmm/coul/long 0.1700 3.24999852378 # OPLS
pair_coeff @atom:n2 @atom:n2 lj/charmm/coul/long 0.1700 3.24999852378 # OPLS
pair_coeff @atom:n3 @atom:n3 lj/charmm/coul/long 0.1700 3.24999852378 # OPLS
pair_coeff @atom:n4 @atom:n4 lj/charmm/coul/long 0.1700 3.24999852378 # OPLS
pair_coeff @atom:na @atom:na lj/charmm/coul/long 0.1700 3.24999852378 # OPLS
pair_coeff @atom:nb @atom:nb lj/charmm/coul/long 0.1700 3.24999852378 # OPLS
pair_coeff @atom:nc @atom:nc lj/charmm/coul/long 0.1700 3.24999852378 # OPLS
pair_coeff @atom:nd @atom:nd lj/charmm/coul/long 0.1700 3.24999852378 # OPLS
pair_coeff @atom:ne @atom:ne lj/charmm/coul/long 0.1700 3.24999852378 # OPLS
pair_coeff @atom:nf @atom:nf lj/charmm/coul/long 0.1700 3.24999852378 # OPLS
pair_coeff @atom:nh @atom:nh lj/charmm/coul/long 0.1700 3.24999852378 # OPLS
pair_coeff @atom:no @atom:no lj/charmm/coul/long 0.1700 3.24999852378 # OPLS
pair_coeff @atom:s @atom:s lj/charmm/coul/long 0.2500 3.56359487256 # W. Cornell CH3SH and CH3SCH3 FEP's
pair_coeff @atom:s2 @atom:s2 lj/charmm/coul/long 0.2500 3.56359487256 # W. Cornell CH3SH and CH3SCH3 FEP's
pair_coeff @atom:s4 @atom:s4 lj/charmm/coul/long 0.2500 3.56359487256 # W. Cornell CH3SH and CH3SCH3 FEP's
pair_coeff @atom:s6 @atom:s6 lj/charmm/coul/long 0.2500 3.56359487256 # W. Cornell CH3SH and CH3SCH3 FEP's
pair_coeff @atom:sx @atom:sx lj/charmm/coul/long 0.2500 3.56359487256 # W. Cornell CH3SH and CH3SCH3 FEP's
pair_coeff @atom:sy @atom:sy lj/charmm/coul/long 0.2500 3.56359487256 # W. Cornell CH3SH and CH3SCH3 FEP's
pair_coeff @atom:sh @atom:sh lj/charmm/coul/long 0.2500 3.56359487256 # W. Cornell CH3SH and CH3SCH3 FEP's
pair_coeff @atom:ss @atom:ss lj/charmm/coul/long 0.2500 3.56359487256 # W. Cornell CH3SH and CH3SCH3 FEP's
pair_coeff @atom:p2 @atom:p2 lj/charmm/coul/long 0.2000 3.74177461619 # JCC,7,(1986),230;
pair_coeff @atom:p3 @atom:p3 lj/charmm/coul/long 0.2000 3.74177461619 # JCC,7,(1986),230;
pair_coeff @atom:p4 @atom:p4 lj/charmm/coul/long 0.2000 3.74177461619 # JCC,7,(1986),230;
pair_coeff @atom:p5 @atom:p5 lj/charmm/coul/long 0.2000 3.74177461619 # JCC,7,(1986),230;
pair_coeff @atom:pb @atom:pb lj/charmm/coul/long 0.2000 3.74177461619 # JCC,7,(1986),230;
pair_coeff @atom:pc @atom:pc lj/charmm/coul/long 0.2000 3.74177461619 # JCC,7,(1986),230;
pair_coeff @atom:pd @atom:pd lj/charmm/coul/long 0.2000 3.74177461619 # JCC,7,(1986),230;
pair_coeff @atom:pe @atom:pe lj/charmm/coul/long 0.2000 3.74177461619 # JCC,7,(1986),230;
pair_coeff @atom:pf @atom:pf lj/charmm/coul/long 0.2000 3.74177461619 # JCC,7,(1986),230;
pair_coeff @atom:px @atom:px lj/charmm/coul/long 0.2000 3.74177461619 # JCC,7,(1986),230;
pair_coeff @atom:py @atom:py lj/charmm/coul/long 0.2000 3.74177461619 # JCC,7,(1986),230;
pair_coeff @atom:f @atom:f lj/charmm/coul/long 0.061 3.11814551349 # Gough et al. JCC 13,(1992),963.
pair_coeff @atom:cl @atom:cl lj/charmm/coul/long 0.265 3.47094140587 # Fox, JPCB,102,8070,(98),flex.mdl CHCl3
pair_coeff @atom:br @atom:br lj/charmm/coul/long 0.420 3.59923082129 # Junmei, 2010
pair_coeff @atom:i @atom:i lj/charmm/coul/long 0.50 3.830864488 # Junmei, 2010
} # (end of pair_coeffs)
write_once("In Settings") {
bond_coeff @bond:ow-hw harmonic 553.0 0.9572 # TIP3P_Water 1
bond_coeff @bond:hw-hw harmonic 553.0 1.5136 # TIP3P_Water 1
bond_coeff @bond:br-br harmonic 123.2 2.5420 # SOURCE1 4 0.0000
bond_coeff @bond:br-c1 harmonic 352.7 1.7870 # SOURCE2 4 0.0024
bond_coeff @bond:br-c2 harmonic 278.7 1.8830 # SOURCE1 31 0.0000
bond_coeff @bond:br-c harmonic 240.3 1.9460 # SOURCE2 2 0.0285
bond_coeff @bond:br-c3 harmonic 229.5 1.9660 # SOURCE1 100 0.0000
bond_coeff @bond:br-ca harmonic 269.6 1.8970 # SOURCE1 127 0.0058
bond_coeff @bond:br-cc harmonic 277.6 1.8847 # SOURCE4 39 0.0068
bond_coeff @bond:br-cx harmonic 261.4 1.9100 # SOURCE1 8 0.0000
bond_coeff @bond:br-i harmonic 142.4 2.6710 # SOURCE1 2 0.0245
bond_coeff @bond:br-n1 harmonic 330.4 1.8600 # SOUECE3 1
bond_coeff @bond:br-n2 harmonic 219.0 2.0380 # SOURCE3 5 0.1082
bond_coeff @bond:br-n harmonic 320.2 1.8730 # SOURCE3 4 0.0046
bond_coeff @bond:br-n3 harmonic 265.9 1.9520 # SOURCE3 2 0.0000
bond_coeff @bond:br-n4 harmonic 282.4 1.9260 # SOURCE3 3 0.0013
bond_coeff @bond:br-na harmonic 237.3 2.0020 # SOURCE3 7 0.2156
bond_coeff @bond:br-nh harmonic 270.9 1.9440 # SOURCE3 1 0.0000
bond_coeff @bond:br-no harmonic 191.0 2.1010 # SOURCE3 1 0.0000
bond_coeff @bond:br-o harmonic 278.9 1.8000 # SOUECE3 1
bond_coeff @bond:br-oh harmonic 237.2 1.8660 # SOURCE3 1 0.0000
bond_coeff @bond:br-os harmonic 225.6 1.8870 # SOURCE3 2 0.0000
bond_coeff @bond:br-p2 harmonic 174.3 2.2100 # SOURCE3 9 0.0510
bond_coeff @bond:br-p3 harmonic 167.0 2.2310 # SOURCE3 3 0.0101
bond_coeff @bond:br-p4 harmonic 188.8 2.1710 # SOUECE3 1
bond_coeff @bond:br-p5 harmonic 179.3 2.1960 # SOURCE3 3 0.0099
bond_coeff @bond:br-s harmonic 170.6 2.2200 # SOUECE3 1
bond_coeff @bond:br-s4 harmonic 134.3 2.3410 # SOURCE3 1 0.0000
bond_coeff @bond:br-s6 harmonic 172.7 2.2140 # SOURCE3 3 0.0443
bond_coeff @bond:br-sh harmonic 174.4 2.2090 # SOURCE3 1 0.0000
bond_coeff @bond:br-ss harmonic 176.6 2.2030 # SOURCE3 3 0.0035
bond_coeff @bond:c1-c1 harmonic 986.2 1.1810 # SOURCE1 265 0.0031
bond_coeff @bond:c1-c2 harmonic 625.0 1.3070 # SOURCE1 18 0.0000
bond_coeff @bond:c1-c3 harmonic 368.3 1.4700 # SOURCE1 215 0.0017
bond_coeff @bond:c1-ca harmonic 404.1 1.4400 # SOUECE3 1
bond_coeff @bond:c1-ce harmonic 607.4 1.3153 # SOURCE4 6 0.0086
bond_coeff @bond:c1-cg harmonic 845.8 1.2220 # SOURCE3 22 0.0101
bond_coeff @bond:c1-ch harmonic 845.8 1.2220 # SOURCE3 22 same_as_c1-cg
bond_coeff @bond:c1-cl harmonic 419.7 1.6310 # SOURCE2 6 0.0050
bond_coeff @bond:c1-cx harmonic 399.1 1.4440 # SOURCE1 38 0.0000
bond_coeff @bond:c1-f harmonic 469.4 1.2700 # SOURCE2 2 0.0085
bond_coeff @bond:c1-ha harmonic 375.9 1.0660 # SOURCE3 63 0.0035
bond_coeff @bond:c1-hc harmonic 385.6 1.0600 # SOUECE3 1
bond_coeff @bond:c1-i harmonic 318.8 1.9890 # SOURCE2 4 0.0032
bond_coeff @bond:c1-n1 harmonic 1014.5 1.1380 # SOURCE1 170 0.0055
bond_coeff @bond:c1-n2 harmonic 769.8 1.2100 # SOURCE3 5 0.0115
bond_coeff @bond:c1-n3 harmonic 409.8 1.3920 # SOURCE2 1 0.0000
bond_coeff @bond:c1-n4 harmonic 378.2 1.4170 # SOURCE3 3 0.0032
bond_coeff @bond:c1-n harmonic 503.0 1.3300 # SOUECE3 1
bond_coeff @bond:c1-na harmonic 452.0 1.3620 # SOURCE3 8 0.0034
bond_coeff @bond:c1-ne harmonic 803.3 1.1986 # SOURCE4 10 0.0088
bond_coeff @bond:c1-nf harmonic 803.3 1.1986 # SOURCE4 10 same_as_c1-ne
bond_coeff @bond:c1-nh harmonic 485.0 1.3408 # SOURCE4 11 0.0037
bond_coeff @bond:c1-no harmonic 393.0 1.4050 # SOURCE3 3 0.0005
bond_coeff @bond:c1-o harmonic 777.0 1.1660 # SOURCE2 9 0.0052
bond_coeff @bond:c1-oh harmonic 435.6 1.3260 # SOURCE3 1 0.0000
bond_coeff @bond:c1-os harmonic 437.1 1.3250 # SOURCE3 3 0.0148
bond_coeff @bond:c1-p2 harmonic 289.3 1.7700 # SOUECE3 1
bond_coeff @bond:c1-p3 harmonic 275.1 1.7900 # SOUECE3 1
bond_coeff @bond:c1-p4 harmonic 275.1 1.7900 # SOUECE3 1
bond_coeff @bond:c1-p5 harmonic 302.2 1.7530 # SOURCE3 2 0.0000
bond_coeff @bond:c1-s2 harmonic 410.0 1.5950 # SOURCE3 1 0.0000
bond_coeff @bond:c1-s harmonic 371.8 1.6300 # SOURCE1 14 0.0000
bond_coeff @bond:c1-s4 harmonic 272.9 1.7460 # SOURCE3 2 0.0000
bond_coeff @bond:c1-s6 harmonic 290.4 1.7220 # SOURCE3 2 0.0000
bond_coeff @bond:c1-sh harmonic 324.5 1.6800 # SOUECE3 1
bond_coeff @bond:c1-ss harmonic 325.4 1.6790 # SOURCE1 10 0.0000
bond_coeff @bond:c2-c2 harmonic 589.7 1.3240 # SOURCE1 974 0.0096
bond_coeff @bond:c2-c3 harmonic 328.3 1.5080 # SOURCE1 2536 0.0021
bond_coeff @bond:c2-ca harmonic 357.2 1.4800 # SOUECE3 1
bond_coeff @bond:c2-cc harmonic 522.6 1.3600 # SOURCE1 771 0.0185
bond_coeff @bond:c2-cd harmonic 522.6 1.3600 # SOURCE1 771 0.0185
bond_coeff @bond:c2-ce harmonic 560.5 1.3390 # SOURCE3 62 0.0128
bond_coeff @bond:c2-cf harmonic 560.5 1.3390 # SOURCE3 62 same_as_c2-ce
bond_coeff @bond:c2-cl harmonic 328.8 1.7220 # SOURCE1 163 0.0098
bond_coeff @bond:c2-cu harmonic 573.9 1.3320 # SOURCE2 1 0.0000
bond_coeff @bond:c2-cx harmonic 353.3 1.4836 # SOURCE4 26 0.0064
bond_coeff @bond:c2-cy harmonic 331.7 1.5046 # SOURCE4 9 0.0053
bond_coeff @bond:c2-f harmonic 368.7 1.3400 # SOURCE1 34 0.0000
bond_coeff @bond:c2-h4 harmonic 348.6 1.0840 # SOURCE3 40 0.0058
bond_coeff @bond:c2-h5 harmonic 338.0 1.0915 # SOURCE4 42 0.0017
bond_coeff @bond:c2-ha harmonic 344.3 1.0870 # SOURCE3 797 0.0046
bond_coeff @bond:c2-hc harmonic 344.3 1.0870 # SOURCE3 789 0.0046
bond_coeff @bond:c2-hx harmonic 350.1 1.0830 # SOURCE3 3 0.0008
bond_coeff @bond:c2-i harmonic 223.2 2.1530 # SOURCE3 2 0.0000
bond_coeff @bond:c2-n1 harmonic 546.0 1.3060 # SOURCE3 4 0.0161
bond_coeff @bond:c2-n2 harmonic 581.1 1.2880 # SOURCE1 103 0.0100
bond_coeff @bond:c2-n3 harmonic 486.3 1.3400 # SOUECE3 1
bond_coeff @bond:c2-n harmonic 390.5 1.4070 # SOURCE3 9 0.0124
bond_coeff @bond:c2-n4 harmonic 309.1 1.4820 # SOURCE3 5 0.0064
bond_coeff @bond:c2-na harmonic 411.1 1.3910 # SOURCE3 31 0.0289
bond_coeff @bond:c2-nc harmonic 533.0 1.3130 # SOURCE1 99 0.0095
bond_coeff @bond:c2-nd harmonic 533.0 1.3130 # SOURCE1 99 same_as_c2-nc
bond_coeff @bond:c2-ne harmonic 597.7 1.2800 # SOURCE3 37 0.0110
bond_coeff @bond:c2-nf harmonic 597.7 1.2800 # SOURCE3 37 same_as_c2-ne
bond_coeff @bond:c2-nh harmonic 462.6 1.3550 # SOURCE3 38 0.0413
bond_coeff @bond:c2-no harmonic 345.6 1.4457 # SOURCE4 7 0.0087
bond_coeff @bond:c2-o harmonic 623.6 1.2244 # SOURCE4 15 0.0036
bond_coeff @bond:c2-oh harmonic 425.4 1.3330 # SOURCE1 53 0.0000
bond_coeff @bond:c2-os harmonic 392.6 1.3570 # SOURCE1 315 0.0097
bond_coeff @bond:c2-p2 harmonic 375.9 1.6700 # SOURCE3 62 0.0147
bond_coeff @bond:c2-p3 harmonic 246.6 1.8340 # SOURCE3 5 0.0042
bond_coeff @bond:c2-p4 harmonic 254.0 1.8220 # SOUECE3 1
bond_coeff @bond:c2-p5 harmonic 228.2 1.8658 # SOURCE4 5 0.0025
bond_coeff @bond:c2-pe harmonic 355.3 1.6910 # SOURCE3 52 0.0542
bond_coeff @bond:c2-pf harmonic 355.3 1.6910 # SOURCE3 52 same_as_c2-pe
bond_coeff @bond:c2-s2 harmonic 393.1 1.6100 # SOURCE2 1 0.0000
bond_coeff @bond:c2-s harmonic 281.5 1.7340 # SOURCE3 4 0.0034
bond_coeff @bond:c2-s4 harmonic 263.2 1.7600 # SOUECE3 1
bond_coeff @bond:c2-s6 harmonic 263.2 1.7600 # SOUECE3 1
bond_coeff @bond:c2-sh harmonic 252.0 1.7771 # SOURCE4 5 0.0037
bond_coeff @bond:c2-ss harmonic 280.0 1.7360 # SOURCE1 209 0.0155
bond_coeff @bond:c3-c3 harmonic 303.1 1.5350 # SOURCE1 14664 0.0048
bond_coeff @bond:c3-ca harmonic 323.5 1.5130 # SOURCE1 1813 0.0000
bond_coeff @bond:c3-cc harmonic 337.3 1.4990 # SOURCE3 50 0.0096
bond_coeff @bond:c3-cd harmonic 337.3 1.4990 # SOURCE3 50 0.0096
bond_coeff @bond:c3-ce harmonic 331.3 1.5050 # SOURCE3 9 0.0024
bond_coeff @bond:c3-cf harmonic 331.3 1.5050 # SOURCE3 9 same_as_c3-ce
bond_coeff @bond:c3-cl harmonic 279.0 1.7860 # SOURCE1 267 0.0194
bond_coeff @bond:c3-cu harmonic 359.4 1.4780 # SOURCE1 7 0.0000
bond_coeff @bond:c3-cv harmonic 347.6 1.4890 # SOURCE1 11 0.0000
bond_coeff @bond:c3-cx harmonic 322.5 1.5140 # SOURCE1 712 0.0045
bond_coeff @bond:c3-cy harmonic 308.5 1.5290 # SOURCE1 376 0.0000
bond_coeff @bond:c3-f harmonic 363.8 1.3440 # SOURCE1 617 0.0281
bond_coeff @bond:c3-h1 harmonic 335.9 1.0930 # SOURCE3 2175 0.0082
bond_coeff @bond:c3-h2 harmonic 326.4 1.1000 # SOURCE3 66 0.0280
bond_coeff @bond:c3-h3 harmonic 333.4 1.0948 # SOURCE4 25 0.0026
bond_coeff @bond:c3-hc harmonic 337.3 1.0920 # SOURCE3 2815 0.0059
bond_coeff @bond:c3-hx harmonic 338.7 1.0910 # SOURCE3 146 0.0066
bond_coeff @bond:c3-i harmonic 219.1 2.1620 # SOURCE1 15 0.0000
bond_coeff @bond:c3-n1 harmonic 325.1 1.4700 # SOURCE3 0
bond_coeff @bond:c3-n2 harmonic 313.8 1.4770 # SOURCE1 129 0.0138
bond_coeff @bond:c3-n harmonic 330.6 1.4600 # SOURCE1 187 0.0079
bond_coeff @bond:c3-n3 harmonic 320.6 1.4700 # SOURCE1 1678 0.0017
bond_coeff @bond:c3-n4 harmonic 293.6 1.4990 # SOURCE1 1370 0.0000
bond_coeff @bond:c3-na harmonic 334.7 1.4560 # SOURCE3 23 0.0119
bond_coeff @bond:c3-nc harmonic 334.7 1.4560 # SOURCE3 9 0.0109
bond_coeff @bond:c3-nd harmonic 334.7 1.4560 # SOURCE3 9 same_as_c3-nc
bond_coeff @bond:c3-nh harmonic 332.7 1.4580 # SOURCE3 27 0.0085
bond_coeff @bond:c3-no harmonic 265.4 1.5330 # SOURCE1 83 0.0212
bond_coeff @bond:c3-o harmonic 449.9 1.3165 # SOURCE4 8 0.0193
bond_coeff @bond:c3-oh harmonic 314.1 1.4260 # SOURCE1 914 0.0129
bond_coeff @bond:c3-os harmonic 301.5 1.4390 # SOURCE1 3123 0.0126
bond_coeff @bond:c3-p2 harmonic 234.3 1.8550 # SOURCE3 9 0.0125
bond_coeff @bond:c3-p3 harmonic 240.6 1.8440 # SOURCE3 109 0.0107
bond_coeff @bond:c3-p4 harmonic 247.2 1.8330 # SOURCE3 29 0.0138
bond_coeff @bond:c3-p5 harmonic 259.7 1.8130 # SOURCE1 84 0.0000
bond_coeff @bond:c3-px harmonic 252.7 1.8240 # SOURCE3 28 0.0098
bond_coeff @bond:c3-py harmonic 259.7 1.8130 # SOURCE3 13 0.0163
bond_coeff @bond:c3-s harmonic 212.9 1.8450 # SOURCE3 4 0.0185
bond_coeff @bond:c3-s4 harmonic 233.8 1.8070 # SOURCE1 139 0.0023
bond_coeff @bond:c3-s6 harmonic 254.0 1.7740 # SOURCE1 118 0.0103
bond_coeff @bond:c3-sh harmonic 225.3 1.8220 # SOURCE3 12 0.0051
bond_coeff @bond:c3-ss harmonic 225.8 1.8210 # SOURCE1 358 0.0075
bond_coeff @bond:c3-sx harmonic 232.6 1.8090 # SOURCE3 30 0.0067
bond_coeff @bond:c3-sy harmonic 248.9 1.7820 # SOURCE3 31 0.0039
bond_coeff @bond:ca-ca harmonic 478.4 1.3870 # SOURCE1 6228 0.0147
bond_coeff @bond:ca-cc harmonic 411.7 1.4340 # SOURCE1 80 0.0000
bond_coeff @bond:ca-cd harmonic 411.7 1.4340 # SOURCE1 80 0.0000
bond_coeff @bond:ca-ce harmonic 366.0 1.4720 # SOURCE1 71 0.0030
bond_coeff @bond:ca-cf harmonic 366.0 1.4720 # SOURCE1 71 0.0030
bond_coeff @bond:ca-cg harmonic 406.6 1.4380 # SOURCE1 71 0.0045
bond_coeff @bond:ca-ch harmonic 406.6 1.4380 # SOURCE1 71 0.0045
bond_coeff @bond:ca-cl harmonic 322.8 1.7290 # SOURCE1 704 0.0095
bond_coeff @bond:ca-cp harmonic 461.8 1.3980 # CORR 28
bond_coeff @bond:ca-cq harmonic 461.8 1.3980 # CORR 28
bond_coeff @bond:ca-cx harmonic 350.8 1.4860 # SOURCE1 98 0.0118
bond_coeff @bond:ca-cy harmonic 323.0 1.5135 # SOURCE4 8 0.0043
bond_coeff @bond:ca-f harmonic 363.8 1.3440 # SOURCE1 205 0.0089
bond_coeff @bond:ca-h4 harmonic 342.9 1.0880 # SOURCE3 57 0.0026
bond_coeff @bond:ca-h5 harmonic 347.2 1.0850 # SOURCE3 15 0.0048
bond_coeff @bond:ca-ha harmonic 344.3 1.0870 # SOURCE3 1496 0.0045
bond_coeff @bond:ca-i harmonic 252.4 2.0950 # SOURCE1 51 0.0000
bond_coeff @bond:ca-n1 harmonic 398.1 1.4000 # SOURCE3 0
bond_coeff @bond:ca-n2 harmonic 551.6 1.3030 # SOURCE4 7 0.0058
bond_coeff @bond:ca-n harmonic 372.3 1.4220 # SOURCE3 9 0.0098
bond_coeff @bond:ca-n4 harmonic 325.6 1.4650 # SOURCE1 23 0.0000
bond_coeff @bond:ca-na harmonic 470.3 1.3500 # SOURCE1 150 0.0103
bond_coeff @bond:ca-nb harmonic 483.1 1.3420 # SOURCE3 104 0.0076
bond_coeff @bond:ca-nc harmonic 492.9 1.3360 # SOURCE1 1826 0.0020
bond_coeff @bond:ca-nd harmonic 492.9 1.3360 # SOURCE1 1826 0.0020
bond_coeff @bond:ca-ne harmonic 361.8 1.4310 # SOURCE1 52 0.0000
bond_coeff @bond:ca-nf harmonic 361.8 1.4310 # SOURCE1 52 0.0000
bond_coeff @bond:ca-nh harmonic 449.0 1.3640 # SOURCE1 137 0.0085
bond_coeff @bond:ca-no harmonic 322.6 1.4680 # SOURCE1 556 0.0000
bond_coeff @bond:ca-o harmonic 610.0 1.2304 # SOURCE4 5 0.0026
bond_coeff @bond:ca-oh harmonic 386.1 1.3620 # SOURCE1 551 0.0000
bond_coeff @bond:ca-os harmonic 372.4 1.3730 # SOURCE1 1092 0.0071
bond_coeff @bond:ca-p2 harmonic 243.0 1.8400 # SOUECE3 1
bond_coeff @bond:ca-p3 harmonic 252.7 1.8240 # SOURCE1 145 0.0187
bond_coeff @bond:ca-p4 harmonic 264.3 1.8060 # SOUECE3 1
bond_coeff @bond:ca-p5 harmonic 271.6 1.7950 # SOURCE1 571 0.0028
bond_coeff @bond:ca-pe harmonic 249.6 1.8290 # SOURCE3 10 0.0042
bond_coeff @bond:ca-pf harmonic 249.6 1.8290 # SOURCE3 10 0.0042
bond_coeff @bond:ca-px harmonic 252.1 1.8250 # SOURCE3 5 0.0168
bond_coeff @bond:ca-py harmonic 268.3 1.7999 # SOURCE4 5 0.0072
bond_coeff @bond:ca-s harmonic 277.9 1.7390 # SOURCE3 2 0.0000
bond_coeff @bond:ca-s4 harmonic 245.2 1.7880 # SOURCE1 51 0.0048
bond_coeff @bond:ca-s6 harmonic 263.9 1.7590 # SOURCE1 229 0.0036
bond_coeff @bond:ca-sh harmonic 251.3 1.7783 # SOURCE4 12 0.0041
bond_coeff @bond:ca-ss harmonic 256.6 1.7700 # SOURCE1 297 0.0041
bond_coeff @bond:ca-sx harmonic 223.5 1.8252 # SOURCE4 24 0.0032
bond_coeff @bond:ca-sy harmonic 247.7 1.7840 # SOURCE3 13 0.0094
bond_coeff @bond:c-c1 harmonic 379.8 1.4600 # SOUECE3 1
bond_coeff @bond:c-c2 harmonic 449.9 1.4060 # SOURCE3 2 0.0370
bond_coeff @bond:c-c harmonic 290.1 1.5500 # SOURCE1 31 0.0100
bond_coeff @bond:c-c3 harmonic 328.3 1.5080 # SOURCE1 2949 0.0060
bond_coeff @bond:c-ca harmonic 349.7 1.4870 # SOURCE1 480 0.0055
bond_coeff @bond:c-cc harmonic 377.4 1.4620 # SOURCE3 132 0.0210
bond_coeff @bond:cc-cc harmonic 418.3 1.4290 # SOURCE1 740 0.0069
bond_coeff @bond:cc-cd harmonic 504.0 1.3710 # SOURCE3 523 0.0217
bond_coeff @bond:cc-ce harmonic 387.9 1.4532 # CORR 249
bond_coeff @bond:cc-cf harmonic 511.3 1.3666 # CORR 70
bond_coeff @bond:cc-cg harmonic 420.9 1.4270 # SOURCE1 560 0.0000
bond_coeff @bond:cc-ch harmonic 420.9 1.4270 # SOURCE1 560 0.0000
bond_coeff @bond:cc-cl harmonic 317.1 1.7359 # CORR 66
bond_coeff @bond:cc-cx harmonic 366.6 1.4715 # CORR 24
bond_coeff @bond:c-cd harmonic 377.4 1.4620 # SOURCE3 132 0.0210
bond_coeff @bond:c-ce harmonic 363.8 1.4740 # SOURCE1 601 0.0105
bond_coeff @bond:c-cf harmonic 363.8 1.4740 # SOURCE1 601 0.0105
bond_coeff @bond:cc-f harmonic 368.6 1.3401 # SOURCE4 24 0.0034
bond_coeff @bond:c-cg harmonic 389.3 1.4520 # SOURCE3 2 0.0000
bond_coeff @bond:c-ch harmonic 389.3 1.4520 # SOURCE3 2 same_as_c-cg
bond_coeff @bond:cc-h4 harmonic 350.1 1.0830 # SOURCE3 599 0.0037
bond_coeff @bond:cc-h5 harmonic 356.0 1.0790 # SOURCE3 40 0.0051
bond_coeff @bond:cc-ha harmonic 347.2 1.0850 # SOURCE3 740 0.0039
bond_coeff @bond:c-cl harmonic 293.5 1.7660 # SOURCE3 6 0.0250
bond_coeff @bond:cc-n2 harmonic 573.8 1.2917 # CORR 81
bond_coeff @bond:cc-n harmonic 426.0 1.3800 # SOURCE3 56 0.0109
bond_coeff @bond:cc-n4 harmonic 299.0 1.4930 # SOURCE4 7 0.0148
bond_coeff @bond:cc-na harmonic 438.8 1.3710 # SOURCE3 440 0.0144
bond_coeff @bond:cc-nc harmonic 431.6 1.3760 # SOURCE1 88 0.0000
bond_coeff @bond:cc-nd harmonic 494.6 1.3350 # SOURCE3 203 0.0239
bond_coeff @bond:cc-ne harmonic 427.4 1.3790 # SOURCE4 30 0.0126
bond_coeff @bond:cc-nf harmonic 565.4 1.2960 # CORR 23
bond_coeff @bond:cc-nh harmonic 449.0 1.3640 # SOURCE3 6 0.0040
bond_coeff @bond:cc-no harmonic 367.4 1.4262 # SOURCE4 133 0.0061
bond_coeff @bond:cc-oh harmonic 408.5 1.3451 # CORR 121
bond_coeff @bond:cc-os harmonic 376.1 1.3700 # SOURCE3 86 0.0192
bond_coeff @bond:cc-pd harmonic 318.2 1.7330 # SOURCE3 84 0.0161
bond_coeff @bond:cc-sh harmonic 257.9 1.7681 # SOURCE4 8 0.0027
bond_coeff @bond:cc-ss harmonic 279.3 1.7370 # SOURCE3 52 0.0194
bond_coeff @bond:cc-sx harmonic 231.3 1.8113 # SOURCE4 16 0.0050
bond_coeff @bond:cc-sy harmonic 248.1 1.7834 # CORR 55
bond_coeff @bond:c-cu harmonic 441.4 1.4120 # SOURCE2 1 0.0000
bond_coeff @bond:c-cx harmonic 350.8 1.4860 # SOURCE1 105 0.0000
bond_coeff @bond:c-cy harmonic 308.5 1.5290 # SOURCE1 18 0.0000
bond_coeff @bond:cd-cd harmonic 418.3 1.4290 # SOURCE1 740 0.0069
bond_coeff @bond:cd-ce harmonic 511.3 1.3666 # CORR 70
bond_coeff @bond:cd-cf harmonic 387.9 1.4532 # CORR 249
bond_coeff @bond:cd-cg harmonic 420.9 1.4270 # SOURCE1 560 0.0000
bond_coeff @bond:cd-ch harmonic 420.9 1.4270 # SOURCE1 560 0.0000
bond_coeff @bond:cd-cl harmonic 317.1 1.7359 # CORR 66
bond_coeff @bond:cd-cx harmonic 366.6 1.4715 # CORR 24
bond_coeff @bond:cd-cy harmonic 330.9 1.5054 # SOURCE4 10 0.0008
bond_coeff @bond:cd-h4 harmonic 350.1 1.0830 # SOURCE3 599 0.0037
bond_coeff @bond:cd-h5 harmonic 356.0 1.0790 # SOURCE3 40 0.0051
bond_coeff @bond:cd-ha harmonic 347.2 1.0850 # SOURCE3 740 0.0039
bond_coeff @bond:cd-n2 harmonic 573.8 1.2917 # CORR 81
bond_coeff @bond:cd-n harmonic 426.0 1.3800 # SOURCE3 56 0.0109
bond_coeff @bond:cd-na harmonic 438.8 1.3710 # SOURCE3 440 0.0144
bond_coeff @bond:cd-nc harmonic 494.6 1.3350 # SOURCE3 203 0.0239
bond_coeff @bond:cd-nd harmonic 431.6 1.3760 # SOURCE1 88 0.0000
bond_coeff @bond:cd-ne harmonic 565.4 1.2960 # CORR 23
bond_coeff @bond:cd-nh harmonic 449.0 1.3640 # SOURCE3 6 0.0040
bond_coeff @bond:cd-oh harmonic 408.5 1.3451 # CORR 121
bond_coeff @bond:cd-os harmonic 376.1 1.3700 # SOURCE3 86 0.0192
bond_coeff @bond:cd-pc harmonic 318.2 1.7330 # SOURCE3 84 same_as_cc-pd
bond_coeff @bond:cd-ss harmonic 279.3 1.7370 # SOURCE3 52 0.0194
bond_coeff @bond:cd-sy harmonic 248.1 1.7834 # CORR 55
bond_coeff @bond:ce-ce harmonic 390.5 1.4510 # SOURCE1 66 0.0060
bond_coeff @bond:ce-cf harmonic 562.4 1.3380 # SOURCE1 543 0.0045
bond_coeff @bond:ce-cg harmonic 415.6 1.4310 # SOURCE1 22 0.0000
bond_coeff @bond:ce-ch harmonic 415.6 1.4310 # SOURCE1 22 0.0000
bond_coeff @bond:ce-cl harmonic 292.6 1.7671 # SOURCE4 24 0.0062
bond_coeff @bond:ce-cx harmonic 337.0 1.4993 # SOURCE4 5 0.0066
bond_coeff @bond:ce-cy harmonic 323.0 1.5135 # SOURCE4 17 0.0024
bond_coeff @bond:ce-h4 harmonic 337.4 1.0919 # CORR 144
bond_coeff @bond:ce-ha harmonic 341.5 1.0890 # SOURCE3 55 0.0056
bond_coeff @bond:ce-n1 harmonic 536.1 1.3113 # CORR 13
bond_coeff @bond:ce-n2 harmonic 599.8 1.2790 # SOURCE1 75 0.0000
bond_coeff @bond:ce-n harmonic 368.9 1.4249 # CORR 136
bond_coeff @bond:ce-na harmonic 373.8 1.4207 # SOURCE4 5 0.0051
bond_coeff @bond:ce-ne harmonic 381.8 1.4140 # SOURCE3 7 0.0103
bond_coeff @bond:ce-nf harmonic 574.0 1.2916 # CORR 42
bond_coeff @bond:ce-nh harmonic 412.3 1.3901 # CORR 168
bond_coeff @bond:ce-oh harmonic 402.9 1.3493 # CORR 37
bond_coeff @bond:ce-os harmonic 372.8 1.3727 # CORR 45
bond_coeff @bond:ce-p2 harmonic 259.1 1.8140 # SOUECE3 1
bond_coeff @bond:ce-pe harmonic 256.5 1.8180 # SOURCE3 8 0.0108
bond_coeff @bond:ce-px harmonic 254.6 1.8210 # SOURCE3 6 0.0046
bond_coeff @bond:ce-py harmonic 272.3 1.7940 # SOURCE3 5 0.0045
bond_coeff @bond:ce-s harmonic 324.5 1.6800 # SOUECE3 1
bond_coeff @bond:ce-ss harmonic 243.6 1.7906 # SOURCE4 10 0.0064
bond_coeff @bond:ce-sx harmonic 239.7 1.7970 # SOURCE3 5 0.0082
bond_coeff @bond:ce-sy harmonic 248.9 1.7820 # SOURCE3 5 0.0114
bond_coeff @bond:c-f harmonic 387.9 1.3250 # SOURCE2 6 0.0147
bond_coeff @bond:cf-cf harmonic 390.5 1.4510 # SOURCE1 66 0.0060
bond_coeff @bond:cf-cg harmonic 415.6 1.4310 # SOURCE1 22 0.0000
bond_coeff @bond:cf-ch harmonic 415.6 1.4310 # SOURCE1 22 0.0000
bond_coeff @bond:cf-h4 harmonic 337.4 1.0919 # CORR 144
bond_coeff @bond:cf-ha harmonic 341.5 1.0890 # SOURCE3 55 0.0056
bond_coeff @bond:cf-n1 harmonic 536.1 1.3113 # CORR 13
bond_coeff @bond:cf-n2 harmonic 599.8 1.2790 # SOURCE1 75 same_as_ce-n2
bond_coeff @bond:cf-n harmonic 368.9 1.4249 # CORR 136
bond_coeff @bond:cf-ne harmonic 574.0 1.2916 # CORR 42
bond_coeff @bond:cf-nf harmonic 381.8 1.4140 # SOURCE3 7 same_as_ce-ne
bond_coeff @bond:cf-nh harmonic 412.3 1.3901 # CORR 168
bond_coeff @bond:cf-oh harmonic 402.9 1.3493 # CORR 37
bond_coeff @bond:cf-os harmonic 372.8 1.3727 # CORR 45
bond_coeff @bond:cf-p2 harmonic 259.1 1.8140 # SOUECE3 1 same_as_ce-p2
bond_coeff @bond:cf-pf harmonic 256.5 1.8180 # SOURCE3 8 same_as_ce-pe
bond_coeff @bond:cf-px harmonic 254.6 1.8210 # SOURCE3 6 same_as_ce-px
bond_coeff @bond:cf-py harmonic 272.3 1.7940 # SOURCE3 5 same_as_ce-py
bond_coeff @bond:cf-s harmonic 324.5 1.6800 # SOUECE3 1 same_as_ce-s
bond_coeff @bond:cf-sx harmonic 239.7 1.7970 # SOURCE3 5 same_as_ce-sx
bond_coeff @bond:cf-sy harmonic 248.9 1.7820 # SOURCE3 5 same_as_ce-sy
bond_coeff @bond:cg-cg harmonic 494.2 1.3770 # SOURCE1 42 0.0000
bond_coeff @bond:cg-ch harmonic 949.5 1.1910 # SOURCE1 80 0.0015
bond_coeff @bond:cg-n1 harmonic 994.7 1.1430 # SOURCE1 316 0.0018
bond_coeff @bond:cg-ne harmonic 509.5 1.3262 # SOURCE4 17 0.0009
bond_coeff @bond:cg-pe harmonic 429.8 1.6210 # SOURCE3 11 0.2008
bond_coeff @bond:c-h4 harmonic 310.5 1.1123 # SOURCE4 125 0.0023
bond_coeff @bond:c-h5 harmonic 319.4 1.1053 # SOURCE4 42 0.0028
bond_coeff @bond:c-ha harmonic 325.1 1.1010 # SOURCE3 53 0.0102
bond_coeff @bond:ch-ch harmonic 494.2 1.3770 # SOURCE1 42 0.0000
bond_coeff @bond:ch-n1 harmonic 994.7 1.1430 # SOURCE1 316 0.0018
bond_coeff @bond:ch-nf harmonic 509.5 1.3262 # SOURCE4 17 same_as_cg-ne
bond_coeff @bond:ch-pf harmonic 429.8 1.6210 # SOURCE3 11 same_as_cg-pe
bond_coeff @bond:c-i harmonic 198.9 2.2090 # SOURCE3 4 0.0365
bond_coeff @bond:cl-cl harmonic 143.3 2.2670 # SOURCE1 2 0.0395
bond_coeff @bond:cl-cx harmonic 301.8 1.7550 # SOURCE1 64 0.0000
bond_coeff @bond:cl-cy harmonic 292.0 1.7680 # SOURCE2 2 0.0070
bond_coeff @bond:cl-f harmonic 298.6 1.6480 # SOURCE2 2 0.0500
bond_coeff @bond:cl-i harmonic 163.5 2.5500 # SOURCE1 6 0.0893
bond_coeff @bond:cl-n1 harmonic 431.6 1.6300 # SOUECE3 1
bond_coeff @bond:cl-n2 harmonic 263.4 1.8190 # SOURCE3 6 0.1020
bond_coeff @bond:cl-n3 harmonic 290.4 1.7800 # SOURCE4 5 0.0021
bond_coeff @bond:cl-n harmonic 344.2 1.7140 # SOURCE4 5 0.0005
bond_coeff @bond:cl-n4 harmonic 311.1 1.7530 # SOURCE3 4 0.0098
bond_coeff @bond:cl-na harmonic 253.2 1.8350 # SOURCE3 7 0.2083
bond_coeff @bond:cl-nh harmonic 303.2 1.7630 # SOURCE3 1 0.0000
bond_coeff @bond:cl-no harmonic 250.1 1.8400 # SOURCE2 1 0.0000
bond_coeff @bond:cl-o harmonic 557.6 1.4830 # SOURCE3 4 0.0000
bond_coeff @bond:cl-oh harmonic 309.7 1.6900 # SOURCE2 1 0.0000
bond_coeff @bond:cl-os harmonic 278.8 1.7300 # SOURCE3 4 0.0000
bond_coeff @bond:cl-p2 harmonic 217.5 2.0700 # SOURCE3 6 0.0108
bond_coeff @bond:cl-p3 harmonic 249.4 2.0080 # SOURCE1 111 0.0000
bond_coeff @bond:cl-p4 harmonic 249.4 2.0080 # SOURCE1 111 0.0000
bond_coeff @bond:cl-p5 harmonic 249.4 2.0080 # SOURCE1 111 0.0000
bond_coeff @bond:cl-pb harmonic 255.6 1.9970 # SOURCE1 46 0.0000
bond_coeff @bond:cl-s harmonic 208.7 2.0720 # SOURCE1 6 0.0000
bond_coeff @bond:cl-s2 harmonic 172.7 2.1610 # SOURCE2 1 0.0000
bond_coeff @bond:cl-s4 harmonic 208.7 2.0720 # SOURCE1 6 0.0000
bond_coeff @bond:cl-s6 harmonic 208.7 2.0720 # SOURCE1 6 0.0000
bond_coeff @bond:cl-sh harmonic 208.7 2.0720 # SOURCE1 6 0.0000
bond_coeff @bond:cl-ss harmonic 208.7 2.0720 # SOURCE1 6 0.0000
bond_coeff @bond:cl-sx harmonic 208.7 2.0720 # SOURCE1 6 0.0000
bond_coeff @bond:cl-sy harmonic 208.7 2.0720 # SOURCE1 6 0.0000
bond_coeff @bond:c-n2 harmonic 374.6 1.4200 # SOUECE3 1
bond_coeff @bond:c-n4 harmonic 255.5 1.5460 # SOURCE3 4 0.0388
bond_coeff @bond:c-n harmonic 478.2 1.3450 # SOURCE1 1235 0.0215
bond_coeff @bond:c-nc harmonic 412.1 1.3906 # CORR 124
bond_coeff @bond:c-nd harmonic 412.1 1.3906 # CORR 124
bond_coeff @bond:c-ne harmonic 408.2 1.3932 # CORR 52
bond_coeff @bond:c-nf harmonic 408.2 1.3932 # CORR 52
bond_coeff @bond:c-no harmonic 260.1 1.5400 # SOUECE3 1
bond_coeff @bond:c-o harmonic 648.0 1.2140 # SOURCE1 3682 0.0165
bond_coeff @bond:c-oh harmonic 466.4 1.3060 # SOURCE1 271 0.0041
bond_coeff @bond:c-os harmonic 411.3 1.3430 # SOURCE1 1044 0.0171
bond_coeff @bond:c-p2 harmonic 210.3 1.9000 # SOUECE3 1
bond_coeff @bond:c-p3 harmonic 219.0 1.8830 # SOURCE3 6 0.0129
bond_coeff @bond:c-p4 harmonic 220.6 1.8800 # SOUECE3 1
bond_coeff @bond:c-p5 harmonic 219.8 1.8815 # SOURCE4 11 0.0078
bond_coeff @bond:cp-cp harmonic 346.5 1.4900 # SOURCE1 242 0.0010
bond_coeff @bond:cp-cq harmonic 419.3 1.4282 # SOURCE4 7 0.0034
bond_coeff @bond:c-pe harmonic 204.9 1.9110 # SOURCE3 3 0.0025
bond_coeff @bond:c-pf harmonic 204.9 1.9110 # SOURCE3 3 same_as_c-pe
bond_coeff @bond:cp-na harmonic 420.5 1.3840 # SOURCE4 7 0.0181
bond_coeff @bond:cp-nb harmonic 486.7 1.3398 # SOURCE4 70 0.0062
bond_coeff @bond:c-px harmonic 208.3 1.9040 # SOURCE3 1 0.0000
bond_coeff @bond:c-py harmonic 227.6 1.8670 # SOURCE3 6 0.0199
bond_coeff @bond:cq-cq harmonic 346.5 1.4900 # SOURCE1 242 0.0010
bond_coeff @bond:c-s harmonic 328.9 1.6750 # SOURCE1 401 0.0128
bond_coeff @bond:c-s4 harmonic 200.4 1.8700 # SOUECE3 1
bond_coeff @bond:c-s6 harmonic 200.4 1.8700 # SOUECE3 1
bond_coeff @bond:c-sh harmonic 249.6 1.7810 # SOURCE3 6 0.0171
bond_coeff @bond:c-ss harmonic 261.9 1.7620 # SOURCE1 20 0.0000
bond_coeff @bond:c-sx harmonic 193.3 1.8850 # SOURCE3 5 0.0088
bond_coeff @bond:c-sy harmonic 202.8 1.8650 # SOURCE3 5 0.0085
bond_coeff @bond:cu-cu harmonic 653.7 1.2940 # SOURCE1 10 0.0000
bond_coeff @bond:cu-cx harmonic 327.3 1.5090 # SOURCE1 20 0.0000
bond_coeff @bond:cu-ha harmonic 353.0 1.0810 # SOURCE2 3 0.0111
bond_coeff @bond:cv-cv harmonic 568.1 1.3350 # SOURCE1 25 0.0000
bond_coeff @bond:cv-cy harmonic 323.5 1.5130 # SOURCE1 50 0.0000
bond_coeff @bond:cv-ha harmonic 344.3 1.0870 # SOURCE3 2 0.0000
bond_coeff @bond:cx-cv harmonic 328.3 1.5080 # SOURCE1 2536 as
bond_coeff @bond:cx-cx harmonic 337.3 1.4990 # SOURCE1 1204 0.0183
bond_coeff @bond:cx-cy harmonic 321.5 1.5150 # SOURCE3 2 0.0000
bond_coeff @bond:cx-f harmonic 347.2 1.3580 # SOURCE2 3 0.0050
bond_coeff @bond:cx-h1 harmonic 344.3 1.0870 # SOURCE3 10 0.0017
bond_coeff @bond:cx-h2 harmonic 350.1 1.0830 # SOURCE3 2 0.0000
bond_coeff @bond:cx-hc harmonic 345.8 1.0860 # SOURCE3 44 0.0011
bond_coeff @bond:cx-hx harmonic 347.2 1.0850 # SOURCE4 5 0.0002
bond_coeff @bond:cx-n2 harmonic 309.1 1.4820 # SOURCE3 2 0.0000
bond_coeff @bond:cx-n3 harmonic 318.7 1.4720 # SOURCE1 134 0.0000
bond_coeff @bond:cx-n harmonic 350.6 1.4411 # SOURCE4 11 0.0092
bond_coeff @bond:cx-na harmonic 329.0 1.4616 # SOURCE4 11 0.0016
bond_coeff @bond:cx-nh harmonic 336.7 1.4541 # SOURCE4 83 0.0076
bond_coeff @bond:cx-oh harmonic 387.4 1.3610 # SOURCE3 3 0.0018
bond_coeff @bond:cx-os harmonic 320.1 1.4200 # SOURCE3 7 0.0222
bond_coeff @bond:cx-p3 harmonic 227.6 1.8670 # SOURCE2 1 0.0000
bond_coeff @bond:cx-s4 harmonic 225.3 1.8220 # SOURCE2 1 0.0000
bond_coeff @bond:cx-s6 harmonic 283.7 1.7310 # SOURCE2 1 0.0000
bond_coeff @bond:cx-ss harmonic 229.2 1.8150 # SOURCE2 1 0.0000
bond_coeff @bond:cy-cy harmonic 286.8 1.5540 # SOURCE1 742 0.0041
bond_coeff @bond:cy-f harmonic 355.5 1.3509 # SOURCE4 8 0.0047
bond_coeff @bond:cy-h1 harmonic 330.4 1.0970 # SOURCE3 17 0.0058
bond_coeff @bond:cy-h2 harmonic 335.8 1.0931 # SOURCE4 80 0.0019
bond_coeff @bond:cy-hc harmonic 334.5 1.0940 # SOURCE3 63 0.0014
bond_coeff @bond:cy-n harmonic 321.3 1.4693 # SOURCE4 250 0.0102
bond_coeff @bond:cy-n3 harmonic 307.2 1.4840 # SOURCE1 21 0.0000
bond_coeff @bond:cy-oh harmonic 325.2 1.4150 # SOURCE3 2 0.0000
bond_coeff @bond:cy-os harmonic 308.6 1.4316 # SOURCE4 23 0.0136
bond_coeff @bond:cy-s6 harmonic 209.6 1.8514 # SOURCE4 9 0.0166
bond_coeff @bond:cy-ss harmonic 211.3 1.8481 # SOURCE4 78 0.0080
bond_coeff @bond:cz-nh harmonic 487.8 1.3391 # SOURCE4 32 0.0045
bond_coeff @bond:f-n1 harmonic 375.7 1.4100 # SOUECE3 1
bond_coeff @bond:f-n2 harmonic 337.5 1.4440 # SOURCE3 5 0.0377
bond_coeff @bond:f-n3 harmonic 380.6 1.4060 # SOURCE1 9 0.0000
bond_coeff @bond:f-n harmonic 391.7 1.3970 # SOURCE3 3 0.0112
bond_coeff @bond:f-n4 harmonic 526.8 1.3080 # SOURCE3 2 0.0000
bond_coeff @bond:f-na harmonic 374.5 1.4110 # SOURCE3 7 0.0611
bond_coeff @bond:f-nh harmonic 357.1 1.4260 # SOURCE3 3 0.0085
bond_coeff @bond:f-no harmonic 314.4 1.4670 # SOURCE2 1 0.0000
bond_coeff @bond:f-o harmonic 442.2 1.3300 # SOUECE3 1
bond_coeff @bond:f-oh harmonic 305.4 1.4440 # SOURCE3 1 0.0000
bond_coeff @bond:f-os harmonic 326.2 1.4230 # SOURCE3 2 0.0000
bond_coeff @bond:f-p2 harmonic 287.3 1.5360 # SOURCE3 7 0.2054
bond_coeff @bond:f-p3 harmonic 254.5 1.5780 # SOURCE2 8 0.0103
bond_coeff @bond:f-p4 harmonic 246.0 1.5900 # SOUECE3 1
bond_coeff @bond:f-p5 harmonic 253.8 1.5790 # SOURCE1 72 0.0000
bond_coeff @bond:f-s2 harmonic 244.4 1.6430 # SOURCE2 1 0.0000
bond_coeff @bond:f-s harmonic 233.3 1.6600 # SOUECE3 1
bond_coeff @bond:f-s4 harmonic 282.4 1.5910 # SOURCE2 4 0.0065
bond_coeff @bond:f-s6 harmonic 312.1 1.5560 # SOURCE2 5 0.0220
bond_coeff @bond:f-sh harmonic 240.4 1.6490 # SOURCE3 1 0.0000
bond_coeff @bond:f-ss harmonic 250.5 1.6340 # SOURCE3 3 0.0156
bond_coeff @bond:hn-n1 harmonic 455.1 0.9860 # SOURCE2 1 0.0000
bond_coeff @bond:hn-n2 harmonic 375.5 1.0290 # SOURCE3 108 0.0096
bond_coeff @bond:hn-n3 harmonic 394.1 1.0180 # SOURCE3 157 0.0086
bond_coeff @bond:hn-n harmonic 410.2 1.0090 # SOURCE3 149 0.0098
bond_coeff @bond:hn-n4 harmonic 369.0 1.0330 # SOURCE3 264 0.0082
bond_coeff @bond:hn-na harmonic 406.6 1.0110 # SOURCE3 46 0.0107
bond_coeff @bond:hn-nh harmonic 401.2 1.0140 # SOURCE3 209 0.0091
bond_coeff @bond:hn-no harmonic 385.6 1.0230 # SOURCE3 1 0.0000
bond_coeff @bond:ho-o harmonic 357.9 0.9810 # SOURCE3 1 0.0000
bond_coeff @bond:ho-oh harmonic 369.6 0.9740 # SOURCE3 367 0.0105
bond_coeff @bond:hp-p2 harmonic 385.1 1.3360 # SOURCE3 87 0.1706
bond_coeff @bond:hp-p3 harmonic 303.1 1.4090 # SOURCE3 101 0.0617
bond_coeff @bond:hp-p4 harmonic 368.7 1.3490 # SOURCE3 17 0.1577
bond_coeff @bond:hp-p5 harmonic 305.0 1.4070 # SOURCE3 7 0.0062
bond_coeff @bond:hs-s harmonic 286.4 1.3530 # SOURCE3 1 0.0000
bond_coeff @bond:hs-s4 harmonic 266.4 1.3750 # SOURCE3 5 0.0004
bond_coeff @bond:hs-s6 harmonic 280.8 1.3590 # SOURCE3 5 0.0015
bond_coeff @bond:hs-sh harmonic 302.2 1.3370 # SOURCE3 98 0.0486
bond_coeff @bond:i-i harmonic 109.2 2.9170 # SOURCE1 1 0.0000
bond_coeff @bond:i-n1 harmonic 302.1 2.0600 # SOUECE3 1
bond_coeff @bond:i-n2 harmonic 182.6 2.3040 # SOURCE3 6 0.1186
bond_coeff @bond:i-n harmonic 278.3 2.0980 # SOURCE3 5 0.0156
bond_coeff @bond:i-n3 harmonic 231.8 2.1850 # SOURCE3 3 0.0437
bond_coeff @bond:i-n4 harmonic 246.6 2.1550 # SOURCE3 3 0.0168
bond_coeff @bond:i-na harmonic 260.5 2.1290 # SOURCE3 8 0.1276
bond_coeff @bond:i-nh harmonic 249.2 2.1500 # SOURCE3 1 0.0000
bond_coeff @bond:i-no harmonic 211.0 2.2310 # SOURCE3 1 0.0000
bond_coeff @bond:i-o harmonic 323.8 1.9800 # SOUECE3 1
bond_coeff @bond:i-oh harmonic 247.9 2.1010 # SOURCE3 2 0.0000
bond_coeff @bond:i-os harmonic 233.6 2.1290 # SOURCE3 3 0.0146
bond_coeff @bond:i-p2 harmonic 108.2 2.6430 # SOURCE3 6 0.0297
bond_coeff @bond:i-p3 harmonic 123.6 2.5660 # SOURCE3 3 0.0016
bond_coeff @bond:i-p4 harmonic 183.0 2.3520 # SOURCE3 4 0.2600
bond_coeff @bond:i-p5 harmonic 117.3 2.5960 # SOURCE3 3 0.0143
bond_coeff @bond:i-s harmonic 175.1 2.4300 # SOUECE3 1
bond_coeff @bond:i-s4 harmonic 82.8 2.8700 # SOUECE3 1
bond_coeff @bond:i-s6 harmonic 82.8 2.8700 # SOURCE3 1 0.0000
bond_coeff @bond:i-sh harmonic 138.5 2.5600 # SOUECE3 1
bond_coeff @bond:i-ss harmonic 135.9 2.5710 # SOURCE3 3 0.0065
bond_coeff @bond:n1-n1 harmonic 1221.7 1.1240 # SOURCE1 19 0.0000
bond_coeff @bond:n1-n2 harmonic 857.4 1.2160 # SOURCE1 19 0.0000
bond_coeff @bond:n1-n3 harmonic 535.7 1.3500 # SOUECE3 1
bond_coeff @bond:n1-n4 harmonic 518.2 1.3600 # SOUECE3 1
bond_coeff @bond:n1-na harmonic 535.7 1.3500 # SOUECE3 1
bond_coeff @bond:n1-nc harmonic 857.4 1.2160 # SOURCE1 38 0.0000
bond_coeff @bond:n1-nd harmonic 857.4 1.2160 # SOURCE1 38 0.0000
bond_coeff @bond:n1-ne harmonic 751.9 1.2520 # SOURCE2 1 0.0000
bond_coeff @bond:n1-nf harmonic 751.9 1.2520 # SOURCE2 1 same_as_n1-ne
bond_coeff @bond:n1-nh harmonic 553.9 1.3400 # SOUECE3 1
bond_coeff @bond:n1-no harmonic 454.8 1.4000 # SOUECE3 1
bond_coeff @bond:n1-o harmonic 617.5 1.2770 # SOURCE3 5 0.0438
bond_coeff @bond:n1-oh harmonic 569.8 1.3000 # SOUECE3 1
bond_coeff @bond:n1-os harmonic 550.5 1.3100 # SOUECE3 1
bond_coeff @bond:n1-p2 harmonic 358.8 1.6780 # SOURCE3 2 0.0282
bond_coeff @bond:n1-p3 harmonic 376.7 1.6600 # SOUECE3 1
bond_coeff @bond:n1-p4 harmonic 353.0 1.6800 # SOURCE3 0
bond_coeff @bond:n1-p5 harmonic 482.7 1.5710 # SOURCE1 132 0.0000
bond_coeff @bond:n1-s2 harmonic 604.3 1.4490 # SOURCE2 2 0.0010
bond_coeff @bond:n1-s harmonic 328.7 1.6590 # SOURCE3 6 0.0789
bond_coeff @bond:n1-s4 harmonic 336.8 1.6500 # SOUECE3 1
bond_coeff @bond:n1-s6 harmonic 670.3 1.4160 # SOURCE2 2 0.0000
bond_coeff @bond:n1-sh harmonic 376.1 1.6100 # SOUECE3 1
bond_coeff @bond:n1-ss harmonic 376.1 1.6100 # SOUECE3 1
bond_coeff @bond:n2-n2 harmonic 702.7 1.2710 # SOURCE3 27 0.0347
bond_coeff @bond:n2-n3 harmonic 574.8 1.3290 # SOURCE2 1 0.0000
bond_coeff @bond:n2-n4 harmonic 200.8 1.6790 # SOURCE3 7 0.3138
bond_coeff @bond:n2-na harmonic 503.9 1.3685 # SOURCE4 18 0.0066
bond_coeff @bond:n2-nc harmonic 743.9 1.2550 # SOURCE1 13 0.0000
bond_coeff @bond:n2-nd harmonic 743.9 1.2550 # SOURCE1 13 same_as_n2_nc
bond_coeff @bond:n2-ne harmonic 685.5 1.2780 # SOURCE3 30 0.0302
bond_coeff @bond:n2-nf harmonic 685.5 1.2780 # SOURCE3 30 same_as_n2-ne
bond_coeff @bond:n2-nh harmonic 525.1 1.3560 # SOURCE3 22 0.0300
bond_coeff @bond:n2-no harmonic 231.9 1.6260 # SOURCE3 4 0.1933
bond_coeff @bond:n2-o harmonic 789.9 1.2090 # SOURCE3 20 0.0344
bond_coeff @bond:n2-oh harmonic 416.2 1.3940 # SOURCE1 67 0.0000
bond_coeff @bond:n2-os harmonic 400.5 1.4060 # SOURCE3 10 0.0147
bond_coeff @bond:n2-p2 harmonic 438.3 1.6050 # SOURCE3 35 0.0737
bond_coeff @bond:n2-p3 harmonic 286.5 1.7640 # SOURCE3 7 0.0374
bond_coeff @bond:n2-p4 harmonic 317.7 1.7240 # SOUECE3 1
bond_coeff @bond:n2-p5 harmonic 445.8 1.5990 # SOURCE1 7 0.0000
bond_coeff @bond:n2-pe harmonic 527.9 1.5400 # SOURCE3 20 0.1392
bond_coeff @bond:n2-pf harmonic 527.9 1.5400 # SOURCE3 20 same_as_n2-pe
bond_coeff @bond:n2-s2 harmonic 499.0 1.5120 # SOURCE2 1 0.0000
bond_coeff @bond:n2-s4 harmonic 376.1 1.6100 # SOUECE3 1
bond_coeff @bond:n2-s harmonic 458.1 1.5410 # SOURCE1 37 0.0000
bond_coeff @bond:n2-s6 harmonic 444.6 1.5513 # SOURCE4 5 0.0011
bond_coeff @bond:n2-sh harmonic 266.6 1.7380 # SOURCE3 5 0.0511
bond_coeff @bond:n2-ss harmonic 331.4 1.6560 # SOURCE1 36 0.0000
bond_coeff @bond:n3-n3 harmonic 383.6 1.4540 # SOURCE1 44 0.0000
bond_coeff @bond:n3-n4 harmonic 434.9 1.4140 # SOURCE1 13 0.0000
bond_coeff @bond:n3-na harmonic 426.7 1.4200 # SOURCE1 68 0.0000
bond_coeff @bond:n3-nh harmonic 426.7 1.4200 # SOURCE1 68 0.0000
bond_coeff @bond:n3-no harmonic 394.5 1.4450 # SOURCE3 3 0.0208
bond_coeff @bond:n3-o harmonic 564.0 1.3030 # SOURCE3 4 0.1217
bond_coeff @bond:n3-oh harmonic 413.5 1.3960 # SOURCE1 28 0.0000
bond_coeff @bond:n3-os harmonic 359.6 1.4400 # SOURCE1 34 0.0315
bond_coeff @bond:n3-p2 harmonic 366.6 1.6700 # SOUECE3 1
bond_coeff @bond:n3-p3 harmonic 312.8 1.7300 # SOURCE1 40 0.0000
bond_coeff @bond:n3-p4 harmonic 341.1 1.6970 # SOURCE1 88 0.0000
bond_coeff @bond:n3-p5 harmonic 373.6 1.6630 # SOURCE1 501 0.0086
bond_coeff @bond:n3-py harmonic 338.1 1.7003 # SOURCE4 6 0.0044
bond_coeff @bond:n3-s harmonic 232.3 1.7920 # SOURCE3 3 0.0178
bond_coeff @bond:n3-s4 harmonic 251.3 1.7610 # SOURCE3 6 0.0766
bond_coeff @bond:n3-s6 harmonic 353.8 1.6320 # SOURCE1 99 0.0136
bond_coeff @bond:n3-sh harmonic 265.9 1.7390 # SOURCE3 3 0.0154
bond_coeff @bond:n3-ss harmonic 277.9 1.7220 # SOURCE3 5 0.0207
bond_coeff @bond:n3-sy harmonic 297.3 1.6964 # SOURCE4 226 0.0081
bond_coeff @bond:n4-n4 harmonic 349.9 1.4840 # SOURCE3 4 0.0089
bond_coeff @bond:n4-na harmonic 407.0 1.4350 # SOURCE3 9 0.0390
bond_coeff @bond:n4-nh harmonic 369.7 1.4660 # SOURCE3 5 0.0108
bond_coeff @bond:n4-no harmonic 354.2 1.4800 # SOUECE3 1
bond_coeff @bond:n4-o harmonic 463.6 1.3610 # SOURCE3 3 0.0041
bond_coeff @bond:n4-oh harmonic 408.2 1.4000 # SOURCE3 3 0.0115
bond_coeff @bond:n4-os harmonic 381.8 1.4210 # SOURCE3 5 0.0249
bond_coeff @bond:n4-p2 harmonic 185.9 1.9420 # SOURCE3 10 0.0643
bond_coeff @bond:n4-p3 harmonic 215.1 1.8800 # SOURCE3 5 0.0146
bond_coeff @bond:n4-p4 harmonic 187.6 1.9380 # SOURCE3 1 0.0000
bond_coeff @bond:n4-p5 harmonic 242.9 1.8300 # SOURCE3 5 0.0087
bond_coeff @bond:n4-py harmonic 204.2 1.9020 # SOURCE3 4 0.0000
bond_coeff @bond:n4-s harmonic 210.3 1.8320 # SOURCE3 3 0.0004
bond_coeff @bond:n4-s4 harmonic 151.0 1.9720 # SOURCE3 3 0.0198
bond_coeff @bond:n4-s6 harmonic 172.7 1.9140 # SOURCE3 5 0.0432
bond_coeff @bond:n4-sh harmonic 221.5 1.8110 # SOURCE3 3 0.0027
bond_coeff @bond:n4-ss harmonic 221.0 1.8120 # SOURCE3 5 0.0064
bond_coeff @bond:na-na harmonic 453.3 1.4010 # SOURCE1 40 0.0000
bond_coeff @bond:na-nb harmonic 546.5 1.3440 # SOURCE4 5 0.0070
bond_coeff @bond:na-nc harmonic 535.7 1.3500 # SOURCE3 152 0.0180
bond_coeff @bond:na-nd harmonic 535.7 1.3500 # SOURCE3 152 0.0180
bond_coeff @bond:na-nh harmonic 453.3 1.4010 # SOURCE1 40 0.0000
bond_coeff @bond:na-no harmonic 401.9 1.4390 # SOURCE3 9 0.0289
bond_coeff @bond:na-o harmonic 644.3 1.2650 # SOURCE1 25 0.0347
bond_coeff @bond:na-oh harmonic 412.2 1.3970 # SOURCE3 9 0.0217
bond_coeff @bond:na-os harmonic 355.2 1.4440 # SOURCE3 45 0.0423
bond_coeff @bond:na-p2 harmonic 297.8 1.7490 # SOURCE3 11 0.0192
bond_coeff @bond:na-p3 harmonic 288.0 1.7620 # SOURCE3 8 0.0113
bond_coeff @bond:na-p4 harmonic 492.4 1.5640 # SOURCE3 5 0.2161
bond_coeff @bond:na-p5 harmonic 325.3 1.7150 # SOURCE3 11 0.0238
bond_coeff @bond:na-pc harmonic 311.1 1.7320 # SOURCE3 81 0.0207
bond_coeff @bond:na-pd harmonic 311.1 1.7320 # SOURCE3 81 same_as_na-pc
bond_coeff @bond:na-py harmonic 327.8 1.7120 # SOURCE3 2 0.0000
bond_coeff @bond:na-s harmonic 248.7 1.7650 # SOURCE3 8 0.0095
bond_coeff @bond:na-s4 harmonic 231.7 1.7930 # SOURCE3 10 0.0421
bond_coeff @bond:na-s6 harmonic 274.3 1.7270 # SOURCE3 10 0.0201
bond_coeff @bond:na-sh harmonic 278.6 1.7210 # SOURCE3 9 0.0113
bond_coeff @bond:na-ss harmonic 270.1 1.7330 # SOURCE3 38 0.0412
bond_coeff @bond:na-sy harmonic 274.3 1.7270 # SOURCE3 1
bond_coeff @bond:nb-nb harmonic 550.2 1.3420 # SOURCE1 15 0.0314
bond_coeff @bond:nb-pb harmonic 461.1 1.5870 # SOURCE1 162 0.0091
bond_coeff @bond:nc-nc harmonic 486.8 1.3790 # SOURCE3 9 0.0164
bond_coeff @bond:nc-nd harmonic 602.9 1.3150 # SOURCE3 9 0.0221
bond_coeff @bond:nc-os harmonic 414.9 1.3950 # SOURCE1 46 0.0188
bond_coeff @bond:nc-ss harmonic 433.5 1.5600 # SOURCE1 74 0.0000
bond_coeff @bond:nc-sy harmonic 439.8 1.5550 # SOURCE3 2
bond_coeff @bond:nd-nd harmonic 486.8 1.3790 # SOURCE3 9 0.0164
bond_coeff @bond:nd-os harmonic 414.9 1.3950 # SOURCE1 46 0.0188
bond_coeff @bond:nd-ss harmonic 433.5 1.5600 # SOURCE1 74 0.0000
bond_coeff @bond:nd-sy harmonic 439.8 1.5550 # SOURCE3 2
bond_coeff @bond:ne-ne harmonic 355.3 1.4790 # SOURCE3 19 0.1705
bond_coeff @bond:ne-nf harmonic 721.6 1.2635 # SOURCE4 25 0.0034
bond_coeff @bond:ne-o harmonic 736.4 1.2280 # SOURCE3 40 0.0255
bond_coeff @bond:ne-p2 harmonic 493.9 1.5630 # SOURCE3 14 0.1325
bond_coeff @bond:ne-pe harmonic 327.8 1.7120 # SOURCE3 28 0.1076
bond_coeff @bond:ne-px harmonic 336.6 1.7020 # SOURCE3 11 0.0883
bond_coeff @bond:ne-py harmonic 425.4 1.6157 # SOURCE4 10 0.0094
bond_coeff @bond:ne-s harmonic 463.5 1.5370 # SOURCE3 22 0.1708
bond_coeff @bond:ne-sx harmonic 207.3 1.8380 # SOURCE3 7 0.1060
bond_coeff @bond:ne-sy harmonic 257.1 1.7520 # SOURCE3 7 0.0814
bond_coeff @bond:nf-nf harmonic 355.3 1.4790 # SOURCE3 19 same_as_ne-ne
bond_coeff @bond:nf-o harmonic 736.4 1.2280 # SOURCE3 40 same_as_ne-o
bond_coeff @bond:nf-p2 harmonic 493.9 1.5630 # SOURCE3 14 same_as_ne-p2
bond_coeff @bond:nf-pf harmonic 327.8 1.7120 # SOURCE3 28 same_as_ne-pe
bond_coeff @bond:nf-px harmonic 336.6 1.7020 # SOURCE3 11 same_as_ne-px
bond_coeff @bond:nf-py harmonic 425.4 1.6157 # SOURCE4 10 same_as_ne-py
bond_coeff @bond:nf-s harmonic 463.5 1.5370 # SOURCE3 22 same_as_ne-s
bond_coeff @bond:nf-sx harmonic 207.3 1.8380 # SOURCE3 7 same_as_ne-sx
bond_coeff @bond:nf-sy harmonic 257.1 1.7520 # SOURCE3 7 same_as_ne-sy
bond_coeff @bond:nh-nh harmonic 453.3 1.4010 # SOURCE1 40 0.0000
bond_coeff @bond:nh-no harmonic 477.4 1.3850 # SOURCE4 7 0.0036
bond_coeff @bond:nh-o harmonic 596.2 1.2870 # SOURCE3 3 0.0450
bond_coeff @bond:nh-oh harmonic 389.9 1.4144 # SOURCE4 19 0.0064
bond_coeff @bond:nh-os harmonic 387.8 1.4161 # SOURCE4 6 0.0039
bond_coeff @bond:nh-p2 harmonic 357.8 1.6790 # SOURCE3 17 0.0872
bond_coeff @bond:nh-p3 harmonic 312.8 1.7300 # SOURCE3 3 0.0016
bond_coeff @bond:nh-p4 harmonic 333.1 1.7060 # SOURCE3 3 0.0008
bond_coeff @bond:nh-p5 harmonic 365.6 1.6710 # SOURCE3 3 0.0007
bond_coeff @bond:nh-s harmonic 237.0 1.7840 # SOURCE3 3 0.0076
bond_coeff @bond:nh-s4 harmonic 259.1 1.7490 # SOURCE3 3 0.0203
bond_coeff @bond:nh-s6 harmonic 297.2 1.6965 # SOURCE4 33 0.0062
bond_coeff @bond:nh-sh harmonic 288.3 1.7080 # SOURCE3 1 0.0000
bond_coeff @bond:nh-ss harmonic 288.3 1.7080 # SOURCE1 52 0.0015
bond_coeff @bond:nh-sy harmonic 283.5 1.7144 # SOURCE4 80 0.0066
bond_coeff @bond:n-n1 harmonic 553.9 1.3400 # SOUECE3 1
bond_coeff @bond:n-n2 harmonic 499.7 1.3710 # SOURCE3 9 0.0200
bond_coeff @bond:n-n3 harmonic 443.3 1.4080 # SOURCE3 5 0.0087
bond_coeff @bond:n-n4 harmonic 410.8 1.4320 # SOURCE3 5 0.0098
bond_coeff @bond:n-n harmonic 469.7 1.3900 # SOURCE3 5 0.0038
bond_coeff @bond:n-na harmonic 486.8 1.3790 # SOURCE3 11 0.0071
bond_coeff @bond:n-nc harmonic 523.7 1.3568 # CORR 76
bond_coeff @bond:n-nd harmonic 523.7 1.3568 # CORR 76
bond_coeff @bond:n-nh harmonic 451.2 1.4025 # SOURCE4 20 0.0074
bond_coeff @bond:n-no harmonic 381.2 1.4560 # SOURCE3 4 0.0327
bond_coeff @bond:n-o harmonic 646.6 1.2640 # SOURCE3 9 0.0381
bond_coeff @bond:n-oh harmonic 395.4 1.4100 # SOURCE3 6 0.0106
bond_coeff @bond:no-no harmonic 138.3 1.8240 # SOURCE3 1 0.0000
bond_coeff @bond:no-o harmonic 761.2 1.2190 # SOURCE1 1838 0.0049
bond_coeff @bond:no-oh harmonic 400.5 1.4060 # SOURCE2 1 0.0000
bond_coeff @bond:no-os harmonic 379.5 1.4229 # SOURCE4 53 0.0076
bond_coeff @bond:no-p2 harmonic 306.3 1.7380 # SOURCE3 10 0.2231
bond_coeff @bond:no-p3 harmonic 234.7 1.8440 # SOURCE3 3 0.0005
bond_coeff @bond:no-p4 harmonic 220.4 1.8700 # SOURCE3 3 0.0006
bond_coeff @bond:no-p5 harmonic 240.5 1.8340 # SOURCE3 4 0.0020
bond_coeff @bond:no-s harmonic 263.8 1.7420 # SOURCE3 2 0.0000
bond_coeff @bond:n-os harmonic 395.0 1.4103 # SOURCE4 30 0.0112
bond_coeff @bond:no-s4 harmonic 143.0 1.9960 # SOURCE3 3 0.0313
bond_coeff @bond:no-s6 harmonic 149.6 1.9760 # SOURCE3 3 0.0520
bond_coeff @bond:no-sh harmonic 225.4 1.8040 # SOURCE3 1 0.0000
bond_coeff @bond:no-ss harmonic 212.4 1.8280 # SOURCE3 3 0.0244
bond_coeff @bond:n-p2 harmonic 310.3 1.7330 # SOURCE3 8 0.0217
bond_coeff @bond:n-p3 harmonic 282.2 1.7700 # SOURCE3 9 0.0118
bond_coeff @bond:n-p4 harmonic 309.5 1.7340 # SOURCE3 1 0.0000
bond_coeff @bond:n-p5 harmonic 331.3 1.7080 # SOURCE4 6 0.0022
bond_coeff @bond:n-pc harmonic 304.8 1.7400 # SOURCE3 3 0.0010
bond_coeff @bond:n-pd harmonic 304.8 1.7400 # SOURCE3 3 same_as_n-pc
bond_coeff @bond:n-s harmonic 247.5 1.7670 # SOURCE3 3 0.0011
bond_coeff @bond:n-s4 harmonic 238.2 1.7820 # SOURCE3 4 0.0214
bond_coeff @bond:n-s6 harmonic 283.0 1.7151 # SOURCE4 13 0.0138
bond_coeff @bond:n-sh harmonic 273.6 1.7280 # SOURCE3 4 0.0128
bond_coeff @bond:n-ss harmonic 281.6 1.7170 # SOURCE3 7 0.0133
bond_coeff @bond:n-sy harmonic 282.9 1.7152 # SOURCE4 51 0.0079
bond_coeff @bond:oh-oh harmonic 340.5 1.4690 # SOURCE3 1 0.0000
bond_coeff @bond:oh-os harmonic 355.8 1.4547 # SOURCE4 19 0.0050
bond_coeff @bond:oh-p2 harmonic 316.8 1.6300 # SOURCE3 8 0.0916
bond_coeff @bond:oh-p3 harmonic 278.8 1.6770 # SOURCE3 3 0.0148
bond_coeff @bond:oh-p4 harmonic 307.4 1.6410 # SOURCE3 4 0.0092
bond_coeff @bond:oh-p5 harmonic 321.2 1.6250 # SOURCE3 92 0.0451
bond_coeff @bond:oh-py harmonic 332.1 1.6130 # SOURCE3 79 0.0138
bond_coeff @bond:oh-s harmonic 190.0 1.8120 # SOURCE3 2 0.0000
bond_coeff @bond:oh-s4 harmonic 256.3 1.6954 # SOURCE4 10 0.0091
bond_coeff @bond:oh-s6 harmonic 344.1 1.5880 # SOURCE3 13 0.0091
bond_coeff @bond:oh-sh harmonic 258.6 1.6920 # SOURCE3 2 0.0003
bond_coeff @bond:oh-ss harmonic 265.6 1.6820 # SOURCE3 4 0.0131
bond_coeff @bond:oh-sy harmonic 290.4 1.6490 # SOURCE4 33 0.0044
bond_coeff @bond:o-o harmonic 384.3 1.4300 # SOURCE3 2 0.0500
bond_coeff @bond:o-oh harmonic 294.6 1.5170 # SOURCE3 2 0.0000
bond_coeff @bond:o-os harmonic 306.3 1.5040 # SOURCE3 3 0.0117
bond_coeff @bond:o-p2 harmonic 449.7 1.5080 # SOURCE3 17 0.0306
bond_coeff @bond:o-p3 harmonic 440.4 1.5150 # SOURCE3 35 0.0297
bond_coeff @bond:o-p4 harmonic 456.4 1.5030 # SOURCE3 42 0.0749
bond_coeff @bond:o-p5 harmonic 487.7 1.4810 # SOURCE1 263 0.0205
bond_coeff @bond:o-pe harmonic 432.6 1.5210 # SOURCE3 20 0.0171
bond_coeff @bond:o-pf harmonic 432.6 1.5210 # SOURCE3 20 same_as_o-pe
bond_coeff @bond:o-px harmonic 459.2 1.5010 # SOURCE3 37 0.0160
bond_coeff @bond:o-py harmonic 477.5 1.4880 # SOURCE3 63 0.0091
bond_coeff @bond:o-s harmonic 194.8 1.8020 # SOURCE3 2 0.0000
bond_coeff @bond:o-s2 harmonic 333.6 1.5990 # SOURCE3 3 0.0707
bond_coeff @bond:o-s4 harmonic 448.7 1.4970 # SOURCE1 90 0.0000
bond_coeff @bond:o-s6 harmonic 541.1 1.4360 # SOURCE1 1038 0.0128
bond_coeff @bond:o-sh harmonic 328.0 1.6050 # SOURCE3 2 0.0000
bond_coeff @bond:os-os harmonic 343.6 1.4660 # SOURCE1 20 0.0067
bond_coeff @bond:os-p2 harmonic 371.9 1.5730 # SOURCE1 16 0.0000
bond_coeff @bond:os-p3 harmonic 272.2 1.6860 # SOURCE3 6 0.0201
bond_coeff @bond:os-p4 harmonic 311.6 1.6360 # SOURCE3 4 0.0057
bond_coeff @bond:os-p5 harmonic 342.5 1.6020 # SOURCE1 248 0.0400
bond_coeff @bond:os-py harmonic 328.5 1.6170 # SOURCE3 17 0.0139
bond_coeff @bond:os-s harmonic 195.8 1.8000 # SOURCE3 3 0.0052
bond_coeff @bond:o-ss harmonic 398.5 1.5370 # SOURCE3 3 0.0501
bond_coeff @bond:os-s4 harmonic 253.9 1.6990 # SOURCE3 8 0.0223
bond_coeff @bond:os-s6 harmonic 355.0 1.5770 # SOURCE1 75 0.0030
bond_coeff @bond:os-sh harmonic 273.6 1.6710 # SOURCE3 3 0.0106
bond_coeff @bond:os-ss harmonic 250.5 1.7040 # SOURCE3 9 0.0277
bond_coeff @bond:os-sy harmonic 253.9 1.6990 # SOURCE3 1 0.0000
bond_coeff @bond:o-sx harmonic 434.2 1.5080 # SOURCE3 40 0.0130
bond_coeff @bond:o-sy harmonic 493.0 1.4660 # SOURCE3 92 0.0114
bond_coeff @bond:p2-p2 harmonic 490.3 1.7860 # SOURCE3 25 0.3488
bond_coeff @bond:p2-p3 harmonic 211.9 2.1520 # SOURCE3 9 0.1777
bond_coeff @bond:p2-p4 harmonic 200.4 2.1790 # SOUECE3 1
bond_coeff @bond:p2-p5 harmonic 199.9 2.1800 # SOUECE3 1
bond_coeff @bond:p2-pe harmonic 401.6 1.8670 # SOURCE3 16 0.3571
bond_coeff @bond:p2-pf harmonic 401.6 1.8670 # SOURCE3 16 same_as_p2-pe
bond_coeff @bond:p2-s harmonic 361.6 1.7720 # SOURCE3 26 0.3014
bond_coeff @bond:p2-s4 harmonic 139.4 2.1900 # SOUECE3 1
bond_coeff @bond:p2-s6 harmonic 142.3 2.1800 # SOUECE3 1
bond_coeff @bond:p2-sh harmonic 224.0 1.9710 # SOURCE3 10 0.2829
bond_coeff @bond:p2-ss harmonic 226.6 1.9660 # SOURCE3 10 0.2739
bond_coeff @bond:p3-p3 harmonic 186.5 2.2140 # SOURCE1 41 0.0000
bond_coeff @bond:p3-p4 harmonic 185.7 2.2160 # SOURCE3 3 0.0011
bond_coeff @bond:p3-p5 harmonic 186.9 2.2130 # SOURCE3 9 0.0265
bond_coeff @bond:p3-s harmonic 179.7 2.0700 # SOUECE3 1
bond_coeff @bond:p3-s4 harmonic 173.2 2.0870 # SOURCE3 8 0.2235
bond_coeff @bond:p3-s6 harmonic 176.9 2.0770 # SOURCE3 11 0.1420
bond_coeff @bond:p3-sh harmonic 157.3 2.1320 # SOURCE3 3 0.0078
bond_coeff @bond:p3-ss harmonic 161.0 2.1210 # SOURCE3 3 0.0059
bond_coeff @bond:p4-p4 harmonic 273.1 2.0340 # SOURCE1 1 0.0000
bond_coeff @bond:p4-p5 harmonic 178.0 2.2370 # SOUECE3 1
bond_coeff @bond:p4-s harmonic 152.7 2.1460 # SOURCE3 5 0.0601
bond_coeff @bond:p4-s4 harmonic 123.2 2.2510 # SOUECE3 1
bond_coeff @bond:p4-s6 harmonic 118.9 2.2690 # SOUECE3 1
bond_coeff @bond:p4-sh harmonic 163.1 2.1150 # SOURCE3 4 0.0008
bond_coeff @bond:p4-ss harmonic 167.0 2.1040 # SOURCE3 4 0.0044
bond_coeff @bond:p5-p5 harmonic 261.4 2.0540 # SOURCE1 1 0.0000
bond_coeff @bond:p5-s harmonic 250.8 1.9220 # SOURCE1 89 0.0140
bond_coeff @bond:p5-s4 harmonic 191.9 2.0400 # SOUECE3 1
bond_coeff @bond:p5-s6 harmonic 191.9 2.0400 # SOUECE3 1
bond_coeff @bond:p5-sh harmonic 175.0 2.0820 # SOURCE3 3 0.0035
bond_coeff @bond:p5-ss harmonic 163.1 2.1149 # SOURCE4 24 0.0106
bond_coeff @bond:pe-pe harmonic 240.7 2.0920 # SOURCE3 7 0.1369
bond_coeff @bond:pe-pf harmonic 260.8 2.0550 # SOURCE3 1 0.0000
bond_coeff @bond:pe-px harmonic 291.4 2.0050 # SOURCE3 12 0.2609
bond_coeff @bond:pe-py harmonic 278.6 2.0250 # SOURCE3 12 0.2617
bond_coeff @bond:pe-s harmonic 374.7 1.7580 # SOURCE3 31 0.3197
bond_coeff @bond:pe-sx harmonic 145.9 2.1680 # SOURCE3 9 0.1743
bond_coeff @bond:pe-sy harmonic 133.0 2.2130 # SOURCE3 6 0.0127
bond_coeff @bond:pf-pf harmonic 240.7 2.0920 # SOURCE3 7 same_as_pe-pe
bond_coeff @bond:pf-px harmonic 291.4 2.0050 # SOURCE3 12 same_as_pe-px
bond_coeff @bond:pf-py harmonic 278.6 2.0250 # SOURCE3 12 same_as_pe-py
bond_coeff @bond:pf-s harmonic 374.7 1.7580 # SOURCE3 31 same_as_pe-s
bond_coeff @bond:pf-sx harmonic 145.9 2.1680 # SOURCE3 9 same_as_pe-sx
bond_coeff @bond:pf-sy harmonic 133.0 2.2130 # SOURCE3 6 same_as_pe-sy
bond_coeff @bond:px-py harmonic 192.3 2.1990 # SOURCE3 5 0.0238
bond_coeff @bond:px-sx harmonic 125.4 2.2420 # SOURCE3 3 0.0119
bond_coeff @bond:px-sy harmonic 123.7 2.2490 # SOURCE3 3 0.0272
bond_coeff @bond:py-py harmonic 197.5 2.1860 # SOURCE3 8 0.0132
bond_coeff @bond:py-sx harmonic 121.2 2.2590 # SOURCE3 7 0.0603
bond_coeff @bond:py-sy harmonic 141.7 2.1820 # SOURCE3 5 0.0047
bond_coeff @bond:s4-s4 harmonic 151.5 2.0800 # SOUECE3 1
bond_coeff @bond:s4-s6 harmonic 151.5 2.0800 # SOUECE3 1
bond_coeff @bond:s4-sh harmonic 125.7 2.1680 # SOURCE3 3 0.0227
bond_coeff @bond:s4-ss harmonic 126.2 2.1660 # SOURCE3 5 0.0247
bond_coeff @bond:s6-s6 harmonic 151.5 2.0800 # SOUECE3 1
bond_coeff @bond:s6-sh harmonic 142.6 2.1080 # SOURCE3 3 0.0144
bond_coeff @bond:s6-ss harmonic 139.6 2.1180 # SOURCE3 5 0.0209
bond_coeff @bond:sh-sh harmonic 158.9 2.0580 # SOURCE2 1 0.0000
bond_coeff @bond:sh-ss harmonic 155.8 2.0670 # SOURCE3 3 0.0029
bond_coeff @bond:s-s harmonic 169.0 2.0300 # SOURCE3 1 0.0000
bond_coeff @bond:s-s2 harmonic 229.2 1.8970 # SOURCE1 5 0.0000
bond_coeff @bond:s-s4 harmonic 152.8 2.0760 # SOURCE3 4 0.0345
bond_coeff @bond:s-s6 harmonic 166.0 2.0380 # SOURCE3 3 0.0311
bond_coeff @bond:s-sh harmonic 142.0 2.1100 # SOURCE3 2 0.0000
bond_coeff @bond:s-ss harmonic 148.5 2.0890 # SOURCE3 1 0.0000
bond_coeff @bond:ss-ss harmonic 161.7 2.0500 # SOURCE1 225 0.0015
bond_coeff @bond:sx-sx harmonic 80.9 2.3910 # SOURCE3 3 0.0185
bond_coeff @bond:sx-sy harmonic 105.3 2.2550 # SOURCE3 5 0.0737
bond_coeff @bond:sy-sy harmonic 106.4 2.2500 # SOURCE3 3 0.0289
bond_coeff @bond:br-cd harmonic 277.6 1.8847 # NEW 39
bond_coeff @bond:c1-cf harmonic 607.4 1.3153 # NEW 6
bond_coeff @bond:cd-f harmonic 368.6 1.3401 # NEW 24
bond_coeff @bond:cd-n4 harmonic 299.0 1.4930 # NEW 7
bond_coeff @bond:cd-nf harmonic 427.4 1.3790 # NEW 30
bond_coeff @bond:cd-no harmonic 367.4 1.4262 # NEW 133
bond_coeff @bond:cd-sh harmonic 257.9 1.7681 # NEW 8
bond_coeff @bond:cd-sx harmonic 231.3 1.8113 # NEW 16
bond_coeff @bond:cc-cy harmonic 330.9 1.5054 # NEW 10
bond_coeff @bond:cf-cl harmonic 292.6 1.7671 # NEW 24
bond_coeff @bond:cf-cx harmonic 337.0 1.4993 # NEW 5
bond_coeff @bond:cf-cy harmonic 323.0 1.5135 # NEW 17
bond_coeff @bond:cf-na harmonic 373.8 1.4207 # NEW 5
bond_coeff @bond:cf-ss harmonic 243.6 1.7906 # NEW 10
bond_coeff @bond:cq-na harmonic 420.5 1.3840 # NEW 7
bond_coeff @bond:cq-nb harmonic 486.7 1.3398 # NEW 70
} # (end of bond_coeffs)
write_once("Data Bonds By Type") {
@bond:ow-hw @atom:ow @atom:hw
@bond:hw-hw @atom:hw @atom:hw
@bond:br-br @atom:br @atom:br
@bond:br-c1 @atom:br @atom:c1
@bond:br-c2 @atom:br @atom:c2
@bond:br-c @atom:br @atom:c
@bond:br-c3 @atom:br @atom:c3
@bond:br-ca @atom:br @atom:ca
@bond:br-cc @atom:br @atom:cc
@bond:br-cx @atom:br @atom:cx
@bond:br-i @atom:br @atom:i
@bond:br-n1 @atom:br @atom:n1
@bond:br-n2 @atom:br @atom:n2
@bond:br-n @atom:br @atom:n
@bond:br-n3 @atom:br @atom:n3
@bond:br-n4 @atom:br @atom:n4
@bond:br-na @atom:br @atom:na
@bond:br-nh @atom:br @atom:nh
@bond:br-no @atom:br @atom:no
@bond:br-o @atom:br @atom:o
@bond:br-oh @atom:br @atom:oh
@bond:br-os @atom:br @atom:os
@bond:br-p2 @atom:br @atom:p2
@bond:br-p3 @atom:br @atom:p3
@bond:br-p4 @atom:br @atom:p4
@bond:br-p5 @atom:br @atom:p5
@bond:br-s @atom:br @atom:s
@bond:br-s4 @atom:br @atom:s4
@bond:br-s6 @atom:br @atom:s6
@bond:br-sh @atom:br @atom:sh
@bond:br-ss @atom:br @atom:ss
@bond:c1-c1 @atom:c1 @atom:c1
@bond:c1-c2 @atom:c1 @atom:c2
@bond:c1-c3 @atom:c1 @atom:c3
@bond:c1-ca @atom:c1 @atom:ca
@bond:c1-ce @atom:c1 @atom:ce
@bond:c1-cg @atom:c1 @atom:cg
@bond:c1-ch @atom:c1 @atom:ch
@bond:c1-cl @atom:c1 @atom:cl
@bond:c1-cx @atom:c1 @atom:cx
@bond:c1-f @atom:c1 @atom:f
@bond:c1-ha @atom:c1 @atom:ha
@bond:c1-hc @atom:c1 @atom:hc
@bond:c1-i @atom:c1 @atom:i
@bond:c1-n1 @atom:c1 @atom:n1
@bond:c1-n2 @atom:c1 @atom:n2
@bond:c1-n3 @atom:c1 @atom:n3
@bond:c1-n4 @atom:c1 @atom:n4
@bond:c1-n @atom:c1 @atom:n
@bond:c1-na @atom:c1 @atom:na
@bond:c1-ne @atom:c1 @atom:ne
@bond:c1-nf @atom:c1 @atom:nf
@bond:c1-nh @atom:c1 @atom:nh
@bond:c1-no @atom:c1 @atom:no
@bond:c1-o @atom:c1 @atom:o
@bond:c1-oh @atom:c1 @atom:oh
@bond:c1-os @atom:c1 @atom:os
@bond:c1-p2 @atom:c1 @atom:p2
@bond:c1-p3 @atom:c1 @atom:p3
@bond:c1-p4 @atom:c1 @atom:p4
@bond:c1-p5 @atom:c1 @atom:p5
@bond:c1-s2 @atom:c1 @atom:s2
@bond:c1-s @atom:c1 @atom:s
@bond:c1-s4 @atom:c1 @atom:s4
@bond:c1-s6 @atom:c1 @atom:s6
@bond:c1-sh @atom:c1 @atom:sh
@bond:c1-ss @atom:c1 @atom:ss
@bond:c2-c2 @atom:c2 @atom:c2
@bond:c2-c3 @atom:c2 @atom:c3
@bond:c2-ca @atom:c2 @atom:ca
@bond:c2-cc @atom:c2 @atom:cc
@bond:c2-cd @atom:c2 @atom:cd
@bond:c2-ce @atom:c2 @atom:ce
@bond:c2-cf @atom:c2 @atom:cf
@bond:c2-cl @atom:c2 @atom:cl
@bond:c2-cu @atom:c2 @atom:cu
@bond:c2-cx @atom:c2 @atom:cx
@bond:c2-cy @atom:c2 @atom:cy
@bond:c2-f @atom:c2 @atom:f
@bond:c2-h4 @atom:c2 @atom:h4
@bond:c2-h5 @atom:c2 @atom:h5
@bond:c2-ha @atom:c2 @atom:ha
@bond:c2-hc @atom:c2 @atom:hc
@bond:c2-hx @atom:c2 @atom:hx
@bond:c2-i @atom:c2 @atom:i
@bond:c2-n1 @atom:c2 @atom:n1
@bond:c2-n2 @atom:c2 @atom:n2
@bond:c2-n3 @atom:c2 @atom:n3
@bond:c2-n @atom:c2 @atom:n
@bond:c2-n4 @atom:c2 @atom:n4
@bond:c2-na @atom:c2 @atom:na
@bond:c2-nc @atom:c2 @atom:nc
@bond:c2-nd @atom:c2 @atom:nd
@bond:c2-ne @atom:c2 @atom:ne
@bond:c2-nf @atom:c2 @atom:nf
@bond:c2-nh @atom:c2 @atom:nh
@bond:c2-no @atom:c2 @atom:no
@bond:c2-o @atom:c2 @atom:o
@bond:c2-oh @atom:c2 @atom:oh
@bond:c2-os @atom:c2 @atom:os
@bond:c2-p2 @atom:c2 @atom:p2
@bond:c2-p3 @atom:c2 @atom:p3
@bond:c2-p4 @atom:c2 @atom:p4
@bond:c2-p5 @atom:c2 @atom:p5
@bond:c2-pe @atom:c2 @atom:pe
@bond:c2-pf @atom:c2 @atom:pf
@bond:c2-s2 @atom:c2 @atom:s2
@bond:c2-s @atom:c2 @atom:s
@bond:c2-s4 @atom:c2 @atom:s4
@bond:c2-s6 @atom:c2 @atom:s6
@bond:c2-sh @atom:c2 @atom:sh
@bond:c2-ss @atom:c2 @atom:ss
@bond:c3-c3 @atom:c3 @atom:c3
@bond:c3-ca @atom:c3 @atom:ca
@bond:c3-cc @atom:c3 @atom:cc
@bond:c3-cd @atom:c3 @atom:cd
@bond:c3-ce @atom:c3 @atom:ce
@bond:c3-cf @atom:c3 @atom:cf
@bond:c3-cl @atom:c3 @atom:cl
@bond:c3-cu @atom:c3 @atom:cu
@bond:c3-cv @atom:c3 @atom:cv
@bond:c3-cx @atom:c3 @atom:cx
@bond:c3-cy @atom:c3 @atom:cy
@bond:c3-f @atom:c3 @atom:f
@bond:c3-h1 @atom:c3 @atom:h1
@bond:c3-h2 @atom:c3 @atom:h2
@bond:c3-h3 @atom:c3 @atom:h3
@bond:c3-hc @atom:c3 @atom:hc
@bond:c3-hx @atom:c3 @atom:hx
@bond:c3-i @atom:c3 @atom:i
@bond:c3-n1 @atom:c3 @atom:n1
@bond:c3-n2 @atom:c3 @atom:n2
@bond:c3-n @atom:c3 @atom:n
@bond:c3-n3 @atom:c3 @atom:n3
@bond:c3-n4 @atom:c3 @atom:n4
@bond:c3-na @atom:c3 @atom:na
@bond:c3-nc @atom:c3 @atom:nc
@bond:c3-nd @atom:c3 @atom:nd
@bond:c3-nh @atom:c3 @atom:nh
@bond:c3-no @atom:c3 @atom:no
@bond:c3-o @atom:c3 @atom:o
@bond:c3-oh @atom:c3 @atom:oh
@bond:c3-os @atom:c3 @atom:os
@bond:c3-p2 @atom:c3 @atom:p2
@bond:c3-p3 @atom:c3 @atom:p3
@bond:c3-p4 @atom:c3 @atom:p4
@bond:c3-p5 @atom:c3 @atom:p5
@bond:c3-px @atom:c3 @atom:px
@bond:c3-py @atom:c3 @atom:py
@bond:c3-s @atom:c3 @atom:s
@bond:c3-s4 @atom:c3 @atom:s4
@bond:c3-s6 @atom:c3 @atom:s6
@bond:c3-sh @atom:c3 @atom:sh
@bond:c3-ss @atom:c3 @atom:ss
@bond:c3-sx @atom:c3 @atom:sx
@bond:c3-sy @atom:c3 @atom:sy
@bond:ca-ca @atom:ca @atom:ca
@bond:ca-cc @atom:ca @atom:cc
@bond:ca-cd @atom:ca @atom:cd
@bond:ca-ce @atom:ca @atom:ce
@bond:ca-cf @atom:ca @atom:cf
@bond:ca-cg @atom:ca @atom:cg
@bond:ca-ch @atom:ca @atom:ch
@bond:ca-cl @atom:ca @atom:cl
@bond:ca-cp @atom:ca @atom:cp
@bond:ca-cq @atom:ca @atom:cq
@bond:ca-cx @atom:ca @atom:cx
@bond:ca-cy @atom:ca @atom:cy
@bond:ca-f @atom:ca @atom:f
@bond:ca-h4 @atom:ca @atom:h4
@bond:ca-h5 @atom:ca @atom:h5
@bond:ca-ha @atom:ca @atom:ha
@bond:ca-i @atom:ca @atom:i
@bond:ca-n1 @atom:ca @atom:n1
@bond:ca-n2 @atom:ca @atom:n2
@bond:ca-n @atom:ca @atom:n
@bond:ca-n4 @atom:ca @atom:n4
@bond:ca-na @atom:ca @atom:na
@bond:ca-nb @atom:ca @atom:nb
@bond:ca-nc @atom:ca @atom:nc
@bond:ca-nd @atom:ca @atom:nd
@bond:ca-ne @atom:ca @atom:ne
@bond:ca-nf @atom:ca @atom:nf
@bond:ca-nh @atom:ca @atom:nh
@bond:ca-no @atom:ca @atom:no
@bond:ca-o @atom:ca @atom:o
@bond:ca-oh @atom:ca @atom:oh
@bond:ca-os @atom:ca @atom:os
@bond:ca-p2 @atom:ca @atom:p2
@bond:ca-p3 @atom:ca @atom:p3
@bond:ca-p4 @atom:ca @atom:p4
@bond:ca-p5 @atom:ca @atom:p5
@bond:ca-pe @atom:ca @atom:pe
@bond:ca-pf @atom:ca @atom:pf
@bond:ca-px @atom:ca @atom:px
@bond:ca-py @atom:ca @atom:py
@bond:ca-s @atom:ca @atom:s
@bond:ca-s4 @atom:ca @atom:s4
@bond:ca-s6 @atom:ca @atom:s6
@bond:ca-sh @atom:ca @atom:sh
@bond:ca-ss @atom:ca @atom:ss
@bond:ca-sx @atom:ca @atom:sx
@bond:ca-sy @atom:ca @atom:sy
@bond:c-c1 @atom:c @atom:c1
@bond:c-c2 @atom:c @atom:c2
@bond:c-c @atom:c @atom:c
@bond:c-c3 @atom:c @atom:c3
@bond:c-ca @atom:c @atom:ca
@bond:c-cc @atom:c @atom:cc
@bond:cc-cc @atom:cc @atom:cc
@bond:cc-cd @atom:cc @atom:cd
@bond:cc-ce @atom:cc @atom:ce
@bond:cc-cf @atom:cc @atom:cf
@bond:cc-cg @atom:cc @atom:cg
@bond:cc-ch @atom:cc @atom:ch
@bond:cc-cl @atom:cc @atom:cl
@bond:cc-cx @atom:cc @atom:cx
@bond:c-cd @atom:c @atom:cd
@bond:c-ce @atom:c @atom:ce
@bond:c-cf @atom:c @atom:cf
@bond:cc-f @atom:cc @atom:f
@bond:c-cg @atom:c @atom:cg
@bond:c-ch @atom:c @atom:ch
@bond:cc-h4 @atom:cc @atom:h4
@bond:cc-h5 @atom:cc @atom:h5
@bond:cc-ha @atom:cc @atom:ha
@bond:c-cl @atom:c @atom:cl
@bond:cc-n2 @atom:cc @atom:n2
@bond:cc-n @atom:cc @atom:n
@bond:cc-n4 @atom:cc @atom:n4
@bond:cc-na @atom:cc @atom:na
@bond:cc-nc @atom:cc @atom:nc
@bond:cc-nd @atom:cc @atom:nd
@bond:cc-ne @atom:cc @atom:ne
@bond:cc-nf @atom:cc @atom:nf
@bond:cc-nh @atom:cc @atom:nh
@bond:cc-no @atom:cc @atom:no
@bond:cc-oh @atom:cc @atom:oh
@bond:cc-os @atom:cc @atom:os
@bond:cc-pd @atom:cc @atom:pd
@bond:cc-sh @atom:cc @atom:sh
@bond:cc-ss @atom:cc @atom:ss
@bond:cc-sx @atom:cc @atom:sx
@bond:cc-sy @atom:cc @atom:sy
@bond:c-cu @atom:c @atom:cu
@bond:c-cx @atom:c @atom:cx
@bond:c-cy @atom:c @atom:cy
@bond:cd-cd @atom:cd @atom:cd
@bond:cd-ce @atom:cd @atom:ce
@bond:cd-cf @atom:cd @atom:cf
@bond:cd-cg @atom:cd @atom:cg
@bond:cd-ch @atom:cd @atom:ch
@bond:cd-cl @atom:cd @atom:cl
@bond:cd-cx @atom:cd @atom:cx
@bond:cd-cy @atom:cd @atom:cy
@bond:cd-h4 @atom:cd @atom:h4
@bond:cd-h5 @atom:cd @atom:h5
@bond:cd-ha @atom:cd @atom:ha
@bond:cd-n2 @atom:cd @atom:n2
@bond:cd-n @atom:cd @atom:n
@bond:cd-na @atom:cd @atom:na
@bond:cd-nc @atom:cd @atom:nc
@bond:cd-nd @atom:cd @atom:nd
@bond:cd-ne @atom:cd @atom:ne
@bond:cd-nh @atom:cd @atom:nh
@bond:cd-oh @atom:cd @atom:oh
@bond:cd-os @atom:cd @atom:os
@bond:cd-pc @atom:cd @atom:pc
@bond:cd-ss @atom:cd @atom:ss
@bond:cd-sy @atom:cd @atom:sy
@bond:ce-ce @atom:ce @atom:ce
@bond:ce-cf @atom:ce @atom:cf
@bond:ce-cg @atom:ce @atom:cg
@bond:ce-ch @atom:ce @atom:ch
@bond:ce-cl @atom:ce @atom:cl
@bond:ce-cx @atom:ce @atom:cx
@bond:ce-cy @atom:ce @atom:cy
@bond:ce-h4 @atom:ce @atom:h4
@bond:ce-ha @atom:ce @atom:ha
@bond:ce-n1 @atom:ce @atom:n1
@bond:ce-n2 @atom:ce @atom:n2
@bond:ce-n @atom:ce @atom:n
@bond:ce-na @atom:ce @atom:na
@bond:ce-ne @atom:ce @atom:ne
@bond:ce-nf @atom:ce @atom:nf
@bond:ce-nh @atom:ce @atom:nh
@bond:ce-oh @atom:ce @atom:oh
@bond:ce-os @atom:ce @atom:os
@bond:ce-p2 @atom:ce @atom:p2
@bond:ce-pe @atom:ce @atom:pe
@bond:ce-px @atom:ce @atom:px
@bond:ce-py @atom:ce @atom:py
@bond:ce-s @atom:ce @atom:s
@bond:ce-ss @atom:ce @atom:ss
@bond:ce-sx @atom:ce @atom:sx
@bond:ce-sy @atom:ce @atom:sy
@bond:c-f @atom:c @atom:f
@bond:cf-cf @atom:cf @atom:cf
@bond:cf-cg @atom:cf @atom:cg
@bond:cf-ch @atom:cf @atom:ch
@bond:cf-h4 @atom:cf @atom:h4
@bond:cf-ha @atom:cf @atom:ha
@bond:cf-n1 @atom:cf @atom:n1
@bond:cf-n2 @atom:cf @atom:n2
@bond:cf-n @atom:cf @atom:n
@bond:cf-ne @atom:cf @atom:ne
@bond:cf-nf @atom:cf @atom:nf
@bond:cf-nh @atom:cf @atom:nh
@bond:cf-oh @atom:cf @atom:oh
@bond:cf-os @atom:cf @atom:os
@bond:cf-p2 @atom:cf @atom:p2
@bond:cf-pf @atom:cf @atom:pf
@bond:cf-px @atom:cf @atom:px
@bond:cf-py @atom:cf @atom:py
@bond:cf-s @atom:cf @atom:s
@bond:cf-sx @atom:cf @atom:sx
@bond:cf-sy @atom:cf @atom:sy
@bond:cg-cg @atom:cg @atom:cg
@bond:cg-ch @atom:cg @atom:ch
@bond:cg-n1 @atom:cg @atom:n1
@bond:cg-ne @atom:cg @atom:ne
@bond:cg-pe @atom:cg @atom:pe
@bond:c-h4 @atom:c @atom:h4
@bond:c-h5 @atom:c @atom:h5
@bond:c-ha @atom:c @atom:ha
@bond:ch-ch @atom:ch @atom:ch
@bond:ch-n1 @atom:ch @atom:n1
@bond:ch-nf @atom:ch @atom:nf
@bond:ch-pf @atom:ch @atom:pf
@bond:c-i @atom:c @atom:i
@bond:cl-cl @atom:cl @atom:cl
@bond:cl-cx @atom:cl @atom:cx
@bond:cl-cy @atom:cl @atom:cy
@bond:cl-f @atom:cl @atom:f
@bond:cl-i @atom:cl @atom:i
@bond:cl-n1 @atom:cl @atom:n1
@bond:cl-n2 @atom:cl @atom:n2
@bond:cl-n3 @atom:cl @atom:n3
@bond:cl-n @atom:cl @atom:n
@bond:cl-n4 @atom:cl @atom:n4
@bond:cl-na @atom:cl @atom:na
@bond:cl-nh @atom:cl @atom:nh
@bond:cl-no @atom:cl @atom:no
@bond:cl-o @atom:cl @atom:o
@bond:cl-oh @atom:cl @atom:oh
@bond:cl-os @atom:cl @atom:os
@bond:cl-p2 @atom:cl @atom:p2
@bond:cl-p3 @atom:cl @atom:p3
@bond:cl-p4 @atom:cl @atom:p4
@bond:cl-p5 @atom:cl @atom:p5
@bond:cl-pb @atom:cl @atom:pb
@bond:cl-s @atom:cl @atom:s
@bond:cl-s2 @atom:cl @atom:s2
@bond:cl-s4 @atom:cl @atom:s4
@bond:cl-s6 @atom:cl @atom:s6
@bond:cl-sh @atom:cl @atom:sh
@bond:cl-ss @atom:cl @atom:ss
@bond:cl-sx @atom:cl @atom:sx
@bond:cl-sy @atom:cl @atom:sy
@bond:c-n2 @atom:c @atom:n2
@bond:c-n4 @atom:c @atom:n4
@bond:c-n @atom:c @atom:n
@bond:c-nc @atom:c @atom:nc
@bond:c-nd @atom:c @atom:nd
@bond:c-ne @atom:c @atom:ne
@bond:c-nf @atom:c @atom:nf
@bond:c-no @atom:c @atom:no
@bond:c-o @atom:c @atom:o
@bond:c-oh @atom:c @atom:oh
@bond:c-os @atom:c @atom:os
@bond:c-p2 @atom:c @atom:p2
@bond:c-p3 @atom:c @atom:p3
@bond:c-p4 @atom:c @atom:p4
@bond:c-p5 @atom:c @atom:p5
@bond:cp-cp @atom:cp @atom:cp
@bond:cp-cq @atom:cp @atom:cq
@bond:c-pe @atom:c @atom:pe
@bond:c-pf @atom:c @atom:pf
@bond:cp-na @atom:cp @atom:na
@bond:cp-nb @atom:cp @atom:nb
@bond:c-px @atom:c @atom:px
@bond:c-py @atom:c @atom:py
@bond:cq-cq @atom:cq @atom:cq
@bond:c-s @atom:c @atom:s
@bond:c-s4 @atom:c @atom:s4
@bond:c-s6 @atom:c @atom:s6
@bond:c-sh @atom:c @atom:sh
@bond:c-ss @atom:c @atom:ss
@bond:c-sx @atom:c @atom:sx
@bond:c-sy @atom:c @atom:sy
@bond:cu-cu @atom:cu @atom:cu
@bond:cu-cx @atom:cu @atom:cx
@bond:cu-ha @atom:cu @atom:ha
@bond:cv-cv @atom:cv @atom:cv
@bond:cv-cy @atom:cv @atom:cy
@bond:cv-ha @atom:cv @atom:ha
@bond:cx-cv @atom:cx @atom:cv
@bond:cx-cx @atom:cx @atom:cx
@bond:cx-cy @atom:cx @atom:cy
@bond:cx-f @atom:cx @atom:f
@bond:cx-h1 @atom:cx @atom:h1
@bond:cx-h2 @atom:cx @atom:h2
@bond:cx-hc @atom:cx @atom:hc
@bond:cx-hx @atom:cx @atom:hx
@bond:cx-n2 @atom:cx @atom:n2
@bond:cx-n3 @atom:cx @atom:n3
@bond:cx-n @atom:cx @atom:n
@bond:cx-na @atom:cx @atom:na
@bond:cx-nh @atom:cx @atom:nh
@bond:cx-oh @atom:cx @atom:oh
@bond:cx-os @atom:cx @atom:os
@bond:cx-p3 @atom:cx @atom:p3
@bond:cx-s4 @atom:cx @atom:s4
@bond:cx-s6 @atom:cx @atom:s6
@bond:cx-ss @atom:cx @atom:ss
@bond:cy-cy @atom:cy @atom:cy
@bond:cy-f @atom:cy @atom:f
@bond:cy-h1 @atom:cy @atom:h1
@bond:cy-h2 @atom:cy @atom:h2
@bond:cy-hc @atom:cy @atom:hc
@bond:cy-n @atom:cy @atom:n
@bond:cy-n3 @atom:cy @atom:n3
@bond:cy-oh @atom:cy @atom:oh
@bond:cy-os @atom:cy @atom:os
@bond:cy-s6 @atom:cy @atom:s6
@bond:cy-ss @atom:cy @atom:ss
@bond:cz-nh @atom:cz @atom:nh
@bond:f-n1 @atom:f @atom:n1
@bond:f-n2 @atom:f @atom:n2
@bond:f-n3 @atom:f @atom:n3
@bond:f-n @atom:f @atom:n
@bond:f-n4 @atom:f @atom:n4
@bond:f-na @atom:f @atom:na
@bond:f-nh @atom:f @atom:nh
@bond:f-no @atom:f @atom:no
@bond:f-o @atom:f @atom:o
@bond:f-oh @atom:f @atom:oh
@bond:f-os @atom:f @atom:os
@bond:f-p2 @atom:f @atom:p2
@bond:f-p3 @atom:f @atom:p3
@bond:f-p4 @atom:f @atom:p4
@bond:f-p5 @atom:f @atom:p5
@bond:f-s2 @atom:f @atom:s2
@bond:f-s @atom:f @atom:s
@bond:f-s4 @atom:f @atom:s4
@bond:f-s6 @atom:f @atom:s6
@bond:f-sh @atom:f @atom:sh
@bond:f-ss @atom:f @atom:ss
@bond:hn-n1 @atom:hn @atom:n1
@bond:hn-n2 @atom:hn @atom:n2
@bond:hn-n3 @atom:hn @atom:n3
@bond:hn-n @atom:hn @atom:n
@bond:hn-n4 @atom:hn @atom:n4
@bond:hn-na @atom:hn @atom:na
@bond:hn-nh @atom:hn @atom:nh
@bond:hn-no @atom:hn @atom:no
@bond:ho-o @atom:ho @atom:o
@bond:ho-oh @atom:ho @atom:oh
@bond:hp-p2 @atom:hp @atom:p2
@bond:hp-p3 @atom:hp @atom:p3
@bond:hp-p4 @atom:hp @atom:p4
@bond:hp-p5 @atom:hp @atom:p5
@bond:hs-s @atom:hs @atom:s
@bond:hs-s4 @atom:hs @atom:s4
@bond:hs-s6 @atom:hs @atom:s6
@bond:hs-sh @atom:hs @atom:sh
@bond:i-i @atom:i @atom:i
@bond:i-n1 @atom:i @atom:n1
@bond:i-n2 @atom:i @atom:n2
@bond:i-n @atom:i @atom:n
@bond:i-n3 @atom:i @atom:n3
@bond:i-n4 @atom:i @atom:n4
@bond:i-na @atom:i @atom:na
@bond:i-nh @atom:i @atom:nh
@bond:i-no @atom:i @atom:no
@bond:i-o @atom:i @atom:o
@bond:i-oh @atom:i @atom:oh
@bond:i-os @atom:i @atom:os
@bond:i-p2 @atom:i @atom:p2
@bond:i-p3 @atom:i @atom:p3
@bond:i-p4 @atom:i @atom:p4
@bond:i-p5 @atom:i @atom:p5
@bond:i-s @atom:i @atom:s
@bond:i-s4 @atom:i @atom:s4
@bond:i-s6 @atom:i @atom:s6
@bond:i-sh @atom:i @atom:sh
@bond:i-ss @atom:i @atom:ss
@bond:n1-n1 @atom:n1 @atom:n1
@bond:n1-n2 @atom:n1 @atom:n2
@bond:n1-n3 @atom:n1 @atom:n3
@bond:n1-n4 @atom:n1 @atom:n4
@bond:n1-na @atom:n1 @atom:na
@bond:n1-nc @atom:n1 @atom:nc
@bond:n1-nd @atom:n1 @atom:nd
@bond:n1-ne @atom:n1 @atom:ne
@bond:n1-nf @atom:n1 @atom:nf
@bond:n1-nh @atom:n1 @atom:nh
@bond:n1-no @atom:n1 @atom:no
@bond:n1-o @atom:n1 @atom:o
@bond:n1-oh @atom:n1 @atom:oh
@bond:n1-os @atom:n1 @atom:os
@bond:n1-p2 @atom:n1 @atom:p2
@bond:n1-p3 @atom:n1 @atom:p3
@bond:n1-p4 @atom:n1 @atom:p4
@bond:n1-p5 @atom:n1 @atom:p5
@bond:n1-s2 @atom:n1 @atom:s2
@bond:n1-s @atom:n1 @atom:s
@bond:n1-s4 @atom:n1 @atom:s4
@bond:n1-s6 @atom:n1 @atom:s6
@bond:n1-sh @atom:n1 @atom:sh
@bond:n1-ss @atom:n1 @atom:ss
@bond:n2-n2 @atom:n2 @atom:n2
@bond:n2-n3 @atom:n2 @atom:n3
@bond:n2-n4 @atom:n2 @atom:n4
@bond:n2-na @atom:n2 @atom:na
@bond:n2-nc @atom:n2 @atom:nc
@bond:n2-nd @atom:n2 @atom:nd
@bond:n2-ne @atom:n2 @atom:ne
@bond:n2-nf @atom:n2 @atom:nf
@bond:n2-nh @atom:n2 @atom:nh
@bond:n2-no @atom:n2 @atom:no
@bond:n2-o @atom:n2 @atom:o
@bond:n2-oh @atom:n2 @atom:oh
@bond:n2-os @atom:n2 @atom:os
@bond:n2-p2 @atom:n2 @atom:p2
@bond:n2-p3 @atom:n2 @atom:p3
@bond:n2-p4 @atom:n2 @atom:p4
@bond:n2-p5 @atom:n2 @atom:p5
@bond:n2-pe @atom:n2 @atom:pe
@bond:n2-pf @atom:n2 @atom:pf
@bond:n2-s2 @atom:n2 @atom:s2
@bond:n2-s4 @atom:n2 @atom:s4
@bond:n2-s @atom:n2 @atom:s
@bond:n2-s6 @atom:n2 @atom:s6
@bond:n2-sh @atom:n2 @atom:sh
@bond:n2-ss @atom:n2 @atom:ss
@bond:n3-n3 @atom:n3 @atom:n3
@bond:n3-n4 @atom:n3 @atom:n4
@bond:n3-na @atom:n3 @atom:na
@bond:n3-nh @atom:n3 @atom:nh
@bond:n3-no @atom:n3 @atom:no
@bond:n3-o @atom:n3 @atom:o
@bond:n3-oh @atom:n3 @atom:oh
@bond:n3-os @atom:n3 @atom:os
@bond:n3-p2 @atom:n3 @atom:p2
@bond:n3-p3 @atom:n3 @atom:p3
@bond:n3-p4 @atom:n3 @atom:p4
@bond:n3-p5 @atom:n3 @atom:p5
@bond:n3-py @atom:n3 @atom:py
@bond:n3-s @atom:n3 @atom:s
@bond:n3-s4 @atom:n3 @atom:s4
@bond:n3-s6 @atom:n3 @atom:s6
@bond:n3-sh @atom:n3 @atom:sh
@bond:n3-ss @atom:n3 @atom:ss
@bond:n3-sy @atom:n3 @atom:sy
@bond:n4-n4 @atom:n4 @atom:n4
@bond:n4-na @atom:n4 @atom:na
@bond:n4-nh @atom:n4 @atom:nh
@bond:n4-no @atom:n4 @atom:no
@bond:n4-o @atom:n4 @atom:o
@bond:n4-oh @atom:n4 @atom:oh
@bond:n4-os @atom:n4 @atom:os
@bond:n4-p2 @atom:n4 @atom:p2
@bond:n4-p3 @atom:n4 @atom:p3
@bond:n4-p4 @atom:n4 @atom:p4
@bond:n4-p5 @atom:n4 @atom:p5
@bond:n4-py @atom:n4 @atom:py
@bond:n4-s @atom:n4 @atom:s
@bond:n4-s4 @atom:n4 @atom:s4
@bond:n4-s6 @atom:n4 @atom:s6
@bond:n4-sh @atom:n4 @atom:sh
@bond:n4-ss @atom:n4 @atom:ss
@bond:na-na @atom:na @atom:na
@bond:na-nb @atom:na @atom:nb
@bond:na-nc @atom:na @atom:nc
@bond:na-nd @atom:na @atom:nd
@bond:na-nh @atom:na @atom:nh
@bond:na-no @atom:na @atom:no
@bond:na-o @atom:na @atom:o
@bond:na-oh @atom:na @atom:oh
@bond:na-os @atom:na @atom:os
@bond:na-p2 @atom:na @atom:p2
@bond:na-p3 @atom:na @atom:p3
@bond:na-p4 @atom:na @atom:p4
@bond:na-p5 @atom:na @atom:p5
@bond:na-pc @atom:na @atom:pc
@bond:na-pd @atom:na @atom:pd
@bond:na-py @atom:na @atom:py
@bond:na-s @atom:na @atom:s
@bond:na-s4 @atom:na @atom:s4
@bond:na-s6 @atom:na @atom:s6
@bond:na-sh @atom:na @atom:sh
@bond:na-ss @atom:na @atom:ss
@bond:na-sy @atom:na @atom:sy
@bond:nb-nb @atom:nb @atom:nb
@bond:nb-pb @atom:nb @atom:pb
@bond:nc-nc @atom:nc @atom:nc
@bond:nc-nd @atom:nc @atom:nd
@bond:nc-os @atom:nc @atom:os
@bond:nc-ss @atom:nc @atom:ss
@bond:nc-sy @atom:nc @atom:sy
@bond:nd-nd @atom:nd @atom:nd
@bond:nd-os @atom:nd @atom:os
@bond:nd-ss @atom:nd @atom:ss
@bond:nd-sy @atom:nd @atom:sy
@bond:ne-ne @atom:ne @atom:ne
@bond:ne-nf @atom:ne @atom:nf
@bond:ne-o @atom:ne @atom:o
@bond:ne-p2 @atom:ne @atom:p2
@bond:ne-pe @atom:ne @atom:pe
@bond:ne-px @atom:ne @atom:px
@bond:ne-py @atom:ne @atom:py
@bond:ne-s @atom:ne @atom:s
@bond:ne-sx @atom:ne @atom:sx
@bond:ne-sy @atom:ne @atom:sy
@bond:nf-nf @atom:nf @atom:nf
@bond:nf-o @atom:nf @atom:o
@bond:nf-p2 @atom:nf @atom:p2
@bond:nf-pf @atom:nf @atom:pf
@bond:nf-px @atom:nf @atom:px
@bond:nf-py @atom:nf @atom:py
@bond:nf-s @atom:nf @atom:s
@bond:nf-sx @atom:nf @atom:sx
@bond:nf-sy @atom:nf @atom:sy
@bond:nh-nh @atom:nh @atom:nh
@bond:nh-no @atom:nh @atom:no
@bond:nh-o @atom:nh @atom:o
@bond:nh-oh @atom:nh @atom:oh
@bond:nh-os @atom:nh @atom:os
@bond:nh-p2 @atom:nh @atom:p2
@bond:nh-p3 @atom:nh @atom:p3
@bond:nh-p4 @atom:nh @atom:p4
@bond:nh-p5 @atom:nh @atom:p5
@bond:nh-s @atom:nh @atom:s
@bond:nh-s4 @atom:nh @atom:s4
@bond:nh-s6 @atom:nh @atom:s6
@bond:nh-sh @atom:nh @atom:sh
@bond:nh-ss @atom:nh @atom:ss
@bond:nh-sy @atom:nh @atom:sy
@bond:n-n1 @atom:n @atom:n1
@bond:n-n2 @atom:n @atom:n2
@bond:n-n3 @atom:n @atom:n3
@bond:n-n4 @atom:n @atom:n4
@bond:n-n @atom:n @atom:n
@bond:n-na @atom:n @atom:na
@bond:n-nc @atom:n @atom:nc
@bond:n-nd @atom:n @atom:nd
@bond:n-nh @atom:n @atom:nh
@bond:n-no @atom:n @atom:no
@bond:n-o @atom:n @atom:o
@bond:n-oh @atom:n @atom:oh
@bond:no-no @atom:no @atom:no
@bond:no-o @atom:no @atom:o
@bond:no-oh @atom:no @atom:oh
@bond:no-os @atom:no @atom:os
@bond:no-p2 @atom:no @atom:p2
@bond:no-p3 @atom:no @atom:p3
@bond:no-p4 @atom:no @atom:p4
@bond:no-p5 @atom:no @atom:p5
@bond:no-s @atom:no @atom:s
@bond:n-os @atom:n @atom:os
@bond:no-s4 @atom:no @atom:s4
@bond:no-s6 @atom:no @atom:s6
@bond:no-sh @atom:no @atom:sh
@bond:no-ss @atom:no @atom:ss
@bond:n-p2 @atom:n @atom:p2
@bond:n-p3 @atom:n @atom:p3
@bond:n-p4 @atom:n @atom:p4
@bond:n-p5 @atom:n @atom:p5
@bond:n-pc @atom:n @atom:pc
@bond:n-pd @atom:n @atom:pd
@bond:n-s @atom:n @atom:s
@bond:n-s4 @atom:n @atom:s4
@bond:n-s6 @atom:n @atom:s6
@bond:n-sh @atom:n @atom:sh
@bond:n-ss @atom:n @atom:ss
@bond:n-sy @atom:n @atom:sy
@bond:oh-oh @atom:oh @atom:oh
@bond:oh-os @atom:oh @atom:os
@bond:oh-p2 @atom:oh @atom:p2
@bond:oh-p3 @atom:oh @atom:p3
@bond:oh-p4 @atom:oh @atom:p4
@bond:oh-p5 @atom:oh @atom:p5
@bond:oh-py @atom:oh @atom:py
@bond:oh-s @atom:oh @atom:s
@bond:oh-s4 @atom:oh @atom:s4
@bond:oh-s6 @atom:oh @atom:s6
@bond:oh-sh @atom:oh @atom:sh
@bond:oh-ss @atom:oh @atom:ss
@bond:oh-sy @atom:oh @atom:sy
@bond:o-o @atom:o @atom:o
@bond:o-oh @atom:o @atom:oh
@bond:o-os @atom:o @atom:os
@bond:o-p2 @atom:o @atom:p2
@bond:o-p3 @atom:o @atom:p3
@bond:o-p4 @atom:o @atom:p4
@bond:o-p5 @atom:o @atom:p5
@bond:o-pe @atom:o @atom:pe
@bond:o-pf @atom:o @atom:pf
@bond:o-px @atom:o @atom:px
@bond:o-py @atom:o @atom:py
@bond:o-s @atom:o @atom:s
@bond:o-s2 @atom:o @atom:s2
@bond:o-s4 @atom:o @atom:s4
@bond:o-s6 @atom:o @atom:s6
@bond:o-sh @atom:o @atom:sh
@bond:os-os @atom:os @atom:os
@bond:os-p2 @atom:os @atom:p2
@bond:os-p3 @atom:os @atom:p3
@bond:os-p4 @atom:os @atom:p4
@bond:os-p5 @atom:os @atom:p5
@bond:os-py @atom:os @atom:py
@bond:os-s @atom:os @atom:s
@bond:o-ss @atom:o @atom:ss
@bond:os-s4 @atom:os @atom:s4
@bond:os-s6 @atom:os @atom:s6
@bond:os-sh @atom:os @atom:sh
@bond:os-ss @atom:os @atom:ss
@bond:os-sy @atom:os @atom:sy
@bond:o-sx @atom:o @atom:sx
@bond:o-sy @atom:o @atom:sy
@bond:p2-p2 @atom:p2 @atom:p2
@bond:p2-p3 @atom:p2 @atom:p3
@bond:p2-p4 @atom:p2 @atom:p4
@bond:p2-p5 @atom:p2 @atom:p5
@bond:p2-pe @atom:p2 @atom:pe
@bond:p2-pf @atom:p2 @atom:pf
@bond:p2-s @atom:p2 @atom:s
@bond:p2-s4 @atom:p2 @atom:s4
@bond:p2-s6 @atom:p2 @atom:s6
@bond:p2-sh @atom:p2 @atom:sh
@bond:p2-ss @atom:p2 @atom:ss
@bond:p3-p3 @atom:p3 @atom:p3
@bond:p3-p4 @atom:p3 @atom:p4
@bond:p3-p5 @atom:p3 @atom:p5
@bond:p3-s @atom:p3 @atom:s
@bond:p3-s4 @atom:p3 @atom:s4
@bond:p3-s6 @atom:p3 @atom:s6
@bond:p3-sh @atom:p3 @atom:sh
@bond:p3-ss @atom:p3 @atom:ss
@bond:p4-p4 @atom:p4 @atom:p4
@bond:p4-p5 @atom:p4 @atom:p5
@bond:p4-s @atom:p4 @atom:s
@bond:p4-s4 @atom:p4 @atom:s4
@bond:p4-s6 @atom:p4 @atom:s6
@bond:p4-sh @atom:p4 @atom:sh
@bond:p4-ss @atom:p4 @atom:ss
@bond:p5-p5 @atom:p5 @atom:p5
@bond:p5-s @atom:p5 @atom:s
@bond:p5-s4 @atom:p5 @atom:s4
@bond:p5-s6 @atom:p5 @atom:s6
@bond:p5-sh @atom:p5 @atom:sh
@bond:p5-ss @atom:p5 @atom:ss
@bond:pe-pe @atom:pe @atom:pe
@bond:pe-pf @atom:pe @atom:pf
@bond:pe-px @atom:pe @atom:px
@bond:pe-py @atom:pe @atom:py
@bond:pe-s @atom:pe @atom:s
@bond:pe-sx @atom:pe @atom:sx
@bond:pe-sy @atom:pe @atom:sy
@bond:pf-pf @atom:pf @atom:pf
@bond:pf-px @atom:pf @atom:px
@bond:pf-py @atom:pf @atom:py
@bond:pf-s @atom:pf @atom:s
@bond:pf-sx @atom:pf @atom:sx
@bond:pf-sy @atom:pf @atom:sy
@bond:px-py @atom:px @atom:py
@bond:px-sx @atom:px @atom:sx
@bond:px-sy @atom:px @atom:sy
@bond:py-py @atom:py @atom:py
@bond:py-sx @atom:py @atom:sx
@bond:py-sy @atom:py @atom:sy
@bond:s4-s4 @atom:s4 @atom:s4
@bond:s4-s6 @atom:s4 @atom:s6
@bond:s4-sh @atom:s4 @atom:sh
@bond:s4-ss @atom:s4 @atom:ss
@bond:s6-s6 @atom:s6 @atom:s6
@bond:s6-sh @atom:s6 @atom:sh
@bond:s6-ss @atom:s6 @atom:ss
@bond:sh-sh @atom:sh @atom:sh
@bond:sh-ss @atom:sh @atom:ss
@bond:s-s @atom:s @atom:s
@bond:s-s2 @atom:s @atom:s2
@bond:s-s4 @atom:s @atom:s4
@bond:s-s6 @atom:s @atom:s6
@bond:s-sh @atom:s @atom:sh
@bond:s-ss @atom:s @atom:ss
@bond:ss-ss @atom:ss @atom:ss
@bond:sx-sx @atom:sx @atom:sx
@bond:sx-sy @atom:sx @atom:sy
@bond:sy-sy @atom:sy @atom:sy
@bond:br-cd @atom:br @atom:cd
@bond:c1-cf @atom:c1 @atom:cf
@bond:cd-f @atom:cd @atom:f
@bond:cd-n4 @atom:cd @atom:n4
@bond:cd-nf @atom:cd @atom:nf
@bond:cd-no @atom:cd @atom:no
@bond:cd-sh @atom:cd @atom:sh
@bond:cd-sx @atom:cd @atom:sx
@bond:cc-cy @atom:cc @atom:cy
@bond:cf-cl @atom:cf @atom:cl
@bond:cf-cx @atom:cf @atom:cx
@bond:cf-cy @atom:cf @atom:cy
@bond:cf-na @atom:cf @atom:na
@bond:cf-ss @atom:cf @atom:ss
@bond:cq-na @atom:cq @atom:na
@bond:cq-nb @atom:cq @atom:nb
} # (end of Bonds By Type)
write_once("In Settings") {
angle_coeff @angle:hw-ow-hw harmonic 100.00 104.52 # AMBER 1 TIP3P_water
angle_coeff @angle:hw-hw-ow harmonic 0.00 127.74 # AMBER 1 (found_in_crystallographic_water_with_3_bonds)
angle_coeff @angle:br-c1-br harmonic 57.76 180.00 # Guess 0
angle_coeff @angle:br-c1-c1 harmonic 54.93 180.00 # SOURCE3 1 0.0000
angle_coeff @angle:c1-c1-c1 harmonic 64.41 180.00 # SOURCE3 1 0.0000
angle_coeff @angle:c1-c1-c2 harmonic 60.84 180.00 # SOURCE3 2 0.0000
angle_coeff @angle:c1-c1-c3 harmonic 56.28 178.46 # SOURCE4 188 0.6631
angle_coeff @angle:c1-c1-ca harmonic 56.92 180.00 # SOURCE3 1
angle_coeff @angle:c1-c1-cl harmonic 51.40 180.00 # SOURCE3 1
angle_coeff @angle:c1-c1-f harmonic 61.02 180.00 # SOURCE3 1
angle_coeff @angle:c1-c1-ha harmonic 44.84 178.38 # SOURCE3 41 2.0683
angle_coeff @angle:c1-c1-hc harmonic 44.73 180.00 # SOURCE3 1
angle_coeff @angle:c1-c1-i harmonic 49.80 180.00 # SOURCE3 1 0.0000
angle_coeff @angle:c1-c1-n1 harmonic 67.17 180.00 # SOURCE3 1
angle_coeff @angle:c1-c1-n2 harmonic 65.17 180.00 # SOURCE3 1
angle_coeff @angle:c1-c1-n3 harmonic 59.77 180.00 # SOURCE3 1
angle_coeff @angle:c1-c1-n4 harmonic 59.09 179.56 # SOURCE3 3 0.3096
angle_coeff @angle:c1-c1-n harmonic 62.13 177.18 # SOURCE3 1 0.0000
angle_coeff @angle:c1-c1-na harmonic 61.23 176.75 # SOURCE3 8 2.9328
angle_coeff @angle:c1-c1-nh harmonic 61.44 179.27 # SOURCE3 3 0.2357
angle_coeff @angle:c1-c1-no harmonic 59.38 180.00 # SOURCE3 3 0.0000
angle_coeff @angle:c1-c1-o harmonic 66.79 180.00 # SOURCE3 1 0.0000
angle_coeff @angle:c1-c1-oh harmonic 62.70 176.65 # SOURCE3 1 0.0000
angle_coeff @angle:c1-c1-os harmonic 62.77 176.42 # SOURCE3 2 0.0000
angle_coeff @angle:c1-c1-p2 harmonic 65.19 180.00 # SOURCE3 1
angle_coeff @angle:c1-c1-p3 harmonic 66.41 169.63 # SOURCE3 2 0.0000
angle_coeff @angle:c1-c1-p4 harmonic 64.47 180.00 # SOURCE3 1
angle_coeff @angle:c1-c1-p5 harmonic 66.52 176.17 # SOURCE3 2 0.0000
angle_coeff @angle:c1-c1-s4 harmonic 54.12 167.47 # SOURCE3 2 0.0000
angle_coeff @angle:c1-c1-s6 harmonic 53.74 174.38 # SOURCE3 2 0.0000
angle_coeff @angle:c1-c1-s harmonic 55.65 179.97 # SOURCE3 1 0.0000
angle_coeff @angle:c1-c1-sh harmonic 54.14 180.00 # SOURCE3 1
angle_coeff @angle:c1-c1-ss harmonic 55.22 173.22 # SOURCE3 2 0.0000
angle_coeff @angle:c2-c1-c2 harmonic 58.20 180.00 # SOURCE3 1 0.0000
angle_coeff @angle:c2-c1-ce harmonic 58.18 179.01 # SOURCE4 6 0.4656
angle_coeff @angle:c2-c1-n1 harmonic 63.14 180.00 # HF/6-31G* 1
angle_coeff @angle:c2-c1-o harmonic 63.07 179.50 # SOURCE2 1 0.0000
angle_coeff @angle:c2-c1-s2 harmonic 56.73 172.98 # SOURCE3 1 0.0000
angle_coeff @angle:c3-c1-c3 harmonic 51.75 180.00 # Guess 0
angle_coeff @angle:c3-c1-cg harmonic 55.79 178.52 # SOURCE4 39 0.5063
angle_coeff @angle:c3-c1-n1 harmonic 58.10 178.50 # SOURCE4 77 0.5443
angle_coeff @angle:ca-c1-ca harmonic 52.83 180.00 # Guess 0
angle_coeff @angle:c-c1-c1 harmonic 56.33 180.00 # SOURCE3 1
angle_coeff @angle:cg-c1-ha harmonic 43.98 177.41 # SOURCE3 22 2.4947
angle_coeff @angle:ch-c1-ha harmonic 43.98 177.41 # SOURCE3 22 same_as_cg-c1-ha
angle_coeff @angle:cl-c1-cl harmonic 46.64 180.00 # Guess 0
angle_coeff @angle:f-c1-f harmonic 58.19 180.00 # Guess 0
angle_coeff @angle:i-c1-i harmonic 53.41 180.00 # Guess 0
angle_coeff @angle:n1-c1-n1 harmonic 93.20 102.01 # SOURCE3 1
angle_coeff @angle:n1-c1-n3 harmonic 63.71 169.70 # SOURCE2 1 0.0000
angle_coeff @angle:n1-c1-nh harmonic 64.02 177.43 # SOURCE4 7 0.7877
angle_coeff @angle:n1-c1-os harmonic 64.72 178.59 # SOURCE3 1 0.0000
angle_coeff @angle:n1-c1-p3 harmonic 67.69 171.20 # SOURCE2 1 0.0000
angle_coeff @angle:n1-c1-ss harmonic 55.82 178.68 # SOURCE3 1 0.0000
angle_coeff @angle:n2-c1-n2 harmonic 65.99 180.00 # Guess 0
angle_coeff @angle:n2-c1-o harmonic 69.15 171.79 # SOURCE3 2 0.3594
angle_coeff @angle:n2-c1-s harmonic 57.48 176.01 # SOURCE4 9 0.1123
angle_coeff @angle:n3-c1-n3 harmonic 57.36 180.00 # Guess 0
angle_coeff @angle:n4-c1-n4 harmonic 56.35 180.00 # Guess 0
angle_coeff @angle:na-c1-na harmonic 58.62 180.00 # Guess 0
angle_coeff @angle:ne-c1-o harmonic 69.39 172.33 # SOURCE3 1 0.0000
angle_coeff @angle:ne-c1-s harmonic 57.59 175.81 # SOURCE4 8 0.2356
angle_coeff @angle:nf-c1-o harmonic 69.39 172.33 # SOURCE3 1 same_as_ne-c1-o
angle_coeff @angle:nh-c1-nh harmonic 59.55 180.00 # Guess 0
angle_coeff @angle:n-c1-n harmonic 60.03 180.00 # Guess 0
angle_coeff @angle:no-c1-no harmonic 56.83 180.00 # Guess 0
angle_coeff @angle:oh-c1-oh harmonic 60.91 180.00 # Guess 0
angle_coeff @angle:o-c1-o harmonic 69.27 180.00 # Guess 0
angle_coeff @angle:os-c1-os harmonic 60.96 180.00 # Guess 0
angle_coeff @angle:p2-c1-p2 harmonic 80.59 180.00 # Guess 0
angle_coeff @angle:p3-c1-p3 harmonic 79.69 180.00 # Guess 0
angle_coeff @angle:p4-c1-p4 harmonic 79.69 180.00 # Guess 0
angle_coeff @angle:p5-c1-p5 harmonic 81.37 180.00 # Guess 0
angle_coeff @angle:s2-c1-s2 harmonic 55.83 180.00 # Guess 0
angle_coeff @angle:s4-c1-s4 harmonic 51.00 180.00 # Guess 0
angle_coeff @angle:s6-c1-s6 harmonic 51.72 180.00 # Guess 0
angle_coeff @angle:sh-c1-sh harmonic 53.01 180.00 # Guess 0
angle_coeff @angle:s-c1-s harmonic 54.63 180.00 # Guess 0
angle_coeff @angle:ss-c1-ss harmonic 53.04 180.00 # Guess 0
angle_coeff @angle:br-c2-br harmonic 68.56 115.06 # SOURCE3 1 0.0000
angle_coeff @angle:br-c2-c2 harmonic 63.97 118.96 # SOURCE4 6 0.4902
angle_coeff @angle:br-c2-c3 harmonic 63.71 115.33 # SOURCE4 6 0.5872
angle_coeff @angle:br-c2-ce harmonic 63.21 121.59 # SOURCE4 7 0.7078
angle_coeff @angle:br-c2-h4 harmonic 43.04 113.94 # SOURCE4 6 0.4017
angle_coeff @angle:br-c2-ha harmonic 43.18 113.28 # SOURCE3 1 0.0000
angle_coeff @angle:c1-c2-c1 harmonic 72.26 116.77 # SOURCE3 1
angle_coeff @angle:c1-c2-c2 harmonic 70.34 121.62 # SOURCE3 1
angle_coeff @angle:c1-c2-c3 harmonic 64.22 124.92 # SOURCE4 17 0.7576
angle_coeff @angle:c1-c2-f harmonic 67.99 124.90 # SOURCE2 1 0.0000
angle_coeff @angle:c1-c2-ha harmonic 50.43 121.37 # SOURCE3 8 0.0055
angle_coeff @angle:c2-c2-c2 harmonic 69.84 121.81 # SOURCE3 10 0.3843
angle_coeff @angle:c2-c2-c3 harmonic 64.33 123.42 # SOURCE3 41 2.6057
angle_coeff @angle:c2-c2-ca harmonic 66.88 117.00 # SOURCE3 1
angle_coeff @angle:c2-c2-cc harmonic 70.22 117.21 # SOURCE3 2 0.3418
angle_coeff @angle:c2-c2-cd harmonic 70.22 117.21 # SOURCE3 2 same_as_c2-c2-cc
angle_coeff @angle:c2-c2-cl harmonic 58.43 122.85 # SOURCE4 23 0.6711
angle_coeff @angle:c2-c2-cx harmonic 64.50 125.40 # SOURCE4 12 1.8494
angle_coeff @angle:c2-c2-cy harmonic 70.42 103.30 # SOURCE2 1 0.0000
angle_coeff @angle:c2-c2-f harmonic 68.11 122.92 # SOURCE4 12 0.5301
angle_coeff @angle:c2-c2-h4 harmonic 49.75 122.54 # SOURCE4 69 1.1900
angle_coeff @angle:c2-c2-ha harmonic 50.04 120.94 # SOURCE3 254 1.3150
angle_coeff @angle:c2-c2-hc harmonic 50.30 119.70 # SOURCE3 1
angle_coeff @angle:c2-c2-hx harmonic 48.98 126.45 # SOURCE3 3 0.0219
angle_coeff @angle:c2-c2-i harmonic 56.28 121.03 # SOURCE3 2 0.0000
angle_coeff @angle:c2-c2-n1 harmonic 71.69 122.98 # HF/6-31G* 1
angle_coeff @angle:c2-c2-n2 harmonic 71.29 126.01 # SOURCE3 1 0.0000
angle_coeff @angle:c2-c2-n3 harmonic 70.33 124.55 # SOURCE3 1
angle_coeff @angle:c2-c2-n4 harmonic 67.18 121.52 # SOURCE3 5 1.2656
angle_coeff @angle:c2-c2-n harmonic 68.86 123.20 # SOURCE4 15 1.8657
angle_coeff @angle:c2-c2-na harmonic 69.83 121.38 # SOURCE3 26 6.9463
angle_coeff @angle:c2-c2-nh harmonic 69.80 124.99 # SOURCE3 7 0.9929
angle_coeff @angle:c2-c2-no harmonic 67.52 124.09 # SOURCE4 6 1.2772
angle_coeff @angle:c2-c2-o harmonic 71.92 130.89 # SOURCE3 2 0.0201
angle_coeff @angle:c2-c2-oh harmonic 71.64 122.07 # SOURCE4 6 1.0883
angle_coeff @angle:c2-c2-os harmonic 71.04 121.89 # SOURCE4 33 1.3457
angle_coeff @angle:c2-c2-p2 harmonic 84.73 115.10 # SOURCE3 1
angle_coeff @angle:c2-c2-p3 harmonic 75.19 124.83 # SOURCE3 5 2.1222
angle_coeff @angle:c2-c2-p4 harmonic 77.22 119.76 # SOURCE3 1
angle_coeff @angle:c2-c2-p5 harmonic 73.70 125.97 # SOURCE3 1
angle_coeff @angle:c2-c2-s4 harmonic 62.85 119.84 # SOURCE3 1
angle_coeff @angle:c2-c2-s6 harmonic 62.81 120.01 # SOURCE3 1
angle_coeff @angle:c2-c2-s harmonic 61.25 129.37 # SOURCE3 2 0.0000
angle_coeff @angle:c2-c2-sh harmonic 60.87 125.70 # SOURCE3 3 1.3390
angle_coeff @angle:c2-c2-ss harmonic 62.79 122.86 # SOURCE4 13 1.7467
angle_coeff @angle:c3-c2-c3 harmonic 62.70 116.52 # SOURCE3 15 3.1001
angle_coeff @angle:c3-c2-cc harmonic 63.22 125.39 # CORR 27
angle_coeff @angle:c3-c2-cd harmonic 63.22 125.39 # CORR 27
angle_coeff @angle:c3-c2-ce harmonic 64.17 123.08 # CORR 1288
angle_coeff @angle:c3-c2-cf harmonic 64.17 123.08 # CORR 1288
angle_coeff @angle:c3-c2-h4 harmonic 45.30 119.25 # SOURCE4 22 2.1707
angle_coeff @angle:c3-c2-ha harmonic 45.66 117.30 # SOURCE3 33 1.7453
angle_coeff @angle:c3-c2-hc harmonic 45.15 120.00 # SOURCE3 1
angle_coeff @angle:c3-c2-n2 harmonic 66.47 123.52 # SOURCE4 141 2.2935
angle_coeff @angle:c3-c2-n harmonic 66.79 114.80 # SOURCE4 12 1.8112
angle_coeff @angle:c3-c2-na harmonic 64.95 122.54 # SOURCE3 1 0.0000
angle_coeff @angle:c3-c2-ne harmonic 66.96 122.15 # SOURCE3 4 0.2197
angle_coeff @angle:c3-c2-nf harmonic 66.96 122.15 # SOURCE3 4 same_as_c3-c2-ne
angle_coeff @angle:c3-c2-nh harmonic 66.69 118.59 # SOURCE3 6 2.2622
angle_coeff @angle:c3-c2-o harmonic 67.88 123.18 # SOURCE4 5 0.9226
angle_coeff @angle:c3-c2-oh harmonic 68.50 115.04 # SOURCE4 36 2.0110
angle_coeff @angle:c3-c2-os harmonic 68.77 112.69 # SOURCE4 50 2.4254
angle_coeff @angle:c3-c2-p2 harmonic 78.98 122.74 # SOURCE3 2 0.0000
angle_coeff @angle:c3-c2-s harmonic 62.79 115.44 # SOURCE3 2 0.0115
angle_coeff @angle:c3-c2-ss harmonic 61.62 119.66 # SOURCE4 45 1.9732
angle_coeff @angle:ca-c2-ca harmonic 63.51 117.88 # SOURCE3 1
angle_coeff @angle:ca-c2-hc harmonic 45.28 123.30 # SOURCE3 1
angle_coeff @angle:c-c2-c2 harmonic 67.93 120.70 # SOURCE3 1
angle_coeff @angle:c-c2-c3 harmonic 63.87 119.70 # SOURCE3 1
angle_coeff @angle:c-c2-c harmonic 66.57 118.88 # SOURCE3 1
angle_coeff @angle:cc-c2-h4 harmonic 49.19 120.33 # SOURCE4 7 0.0865
angle_coeff @angle:cc-c2-ha harmonic 49.07 120.76 # SOURCE3 11 1.4155
angle_coeff @angle:cc-c2-nh harmonic 69.46 122.96 # SOURCE4 10 0.7347
angle_coeff @angle:cc-c2-o harmonic 72.80 123.59 # SOURCE4 6 0.0560
angle_coeff @angle:cd-c2-ha harmonic 49.07 120.76 # SOURCE3 11 1.4155
angle_coeff @angle:ce-c2-cl harmonic 58.06 123.90 # SOURCE4 11 0.3570
angle_coeff @angle:ce-c2-h4 harmonic 49.38 122.29 # SOURCE4 75 1.4008
angle_coeff @angle:ce-c2-ha harmonic 49.57 121.19 # SOURCE3 122 0.5318
angle_coeff @angle:ce-c2-na harmonic 68.82 123.71 # SOURCE4 6 2.0109
angle_coeff @angle:ce-c2-nh harmonic 70.64 120.72 # SOURCE4 93 2.2537
angle_coeff @angle:ce-c2-no harmonic 68.45 119.65 # SOURCE4 5 0.9817
angle_coeff @angle:ce-c2-o harmonic 73.66 123.08 # SOURCE4 5 0.2391
angle_coeff @angle:ce-c2-oh harmonic 70.90 123.27 # SOURCE4 42 1.8111
angle_coeff @angle:ce-c2-os harmonic 70.47 122.52 # SOURCE4 51 2.4680
angle_coeff @angle:cf-c2-ha harmonic 49.57 121.19 # SOURCE3 122 same_as_ce-c2-ha
angle_coeff @angle:c-c2-ha harmonic 47.67 121.33 # SOURCE3 4 0.2462
angle_coeff @angle:c-c2-hc harmonic 48.00 119.70 # SOURCE3 1
angle_coeff @angle:cl-c2-cl harmonic 55.44 114.27 # SOURCE4 10 0.5850
angle_coeff @angle:cl-c2-h4 harmonic 40.76 113.77 # SOURCE4 9 0.6228
angle_coeff @angle:cl-c2-ha harmonic 40.86 113.20 # SOURCE3 1 0.0000
angle_coeff @angle:cx-c2-ha harmonic 46.61 115.89 # SOURCE4 15 0.3682
angle_coeff @angle:f-c2-f harmonic 70.67 109.60 # SOURCE2 2 0.6000
angle_coeff @angle:f-c2-ha harmonic 51.25 110.00 # SOURCE2 1 0.0000
angle_coeff @angle:h4-c2-n2 harmonic 52.40 120.69 # SOURCE4 13 1.3105
angle_coeff @angle:h4-c2-n harmonic 50.48 113.57 # SOURCE4 26 1.0283
angle_coeff @angle:h4-c2-na harmonic 51.03 113.22 # SOURCE4 9 0.6345
angle_coeff @angle:h4-c2-ne harmonic 52.87 119.63 # SOURCE4 10 1.6786
angle_coeff @angle:h4-c2-nh harmonic 51.55 115.64 # SOURCE4 31 1.0081
angle_coeff @angle:h4-c2-no harmonic 49.39 113.38 # SOURCE4 6 0.1240
angle_coeff @angle:h4-c2-os harmonic 52.23 113.70 # SOURCE3 13 2.0464
angle_coeff @angle:h4-c2-ss harmonic 42.85 118.47 # SOURCE3 9 2.5335
angle_coeff @angle:h5-c2-n2 harmonic 52.41 120.16 # SOURCE4 27 1.8999
angle_coeff @angle:h5-c2-na harmonic 48.23 126.39 # SOURCE3 4 0.3299
angle_coeff @angle:h5-c2-ne harmonic 52.76 119.62 # SOURCE4 17 1.3235
angle_coeff @angle:h5-c2-nh harmonic 51.85 113.93 # SOURCE4 50 0.8394
angle_coeff @angle:ha-c2-ha harmonic 38.02 117.65 # SOURCE3 349 1.3426
angle_coeff @angle:ha-c2-n1 harmonic 51.83 120.76 # SOURCE3 8 0.6632
angle_coeff @angle:ha-c2-n2 harmonic 52.39 120.54 # SOURCE3 92 1.4571
angle_coeff @angle:ha-c2-n3 harmonic 52.44 113.54 # SOURCE3 1
angle_coeff @angle:ha-c2-n harmonic 50.49 113.40 # SOURCE3 4 1.2182
angle_coeff @angle:ha-c2-na harmonic 51.18 112.42 # SOURCE3 8 0.6507
angle_coeff @angle:ha-c2-ne harmonic 52.48 121.18 # SOURCE3 68 0.6824
angle_coeff @angle:ha-c2-nf harmonic 52.48 121.18 # SOURCE3 68 same_as_ha-c2-ne
angle_coeff @angle:ha-c2-nh harmonic 51.29 116.68 # SOURCE3 13 2.5734
angle_coeff @angle:ha-c2-no harmonic 49.64 112.14 # SOURCE3 2 0.0264
angle_coeff @angle:ha-c2-o harmonic 55.30 117.23 # SOURCE3 2 0.0201
angle_coeff @angle:ha-c2-oh harmonic 52.34 116.18 # SOURCE3 2 0.0000
angle_coeff @angle:ha-c2-os harmonic 52.43 112.69 # SOURCE3 13 2.5851
angle_coeff @angle:ha-c2-p2 harmonic 55.74 121.48 # SOURCE3 122 0.4329
angle_coeff @angle:ha-c2-p3 harmonic 52.04 114.31 # SOURCE3 3 0.0000
angle_coeff @angle:ha-c2-p4 harmonic 51.62 117.86 # SOURCE3 1
angle_coeff @angle:ha-c2-p5 harmonic 49.81 120.10 # SOURCE3 2 0.0000
angle_coeff @angle:ha-c2-pe harmonic 55.05 121.46 # SOURCE3 104 0.7821
angle_coeff @angle:ha-c2-pf harmonic 55.05 121.46 # SOURCE3 104 same_as_ha-c2-pe
angle_coeff @angle:ha-c2-s2 harmonic 46.19 118.74 # SOURCE3 2 0.0000
angle_coeff @angle:ha-c2-s4 harmonic 42.81 115.30 # SOURCE3 2 0.0000
angle_coeff @angle:ha-c2-s harmonic 43.42 115.70 # SOURCE3 2 0.0000
angle_coeff @angle:ha-c2-s6 harmonic 42.58 116.60 # SOURCE3 2 0.0000
angle_coeff @angle:ha-c2-sh harmonic 43.04 111.74 # SOURCE3 1 0.0000
angle_coeff @angle:ha-c2-ss harmonic 43.18 116.72 # SOURCE3 7 2.7543
angle_coeff @angle:hc-c2-hc harmonic 37.81 118.92 # SOURCE3 1
angle_coeff @angle:hc-c2-n2 harmonic 52.42 120.40 # SOURCE3 1
angle_coeff @angle:hc-c2-n harmonic 50.35 114.04 # SOURCE3 1
angle_coeff @angle:hc-c2-na harmonic 49.73 119.10 # SOURCE3 1
angle_coeff @angle:hc-c2-nh harmonic 52.03 113.36 # SOURCE3 1
angle_coeff @angle:hc-c2-no harmonic 49.64 112.12 # SOURCE3 1
angle_coeff @angle:hc-c2-oh harmonic 52.33 116.22 # SOURCE3 1
angle_coeff @angle:hc-c2-os harmonic 51.65 116.11 # SOURCE3 1
angle_coeff @angle:hc-c2-p3 harmonic 51.40 117.19 # SOURCE3 1
angle_coeff @angle:hc-c2-p5 harmonic 49.92 119.58 # SOURCE3 1
angle_coeff @angle:hc-c2-s4 harmonic 42.66 116.12 # SOURCE3 1
angle_coeff @angle:hc-c2-s6 harmonic 42.79 115.45 # SOURCE3 1
angle_coeff @angle:hc-c2-sh harmonic 42.31 115.63 # SOURCE3 1
angle_coeff @angle:hc-c2-ss harmonic 43.38 115.62 # SOURCE3 1
angle_coeff @angle:hx-c2-n4 harmonic 48.42 113.03 # SOURCE3 3 0.3873
angle_coeff @angle:i-c2-i harmonic 60.96 117.94 # SOURCE3 1 0.0000
angle_coeff @angle:n1-c2-n1 harmonic 73.61 124.15 # HF/6-31G* 1
angle_coeff @angle:n2-c2-n2 harmonic 77.96 113.82 # SOURCE3 1 0.0000
angle_coeff @angle:n2-c2-n4 harmonic 72.03 113.05 # SOURCE4 6 0.3318
angle_coeff @angle:n2-c2-na harmonic 71.71 123.62 # SOURCE3 1 0.0000
angle_coeff @angle:n2-c2-nh harmonic 72.62 124.27 # SOURCE3 12 2.4114
angle_coeff @angle:n2-c2-oh harmonic 74.36 122.08 # SOURCE3 1 0.0000
angle_coeff @angle:n2-c2-os harmonic 74.32 119.82 # SOURCE4 20 1.2664
angle_coeff @angle:n2-c2-ss harmonic 62.86 129.77 # SOURCE3 1 0.0000
angle_coeff @angle:n3-c2-n3 harmonic 73.45 118.47 # SOURCE3 1
angle_coeff @angle:n4-c2-n4 harmonic 67.72 113.93 # SOURCE3 1 0.0000
angle_coeff @angle:n4-c2-ss harmonic 64.40 116.26 # SOURCE4 7 2.4226
angle_coeff @angle:na-c2-na harmonic 73.65 109.33 # SOURCE3 3 3.0187
angle_coeff @angle:ne-c2-nh harmonic 73.03 123.56 # CORR 128
angle_coeff @angle:ne-c2-os harmonic 74.86 118.76 # SOURCE4 5 0.3382
angle_coeff @angle:ne-c2-ss harmonic 65.41 120.06 # SOURCE4 9 1.3423
angle_coeff @angle:nf-c2-nh harmonic 73.03 123.56 # CORR 128
angle_coeff @angle:nh-c2-nh harmonic 74.46 112.72 # SOURCE4 257 1.8176
angle_coeff @angle:nh-c2-oh harmonic 74.05 117.16 # SOURCE4 7 0.8698
angle_coeff @angle:nh-c2-os harmonic 74.32 114.29 # SOURCE4 18 1.0900
angle_coeff @angle:nh-c2-ss harmonic 67.23 111.55 # SOURCE4 37 1.1778
angle_coeff @angle:n-c2-n2 harmonic 70.56 125.95 # SOURCE3 2 5.0202
angle_coeff @angle:n-c2-n harmonic 71.55 113.23 # SOURCE3 1 0.0000
angle_coeff @angle:n-c2-na harmonic 74.57 105.42 # SOURCE3 1 0.0000
angle_coeff @angle:n-c2-ne harmonic 70.89 125.38 # SOURCE4 10 1.6819
angle_coeff @angle:n-c2-nh harmonic 74.20 109.14 # SOURCE4 22 1.5634
angle_coeff @angle:no-c2-no harmonic 69.43 113.90 # SOURCE3 1 0.0000
angle_coeff @angle:n-c2-ss harmonic 66.83 111.06 # SOURCE4 9 0.5522
angle_coeff @angle:oh-c2-oh harmonic 76.03 114.33 # SOURCE3 1 0.0000
angle_coeff @angle:o-c2-o harmonic 80.23 121.69 # SOURCE3 1
angle_coeff @angle:o-c2-oh harmonic 76.69 121.23 # SOURCE4 6 0.0958
angle_coeff @angle:o-c2-s harmonic 64.15 127.68 # SOURCE3 2 0.0547
angle_coeff @angle:os-c2-os harmonic 74.21 115.80 # SOURCE3 1 0.0000
angle_coeff @angle:p2-c2-p2 harmonic 100.59 129.80 # SOURCE3 1
angle_coeff @angle:p3-c2-p3 harmonic 97.08 115.54 # SOURCE3 1 0.0000
angle_coeff @angle:p5-c2-p5 harmonic 92.92 121.85 # SOURCE3 1
angle_coeff @angle:s4-c2-s4 harmonic 61.89 120.32 # SOURCE3 1
angle_coeff @angle:s4-c2-s6 harmonic 61.98 119.95 # SOURCE3 1
angle_coeff @angle:s6-c2-s6 harmonic 61.98 119.97 # SOURCE3 1
angle_coeff @angle:sh-c2-sh harmonic 63.96 110.48 # SOURCE3 1 0.0000
angle_coeff @angle:sh-c2-ss harmonic 62.65 117.82 # SOURCE3 1
angle_coeff @angle:s-c2-s harmonic 62.47 121.67 # SOURCE3 1
angle_coeff @angle:ss-c2-ss harmonic 62.77 120.24 # SOURCE3 1 0.0000
angle_coeff @angle:br-c3-br harmonic 67.46 109.03 # SOURCE4 6 0.5435
angle_coeff @angle:br-c3-c1 harmonic 62.77 111.80 # SOURCE2 3 0.2160
angle_coeff @angle:br-c3-c3 harmonic 63.03 109.25 # SOURCE3 10 0.5685
angle_coeff @angle:br-c3-c harmonic 62.92 110.37 # SOURCE4 13 2.4747
angle_coeff @angle:br-c3-h1 harmonic 43.12 103.04 # SOURCE3 5 0.3092
angle_coeff @angle:br-c3-h2 harmonic 42.34 107.10 # SOURCE4 7 0.2378
angle_coeff @angle:br-c3-hc harmonic 42.40 106.50 # SOURCE3 1
angle_coeff @angle:c1-c3-c1 harmonic 66.50 109.00 # SOURCE2 1 0.0000
angle_coeff @angle:c1-c3-c2 harmonic 65.00 111.11 # SOURCE4 12 0.7366
angle_coeff @angle:c1-c3-c3 harmonic 64.29 111.42 # SOURCE4 197 1.2106
angle_coeff @angle:c1-c3-ca harmonic 64.93 110.95 # SOURCE4 28 1.1203
angle_coeff @angle:c1-c3-cc harmonic 64.32 114.20 # CORR 13
angle_coeff @angle:c1-c3-cd harmonic 64.32 114.20 # CORR 13
angle_coeff @angle:c1-c3-cl harmonic 58.49 110.63 # SOURCE2 3 1.2257
angle_coeff @angle:c1-c3-h1 harmonic 48.35 109.29 # SOURCE4 133 0.5701
angle_coeff @angle:c1-c3-hc harmonic 48.25 109.75 # SOURCE3 12 0.8436
angle_coeff @angle:c1-c3-hx harmonic 47.76 112.05 # SOURCE4 17 0.2587
angle_coeff @angle:c1-c3-n3 harmonic 67.03 112.59 # SOURCE4 28 0.9555
angle_coeff @angle:c1-c3-n4 harmonic 66.53 112.04 # SOURCE4 11 0.5701
angle_coeff @angle:c1-c3-n harmonic 67.41 112.08 # SOURCE4 18 0.9568
angle_coeff @angle:c1-c3-nh harmonic 67.25 112.79 # SOURCE4 8 0.9453
angle_coeff @angle:c1-c3-oh harmonic 69.49 109.14 # SOURCE4 39 0.6500
angle_coeff @angle:c1-c3-os harmonic 69.27 108.88 # SOURCE4 31 0.9597
angle_coeff @angle:c2-c3-c2 harmonic 63.93 112.08 # SOURCE4 153 0.7742
angle_coeff @angle:c2-c3-c3 harmonic 63.53 111.44 # SOURCE4 2891 1.7167
angle_coeff @angle:c2-c3-ca harmonic 63.71 112.45 # SOURCE4 141 1.6755
angle_coeff @angle:c2-c3-cc harmonic 64.24 111.64 # CORR 32
angle_coeff @angle:c2-c3-cd harmonic 64.24 111.64 # CORR 32
angle_coeff @angle:c2-c3-ce harmonic 64.05 111.87 # CORR 38
angle_coeff @angle:c2-c3-cf harmonic 64.05 111.87 # CORR 38
angle_coeff @angle:c2-c3-cl harmonic 57.71 112.07 # SOURCE4 6 0.9936
angle_coeff @angle:c2-c3-cx harmonic 63.65 112.62 # SOURCE4 17 1.3287
angle_coeff @angle:c2-c3-cy harmonic 66.76 101.33 # SOURCE4 58 0.9262
angle_coeff @angle:c2-c3-f harmonic 66.52 110.96 # SOURCE4 25 0.2829
angle_coeff @angle:c2-c3-h1 harmonic 47.03 110.46 # SOURCE3 17 1.1525
angle_coeff @angle:c2-c3-h2 harmonic 46.84 111.19 # SOURCE4 17 0.8311
angle_coeff @angle:c2-c3-hc harmonic 47.03 110.49 # SOURCE3 159 0.7479
angle_coeff @angle:c2-c3-hx harmonic 46.83 111.45 # SOURCE4 20 0.9004
angle_coeff @angle:c2-c3-n2 harmonic 67.09 108.99 # SOURCE4 10 1.2025
angle_coeff @angle:c2-c3-n3 harmonic 66.47 111.52 # SOURCE4 158 1.4012
angle_coeff @angle:c2-c3-n harmonic 66.73 111.38 # SOURCE4 67 1.7559
angle_coeff @angle:c2-c3-na harmonic 66.24 113.30 # SOURCE4 27 1.2945
angle_coeff @angle:c2-c3-nh harmonic 67.10 110.27 # SOURCE4 56 1.8018
angle_coeff @angle:c2-c3-oh harmonic 68.18 110.21 # SOURCE4 220 1.4197
angle_coeff @angle:c2-c3-os harmonic 68.45 108.48 # SOURCE4 204 1.6082
angle_coeff @angle:c2-c3-s4 harmonic 62.57 109.73 # SOURCE4 6 0.1722
angle_coeff @angle:c2-c3-ss harmonic 63.62 104.97 # SOURCE3 2 2.2248
angle_coeff @angle:c3-c3-c3 harmonic 63.21 110.63 # SOURCE3 507 2.7845
angle_coeff @angle:c3-c3-ca harmonic 63.25 112.09 # SOURCE4 3859 1.5523
angle_coeff @angle:c3-c3-cc harmonic 63.58 111.89 # CORR 700
angle_coeff @angle:c3-c3-cd harmonic 63.58 111.89 # CORR 700
angle_coeff @angle:c3-c3-ce harmonic 63.70 111.06 # CORR 490
angle_coeff @angle:c3-c3-cf harmonic 63.70 111.06 # CORR 490
angle_coeff @angle:c3-c3-cl harmonic 57.85 110.33 # SOURCE3 20 1.1495
angle_coeff @angle:c3-c3-cx harmonic 63.30 111.82 # SOURCE4 179 2.4814
angle_coeff @angle:c3-c3-cy harmonic 63.63 109.62 # SOURCE3 5 2.0747
angle_coeff @angle:c3-c3-f harmonic 66.22 109.41 # SOURCE3 18 1.1878
angle_coeff @angle:c3-c3-h1 harmonic 46.36 110.07 # SOURCE3 457 1.1542
angle_coeff @angle:c3-c3-h2 harmonic 46.02 111.59 # SOURCE3 8 1.1217
angle_coeff @angle:c3-c3-hc harmonic 46.37 110.05 # SOURCE3 2092 0.6991
angle_coeff @angle:c3-c3-hx harmonic 46.02 111.74 # SOURCE3 15 1.2365
angle_coeff @angle:c3-c3-i harmonic 58.48 110.96 # SOURCE3 2 0.0000
angle_coeff @angle:c3-c3-n1 harmonic 66.64 108.86 # SOURCE4 9 0.8093
angle_coeff @angle:c3-c3-n2 harmonic 66.40 109.16 # SOURCE3 8 1.4079
angle_coeff @angle:c3-c3-n3 harmonic 66.18 110.38 # SOURCE3 69 2.9054
angle_coeff @angle:c3-c3-n4 harmonic 64.45 114.32 # SOURCE4 567 2.4412
angle_coeff @angle:c3-c3-n harmonic 65.85 112.13 # SOURCE3 31 2.0700
angle_coeff @angle:c3-c3-na harmonic 65.73 112.81 # SOURCE4 595 1.5050
angle_coeff @angle:c3-c3-nh harmonic 66.39 110.45 # SOURCE4 1514 1.3881
angle_coeff @angle:c3-c3-no harmonic 65.21 109.27 # SOURCE4 25 1.1817
angle_coeff @angle:c3-c3-o harmonic 68.59 112.97 # SOURCE4 14 1.0277
angle_coeff @angle:c3-c3-oh harmonic 67.72 109.43 # SOURCE3 48 1.5023
angle_coeff @angle:c3-c3-os harmonic 67.78 108.42 # SOURCE3 122 1.6759
angle_coeff @angle:c3-c3-p3 harmonic 76.46 113.19 # SOURCE4 15 0.2974
angle_coeff @angle:c3-c3-p5 harmonic 77.70 112.32 # SOURCE4 106 1.1753
angle_coeff @angle:c3-c3-s4 harmonic 62.16 110.07 # SOURCE4 38 0.8510
angle_coeff @angle:c3-c3-s6 harmonic 62.98 110.00 # SOURCE4 152 1.4278
angle_coeff @angle:c3-c3-sh harmonic 60.98 113.02 # SOURCE4 80 1.3442
angle_coeff @angle:c3-c3-ss harmonic 61.10 112.69 # SOURCE3 24 2.1842
angle_coeff @angle:c3-c3-sy harmonic 62.81 109.91 # SOURCE4 22 0.9248
angle_coeff @angle:ca-c3-ca harmonic 63.66 112.26 # SOURCE4 385 1.7047
angle_coeff @angle:ca-c3-cc harmonic 63.92 112.38 # CORR 69
angle_coeff @angle:ca-c3-cd harmonic 63.92 112.38 # CORR 69
angle_coeff @angle:ca-c3-ce harmonic 63.81 112.33 # SOURCE4 51 1.1929
angle_coeff @angle:ca-c3-cl harmonic 57.85 111.31 # SOURCE4 16 0.8077
angle_coeff @angle:ca-c3-cx harmonic 63.69 112.10 # SOURCE4 5 2.1117
angle_coeff @angle:ca-c3-f harmonic 66.14 111.76 # SOURCE4 449 0.3492
angle_coeff @angle:ca-c3-h1 harmonic 46.78 110.95 # SOURCE3 12 1.1170
angle_coeff @angle:ca-c3-h2 harmonic 47.03 109.66 # SOURCE4 29 1.2184
angle_coeff @angle:ca-c3-hc harmonic 46.96 110.15 # SOURCE3 47 1.2602
angle_coeff @angle:ca-c3-hx harmonic 46.69 111.44 # SOURCE4 33 0.4691
angle_coeff @angle:ca-c3-n2 harmonic 65.92 112.49 # SOURCE4 22 1.1043
angle_coeff @angle:ca-c3-n3 harmonic 66.18 112.13 # SOURCE4 387 1.2309
angle_coeff @angle:ca-c3-n4 harmonic 64.87 114.54 # SOURCE4 22 2.3986
angle_coeff @angle:ca-c3-n harmonic 66.29 112.43 # SOURCE4 201 1.5133
angle_coeff @angle:ca-c3-na harmonic 66.27 112.81 # SOURCE4 104 1.5807
angle_coeff @angle:ca-c3-nc harmonic 68.20 106.51 # SOURCE3 1 0.0000
angle_coeff @angle:ca-c3-nd harmonic 68.20 106.51 # SOURCE3 1 same_as_ca-c3-nc
angle_coeff @angle:ca-c3-nh harmonic 66.64 111.41 # SOURCE4 147 1.0074
angle_coeff @angle:ca-c3-oh harmonic 67.94 110.55 # SOURCE4 348 1.2310
angle_coeff @angle:ca-c3-os harmonic 68.19 108.89 # SOURCE4 411 1.0102
angle_coeff @angle:ca-c3-p5 harmonic 77.64 113.41 # SOURCE4 19 1.4444
angle_coeff @angle:ca-c3-s6 harmonic 62.87 111.36 # SOURCE4 15 1.4775
angle_coeff @angle:ca-c3-ss harmonic 61.90 110.66 # SOURCE4 78 1.4797
angle_coeff @angle:ca-c3-sx harmonic 62.16 110.80 # SOURCE4 16 0.5396
angle_coeff @angle:c-c3-c1 harmonic 64.56 112.64 # SOURCE4 11 1.0678
angle_coeff @angle:c-c3-c2 harmonic 64.14 111.32 # SOURCE4 92 1.8522
angle_coeff @angle:c-c3-c3 harmonic 63.79 110.53 # SOURCE3 62 1.9636
angle_coeff @angle:c-c3-c harmonic 64.06 111.61 # SOURCE4 151 2.1872
angle_coeff @angle:c-c3-ca harmonic 64.13 110.99 # SOURCE4 481 1.7257
angle_coeff @angle:c-c3-cc harmonic 63.89 112.89 # CORR 104
angle_coeff @angle:cc-c3-cc harmonic 64.61 111.05 # CORR 19
angle_coeff @angle:cc-c3-cd harmonic 67.30 102.35 # SOURCE3 1 0.0000
angle_coeff @angle:cc-c3-cx harmonic 63.85 112.55 # SOURCE4 5 1.4317
angle_coeff @angle:c-c3-cd harmonic 63.89 112.89 # CORR 104
angle_coeff @angle:c-c3-ce harmonic 64.02 111.98 # SOURCE4 16 2.1388
angle_coeff @angle:cc-c3-f harmonic 66.70 111.22 # CORR 69
angle_coeff @angle:cc-c3-h1 harmonic 47.03 111.62 # SOURCE3 20 1.0215
angle_coeff @angle:cc-c3-hc harmonic 47.20 110.86 # SOURCE3 85 1.0276
angle_coeff @angle:cc-c3-hx harmonic 47.17 111.02 # SOURCE4 9 0.7503
angle_coeff @angle:c-c3-cl harmonic 57.94 111.16 # SOURCE4 41 1.2257
angle_coeff @angle:cc-c3-n2 harmonic 66.85 110.47 # SOURCE4 11 0.5153
angle_coeff @angle:cc-c3-n3 harmonic 66.79 111.17 # CORR 111
angle_coeff @angle:cc-c3-n4 harmonic 64.88 115.58 # SOURCE4 6 1.1723
angle_coeff @angle:cc-c3-n harmonic 66.84 111.71 # CORR 32
angle_coeff @angle:cc-c3-na harmonic 66.43 113.39 # SOURCE4 8 0.8010
angle_coeff @angle:cc-c3-nc harmonic 68.37 107.04 # SOURCE3 2 0.0000
angle_coeff @angle:cc-c3-nh harmonic 66.68 112.38 # CORR 21
angle_coeff @angle:cc-c3-oh harmonic 68.13 111.10 # CORR 116
angle_coeff @angle:cc-c3-os harmonic 68.51 109.01 # CORR 91
angle_coeff @angle:cc-c3-p5 harmonic 76.89 116.23 # SOURCE4 6 0.7766
angle_coeff @angle:cc-c3-sh harmonic 61.11 114.02 # SOURCE3 1 same_as_cd-c3-sh
angle_coeff @angle:cc-c3-ss harmonic 61.95 111.06 # CORR 43
angle_coeff @angle:c-c3-cx harmonic 64.08 111.09 # SOURCE4 9 1.2357
angle_coeff @angle:cd-c3-cd harmonic 64.61 111.05 # CORR 19
angle_coeff @angle:cd-c3-f harmonic 66.70 111.22 # CORR 69
angle_coeff @angle:cd-c3-h1 harmonic 47.03 111.62 # SOURCE3 20 1.0215
angle_coeff @angle:cd-c3-hc harmonic 47.20 110.86 # SOURCE3 85 1.0276
angle_coeff @angle:cd-c3-n3 harmonic 66.79 111.17 # CORR 111
angle_coeff @angle:cd-c3-n harmonic 66.84 111.71 # CORR 32
angle_coeff @angle:cd-c3-nd harmonic 68.37 107.04 # SOURCE3 2 same_as_cc-c3-nc
angle_coeff @angle:cd-c3-nh harmonic 66.68 112.38 # CORR 21
angle_coeff @angle:cd-c3-oh harmonic 68.13 111.10 # CORR 116
angle_coeff @angle:cd-c3-os harmonic 68.51 109.01 # CORR 91
angle_coeff @angle:cd-c3-sh harmonic 61.11 114.02 # SOURCE3 1 0.0000
angle_coeff @angle:cd-c3-ss harmonic 61.95 111.06 # CORR 43
angle_coeff @angle:ce-c3-ce harmonic 64.24 111.44 # SOURCE4 18 0.3695
angle_coeff @angle:ce-c3-cy harmonic 66.33 102.85 # CORR 55
angle_coeff @angle:ce-c3-h1 harmonic 47.30 109.59 # CORR 119
angle_coeff @angle:ce-c3-hc harmonic 47.00 110.98 # SOURCE3 27 0.1559
angle_coeff @angle:ce-c3-n3 harmonic 66.45 111.83 # CORR 28
angle_coeff @angle:ce-c3-n harmonic 67.09 110.41 # SOURCE4 6 1.1405
angle_coeff @angle:ce-c3-oh harmonic 68.00 111.05 # SOURCE4 17 1.5159
angle_coeff @angle:ce-c3-os harmonic 68.64 108.10 # SOURCE4 16 1.9583
angle_coeff @angle:ce-c3-ss harmonic 61.87 111.10 # SOURCE4 7 2.0156
angle_coeff @angle:c-c3-f harmonic 66.82 109.98 # SOURCE4 38 0.9895
angle_coeff @angle:cf-c3-cy harmonic 66.33 102.85 # CORR 55
angle_coeff @angle:cf-c3-h1 harmonic 47.30 109.59 # CORR 119
angle_coeff @angle:cf-c3-hc harmonic 47.00 110.98 # SOURCE3 27 same_as_ce-c3-hc
angle_coeff @angle:cf-c3-n3 harmonic 66.45 111.83 # CORR 28
angle_coeff @angle:c-c3-h1 harmonic 47.63 107.66 # SOURCE3 66 1.4015
angle_coeff @angle:c-c3-h2 harmonic 47.16 109.69 # SOURCE4 38 1.0614
angle_coeff @angle:c-c3-hc harmonic 47.20 109.68 # SOURCE3 614 0.6426
angle_coeff @angle:c-c3-hx harmonic 47.23 109.54 # SOURCE4 47 0.6627
angle_coeff @angle:cl-c3-cl harmonic 54.23 111.03 # SOURCE2 6 1.1324
angle_coeff @angle:cl-c3-f harmonic 59.15 109.02 # SOURCE4 15 0.3609
angle_coeff @angle:cl-c3-h1 harmonic 40.66 105.93 # SOURCE3 19 1.1883
angle_coeff @angle:cl-c3-h2 harmonic 40.44 107.14 # SOURCE4 50 0.5973
angle_coeff @angle:cl-c3-hc harmonic 40.33 107.65 # SOURCE2 2 2.2500
angle_coeff @angle:cl-c3-os harmonic 60.38 111.40 # SOURCE4 8 0.8275
angle_coeff @angle:cl-c3-ss harmonic 57.60 112.94 # SOURCE4 10 1.4625
angle_coeff @angle:c-c3-n2 harmonic 66.92 109.55 # SOURCE4 55 1.4579
angle_coeff @angle:c-c3-n3 harmonic 66.59 111.14 # SOURCE4 629 1.6673
angle_coeff @angle:c-c3-n4 harmonic 65.07 114.21 # SOURCE4 27 1.5388
angle_coeff @angle:c-c3-n harmonic 66.67 111.56 # SOURCE3 28 1.7981
angle_coeff @angle:c-c3-na harmonic 66.81 111.37 # SOURCE4 31 1.6229
angle_coeff @angle:c-c3-nh harmonic 67.36 109.43 # SOURCE4 42 1.7022
angle_coeff @angle:c-c3-oh harmonic 68.65 108.70 # SOURCE4 299 1.3415
angle_coeff @angle:c-c3-os harmonic 68.03 109.82 # SOURCE3 10 2.0612
angle_coeff @angle:c-c3-p5 harmonic 78.76 110.41 # SOURCE4 15 2.2683
angle_coeff @angle:c-c3-s6 harmonic 63.26 110.22 # SOURCE4 5 2.0076
angle_coeff @angle:c-c3-sh harmonic 62.46 108.82 # SOURCE4 12 0.8354
angle_coeff @angle:c-c3-ss harmonic 61.70 111.58 # SOURCE3 5 1.9506
angle_coeff @angle:cx-c3-cx harmonic 63.53 112.58 # SOURCE4 7 1.2211
angle_coeff @angle:cx-c3-h1 harmonic 47.04 109.64 # SOURCE4 175 0.8822
angle_coeff @angle:cx-c3-hc harmonic 46.92 110.20 # SOURCE4 356 0.8798
angle_coeff @angle:cx-c3-hx harmonic 46.38 112.81 # SOURCE4 12 0.0977
angle_coeff @angle:cx-c3-n3 harmonic 65.83 113.22 # SOURCE4 33 1.3978
angle_coeff @angle:cx-c3-n4 harmonic 68.88 101.51 # SOURCE4 12 0.0760
angle_coeff @angle:cx-c3-n harmonic 66.22 112.59 # SOURCE4 22 0.8034
angle_coeff @angle:cx-c3-oh harmonic 68.10 109.97 # SOURCE4 25 1.3176
angle_coeff @angle:cx-c3-os harmonic 68.40 108.16 # SOURCE4 26 1.0162
angle_coeff @angle:cy-c3-h1 harmonic 47.00 107.88 # SOURCE4 162 0.9624
angle_coeff @angle:cy-c3-hc harmonic 46.51 110.17 # SOURCE3 16 0.5693
angle_coeff @angle:cy-c3-n3 harmonic 65.63 112.72 # SOURCE4 7 1.0639
angle_coeff @angle:cy-c3-oh harmonic 67.22 111.56 # SOURCE4 138 0.5051
angle_coeff @angle:cy-c3-os harmonic 68.45 106.79 # SOURCE4 5 1.0955
angle_coeff @angle:f-c3-f harmonic 71.26 107.16 # SOURCE2 10 1.1324
angle_coeff @angle:f-c3-h1 harmonic 51.57 107.85 # SOURCE3 14 0.9537
angle_coeff @angle:f-c3-h2 harmonic 51.36 108.41 # SOURCE3 6 0.5081
angle_coeff @angle:f-c3-h3 harmonic 51.05 110.01 # SOURCE4 19 0.6811
angle_coeff @angle:f-c3-hc harmonic 51.33 108.92 # SOURCE2 5 3.0534
angle_coeff @angle:f-c3-n2 harmonic 69.23 110.40 # SOURCE2 3 2.6470
angle_coeff @angle:f-c3-os harmonic 70.66 110.61 # SOURCE4 45 1.1755
angle_coeff @angle:f-c3-p5 harmonic 80.63 107.25 # SOURCE4 11 1.1735
angle_coeff @angle:f-c3-s6 harmonic 64.18 109.67 # SOURCE4 24 0.4116
angle_coeff @angle:f-c3-ss harmonic 62.13 111.89 # SOURCE4 11 0.9479
angle_coeff @angle:h1-c3-h1 harmonic 39.18 109.55 # SOURCE3 1888 1.1205
angle_coeff @angle:h1-c3-n1 harmonic 49.99 107.31 # HF/6-31G* 1
angle_coeff @angle:h1-c3-n2 harmonic 49.26 109.61 # SOURCE3 63 1.0452
angle_coeff @angle:h1-c3-n3 harmonic 49.39 109.92 # SOURCE3 313 1.1810
angle_coeff @angle:h1-c3-n harmonic 49.82 109.32 # SOURCE3 91 1.0325
angle_coeff @angle:h1-c3-na harmonic 49.90 109.45 # SOURCE3 53 0.9555
angle_coeff @angle:h1-c3-nc harmonic 50.11 108.57 # SOURCE3 6 0.0764
angle_coeff @angle:h1-c3-nd harmonic 50.11 108.57 # SOURCE3 6 same_as_h1-c3-nc
angle_coeff @angle:h1-c3-nh harmonic 49.73 109.96 # SOURCE3 70 0.7000
angle_coeff @angle:h1-c3-no harmonic 48.66 105.15 # SOURCE4 16 0.4950
angle_coeff @angle:h1-c3-o harmonic 52.53 117.19 # SOURCE3 6 0.0003
angle_coeff @angle:h1-c3-oh harmonic 50.97 109.88 # SOURCE3 63 1.3172
angle_coeff @angle:h1-c3-os harmonic 50.84 108.82 # SOURCE3 541 0.8042
angle_coeff @angle:h1-c3-p5 harmonic 54.25 107.99 # SOURCE4 72 1.1862
angle_coeff @angle:h1-c3-s4 harmonic 42.89 108.66 # SOURCE3 201 0.3834
angle_coeff @angle:h1-c3-s harmonic 41.18 112.60 # SOURCE3 6 0.0026
angle_coeff @angle:h1-c3-s6 harmonic 43.86 108.11 # SOURCE3 160 0.5518
angle_coeff @angle:h1-c3-sh harmonic 42.40 109.21 # SOURCE3 22 1.2028
angle_coeff @angle:h1-c3-ss harmonic 42.40 109.34 # SOURCE3 356 0.6573
angle_coeff @angle:h1-c3-sx harmonic 42.83 108.69 # SOURCE3 90 0.2749
angle_coeff @angle:h1-c3-sy harmonic 43.65 108.09 # SOURCE3 93 0.2556
angle_coeff @angle:h2-c3-h2 harmonic 39.00 109.19 # SOURCE3 29 3.1352
angle_coeff @angle:h2-c3-i harmonic 38.69 104.99 # SOURCE3 2 0.0000
angle_coeff @angle:h2-c3-n2 harmonic 49.08 110.22 # SOURCE3 6 0.2133
angle_coeff @angle:h2-c3-n3 harmonic 49.37 109.80 # SOURCE4 189 1.2893
angle_coeff @angle:h2-c3-n harmonic 50.22 107.38 # SOURCE4 258 1.3140
angle_coeff @angle:h2-c3-na harmonic 50.27 107.66 # SOURCE3 6 1.4096
angle_coeff @angle:h2-c3-nc harmonic 49.85 109.47 # SOURCE3 10 0.3133
angle_coeff @angle:h2-c3-nd harmonic 49.85 109.47 # SOURCE3 10 same_as_h2-c3-nc
angle_coeff @angle:h2-c3-nh harmonic 49.60 110.33 # SOURCE4 102 1.0596
angle_coeff @angle:h2-c3-no harmonic 47.83 108.69 # SOURCE3 4 0.0000
angle_coeff @angle:h2-c3-o harmonic 54.38 108.97 # SOURCE3 4 0.0000
angle_coeff @angle:h2-c3-oh harmonic 51.29 108.30 # SOURCE3 6 0.5715
angle_coeff @angle:h2-c3-os harmonic 50.84 108.58 # SOURCE3 44 1.2773
angle_coeff @angle:h2-c3-s4 harmonic 42.93 108.58 # SOURCE3 8 0.2408
angle_coeff @angle:h2-c3-s harmonic 42.32 106.75 # SOURCE3 4 0.0000
angle_coeff @angle:h2-c3-s6 harmonic 44.20 106.54 # SOURCE4 27 0.9934
angle_coeff @angle:h2-c3-sh harmonic 42.68 107.87 # SOURCE3 6 0.4376
angle_coeff @angle:h2-c3-ss harmonic 42.34 109.75 # SOURCE3 10 0.3442
angle_coeff @angle:h3-c3-n3 harmonic 49.73 108.39 # SOURCE4 12 1.7932
angle_coeff @angle:h3-c3-nc harmonic 49.91 109.37 # SOURCE3 1 0.0000
angle_coeff @angle:h3-c3-nd harmonic 49.91 109.37 # SOURCE3 1 same_as_h3-c3-nc
angle_coeff @angle:h3-c3-nh harmonic 49.53 110.78 # SOURCE4 5 1.5993
angle_coeff @angle:h3-c3-os harmonic 50.09 112.03 # SOURCE4 17 1.0957
angle_coeff @angle:h3-c3-ss harmonic 42.42 109.27 # SOURCE4 8 0.8367
angle_coeff @angle:hc-c3-hc harmonic 39.43 108.35 # SOURCE3 2380 0.9006
angle_coeff @angle:hc-c3-i harmonic 38.62 104.99 # SOURCE3 1
angle_coeff @angle:hc-c3-n2 harmonic 49.29 109.50 # SOURCE3 1
angle_coeff @angle:hc-c3-n3 harmonic 49.42 109.80 # SOURCE2 5 2.0070
angle_coeff @angle:hc-c3-n4 harmonic 49.01 107.90 # SOURCE3 1
angle_coeff @angle:hc-c3-n harmonic 49.78 109.50 # SOURCE3 1
angle_coeff @angle:hc-c3-na harmonic 49.90 109.50 # SOURCE3 1
angle_coeff @angle:hc-c3-nh harmonic 49.38 111.54 # SOURCE3 1
angle_coeff @angle:hc-c3-no harmonic 48.19 107.20 # SOURCE2 1 0.0000
angle_coeff @angle:hc-c3-oh harmonic 51.07 109.50 # SOURCE3 1
angle_coeff @angle:hc-c3-os harmonic 50.87 108.70 # SOURCE2 13 2.3739
angle_coeff @angle:hc-c3-p2 harmonic 52.37 110.18 # SOURCE3 25 0.4057
angle_coeff @angle:hc-c3-p3 harmonic 52.73 110.14 # SOURCE3 325 0.5126
angle_coeff @angle:hc-c3-p4 harmonic 53.21 109.59 # SOURCE3 87 0.3196
angle_coeff @angle:hc-c3-p5 harmonic 53.84 109.64 # SOURCE3 69 0.8112
angle_coeff @angle:hc-c3-px harmonic 53.46 109.74 # SOURCE3 84 0.3474
angle_coeff @angle:hc-c3-py harmonic 53.86 109.54 # SOURCE3 39 0.1999
angle_coeff @angle:hc-c3-s4 harmonic 43.12 107.50 # SOURCE2 1 0.0000
angle_coeff @angle:hc-c3-s6 harmonic 43.84 108.20 # SOURCE3 1
angle_coeff @angle:hc-c3-sh harmonic 42.66 107.87 # SOURCE2 3 2.0981
angle_coeff @angle:hc-c3-ss harmonic 42.51 108.76 # SOURCE2 3 1.6891
angle_coeff @angle:hx-c3-hx harmonic 39.04 110.74 # SOURCE3 137 0.5531
angle_coeff @angle:hx-c3-n4 harmonic 49.02 107.91 # SOURCE3 148 0.5899
angle_coeff @angle:i-c3-i harmonic 61.98 113.12 # SOURCE3 1 0.0000
angle_coeff @angle:n1-c3-n1 harmonic 71.09 105.07 # HF/6-31G* 1
angle_coeff @angle:n2-c3-n2 harmonic 69.89 107.70 # SOURCE3 1 0.0000
angle_coeff @angle:n2-c3-nh harmonic 69.26 111.06 # SOURCE4 5 0.7868
angle_coeff @angle:n2-c3-oh harmonic 70.15 111.82 # SOURCE4 10 0.3451
angle_coeff @angle:n2-c3-os harmonic 70.04 111.23 # SOURCE4 6 1.0463
angle_coeff @angle:n3-c3-n3 harmonic 69.61 109.59 # SOURCE4 27 1.8125
angle_coeff @angle:n3-c3-nc harmonic 68.79 113.29 # SOURCE3 1 0.0000
angle_coeff @angle:n3-c3-nd harmonic 68.79 113.29 # SOURCE3 1 same_as_n3-c3-nc
angle_coeff @angle:n3-c3-nh harmonic 69.74 110.08 # SOURCE4 21 1.0686
angle_coeff @angle:n3-c3-oh harmonic 70.71 110.63 # SOURCE4 20 1.0177
angle_coeff @angle:n3-c3-os harmonic 71.15 108.33 # SOURCE4 17 1.9545
angle_coeff @angle:n3-c3-p5 harmonic 81.55 109.51 # SOURCE4 10 1.5002
angle_coeff @angle:n3-c3-ss harmonic 64.75 107.73 # SOURCE4 18 1.7621
angle_coeff @angle:n4-c3-n4 harmonic 67.13 113.32 # SOURCE3 1 0.0000
angle_coeff @angle:na-c3-na harmonic 69.06 113.49 # SOURCE3 1 0.0000
angle_coeff @angle:na-c3-os harmonic 71.27 109.06 # SOURCE4 170 0.5450
angle_coeff @angle:nc-c3-nc harmonic 69.96 110.61 # SOURCE3 1 0.0000
angle_coeff @angle:nc-c3-nh harmonic 69.34 112.43 # SOURCE3 1 0.0000
angle_coeff @angle:nc-c3-os harmonic 69.28 115.41 # SOURCE3 3 1.0288
angle_coeff @angle:nd-c3-nd harmonic 69.96 110.61 # SOURCE3 1 same_as_nc-c3-nc
angle_coeff @angle:nd-c3-nh harmonic 69.34 112.43 # SOURCE3 1 same_as_nc-c3-nh
angle_coeff @angle:nd-c3-os harmonic 69.28 115.41 # SOURCE3 3 same_as_nc-c3-os
angle_coeff @angle:nh-c3-nh harmonic 71.41 105.87 # SOURCE3 1 0.0000
angle_coeff @angle:nh-c3-oh harmonic 70.47 112.36 # SOURCE4 12 0.7775
angle_coeff @angle:nh-c3-os harmonic 71.26 108.93 # SOURCE4 17 1.3775
angle_coeff @angle:nh-c3-p5 harmonic 80.62 112.50 # SOURCE4 5 1.7371
angle_coeff @angle:nh-c3-ss harmonic 64.53 108.88 # SOURCE4 8 2.1521
angle_coeff @angle:n-c3-n2 harmonic 68.82 112.34 # SOURCE4 5 1.1443
angle_coeff @angle:n-c3-n3 harmonic 69.39 111.03 # SOURCE4 15 1.8216
angle_coeff @angle:n-c3-n harmonic 68.78 113.81 # SOURCE3 1 0.0000
angle_coeff @angle:n-c3-nh harmonic 70.54 108.34 # SOURCE4 11 2.1727
angle_coeff @angle:n-c3-oh harmonic 70.36 112.54 # SOURCE4 31 1.1295
angle_coeff @angle:no-c3-no harmonic 68.37 104.47 # SOURCE4 5 0.9726
angle_coeff @angle:n-c3-os harmonic 71.14 109.16 # SOURCE4 153 0.8778
angle_coeff @angle:n-c3-p5 harmonic 81.48 110.05 # SOURCE4 5 1.2965
angle_coeff @angle:oh-c3-oh harmonic 72.71 109.23 # SOURCE4 8 1.4978
angle_coeff @angle:oh-c3-os harmonic 72.38 109.21 # SOURCE4 85 1.1964
angle_coeff @angle:oh-c3-p5 harmonic 82.83 108.86 # SOURCE4 33 1.2025
angle_coeff @angle:oh-c3-sh harmonic 63.30 115.46 # SOURCE3 1 0.0000
angle_coeff @angle:o-c3-o harmonic 74.43 122.30 # SOURCE3 1 0.0000
angle_coeff @angle:os-c3-os harmonic 71.72 110.24 # SOURCE3 17 2.1340
angle_coeff @angle:os-c3-p5 harmonic 82.86 108.36 # SOURCE4 22 2.1937
angle_coeff @angle:os-c3-ss harmonic 65.36 107.98 # SOURCE4 20 1.7464
angle_coeff @angle:p2-c3-p2 harmonic 98.16 110.48 # SOURCE3 1 0.0000
angle_coeff @angle:p3-c3-p3 harmonic 98.88 110.16 # SOURCE3 1 0.0000
angle_coeff @angle:p5-c3-p5 harmonic 100.59 110.13 # SOURCE4 33 2.4116
angle_coeff @angle:p5-c3-ss harmonic 78.88 111.30 # SOURCE4 5 2.0560
angle_coeff @angle:s4-c3-s4 harmonic 62.40 112.29 # SOURCE3 2 1.2724
angle_coeff @angle:s4-c3-s6 harmonic 62.62 113.52 # SOURCE3 1
angle_coeff @angle:s6-c3-s6 harmonic 63.71 111.75 # SOURCE3 1 0.0000
angle_coeff @angle:sh-c3-sh harmonic 60.82 116.26 # SOURCE3 1 0.0000
angle_coeff @angle:sh-c3-ss harmonic 62.33 110.73 # SOURCE3 1
angle_coeff @angle:s-c3-s harmonic 58.31 123.35 # SOURCE3 1 0.0000
angle_coeff @angle:ss-c3-ss harmonic 62.40 110.57 # SOURCE4 15 1.4311
angle_coeff @angle:br-ca-br harmonic 67.31 117.60 # SOURCE3 1
angle_coeff @angle:br-ca-ca harmonic 63.48 118.13 # SOURCE3 8 0.6041
angle_coeff @angle:c1-ca-c1 harmonic 64.70 120.00 # SOURCE3 1
angle_coeff @angle:c1-ca-ca harmonic 65.86 120.00 # SOURCE3 1
angle_coeff @angle:c2-ca-c2 harmonic 62.95 120.00 # SOURCE3 1
angle_coeff @angle:c2-ca-ca harmonic 64.69 120.60 # SOURCE3 1
angle_coeff @angle:c3-ca-c2 harmonic 62.24 120.00 # SOURCE3 1
angle_coeff @angle:c3-ca-c3 harmonic 62.41 116.80 # SOURCE3 1
angle_coeff @angle:c3-ca-ca harmonic 63.84 120.63 # SOURCE3 60 0.7175
angle_coeff @angle:c3-ca-cp harmonic 63.64 120.63 # CORR 120
angle_coeff @angle:c3-ca-cq harmonic 63.64 120.63 # CORR 120
angle_coeff @angle:c3-ca-na harmonic 66.59 118.78 # SOURCE4 59 1.1184
angle_coeff @angle:c3-ca-nb harmonic 67.33 116.66 # SOURCE4 408 0.9380
angle_coeff @angle:ca-ca-ca harmonic 67.18 119.97 # SOURCE3 1969 0.3480
angle_coeff @angle:ca-ca-cc harmonic 65.99 120.10 # SOURCE3 103 0.3451
angle_coeff @angle:ca-ca-cd harmonic 65.99 120.10 # SOURCE3 103 0.3451
angle_coeff @angle:ca-ca-ce harmonic 64.88 120.66 # SOURCE3 14 0.1564
angle_coeff @angle:ca-ca-cf harmonic 64.88 120.66 # SOURCE3 14 same_as_ca-ca-ce
angle_coeff @angle:ca-ca-cg harmonic 65.90 120.05 # SOURCE3 6 0.2397
angle_coeff @angle:ca-ca-ch harmonic 65.90 120.05 # SOURCE3 6 same_as_ca-ca-cg
angle_coeff @angle:ca-ca-cl harmonic 58.52 119.40 # SOURCE4 2459 0.5283
angle_coeff @angle:ca-ca-cp harmonic 67.16 119.07 # CORR 28
angle_coeff @angle:ca-ca-cq harmonic 67.16 119.07 # CORR 28
angle_coeff @angle:ca-ca-cx harmonic 64.48 120.83 # SOURCE4 71 1.3062
angle_coeff @angle:ca-ca-cy harmonic 63.77 120.86 # SOURCE4 17 2.0287
angle_coeff @angle:ca-ca-f harmonic 67.51 118.95 # SOURCE4 967 0.3369
angle_coeff @angle:ca-ca-h4 harmonic 48.24 121.09 # SOURCE3 57 1.4696
angle_coeff @angle:ca-ca-ha harmonic 48.46 120.01 # SOURCE3 2980 0.2511
angle_coeff @angle:ca-ca-i harmonic 58.59 118.47 # SOURCE3 10 0.6181
angle_coeff @angle:ca-ca-n1 harmonic 68.92 118.50 # HF/6-31G* 1
angle_coeff @angle:ca-ca-n2 harmonic 70.95 119.57 # SOURCE3 1
angle_coeff @angle:ca-ca-n4 harmonic 67.28 118.41 # SOURCE3 6 0.1691
angle_coeff @angle:ca-ca-n harmonic 67.97 119.89 # SOURCE3 18 0.2095
angle_coeff @angle:ca-ca-na harmonic 70.21 118.34 # SOURCE3 54 3.6168
angle_coeff @angle:ca-ca-nb harmonic 69.16 122.63 # SOURCE3 83 1.1249
angle_coeff @angle:ca-ca-nc harmonic 70.14 119.72 # SOURCE3 22 3.3994
angle_coeff @angle:ca-ca-nd harmonic 70.14 119.72 # SOURCE3 22 3.3994
angle_coeff @angle:ca-ca-ne harmonic 67.74 119.88 # SOURCE3 24 0.3637
angle_coeff @angle:ca-ca-nf harmonic 67.74 119.88 # SOURCE3 24 0.3637
angle_coeff @angle:ca-ca-nh harmonic 69.34 120.13 # SOURCE3 193 0.6341
angle_coeff @angle:ca-ca-no harmonic 66.88 119.54 # SOURCE3 10 1.3187
angle_coeff @angle:ca-ca-o harmonic 71.85 123.29 # SOURCE4 11 1.2526
angle_coeff @angle:ca-ca-oh harmonic 69.85 119.94 # SOURCE3 14 0.1627
angle_coeff @angle:ca-ca-os harmonic 69.79 119.20 # SOURCE3 52 0.5240
angle_coeff @angle:ca-ca-p2 harmonic 77.87 114.36 # SOURCE3 1
angle_coeff @angle:ca-ca-p3 harmonic 76.34 120.73 # SOURCE3 6 0.1273
angle_coeff @angle:ca-ca-p4 harmonic 77.11 120.30 # SOURCE3 1
angle_coeff @angle:ca-ca-p5 harmonic 77.50 120.28 # SOURCE4 5 0.0177
angle_coeff @angle:ca-ca-pe harmonic 76.26 120.45 # SOURCE3 20 0.2719
angle_coeff @angle:ca-ca-pf harmonic 76.26 120.45 # SOURCE3 20 0.2719
angle_coeff @angle:ca-ca-px harmonic 76.37 120.53 # SOURCE3 10 0.4509
angle_coeff @angle:ca-ca-py harmonic 77.43 119.98 # SOURCE3 6 0.0670
angle_coeff @angle:ca-ca-s4 harmonic 61.72 119.15 # SOURCE3 1
angle_coeff @angle:ca-ca-s6 harmonic 62.18 120.54 # SOURCE4 36 1.2154
angle_coeff @angle:ca-ca-s harmonic 62.22 122.55 # SOURCE3 4 0.0000
angle_coeff @angle:ca-ca-sh harmonic 61.32 121.78 # SOURCE4 17 1.2849
angle_coeff @angle:ca-ca-ss harmonic 62.03 119.93 # SOURCE3 16 0.3901
angle_coeff @angle:ca-ca-sx harmonic 60.68 119.18 # SOURCE3 6 0.0434
angle_coeff @angle:ca-ca-sy harmonic 61.64 119.89 # SOURCE3 24 1.8813
angle_coeff @angle:c-ca-c3 harmonic 62.61 118.06 # SOURCE3 1
angle_coeff @angle:c-ca-c harmonic 62.65 120.00 # SOURCE3 1
angle_coeff @angle:c-ca-ca harmonic 64.64 120.14 # SOURCE3 40 0.4788
angle_coeff @angle:cc-ca-cp harmonic 64.63 124.30 # SOURCE4 10 0.6423
angle_coeff @angle:cc-ca-nb harmonic 69.19 118.02 # CORR 64
angle_coeff @angle:cd-ca-nb harmonic 69.19 118.02 # CORR 64
angle_coeff @angle:ce-ca-na harmonic 67.44 119.85 # SOURCE4 9 0.7001
angle_coeff @angle:ce-ca-nb harmonic 68.24 117.59 # CORR 44
angle_coeff @angle:cf-ca-nb harmonic 68.24 117.59 # CORR 44
angle_coeff @angle:cg-ca-cp harmonic 65.26 121.53 # SOURCE4 12 0.1831
angle_coeff @angle:c-ca-ha harmonic 46.51 115.90 # SOURCE3 1
angle_coeff @angle:cl-ca-cl harmonic 54.17 118.72 # SOURCE3 1
angle_coeff @angle:cl-ca-cp harmonic 58.19 120.31 # SOURCE4 18 0.5607
angle_coeff @angle:cl-ca-nb harmonic 61.21 116.15 # SOURCE4 50 0.6047
angle_coeff @angle:c-ca-nb harmonic 67.71 117.94 # SOURCE4 91 1.0536
angle_coeff @angle:c-ca-nc harmonic 64.40 130.80 # SOURCE3 1
angle_coeff @angle:c-ca-nd harmonic 64.40 130.80 # SOURCE3 1 same_as_c-ca-nc
angle_coeff @angle:cp-ca-f harmonic 67.10 119.39 # SOURCE4 16 0.1724
angle_coeff @angle:cp-ca-h4 harmonic 48.15 120.03 # SOURCE4 27 0.4431
angle_coeff @angle:cp-ca-ha harmonic 47.94 121.08 # CORR 24
angle_coeff @angle:cp-ca-na harmonic 72.91 108.79 # SOURCE4 165 0.5166
angle_coeff @angle:cp-ca-nb harmonic 68.56 123.72 # SOURCE4 50 0.8176
angle_coeff @angle:cp-ca-nh harmonic 68.66 121.52 # SOURCE4 11 0.5438
angle_coeff @angle:cp-ca-oh harmonic 69.26 120.96 # SOURCE4 12 1.1400
angle_coeff @angle:cp-ca-ss harmonic 63.87 112.75 # SOURCE4 8 0.6216
angle_coeff @angle:cp-ca-sy harmonic 63.91 111.18 # CORR 4
angle_coeff @angle:cq-ca-ha harmonic 47.94 121.08 # CORR 24
angle_coeff @angle:cq-ca-sy harmonic 63.91 111.18 # CORR 4
angle_coeff @angle:f-ca-f harmonic 68.05 117.50 # SOURCE3 1
angle_coeff @angle:f-ca-nb harmonic 71.69 114.58 # SOURCE4 19 0.2987
angle_coeff @angle:h4-ca-n harmonic 49.48 116.02 # SOURCE3 1
angle_coeff @angle:h4-ca-na harmonic 51.88 114.65 # SOURCE3 5 1.5484
angle_coeff @angle:h4-ca-nb harmonic 51.82 115.94 # SOURCE3 52 0.7370
angle_coeff @angle:h4-ca-nc harmonic 51.46 118.36 # SOURCE3 1
angle_coeff @angle:h4-ca-nd harmonic 51.46 118.36 # SOURCE3 1 same_as_h4-ca-nc
angle_coeff @angle:h4-ca-os harmonic 52.30 111.15 # SOURCE3 1
angle_coeff @angle:h4-ca-ss harmonic 42.40 116.19 # SOURCE3 1
angle_coeff @angle:h5-ca-nb harmonic 51.76 116.35 # SOURCE3 30 0.5545
angle_coeff @angle:h5-ca-nc harmonic 50.70 122.11 # SOURCE3 1
angle_coeff @angle:h5-ca-nd harmonic 50.70 122.11 # SOURCE3 1 same_as_h5-ca-nc
angle_coeff @angle:ha-ca-n2 harmonic 52.97 116.00 # SOURCE2 1 0.0000
angle_coeff @angle:ha-ca-p2 harmonic 50.08 122.56 # SOURCE3 1
angle_coeff @angle:i-ca-i harmonic 62.29 119.28 # SOURCE3 1
angle_coeff @angle:n1-ca-n1 harmonic 70.73 117.03 # HF/6-31G* 1
angle_coeff @angle:n2-ca-n2 harmonic 75.05 120.00 # SOURCE3 1
angle_coeff @angle:n2-ca-na harmonic 73.80 119.60 # SOURCE3 1
angle_coeff @angle:n4-ca-n4 harmonic 67.65 116.82 # SOURCE3 1
angle_coeff @angle:na-ca-na harmonic 76.48 107.65 # SOURCE4 5 0.8751
angle_coeff @angle:na-ca-nb harmonic 70.60 127.07 # SOURCE4 237 1.9392
angle_coeff @angle:na-ca-nh harmonic 72.48 118.62 # SOURCE4 29 0.9759
angle_coeff @angle:nb-ca-nb harmonic 70.78 127.19 # SOURCE4 585 1.1793
angle_coeff @angle:nb-ca-nc harmonic 71.12 126.53 # CORR 22
angle_coeff @angle:nb-ca-nd harmonic 71.12 126.53 # CORR 22
angle_coeff @angle:nb-ca-nh harmonic 73.20 116.95 # SOURCE4 765 0.8040
angle_coeff @angle:nb-ca-oh harmonic 73.57 117.30 # SOURCE4 64 0.9290
angle_coeff @angle:nb-ca-os harmonic 72.54 119.66 # SOURCE4 76 0.6493
angle_coeff @angle:nb-ca-sh harmonic 64.31 117.59 # SOURCE4 15 1.4616
angle_coeff @angle:nb-ca-ss harmonic 64.10 119.30 # SOURCE4 41 1.3420
angle_coeff @angle:nc-ca-nc harmonic 70.67 128.74 # SOURCE3 1
angle_coeff @angle:nc-ca-nh harmonic 72.77 118.86 # SOURCE3 1
angle_coeff @angle:nd-ca-nd harmonic 70.67 128.74 # SOURCE3 1 same_as_nc-ca-nc
angle_coeff @angle:nd-ca-nh harmonic 72.77 118.86 # SOURCE3 1 same_as_nc-ca-nh
angle_coeff @angle:nh-ca-nh harmonic 71.40 120.98 # SOURCE3 1
angle_coeff @angle:n-ca-nc harmonic 69.66 123.86 # SOURCE3 1
angle_coeff @angle:n-ca-nd harmonic 69.66 123.86 # SOURCE3 1 same_as_n-ca-nc
angle_coeff @angle:n-ca-nh harmonic 71.29 116.16 # SOURCE3 1
angle_coeff @angle:no-ca-no harmonic 67.42 117.14 # SOURCE3 1
angle_coeff @angle:oh-ca-oh harmonic 72.63 120.00 # SOURCE3 1
angle_coeff @angle:o-ca-o harmonic 78.21 126.82 # SOURCE3 1
angle_coeff @angle:os-ca-os harmonic 74.01 113.73 # SOURCE3 1
angle_coeff @angle:p2-ca-p2 harmonic 94.48 121.20 # SOURCE3 1
angle_coeff @angle:p3-ca-p3 harmonic 95.21 121.46 # SOURCE3 1
angle_coeff @angle:p5-ca-p5 harmonic 97.33 120.00 # SOURCE3 1
angle_coeff @angle:s4-ca-s4 harmonic 64.96 105.81 # SOURCE3 1
angle_coeff @angle:s6-ca-s6 harmonic 66.03 105.81 # SOURCE3 1
angle_coeff @angle:sh-ca-sh harmonic 61.27 120.24 # SOURCE3 1
angle_coeff @angle:s-ca-s harmonic 61.42 125.14 # SOURCE3 1
angle_coeff @angle:ss-ca-ss harmonic 62.91 115.15 # SOURCE3 1
angle_coeff @angle:br-c-br harmonic 66.91 113.10 # SOURCE3 1
angle_coeff @angle:br-c-c3 harmonic 63.34 110.74 # SOURCE3 1 0.0000
angle_coeff @angle:br-c-o harmonic 63.19 121.46 # SOURCE3 5 1.6264
angle_coeff @angle:c1-c-c1 harmonic 65.09 115.32 # SOURCE3 1
angle_coeff @angle:c1-c-o harmonic 69.92 122.34 # SOURCE3 1
angle_coeff @angle:c2-c-c2 harmonic 67.17 116.78 # SOURCE3 1
angle_coeff @angle:c2-c-ha harmonic 48.65 115.95 # SOURCE3 1
angle_coeff @angle:c2-c-o harmonic 72.77 119.12 # SOURCE3 2 0.0000
angle_coeff @angle:c2-c-s harmonic 64.67 119.16 # SOURCE3 2 0.0000
angle_coeff @angle:c3-c-c3 harmonic 62.82 116.05 # SOURCE3 11 1.0986
angle_coeff @angle:c3-c-ca harmonic 62.59 118.54 # SOURCE4 240 1.3614
angle_coeff @angle:c3-c-cc harmonic 63.38 117.47 # CORR 46
angle_coeff @angle:c3-c-cd harmonic 63.38 117.47 # CORR 46
angle_coeff @angle:c3-c-ce harmonic 63.44 116.37 # CORR 233
angle_coeff @angle:c3-c-cf harmonic 63.44 116.37 # CORR 233
angle_coeff @angle:c3-c-cg harmonic 64.26 115.00 # SOURCE2 1 0.0000
angle_coeff @angle:c3-c-ch harmonic 64.26 115.00 # SOURCE2 1 same_as_c3-c-cg
angle_coeff @angle:c3-c-cl harmonic 58.18 111.99 # SOURCE3 2 0.0125
angle_coeff @angle:c3-c-f harmonic 66.93 110.70 # SOURCE2 1 0.0000
angle_coeff @angle:c3-c-h4 harmonic 46.11 114.40 # SOURCE4 57 0.4032
angle_coeff @angle:c3-c-ha harmonic 46.01 115.22 # SOURCE3 15 0.3181
angle_coeff @angle:c3-c-i harmonic 56.87 112.94 # SOURCE3 1 0.0000
angle_coeff @angle:c3-c-n2 harmonic 66.62 114.53 # SOURCE3 1
angle_coeff @angle:c3-c-n4 harmonic 64.61 112.26 # SOURCE3 2 0.0000
angle_coeff @angle:c3-c-n harmonic 67.86 115.15 # SOURCE3 153 2.7443
angle_coeff @angle:c3-c-ne harmonic 68.03 111.56 # CORR 12
angle_coeff @angle:c3-c-nf harmonic 68.03 111.56 # CORR 12
angle_coeff @angle:c3-c-o harmonic 68.03 123.11 # SOURCE3 267 3.0977
angle_coeff @angle:c3-c-oh harmonic 69.84 112.20 # SOURCE3 14 1.8324
angle_coeff @angle:c3-c-os harmonic 69.26 111.96 # SOURCE3 15 2.3072
angle_coeff @angle:c3-c-p3 harmonic 74.55 116.42 # SOURCE3 3 0.1291
angle_coeff @angle:c3-c-p5 harmonic 73.81 118.90 # SOURCE3 1
angle_coeff @angle:c3-c-pe harmonic 74.19 114.85 # SOURCE3 1 0.0000
angle_coeff @angle:c3-c-pf harmonic 74.19 114.85 # SOURCE3 1 same_as_c3-c-pe
angle_coeff @angle:c3-c-px harmonic 74.17 115.60 # SOURCE3 1 0.0000
angle_coeff @angle:c3-c-py harmonic 74.48 118.16 # SOURCE3 3 1.0735
angle_coeff @angle:c3-c-s4 harmonic 59.64 114.79 # SOURCE3 1
angle_coeff @angle:c3-c-s6 harmonic 59.65 114.72 # SOURCE3 1
angle_coeff @angle:c3-c-s harmonic 62.03 123.73 # SOURCE3 9 1.4528
angle_coeff @angle:c3-c-sh harmonic 61.97 114.21 # SOURCE3 3 2.3916
angle_coeff @angle:c3-c-ss harmonic 62.41 114.32 # SOURCE3 5 2.7478
angle_coeff @angle:c3-c-sx harmonic 59.48 113.97 # SOURCE3 3 0.0610
angle_coeff @angle:c3-c-sy harmonic 59.89 114.28 # SOURCE3 3 0.7341
angle_coeff @angle:ca-c-ca harmonic 63.03 118.58 # SOURCE4 144 2.1146
angle_coeff @angle:ca-c-cc harmonic 64.24 116.07 # CORR 257
angle_coeff @angle:ca-c-cd harmonic 64.24 116.07 # CORR 257
angle_coeff @angle:ca-c-ce harmonic 63.21 118.92 # CORR 36
angle_coeff @angle:ca-c-cf harmonic 63.21 118.92 # CORR 36
angle_coeff @angle:ca-c-h4 harmonic 46.52 115.14 # SOURCE4 30 0.7320
angle_coeff @angle:ca-c-ha harmonic 46.80 114.12 # SOURCE3 1 0.0000
angle_coeff @angle:ca-c-n harmonic 68.47 115.14 # SOURCE4 571 1.4648
angle_coeff @angle:ca-c-ne harmonic 67.74 114.39 # SOURCE4 5 0.2958
angle_coeff @angle:ca-c-o harmonic 68.67 123.44 # SOURCE3 18 2.5574
angle_coeff @angle:ca-c-oh harmonic 70.11 113.44 # SOURCE4 222 0.8421
angle_coeff @angle:ca-c-os harmonic 68.78 115.54 # SOURCE3 5 2.6708
angle_coeff @angle:ca-c-s harmonic 62.52 123.04 # SOURCE4 12 0.7935
angle_coeff @angle:ca-c-sh harmonic 61.05 118.63 # SOURCE3 1 0.0000
angle_coeff @angle:ca-c-ss harmonic 62.45 115.13 # SOURCE4 12 1.0069
angle_coeff @angle:br-cc-c harmonic 63.98 115.68 # SOURCE4 8 0.4970
angle_coeff @angle:br-cc-cc harmonic 61.82 124.89 # SOURCE4 8 1.9479
angle_coeff @angle:br-cc-cd harmonic 62.26 124.56 # SOURCE4 32 2.4696
angle_coeff @angle:br-cc-na harmonic 64.60 121.42 # SOURCE4 6 0.5507
angle_coeff @angle:c2-cc-c3 harmonic 63.27 126.11 # SOURCE3 2 0.0000
angle_coeff @angle:c2-cc-ca harmonic 65.34 124.66 # CORR 16
angle_coeff @angle:c2-cc-cc harmonic 66.24 121.77 # CORR 32
angle_coeff @angle:c2-cc-cd harmonic 69.09 117.02 # SOURCE3 2 0.0703
angle_coeff @angle:c2-cc-ha harmonic 48.69 122.72 # SOURCE3 2 0.0092
angle_coeff @angle:c2-cc-n harmonic 67.74 126.90 # SOURCE3 1 0.0000
angle_coeff @angle:c2-cc-os harmonic 70.10 120.79 # CORR 13
angle_coeff @angle:c-c-c3 harmonic 61.72 116.86 # SOURCE3 5 0.1653
angle_coeff @angle:c3-cc-ca harmonic 61.96 125.89 # CORR 127
angle_coeff @angle:c3-cc-cc harmonic 64.66 115.97 # SOURCE3 4 3.0507
angle_coeff @angle:c3-cc-cd harmonic 64.81 119.45 # SOURCE3 35 8.2040
angle_coeff @angle:c3-cc-cf harmonic 65.34 117.84 # CORR 2
angle_coeff @angle:c3-cc-ha harmonic 45.11 121.52 # SOURCE3 32 3.2091
angle_coeff @angle:c3-cc-n2 harmonic 65.80 126.87 # CORR 9
angle_coeff @angle:c3-cc-n harmonic 66.33 119.11 # CORR 68
angle_coeff @angle:c3-cc-na harmonic 65.50 122.78 # CORR 632
angle_coeff @angle:c3-cc-nc harmonic 65.90 120.94 # CORR 309
angle_coeff @angle:c3-cc-nd harmonic 66.32 122.13 # CORR 475
angle_coeff @angle:c3-cc-os harmonic 67.54 116.88 # CORR 203
angle_coeff @angle:c3-cc-ss harmonic 61.21 121.66 # CORR 171
angle_coeff @angle:c-c-c harmonic 62.30 111.68 # SOURCE3 2 6.1226
angle_coeff @angle:c-c-ca harmonic 61.73 118.34 # SOURCE4 26 1.0692
angle_coeff @angle:ca-cc-cc harmonic 67.66 111.04 # SOURCE3 9 7.9455
angle_coeff @angle:ca-cc-cd harmonic 68.23 113.51 # SOURCE3 26 7.4229
angle_coeff @angle:ca-cc-ce harmonic 62.51 127.87 # SOURCE4 11 1.7579
angle_coeff @angle:ca-cc-h4 harmonic 45.57 128.66 # SOURCE3 10 3.1167
angle_coeff @angle:ca-cc-ha harmonic 46.40 124.04 # SOURCE3 34 3.6691
angle_coeff @angle:ca-cc-n harmonic 68.46 117.67 # CORR 18
angle_coeff @angle:ca-cc-nc harmonic 67.69 120.67 # CORR 162
angle_coeff @angle:ca-cc-nd harmonic 67.92 123.02 # CORR 188
angle_coeff @angle:ca-cc-nh harmonic 67.46 122.45 # SOURCE4 9 1.4092
angle_coeff @angle:ca-cc-oh harmonic 69.61 117.71 # CORR 21
angle_coeff @angle:ca-cc-os harmonic 69.82 115.16 # CORR 134
angle_coeff @angle:ca-cc-ss harmonic 62.30 120.51 # CORR 43
angle_coeff @angle:c-cc-c2 harmonic 65.60 120.92 # CORR 22
angle_coeff @angle:c-cc-c3 harmonic 63.60 117.42 # CORR 126
angle_coeff @angle:c-cc-c harmonic 63.42 121.17 # CORR 64
angle_coeff @angle:c-c-cc harmonic 64.02 111.67 # SOURCE3 4 5.5146
angle_coeff @angle:c-cc-ca harmonic 63.55 122.95 # SOURCE3 1 0.0000
angle_coeff @angle:c-cc-cc harmonic 63.72 122.69 # SOURCE3 2 0.0000
angle_coeff @angle:cc-c-cc harmonic 64.80 116.04 # CORR 56
angle_coeff @angle:cc-cc-cc harmonic 67.88 110.70 # SOURCE3 54 3.4091
angle_coeff @angle:cc-cc-cd harmonic 68.16 114.19 # SOURCE3 517 6.5960
angle_coeff @angle:cc-cc-ce harmonic 62.78 127.20 # CORR 42
angle_coeff @angle:cc-cc-cf harmonic 65.88 122.59 # CORR 39
angle_coeff @angle:cc-cc-cg harmonic 63.63 126.15 # CORR 27
angle_coeff @angle:c-cc-cd harmonic 65.25 121.42 # CORR 1708
angle_coeff @angle:cc-c-cd harmonic 65.73 112.79 # SOURCE3 1 0.0000
angle_coeff @angle:c-cc-ce harmonic 63.20 122.73 # CORR 10
angle_coeff @angle:cc-c-ce harmonic 64.64 115.68 # SOURCE4 6 1.2033
angle_coeff @angle:cc-cc-f harmonic 66.35 119.41 # SOURCE4 7 0.4917
angle_coeff @angle:c-cc-cg harmonic 64.98 118.14 # SOURCE4 7 0.7745
angle_coeff @angle:cc-cc-h4 harmonic 45.56 129.47 # SOURCE3 171 2.2734
angle_coeff @angle:cc-cc-ha harmonic 47.14 120.86 # CORR 1751
angle_coeff @angle:c-cc-cl harmonic 58.39 116.05 # CORR 24
angle_coeff @angle:cc-cc-n2 harmonic 69.48 121.15 # CORR 12
angle_coeff @angle:cc-cc-n harmonic 67.95 119.89 # SOURCE3 36 0.2095
angle_coeff @angle:cc-cc-na harmonic 72.21 106.80 # SOURCE3 33 0.6297
angle_coeff @angle:cc-cc-nc harmonic 67.53 121.69 # CORR 105
angle_coeff @angle:cc-cc-nd harmonic 71.15 112.56 # SOURCE3 141 4.2871
angle_coeff @angle:cc-cc-nh harmonic 68.41 119.51 # CORR 228
angle_coeff @angle:cc-cc-oh harmonic 68.53 121.96 # CORR 27
angle_coeff @angle:cc-cc-os harmonic 69.34 117.23 # CORR 211
angle_coeff @angle:cc-cc-pd harmonic 80.79 115.36 # SOURCE3 84 same_as_cd-cd-pc
angle_coeff @angle:cc-cc-ss harmonic 62.45 120.12 # CORR 31
angle_coeff @angle:cc-cc-sy harmonic 59.22 128.36 # SOURCE4 8 0.9813
angle_coeff @angle:c-c-cd harmonic 64.02 111.67 # SOURCE3 4 5.5146
angle_coeff @angle:cd-cc-cd harmonic 67.89 120.23 # CORR 133
angle_coeff @angle:cd-cc-ce harmonic 63.67 128.41 # CORR 210
angle_coeff @angle:cd-cc-cl harmonic 57.46 123.70 # CORR 62
angle_coeff @angle:cd-cc-f harmonic 67.42 121.08 # SOURCE4 28 0.8788
angle_coeff @angle:cd-cc-h4 harmonic 47.19 129.11 # SOURCE3 418 3.1355
angle_coeff @angle:cd-cc-ha harmonic 48.35 122.89 # SOURCE3 584 2.9334
angle_coeff @angle:cd-cc-n harmonic 70.72 115.52 # SOURCE3 52 1.3322
angle_coeff @angle:cd-cc-na harmonic 72.91 109.42 # SOURCE3 265 2.6051
angle_coeff @angle:cd-cc-nc harmonic 72.01 111.75 # CORR 1101
angle_coeff @angle:cd-cc-nh harmonic 68.69 123.89 # CORR 106
angle_coeff @angle:cd-cc-no harmonic 65.78 128.95 # SOURCE4 117 1.4740
angle_coeff @angle:cd-cc-oh harmonic 69.56 123.89 # CORR 106
angle_coeff @angle:cd-cc-os harmonic 69.96 120.30 # SOURCE3 64 5.4354
angle_coeff @angle:cd-cc-ss harmonic 65.44 111.55 # CORR 884
angle_coeff @angle:cd-cc-sy harmonic 60.54 124.91 # CORR 41
angle_coeff @angle:ce-cc-na harmonic 66.32 124.22 # CORR 48
angle_coeff @angle:ce-cc-nc harmonic 67.01 121.29 # CORR 37
angle_coeff @angle:ce-cc-nd harmonic 67.80 121.51 # CORR 37
angle_coeff @angle:ce-cc-os harmonic 68.17 119.03 # CORR 66
angle_coeff @angle:ce-cc-ss harmonic 61.83 121.44 # CORR 38
angle_coeff @angle:c-cc-f harmonic 66.16 116.87 # SOURCE4 16 0.5322
angle_coeff @angle:cg-cc-na harmonic 67.51 122.35 # SOURCE4 5 0.8112
angle_coeff @angle:cg-cc-ss harmonic 62.33 120.70 # SOURCE4 12 0.9090
angle_coeff @angle:cc-c-h4 harmonic 47.13 115.45 # SOURCE4 5 0.8021
angle_coeff @angle:c-cc-ha harmonic 46.99 117.02 # SOURCE3 56 1.9713
angle_coeff @angle:cl-cc-na harmonic 59.37 121.61 # SOURCE4 12 0.3436
angle_coeff @angle:cl-cc-nd harmonic 59.35 122.97 # CORR 6
angle_coeff @angle:cl-cc-ss harmonic 58.09 119.85 # SOURCE4 11 1.0626
angle_coeff @angle:c-cc-n2 harmonic 68.54 120.89 # CORR 2
angle_coeff @angle:c-cc-n harmonic 68.11 116.32 # CORR 21
angle_coeff @angle:cc-c-n harmonic 70.19 111.86 # SOURCE3 36 2.3407
angle_coeff @angle:c-cc-nc harmonic 66.19 123.47 # CORR 24
angle_coeff @angle:cc-c-nd harmonic 67.92 116.21 # CORR 33
angle_coeff @angle:c-cc-nd harmonic 67.50 121.67 # CORR 47
angle_coeff @angle:c-cc-ne harmonic 67.11 119.88 # SOURCE4 6 0.3139
angle_coeff @angle:cc-c-o harmonic 68.91 125.71 # SOURCE3 66 2.4784
angle_coeff @angle:c-cc-oh harmonic 70.04 113.64 # CORR 53
angle_coeff @angle:cc-c-oh harmonic 71.00 113.10 # CORR 85
angle_coeff @angle:c-cc-os harmonic 67.83 119.39 # CORR 78
angle_coeff @angle:cc-c-os harmonic 70.50 112.30 # SOURCE3 6 2.7842
angle_coeff @angle:cc-c-s harmonic 61.67 127.94 # SOURCE4 12 0.9342
angle_coeff @angle:cc-c-ss harmonic 63.47 112.52 # SOURCE4 10 0.6933
angle_coeff @angle:cx-cc-nd harmonic 65.61 127.75 # SOURCE4 12 1.7156
angle_coeff @angle:cx-cc-os harmonic 67.94 118.08 # SOURCE4 10 0.0955
angle_coeff @angle:cd-c-cd harmonic 64.80 116.04 # CORR 56
angle_coeff @angle:cd-c-cx harmonic 63.88 117.46 # SOURCE4 13 0.1625
angle_coeff @angle:cd-c-n harmonic 70.19 111.86 # SOURCE3 36 2.3407
angle_coeff @angle:cd-c-nc harmonic 67.92 116.21 # CORR 33
angle_coeff @angle:cd-c-nd harmonic 68.65 113.75 # SOURCE4 14 0.0860
angle_coeff @angle:cd-c-o harmonic 68.91 125.71 # SOURCE3 66 2.4784
angle_coeff @angle:cd-c-oh harmonic 71.00 113.10 # CORR 85
angle_coeff @angle:cd-c-os harmonic 70.50 112.30 # SOURCE3 6 2.7842
angle_coeff @angle:ce-c-ce harmonic 64.34 115.80 # CORR 74
angle_coeff @angle:ce-c-cf harmonic 64.04 116.89 # SOURCE4 11 1.6021
angle_coeff @angle:ce-c-cx harmonic 63.95 116.25 # SOURCE4 6 0.6351
angle_coeff @angle:ce-c-h4 harmonic 46.93 114.88 # SOURCE4 19 0.3355
angle_coeff @angle:ce-c-ha harmonic 46.93 115.22 # SOURCE3 7 2.4188
angle_coeff @angle:ce-c-n harmonic 68.80 115.27 # CORR 32
angle_coeff @angle:ce-c-o harmonic 69.27 122.92 # SOURCE3 17 3.5085
angle_coeff @angle:ce-c-oh harmonic 70.32 114.09 # CORR 128
angle_coeff @angle:ce-c-os harmonic 70.16 112.28 # CORR 149
angle_coeff @angle:ce-c-s harmonic 64.09 117.80 # SOURCE3 1 0.0000
angle_coeff @angle:ce-c-ss harmonic 63.94 110.39 # SOURCE4 5 0.6050
angle_coeff @angle:cf-c-cf harmonic 64.34 115.80 # CORR 74
angle_coeff @angle:cf-c-ha harmonic 46.93 115.22 # SOURCE3 7 same_as_ce-c-ha
angle_coeff @angle:cf-c-n harmonic 68.80 115.27 # CORR 32
angle_coeff @angle:cf-c-o harmonic 69.27 122.92 # SOURCE3 17 3.5085
angle_coeff @angle:cf-c-oh harmonic 70.32 114.09 # CORR 128
angle_coeff @angle:cf-c-os harmonic 70.16 112.28 # CORR 149
angle_coeff @angle:cf-c-s harmonic 64.09 117.80 # SOURCE3 1 same_as_ce-c-s
angle_coeff @angle:cg-c-cg harmonic 65.44 115.38 # SOURCE3 1 0.0000
angle_coeff @angle:cg-c-ha harmonic 47.80 113.90 # SOURCE2 1 0.0000
angle_coeff @angle:cg-c-o harmonic 70.21 122.31 # SOURCE3 2 0.0000
angle_coeff @angle:c-c-h4 harmonic 44.62 116.36 # SOURCE4 5 0.5586
angle_coeff @angle:h4-cc-n harmonic 50.39 117.62 # SOURCE3 53 0.9721
angle_coeff @angle:h4-cc-na harmonic 50.22 119.66 # SOURCE3 294 2.4702
angle_coeff @angle:h4-cc-nc harmonic 50.00 120.03 # SOURCE3 16 2.3863
angle_coeff @angle:h4-cc-nd harmonic 51.39 119.11 # SOURCE3 135 1.6946
angle_coeff @angle:h4-cc-os harmonic 52.27 111.89 # SOURCE3 61 2.3500
angle_coeff @angle:h4-cc-ss harmonic 42.95 117.75 # SOURCE3 40 3.1156
angle_coeff @angle:h5-cc-n harmonic 50.84 115.72 # CORR 20
angle_coeff @angle:h5-cc-na harmonic 49.76 122.10 # SOURCE3 16 1.4626
angle_coeff @angle:h5-cc-nc harmonic 49.29 123.70 # SOURCE3 6 0.3547
angle_coeff @angle:h5-cc-nd harmonic 50.13 125.38 # SOURCE3 40 2.2157
angle_coeff @angle:h5-cc-os harmonic 51.30 116.33 # SOURCE3 12 3.2919
angle_coeff @angle:h5-cc-ss harmonic 42.19 122.00 # SOURCE3 6 0.7237
angle_coeff @angle:c-c-ha harmonic 44.85 115.43 # SOURCE2 3 0.6549
angle_coeff @angle:ha-cc-na harmonic 49.82 121.50 # SOURCE2 1 0.0000
angle_coeff @angle:ha-cc-nc harmonic 50.73 116.54 # SOURCE3 5 1.4482
angle_coeff @angle:ha-cc-nd harmonic 51.41 118.88 # SOURCE3 20 2.8923
angle_coeff @angle:ha-cc-os harmonic 52.49 110.86 # SOURCE3 7 1.3846
angle_coeff @angle:ha-cc-pd harmonic 53.59 121.76 # SOURCE3 84 same_as_ha-cd-pc
angle_coeff @angle:ha-cc-ss harmonic 42.26 121.64 # SOURCE2 5 1.3276
angle_coeff @angle:ch-c-ch harmonic 65.44 115.38 # SOURCE3 1 same_as_cg-c-cg
angle_coeff @angle:ch-c-ha harmonic 47.80 113.90 # SOURCE2 1 same_as_cg-c-ha
angle_coeff @angle:ch-c-o harmonic 70.21 122.31 # SOURCE3 2 same_as_cg-c-o
angle_coeff @angle:cl-c-cl harmonic 54.78 111.30 # SOURCE2 1 0.0000
angle_coeff @angle:cl-c-f harmonic 59.05 112.00 # SOURCE2 1 0.0000
angle_coeff @angle:cl-c-ha harmonic 40.42 109.90 # SOURCE2 1 0.0000
angle_coeff @angle:cl-c-o harmonic 59.78 121.51 # SOURCE3 6 1.6987
angle_coeff @angle:cl-c-s harmonic 56.74 127.60 # SOURCE2 1 0.0000
angle_coeff @angle:c-c-n harmonic 67.53 112.14 # SOURCE4 53 2.1247
angle_coeff @angle:na-cc-nc harmonic 70.72 121.62 # CORR 231
angle_coeff @angle:na-cc-nd harmonic 74.78 112.02 # SOURCE3 17 2.2434
angle_coeff @angle:na-cc-no harmonic 68.48 124.90 # SOURCE4 48 0.7933
angle_coeff @angle:na-cc-oh harmonic 73.25 117.26 # SOURCE4 16 0.9090
angle_coeff @angle:na-cc-sx harmonic 63.25 117.04 # SOURCE4 13 0.4187
angle_coeff @angle:na-cc-sy harmonic 63.13 120.55 # SOURCE4 7 1.7547
angle_coeff @angle:nc-cc-nd harmonic 73.35 115.96 # CORR 222
angle_coeff @angle:nc-cc-nh harmonic 72.33 116.85 # CORR 35
angle_coeff @angle:nc-cc-no harmonic 69.31 121.54 # SOURCE4 7 0.9221
angle_coeff @angle:nc-cc-ss harmonic 64.63 119.86 # SOURCE3 2 0.0000
angle_coeff @angle:nd-cc-nd harmonic 70.88 128.17 # SOURCE4 7 0.0269
angle_coeff @angle:nd-cc-ne harmonic 69.29 129.66 # SOURCE4 7 0.4306
angle_coeff @angle:nd-cc-nh harmonic 72.41 120.11 # SOURCE3 5 0.9313
angle_coeff @angle:nd-cc-no harmonic 69.90 122.68 # SOURCE4 16 0.3393
angle_coeff @angle:nd-cc-oh harmonic 72.93 121.54 # CORR 22
angle_coeff @angle:nd-cc-os harmonic 73.85 116.29 # CORR 209
angle_coeff @angle:nd-cc-sh harmonic 62.75 124.92 # SOURCE4 5 0.9563
angle_coeff @angle:nd-cc-ss harmonic 66.51 114.51 # SOURCE3 8 0.3449
angle_coeff @angle:nd-cc-sx harmonic 60.81 127.60 # SOURCE4 14 1.1650
angle_coeff @angle:nd-cc-sy harmonic 62.75 123.08 # SOURCE4 13 1.0531
angle_coeff @angle:ne-cc-ss harmonic 65.39 116.99 # SOURCE4 7 0.1657
angle_coeff @angle:nh-cc-nh harmonic 72.93 115.96 # SOURCE3 1 0.0000
angle_coeff @angle:nh-cc-os harmonic 72.96 116.69 # CORR 25
angle_coeff @angle:nh-cc-ss harmonic 64.19 121.94 # CORR 91
angle_coeff @angle:n-cc-n2 harmonic 74.78 114.48 # SOURCE4 15 2.3208
angle_coeff @angle:n-cc-na harmonic 70.47 122.14 # CORR 59
angle_coeff @angle:n-cc-nc harmonic 69.35 125.66 # CORR 64
angle_coeff @angle:n-cc-nd harmonic 71.12 122.98 # CORR 229
angle_coeff @angle:n-cc-nh harmonic 72.22 116.87 # CORR 79
angle_coeff @angle:no-cc-os harmonic 71.01 117.59 # SOURCE4 62 0.2199
angle_coeff @angle:no-cc-ss harmonic 63.76 121.10 # SOURCE4 10 0.0957
angle_coeff @angle:n-cc-ss harmonic 63.75 123.03 # CORR 45
angle_coeff @angle:c-c-o harmonic 67.16 120.99 # SOURCE4 233 2.0333
angle_coeff @angle:c-c-oh harmonic 68.20 113.23 # SOURCE3 5 0.5615
angle_coeff @angle:c-c-os harmonic 68.18 111.39 # SOURCE4 14 0.4038
angle_coeff @angle:os-cc-ss harmonic 61.99 132.01 # SOURCE3 1 0.0000
angle_coeff @angle:ss-cc-ss harmonic 62.44 121.37 # CORR 22
angle_coeff @angle:ss-cc-sy harmonic 61.51 121.70 # CORR 39
angle_coeff @angle:cx-c-cx harmonic 85.45 64.60 # SOURCE2 1 0.0000
angle_coeff @angle:cx-c-n harmonic 68.69 114.49 # SOURCE4 23 1.4914
angle_coeff @angle:cx-c-o harmonic 68.88 122.82 # SOURCE4 97 2.2075
angle_coeff @angle:cx-c-oh harmonic 70.49 112.32 # SOURCE4 10 0.6413
angle_coeff @angle:cx-c-os harmonic 70.06 111.48 # SOURCE4 16 1.3998
angle_coeff @angle:cy-c-cy harmonic 70.14 90.55 # SOURCE2 2 2.4500
angle_coeff @angle:cy-c-n harmonic 75.43 91.54 # SOURCE4 249 0.5104
angle_coeff @angle:cy-c-o harmonic 64.27 135.04 # SOURCE4 253 1.3450
angle_coeff @angle:cy-c-oh harmonic 69.09 112.48 # SOURCE4 5 1.0793
angle_coeff @angle:cy-c-os harmonic 74.55 94.89 # SOURCE4 8 0.6016
angle_coeff @angle:c2-cd-c3 harmonic 63.27 126.11 # SOURCE3 2 0.0000
angle_coeff @angle:c2-cd-ca harmonic 65.34 124.66 # CORR 16
angle_coeff @angle:c2-cd-cc harmonic 69.09 117.02 # SOURCE3 2 same_as_c2-cc-cd
angle_coeff @angle:c2-cd-cd harmonic 66.24 121.77 # CORR 32
angle_coeff @angle:c2-cd-ha harmonic 48.69 122.72 # SOURCE3 2 same_as_c2-cc-ha
angle_coeff @angle:c2-cd-n harmonic 67.74 126.90 # SOURCE3 1 same_as_c2-cc-n
angle_coeff @angle:c2-cd-os harmonic 70.10 120.79 # CORR 13
angle_coeff @angle:c3-cd-ca harmonic 61.96 125.89 # CORR 127
angle_coeff @angle:c3-cd-cc harmonic 64.81 119.45 # SOURCE3 35 8.2040
angle_coeff @angle:c3-cd-cd harmonic 64.66 115.97 # SOURCE3 4 3.0507
angle_coeff @angle:c3-cd-ce harmonic 65.34 117.84 # CORR 2
angle_coeff @angle:c3-cd-ha harmonic 45.11 121.52 # SOURCE3 32 3.2091
angle_coeff @angle:c3-cd-n2 harmonic 65.80 126.87 # CORR 9
angle_coeff @angle:c3-cd-n harmonic 66.33 119.11 # CORR 68
angle_coeff @angle:c3-cd-na harmonic 65.50 122.78 # CORR 632
angle_coeff @angle:c3-cd-nc harmonic 66.32 122.13 # CORR 475
angle_coeff @angle:c3-cd-nd harmonic 65.90 120.94 # CORR 309
angle_coeff @angle:c3-cd-os harmonic 67.54 116.88 # CORR 203
angle_coeff @angle:c3-cd-ss harmonic 61.21 121.66 # CORR 171
angle_coeff @angle:ca-cd-cc harmonic 68.23 113.51 # SOURCE3 26 7.4229
angle_coeff @angle:ca-cd-cd harmonic 67.66 111.04 # SOURCE3 9 7.9455
angle_coeff @angle:ca-cd-ce harmonic 65.09 125.10 # SOURCE4 9 1.9265
angle_coeff @angle:ca-cd-h4 harmonic 45.57 128.66 # SOURCE3 10 3.1167
angle_coeff @angle:ca-cd-ha harmonic 46.40 124.04 # SOURCE3 34 3.6691
angle_coeff @angle:ca-cd-n harmonic 68.46 117.67 # CORR 18
angle_coeff @angle:ca-cd-na harmonic 67.03 123.45 # SOURCE4 39 1.9138
angle_coeff @angle:ca-cd-nc harmonic 67.92 123.02 # CORR 188
angle_coeff @angle:ca-cd-nd harmonic 67.69 120.67 # CORR 162
angle_coeff @angle:ca-cd-oh harmonic 69.61 117.71 # CORR 21
angle_coeff @angle:ca-cd-os harmonic 69.82 115.16 # CORR 134
angle_coeff @angle:ca-cd-ss harmonic 62.30 120.51 # CORR 43
angle_coeff @angle:c-cd-c2 harmonic 65.60 120.92 # CORR 22
angle_coeff @angle:c-cd-c3 harmonic 63.60 117.42 # CORR 126
angle_coeff @angle:c-cd-c harmonic 63.42 121.17 # CORR 64
angle_coeff @angle:c-cd-ca harmonic 63.55 122.95 # SOURCE3 1 same_as_c-cc-ca
angle_coeff @angle:c-cd-cc harmonic 65.25 121.42 # CORR 1708
angle_coeff @angle:cc-cd-cc harmonic 67.89 120.23 # CORR 133
angle_coeff @angle:cc-cd-cd harmonic 68.16 114.19 # SOURCE3 517 6.5960
angle_coeff @angle:cc-cd-cf harmonic 63.67 128.41 # CORR 210
angle_coeff @angle:cc-cd-ch harmonic 64.92 126.05 # SOURCE4 30 1.4695
angle_coeff @angle:cc-cd-cl harmonic 57.46 123.70 # CORR 62
angle_coeff @angle:cc-cd-cy harmonic 63.93 122.13 # SOURCE4 10 0.8509
angle_coeff @angle:c-cd-cd harmonic 63.72 122.69 # SOURCE3 2 0.0000
angle_coeff @angle:c-cd-cf harmonic 63.20 122.73 # CORR 10
angle_coeff @angle:cc-cd-h4 harmonic 47.19 129.11 # SOURCE3 418 3.1355
angle_coeff @angle:cc-cd-ha harmonic 48.35 122.89 # SOURCE3 584 2.9334
angle_coeff @angle:c-cd-cl harmonic 58.39 116.05 # CORR 24
angle_coeff @angle:cc-cd-n harmonic 70.72 115.52 # SOURCE3 52 1.3322
angle_coeff @angle:cc-cd-na harmonic 72.91 109.42 # SOURCE3 265 2.6051
angle_coeff @angle:cc-cd-nc harmonic 69.42 123.82 # SOURCE4 14 0.3678
angle_coeff @angle:cc-cd-nd harmonic 72.01 111.75 # CORR 1101
angle_coeff @angle:cc-cd-nh harmonic 68.69 123.89 # CORR 106
angle_coeff @angle:cc-cd-oh harmonic 69.56 123.89 # CORR 106
angle_coeff @angle:cc-cd-os harmonic 69.96 120.30 # SOURCE3 64 5.4354
angle_coeff @angle:cc-cd-ss harmonic 65.44 111.55 # CORR 884
angle_coeff @angle:cc-cd-sy harmonic 60.54 124.91 # CORR 41
angle_coeff @angle:cd-cd-cd harmonic 67.88 110.70 # SOURCE3 54 3.4091
angle_coeff @angle:cd-cd-ce harmonic 65.88 122.59 # CORR 39
angle_coeff @angle:cd-cd-cf harmonic 62.78 127.20 # CORR 42
angle_coeff @angle:cd-cd-ch harmonic 63.63 126.15 # CORR 27
angle_coeff @angle:cd-cd-cy harmonic 63.17 120.93 # SOURCE4 6 1.2205
angle_coeff @angle:cd-cd-h4 harmonic 45.56 129.47 # SOURCE3 171 2.2734
angle_coeff @angle:cd-cd-ha harmonic 47.14 120.86 # CORR 1751
angle_coeff @angle:cd-cd-n2 harmonic 69.48 121.15 # CORR 12
angle_coeff @angle:cd-cd-n harmonic 67.95 119.89 # SOURCE3 36 0.2095
angle_coeff @angle:cd-cd-na harmonic 72.21 106.80 # SOURCE3 33 same_as_cc-cc-na
angle_coeff @angle:cd-cd-nc harmonic 71.15 112.56 # SOURCE3 141 4.2871
angle_coeff @angle:cd-cd-nd harmonic 67.53 121.69 # CORR 105
angle_coeff @angle:cd-cd-nh harmonic 68.41 119.51 # CORR 228
angle_coeff @angle:cd-cd-oh harmonic 68.53 121.96 # CORR 27
angle_coeff @angle:cd-cd-os harmonic 69.34 117.23 # CORR 211
angle_coeff @angle:cd-cd-pc harmonic 80.79 115.36 # SOURCE3 84 3.2889
angle_coeff @angle:cd-cd-ss harmonic 62.45 120.12 # CORR 31
angle_coeff @angle:ce-cd-nd harmonic 68.22 124.90 # SOURCE4 5 2.3975
angle_coeff @angle:cf-cd-na harmonic 66.32 124.22 # CORR 48
angle_coeff @angle:cf-cd-nc harmonic 67.80 121.51 # CORR 37
angle_coeff @angle:cf-cd-nd harmonic 67.01 121.29 # CORR 37
angle_coeff @angle:cf-cd-os harmonic 68.17 119.03 # CORR 66
angle_coeff @angle:cf-cd-ss harmonic 61.83 121.44 # CORR 38
angle_coeff @angle:c-cd-h4 harmonic 46.77 118.19 # SOURCE4 8 0.2226
angle_coeff @angle:c-cd-ha harmonic 46.99 117.02 # SOURCE3 56 1.9713
angle_coeff @angle:cl-cd-nc harmonic 59.35 122.97 # CORR 6
angle_coeff @angle:c-cd-n2 harmonic 68.54 120.89 # CORR 2
angle_coeff @angle:c-cd-n harmonic 68.11 116.32 # CORR 21
angle_coeff @angle:c-cd-nc harmonic 67.50 121.67 # CORR 47
angle_coeff @angle:c-cd-nd harmonic 66.19 123.47 # CORR 24
angle_coeff @angle:c-cd-oh harmonic 70.04 113.64 # CORR 53
angle_coeff @angle:c-cd-os harmonic 67.83 119.39 # CORR 78
angle_coeff @angle:h4-cd-n harmonic 50.39 117.62 # SOURCE3 53 0.9721
angle_coeff @angle:h4-cd-na harmonic 50.22 119.66 # SOURCE3 294 2.4702
angle_coeff @angle:h4-cd-nc harmonic 51.39 119.11 # SOURCE3 135 1.6946
angle_coeff @angle:h4-cd-nd harmonic 50.00 120.03 # SOURCE3 16 2.3863
angle_coeff @angle:h4-cd-os harmonic 52.27 111.89 # SOURCE3 61 2.3500
angle_coeff @angle:h4-cd-ss harmonic 42.95 117.75 # SOURCE3 40 3.1156
angle_coeff @angle:h5-cd-n harmonic 50.84 115.72 # CORR 20
angle_coeff @angle:h5-cd-na harmonic 49.76 122.10 # SOURCE3 16 1.4626
angle_coeff @angle:h5-cd-nc harmonic 50.13 125.38 # SOURCE3 40 2.2157
angle_coeff @angle:h5-cd-nd harmonic 49.29 123.70 # SOURCE3 6 0.3547
angle_coeff @angle:h5-cd-os harmonic 51.30 116.33 # SOURCE3 12 3.2919
angle_coeff @angle:h5-cd-ss harmonic 42.19 122.00 # SOURCE3 6 0.7237
angle_coeff @angle:ha-cd-na harmonic 49.82 121.50 # SOURCE2 1 same_as_ha-cc-na
angle_coeff @angle:ha-cd-nc harmonic 51.41 118.88 # SOURCE3 20 2.8923
angle_coeff @angle:ha-cd-nd harmonic 50.73 116.54 # SOURCE3 5 1.4482
angle_coeff @angle:ha-cd-os harmonic 52.49 110.86 # SOURCE3 7 1.3846
angle_coeff @angle:ha-cd-pc harmonic 53.59 121.76 # SOURCE3 84 2.2216
angle_coeff @angle:ha-cd-ss harmonic 42.26 121.64 # SOURCE2 5 same_as_ha-cc-ss
angle_coeff @angle:na-cd-nc harmonic 74.78 112.02 # SOURCE3 17 2.2434
angle_coeff @angle:na-cd-nd harmonic 70.72 121.62 # CORR 231
angle_coeff @angle:na-cd-nh harmonic 72.43 116.98 # SOURCE4 46 1.4937
angle_coeff @angle:na-cd-ss harmonic 67.07 111.46 # SOURCE4 20 0.8600
angle_coeff @angle:nc-cd-nd harmonic 73.35 115.96 # CORR 222
angle_coeff @angle:nc-cd-nh harmonic 72.41 120.11 # SOURCE3 5 0.9313
angle_coeff @angle:nc-cd-oh harmonic 72.93 121.54 # CORR 22
angle_coeff @angle:nc-cd-os harmonic 73.85 116.29 # CORR 209
angle_coeff @angle:nc-cd-ss harmonic 66.51 114.51 # SOURCE3 8 0.3449
angle_coeff @angle:nd-cd-nd harmonic 69.47 125.58 # SOURCE4 13 0.4672
angle_coeff @angle:nd-cd-nh harmonic 72.33 116.85 # CORR 35
angle_coeff @angle:nd-cd-ss harmonic 64.63 119.86 # SOURCE3 2 same_as_nc-cc-ss
angle_coeff @angle:nh-cd-nh harmonic 72.93 115.96 # SOURCE3 1 same_as_nh-cc-nh
angle_coeff @angle:nh-cd-os harmonic 72.96 116.69 # CORR 25
angle_coeff @angle:nh-cd-ss harmonic 64.19 121.94 # CORR 91
angle_coeff @angle:n-cd-na harmonic 70.47 122.14 # CORR 59
angle_coeff @angle:n-cd-nc harmonic 71.12 122.98 # CORR 229
angle_coeff @angle:n-cd-nd harmonic 69.35 125.66 # CORR 64
angle_coeff @angle:n-cd-nh harmonic 72.22 116.87 # CORR 79
angle_coeff @angle:n-cd-ss harmonic 63.75 123.03 # CORR 45
angle_coeff @angle:oh-cd-os harmonic 75.54 111.61 # SOURCE4 6 1.1909
angle_coeff @angle:os-cd-ss harmonic 61.99 132.01 # SOURCE3 1 same_as_os-cc-ss
angle_coeff @angle:ss-cd-ss harmonic 62.44 121.37 # CORR 22
angle_coeff @angle:ss-cd-sy harmonic 61.51 121.70 # CORR 39
angle_coeff @angle:c2-ce-c3 harmonic 64.30 122.89 # SOURCE3 7 1.0449
angle_coeff @angle:c2-ce-ca harmonic 65.16 123.08 # SOURCE3 6 2.1589
angle_coeff @angle:c2-ce-cc harmonic 65.62 123.27 # CORR 72
angle_coeff @angle:c2-ce-ce harmonic 65.73 123.08 # SOURCE3 12 0.6518
angle_coeff @angle:c2-ce-cg harmonic 66.66 121.67 # CORR 21
angle_coeff @angle:c2-ce-cl harmonic 57.87 119.51 # SOURCE4 24 1.4963
angle_coeff @angle:c2-ce-h4 harmonic 48.64 125.58 # SOURCE4 11 0.9381
angle_coeff @angle:c2-ce-ha harmonic 49.56 121.10 # SOURCE3 46 2.4054
angle_coeff @angle:c2-ce-n1 harmonic 72.67 117.85 # SOURCE4 7 0.3180
angle_coeff @angle:c2-ce-n2 harmonic 70.34 128.70 # SOURCE3 1 0.0000
angle_coeff @angle:c2-ce-na harmonic 69.29 119.19 # SOURCE4 5 0.8452
angle_coeff @angle:c2-ce-ne harmonic 69.73 118.32 # SOURCE3 7 1.0468
angle_coeff @angle:c2-ce-oh harmonic 70.32 123.78 # SOURCE4 10 1.8182
angle_coeff @angle:c2-ce-p2 harmonic 77.91 118.24 # SOURCE3 1
angle_coeff @angle:c2-ce-pe harmonic 77.59 118.76 # SOURCE3 8 2.3984
angle_coeff @angle:c2-ce-px harmonic 77.17 119.72 # SOURCE3 6 0.5213
angle_coeff @angle:c2-ce-py harmonic 77.39 122.13 # SOURCE3 5 3.1367
angle_coeff @angle:c2-ce-sx harmonic 61.64 119.87 # SOURCE3 5 0.8557
angle_coeff @angle:c2-ce-sy harmonic 61.96 120.35 # SOURCE3 5 0.5401
angle_coeff @angle:c3-ce-ca harmonic 62.76 119.28 # CORR 178
angle_coeff @angle:c3-ce-cc harmonic 63.42 118.22 # CORR 39
angle_coeff @angle:c3-ce-ce harmonic 63.80 116.99 # CORR 244
angle_coeff @angle:c3-ce-cf harmonic 64.52 122.11 # CORR 221
angle_coeff @angle:c3-ce-cg harmonic 63.79 118.48 # SOURCE4 8 1.4756
angle_coeff @angle:c3-ce-n2 harmonic 66.92 122.70 # CORR 81
angle_coeff @angle:c3-ce-nf harmonic 67.26 120.75 # SOURCE4 6 2.1938
angle_coeff @angle:c3-ce-nh harmonic 65.76 119.90 # SOURCE4 5 0.9634
angle_coeff @angle:ca-ce-ca harmonic 63.94 117.58 # CORR 112
angle_coeff @angle:ca-ce-cc harmonic 64.21 118.06 # CORR 17
angle_coeff @angle:ca-ce-ce harmonic 63.84 119.62 # SOURCE4 14 1.9171
angle_coeff @angle:ca-ce-cf harmonic 64.07 127.39 # CORR 318
angle_coeff @angle:ca-ce-cl harmonic 57.99 114.22 # SOURCE4 6 1.3164
angle_coeff @angle:ca-ce-h4 harmonic 46.71 116.86 # SOURCE4 74 0.9179
angle_coeff @angle:ca-ce-ha harmonic 47.07 115.16 # CORR 345
angle_coeff @angle:ca-ce-n2 harmonic 68.51 120.72 # SOURCE3 1 0.0000
angle_coeff @angle:ca-ce-nf harmonic 67.74 122.66 # CORR 22
angle_coeff @angle:ca-ce-nh harmonic 67.87 115.51 # SOURCE4 93 0.9284
angle_coeff @angle:ca-ce-oh harmonic 68.85 116.37 # CORR 11
angle_coeff @angle:ca-ce-os harmonic 68.60 115.58 # SOURCE4 8 1.0735
angle_coeff @angle:ca-ce-ss harmonic 61.21 117.73 # SOURCE4 5 1.1596
angle_coeff @angle:c-ce-c2 harmonic 65.82 120.42 # SOURCE3 13 1.8877
angle_coeff @angle:c-ce-c3 harmonic 63.35 116.92 # CORR 188
angle_coeff @angle:c-ce-c harmonic 62.59 122.38 # CORR 23
angle_coeff @angle:c-ce-ca harmonic 63.79 117.98 # SOURCE4 8 1.5129
angle_coeff @angle:cc-ce-cd harmonic 63.28 130.36 # SOURCE4 5 2.3402
angle_coeff @angle:cc-ce-cf harmonic 64.87 126.20 # CORR 88
angle_coeff @angle:c-ce-cd harmonic 63.81 126.07 # CORR 2
angle_coeff @angle:c-ce-ce harmonic 63.46 120.89 # SOURCE4 16 1.8719
angle_coeff @angle:c-ce-cf harmonic 64.26 126.41 # SOURCE3 2 5.7847
angle_coeff @angle:c-ce-cg harmonic 64.57 118.32 # SOURCE4 15 1.0595
angle_coeff @angle:cc-ce-h4 harmonic 47.52 115.40 # SOURCE4 29 0.8744
angle_coeff @angle:cc-ce-ha harmonic 47.53 115.45 # CORR 113
angle_coeff @angle:c-ce-cl harmonic 57.67 115.40 # SOURCE4 6 1.0958
angle_coeff @angle:cc-ce-n2 harmonic 68.94 121.28 # CORR 69
angle_coeff @angle:cc-ce-nh harmonic 67.31 119.17 # SOURCE4 8 2.1378
angle_coeff @angle:c-ce-cy harmonic 72.72 88.22 # SOURCE4 19 0.3234
angle_coeff @angle:cd-ce-ce harmonic 64.81 124.49 # CORR 12
angle_coeff @angle:cd-ce-ha harmonic 49.97 115.48 # CORR 39
angle_coeff @angle:ce-ce-ce harmonic 64.55 118.74 # SOURCE3 1 0.0000
angle_coeff @angle:ce-ce-cf harmonic 65.46 124.19 # CORR 341
angle_coeff @angle:ce-ce-cl harmonic 57.29 117.93 # SOURCE4 12 0.2639
angle_coeff @angle:ce-ce-h4 harmonic 47.06 117.97 # CORR 19
angle_coeff @angle:ce-ce-ha harmonic 47.50 115.90 # SOURCE3 12 0.4670
angle_coeff @angle:ce-ce-n1 harmonic 66.79 127.15 # CORR 4
angle_coeff @angle:ce-ce-n2 harmonic 69.57 119.33 # CORR 13
angle_coeff @angle:ce-ce-oh harmonic 69.29 116.89 # SOURCE4 11 2.0380
angle_coeff @angle:cf-ce-cg harmonic 66.10 123.79 # CORR 41
angle_coeff @angle:cf-ce-cy harmonic 60.53 137.74 # SOURCE4 13 0.3952
angle_coeff @angle:cf-ce-h4 harmonic 49.02 123.76 # SOURCE4 5 1.0909
angle_coeff @angle:cf-ce-ha harmonic 50.21 118.12 # CORR 655
angle_coeff @angle:cf-ce-n1 harmonic 72.03 120.03 # SOURCE4 6 1.9451
angle_coeff @angle:cf-ce-n harmonic 72.60 108.25 # CORR 64
angle_coeff @angle:cf-ce-nh harmonic 69.48 121.52 # SOURCE4 12 2.0106
angle_coeff @angle:cf-ce-oh harmonic 70.92 121.78 # CORR 24
angle_coeff @angle:cg-ce-cg harmonic 65.58 118.26 # CORR 7
angle_coeff @angle:cg-ce-ha harmonic 47.93 116.54 # CORR 18
angle_coeff @angle:cg-ce-n1 harmonic 69.49 119.50 # CORR 2
angle_coeff @angle:cg-ce-n2 harmonic 69.59 121.43 # SOURCE4 6 0.8382
angle_coeff @angle:c-ce-ha harmonic 46.59 117.26 # SOURCE3 11 2.7158
angle_coeff @angle:c-ce-n harmonic 66.20 118.62 # CORR 137
angle_coeff @angle:c-ce-nh harmonic 67.79 115.62 # CORR 19
angle_coeff @angle:c-ce-oh harmonic 68.34 117.92 # SOURCE4 5 1.4580
angle_coeff @angle:c-ce-os harmonic 69.09 113.78 # SOURCE4 21 1.8258
angle_coeff @angle:h4-ce-n1 harmonic 52.58 116.36 # SOURCE4 7 0.2182
angle_coeff @angle:h4-ce-n2 harmonic 52.36 121.58 # CORR 116
angle_coeff @angle:h4-ce-ne harmonic 49.72 115.81 # SOURCE4 7 1.9836
angle_coeff @angle:ha-ce-n1 harmonic 52.70 115.96 # CORR 4
angle_coeff @angle:ha-ce-n2 harmonic 52.85 119.51 # SOURCE3 2 0.4623
angle_coeff @angle:ha-ce-ne harmonic 49.16 118.59 # SOURCE3 5 1.1113
angle_coeff @angle:ha-ce-nh harmonic 50.62 114.99 # CORR 2
angle_coeff @angle:ha-ce-p2 harmonic 51.40 120.11 # SOURCE3 1
angle_coeff @angle:ha-ce-pe harmonic 51.44 119.33 # SOURCE3 6 0.8966
angle_coeff @angle:ha-ce-px harmonic 51.66 117.90 # SOURCE3 6 0.1809
angle_coeff @angle:ha-ce-py harmonic 52.32 118.72 # SOURCE3 3 0.3064
angle_coeff @angle:ha-ce-sx harmonic 41.85 115.45 # SOURCE3 3 0.6640
angle_coeff @angle:ha-ce-sy harmonic 42.34 114.86 # SOURCE3 3 0.4717
angle_coeff @angle:n2-ce-nh harmonic 71.56 124.96 # CORR 92
angle_coeff @angle:n2-ce-os harmonic 74.58 118.13 # SOURCE4 6 0.1367
angle_coeff @angle:n2-ce-ss harmonic 64.40 117.23 # SOURCE4 6 2.0518
angle_coeff @angle:ne-ce-ne harmonic 68.07 123.87 # SOURCE3 1 0.0000
angle_coeff @angle:ne-ce-nh harmonic 71.89 112.91 # SOURCE4 12 1.1263
angle_coeff @angle:nf-ce-nh harmonic 73.31 118.13 # SOURCE4 6 0.5842
angle_coeff @angle:pe-ce-pe harmonic 92.40 129.79 # SOURCE3 1 0.0000
angle_coeff @angle:py-ce-py harmonic 102.62 108.06 # SOURCE3 1 0.0000
angle_coeff @angle:sx-ce-sx harmonic 60.61 120.32 # SOURCE3 1 0.0000
angle_coeff @angle:sy-ce-sy harmonic 61.21 119.97 # SOURCE3 1 0.0000
angle_coeff @angle:c2-cf-c3 harmonic 64.30 122.89 # SOURCE3 7 same_as_c2-ce-c3
angle_coeff @angle:c2-cf-ca harmonic 65.16 123.08 # SOURCE3 6 same_as_c2-ce-ca
angle_coeff @angle:c2-cf-cd harmonic 65.62 123.27 # CORR 72
angle_coeff @angle:c2-cf-cf harmonic 65.73 123.08 # SOURCE3 12 same_as_c2-ce-ce
angle_coeff @angle:c2-cf-ch harmonic 66.66 121.67 # CORR 21
angle_coeff @angle:c2-cf-ha harmonic 49.56 121.10 # SOURCE3 46 same_as_c2-ce-ha
angle_coeff @angle:c2-cf-n2 harmonic 70.34 128.70 # SOURCE3 1 same_as_c2-ce-n2
angle_coeff @angle:c2-cf-nf harmonic 69.73 118.32 # SOURCE3 7 same_as_c2-ce-ne
angle_coeff @angle:c2-cf-p2 harmonic 77.91 118.24 # SOURCE3 1 same_as_c2-ce-p2
angle_coeff @angle:c2-cf-pf harmonic 77.59 118.76 # SOURCE3 8 same_as_c2-ce-pe
angle_coeff @angle:c2-cf-px harmonic 77.17 119.72 # SOURCE3 6 same_as_c2-ce-px
angle_coeff @angle:c2-cf-py harmonic 77.39 122.13 # SOURCE3 5 same_as_c2-ce-py
angle_coeff @angle:c2-cf-sx harmonic 61.64 119.87 # SOURCE3 5 same_as_c2-ce-sx
angle_coeff @angle:c2-cf-sy harmonic 61.96 120.35 # SOURCE3 5 same_as_c2-ce-sy
angle_coeff @angle:c3-cf-ca harmonic 62.76 119.28 # CORR 178
angle_coeff @angle:c3-cf-cd harmonic 63.42 118.22 # CORR 39
angle_coeff @angle:c3-cf-ce harmonic 64.52 122.11 # CORR 221
angle_coeff @angle:c3-cf-cf harmonic 63.80 116.99 # CORR 244
angle_coeff @angle:c3-cf-n2 harmonic 66.92 122.70 # CORR 81
angle_coeff @angle:ca-cf-ca harmonic 63.94 117.58 # CORR 112
angle_coeff @angle:ca-cf-cc harmonic 62.70 130.80 # SOURCE4 12 1.2696
angle_coeff @angle:ca-cf-cd harmonic 64.21 118.06 # CORR 17
angle_coeff @angle:ca-cf-ce harmonic 64.07 127.39 # CORR 318
angle_coeff @angle:ca-cf-ha harmonic 47.07 115.16 # CORR 345
angle_coeff @angle:ca-cf-n2 harmonic 68.51 120.72 # SOURCE3 1 same_as_ca-ce-n2
angle_coeff @angle:ca-cf-ne harmonic 67.74 122.66 # CORR 22
angle_coeff @angle:ca-cf-oh harmonic 68.85 116.37 # CORR 11
angle_coeff @angle:c-cf-c2 harmonic 65.82 120.42 # SOURCE3 13 same_as_c-ce-c2
angle_coeff @angle:c-cf-c3 harmonic 63.35 116.92 # CORR 188
angle_coeff @angle:c-cf-c harmonic 62.59 122.38 # CORR 23
angle_coeff @angle:c-cf-cc harmonic 63.81 126.07 # CORR 2
angle_coeff @angle:cc-cf-cf harmonic 64.81 124.49 # CORR 12
angle_coeff @angle:c-cf-cd harmonic 64.25 117.76 # SOURCE4 10 1.2451
angle_coeff @angle:c-cf-ce harmonic 64.26 126.41 # SOURCE3 2 same_as_c-ce-cf
angle_coeff @angle:cc-cf-ha harmonic 49.97 115.48 # CORR 39
angle_coeff @angle:cd-cf-ce harmonic 64.87 126.20 # CORR 88
angle_coeff @angle:cd-cf-ha harmonic 47.53 115.45 # CORR 113
angle_coeff @angle:cd-cf-n2 harmonic 68.94 121.28 # CORR 69
angle_coeff @angle:ce-cf-cf harmonic 65.46 124.19 # CORR 341
angle_coeff @angle:ce-cf-ch harmonic 66.10 123.79 # CORR 41
angle_coeff @angle:ce-cf-ha harmonic 50.21 118.12 # CORR 655
angle_coeff @angle:ce-cf-n harmonic 72.60 108.25 # CORR 64
angle_coeff @angle:ce-cf-oh harmonic 70.92 121.78 # CORR 24
angle_coeff @angle:cf-cf-cf harmonic 64.55 118.74 # SOURCE3 1 same_as_ce-ce-ce
angle_coeff @angle:cf-cf-h4 harmonic 47.06 117.97 # CORR 19
angle_coeff @angle:cf-cf-ha harmonic 47.50 115.90 # SOURCE3 12 0.4670
angle_coeff @angle:cf-cf-n1 harmonic 66.79 127.15 # CORR 4
angle_coeff @angle:cf-cf-n2 harmonic 69.57 119.33 # CORR 13
angle_coeff @angle:c-cf-ha harmonic 46.59 117.26 # SOURCE3 11 2.7158
angle_coeff @angle:ch-cf-ch harmonic 65.58 118.26 # CORR 7
angle_coeff @angle:ch-cf-ha harmonic 47.93 116.54 # CORR 18
angle_coeff @angle:ch-cf-n1 harmonic 69.49 119.50 # CORR 2
angle_coeff @angle:c-cf-n2 harmonic 70.16 114.88 # SOURCE4 5 1.3647
angle_coeff @angle:c-cf-n harmonic 66.20 118.62 # CORR 137
angle_coeff @angle:c-cf-nh harmonic 67.79 115.62 # CORR 19
angle_coeff @angle:f-c-f harmonic 72.22 107.35 # SOURCE2 2 0.2500
angle_coeff @angle:h4-cf-n2 harmonic 52.36 121.58 # CORR 116
angle_coeff @angle:h4-cf-ne harmonic 52.29 120.21 # SOURCE4 6 0.8104
angle_coeff @angle:ha-cf-n1 harmonic 52.70 115.96 # CORR 4
angle_coeff @angle:ha-cf-n2 harmonic 52.85 119.51 # SOURCE3 2 same_as_ha-ce-n2
angle_coeff @angle:ha-cf-nf harmonic 49.16 118.59 # SOURCE3 5 same_as_ha-ce-ne
angle_coeff @angle:ha-cf-nh harmonic 50.62 114.99 # CORR 2
angle_coeff @angle:ha-cf-p2 harmonic 51.40 120.11 # SOURCE3 1 same_as_ha-ce-p2
angle_coeff @angle:ha-cf-pf harmonic 51.44 119.33 # SOURCE3 6 same_as_ha-ce-pe
angle_coeff @angle:ha-cf-px harmonic 51.66 117.90 # SOURCE3 6 same_as_ha-ce-px
angle_coeff @angle:ha-cf-py harmonic 52.32 118.72 # SOURCE3 3 same_as_ha-ce-py
angle_coeff @angle:ha-cf-sx harmonic 41.85 115.45 # SOURCE3 3 same_as_ha-ce-sx
angle_coeff @angle:ha-cf-sy harmonic 42.34 114.86 # SOURCE3 3 same_as_ha-ce-sy
angle_coeff @angle:n2-cf-nh harmonic 71.56 124.96 # CORR 92
angle_coeff @angle:nf-cf-nf harmonic 68.07 123.87 # SOURCE3 1 same_as_ne-ce-ne
angle_coeff @angle:f-c-o harmonic 73.21 123.44 # SOURCE3 1
angle_coeff @angle:pf-cf-pf harmonic 92.40 129.79 # SOURCE3 1 same_as_pe-ce-pe
angle_coeff @angle:py-cf-py harmonic 102.62 108.06 # SOURCE3 1 same_as_py-ce-py
angle_coeff @angle:f-c-s harmonic 63.41 124.00 # SOURCE2 1 0.0000
angle_coeff @angle:sx-cf-sx harmonic 60.61 120.32 # SOURCE3 1 same_as_sx-ce-sx
angle_coeff @angle:sy-cf-sy harmonic 61.21 119.97 # SOURCE3 1 same_as_sy-ce-sy
angle_coeff @angle:c1-cg-ca harmonic 56.52 179.52 # CORR 19
angle_coeff @angle:c1-cg-cc harmonic 56.97 178.60 # SOURCE4 6 0.3822
angle_coeff @angle:c1-cg-ce harmonic 56.95 178.05 # CORR 7
angle_coeff @angle:c1-cg-cg harmonic 58.17 179.70 # CORR 18
angle_coeff @angle:c1-cg-ne harmonic 62.73 170.02 # SOURCE3 4 1.1724
angle_coeff @angle:c1-cg-pe harmonic 71.80 173.29 # SOURCE3 11 4.9305
angle_coeff @angle:ca-cg-ch harmonic 56.91 179.64 # CORR 13
angle_coeff @angle:ca-cg-n1 harmonic 58.93 179.43 # CORR 103
angle_coeff @angle:c-cg-c1 harmonic 56.19 179.14 # SOURCE3 2 0.0000
angle_coeff @angle:cc-cg-n1 harmonic 59.43 178.54 # CORR 50
angle_coeff @angle:ce-cg-ch harmonic 57.39 177.94 # CORR 17
angle_coeff @angle:ce-cg-n1 harmonic 59.39 177.97 # CORR 67
angle_coeff @angle:n1-cg-ne harmonic 64.98 174.44 # CORR 17
angle_coeff @angle:h4-c-o harmonic 54.28 120.93 # SOURCE4 129 0.5769
angle_coeff @angle:h5-c-n harmonic 52.39 112.19 # SOURCE4 33 0.4220
angle_coeff @angle:h5-c-o harmonic 53.89 123.26 # SOURCE4 38 0.4806
angle_coeff @angle:ha-c-ha harmonic 37.86 115.61 # SOURCE3 4 0.0458
angle_coeff @angle:ha-c-i harmonic 36.71 110.58 # SOURCE3 1 0.0000
angle_coeff @angle:ha-c-n harmonic 52.40 112.37 # SOURCE3 4 0.6424
angle_coeff @angle:ha-c-o harmonic 54.27 121.94 # SOURCE3 51 2.3235
angle_coeff @angle:ha-c-oh harmonic 53.97 111.82 # SOURCE3 4 1.9375
angle_coeff @angle:ha-c-os harmonic 53.24 110.34 # SOURCE3 8 1.9344
angle_coeff @angle:ha-c-s harmonic 44.27 119.56 # SOURCE3 3 0.7586
angle_coeff @angle:c1-ch-ca harmonic 56.52 179.52 # CORR 19
angle_coeff @angle:c1-ch-cf harmonic 56.95 178.05 # CORR 7
angle_coeff @angle:c1-ch-ch harmonic 58.17 179.70 # CORR 18
angle_coeff @angle:c1-ch-nf harmonic 62.73 170.02 # SOURCE3 4 same_as_c1-cg-ne
angle_coeff @angle:c1-ch-pf harmonic 71.80 173.29 # SOURCE3 11 same_as_c1-cg-pe
angle_coeff @angle:ca-ch-cg harmonic 56.91 179.64 # CORR 13
angle_coeff @angle:ca-ch-n1 harmonic 58.93 179.43 # CORR 103
angle_coeff @angle:c-ch-c1 harmonic 56.19 179.14 # SOURCE3 2 same_as_c-cg-c1
angle_coeff @angle:cd-ch-n1 harmonic 59.43 178.54 # CORR 50
angle_coeff @angle:cf-ch-cg harmonic 57.39 177.94 # CORR 17
angle_coeff @angle:cf-ch-n1 harmonic 59.39 177.97 # CORR 67
angle_coeff @angle:cg-ch-ch harmonic 58.68 179.67 # SOURCE4 7 0.1439
angle_coeff @angle:n1-ch-nf harmonic 64.98 174.44 # CORR 17
angle_coeff @angle:i-c-i harmonic 59.79 116.45 # SOURCE3 1 0.0000
angle_coeff @angle:i-c-o harmonic 55.51 122.02 # SOURCE3 4 1.2961
angle_coeff @angle:f-cl-f harmonic 0.00 87.50 # SOURCE2 1 estimated_force_constant
angle_coeff @angle:n2-c-n2 harmonic 71.83 110.31 # SOURCE3 1
angle_coeff @angle:n2-c-o harmonic 73.02 122.50 # SOURCE3 1
angle_coeff @angle:n4-c-n4 harmonic 64.71 114.64 # SOURCE3 1 0.0000
angle_coeff @angle:n4-c-o harmonic 69.58 118.83 # SOURCE3 4 3.8516
angle_coeff @angle:nc-c-o harmonic 73.92 122.97 # CORR 121
angle_coeff @angle:nd-c-o harmonic 73.92 122.97 # CORR 121
angle_coeff @angle:ne-c-ne harmonic 73.21 110.31 # CORR 2
angle_coeff @angle:ne-c-o harmonic 72.96 125.91 # CORR 42
angle_coeff @angle:nf-c-nf harmonic 73.21 110.31 # CORR 2
angle_coeff @angle:nf-c-o harmonic 72.96 125.91 # CORR 42
angle_coeff @angle:n-c-n harmonic 74.80 113.38 # SOURCE4 635 1.4358
angle_coeff @angle:n-c-nc harmonic 72.35 117.05 # CORR 77
angle_coeff @angle:n-c-nd harmonic 72.35 117.05 # CORR 77
angle_coeff @angle:n-c-ne harmonic 74.43 110.37 # SOURCE4 10 1.7492
angle_coeff @angle:n-c-o harmonic 75.83 122.03 # SOURCE3 221 2.3565
angle_coeff @angle:n-c-oh harmonic 76.22 113.63 # SOURCE4 5 1.1209
angle_coeff @angle:no-c-no harmonic 66.54 109.28 # SOURCE3 1
angle_coeff @angle:no-c-o harmonic 67.95 125.36 # SOURCE3 1
angle_coeff @angle:n-c-os harmonic 76.68 109.28 # SOURCE4 318 0.8749
angle_coeff @angle:n-c-s harmonic 65.73 123.88 # SOURCE3 5 1.2935
angle_coeff @angle:n-c-sh harmonic 65.61 112.61 # SOURCE4 8 1.2601
angle_coeff @angle:n-c-ss harmonic 66.85 110.42 # SOURCE4 59 1.5507
angle_coeff @angle:oh-c-oh harmonic 78.91 110.56 # SOURCE3 2 0.5498
angle_coeff @angle:oh-c-s harmonic 66.64 123.44 # SOURCE3 1 0.0000
angle_coeff @angle:o-c-o harmonic 78.17 130.38 # SOURCE4 429 1.0315
angle_coeff @angle:o-c-oh harmonic 77.38 122.88 # SOURCE3 33 2.1896
angle_coeff @angle:o-c-os harmonic 75.93 123.33 # SOURCE4 1708 1.0632
angle_coeff @angle:o-c-p2 harmonic 75.65 123.10 # SOURCE3 1
angle_coeff @angle:o-c-p3 harmonic 77.08 120.79 # SOURCE3 1
angle_coeff @angle:o-c-p5 harmonic 77.01 121.20 # SOURCE4 8 1.2117
angle_coeff @angle:o-c-pe harmonic 75.23 123.02 # SOURCE3 3 0.1404
angle_coeff @angle:o-c-pf harmonic 75.23 123.02 # SOURCE3 3 same_as_o-c-pe
angle_coeff @angle:o-c-px harmonic 76.75 119.10 # SOURCE3 1 0.0000
angle_coeff @angle:o-c-py harmonic 77.45 121.71 # SOURCE4 5 0.3133
angle_coeff @angle:o-c-s4 harmonic 61.24 121.15 # SOURCE3 1
angle_coeff @angle:o-c-s6 harmonic 61.67 119.45 # SOURCE3 1
angle_coeff @angle:o-c-s harmonic 68.21 120.44 # SOURCE3 2 0.0000
angle_coeff @angle:o-c-sh harmonic 64.19 121.41 # SOURCE3 4 1.4052
angle_coeff @angle:os-c-os harmonic 76.45 111.38 # SOURCE4 12 0.8309
angle_coeff @angle:o-c-ss harmonic 64.62 122.29 # SOURCE3 7 1.9240
angle_coeff @angle:os-c-s harmonic 65.82 125.03 # SOURCE4 18 0.9978
angle_coeff @angle:os-c-ss harmonic 66.30 113.63 # SOURCE4 5 0.7367
angle_coeff @angle:o-c-sx harmonic 60.75 121.15 # SOURCE3 5 3.6452
angle_coeff @angle:o-c-sy harmonic 61.88 119.32 # SOURCE3 5 2.4495
angle_coeff @angle:p2-c-p2 harmonic 94.44 113.75 # SOURCE3 1
angle_coeff @angle:p3-c-p3 harmonic 93.55 118.04 # SOURCE3 1 0.0000
angle_coeff @angle:p3-c-py harmonic 107.54 90.08 # SOURCE3 1 0.0000
angle_coeff @angle:p5-c-p5 harmonic 91.43 123.76 # SOURCE3 1
angle_coeff @angle:ca-cp-ca harmonic 67.11 118.33 # CORR 526
angle_coeff @angle:ca-cp-cp harmonic 64.09 121.13 # CORR 991
angle_coeff @angle:ca-cp-na harmonic 68.78 119.43 # SOURCE4 21 0.6591
angle_coeff @angle:ca-cp-nb harmonic 69.19 121.65 # SOURCE4 63 0.6564
angle_coeff @angle:cp-cp-cp harmonic 72.20 90.00 # SOURCE3 4 0.0000
angle_coeff @angle:cp-cp-cq harmonic 62.64 124.47 # CORR 10
angle_coeff @angle:cp-cp-nb harmonic 68.05 116.60 # SOURCE4 88 1.1887
angle_coeff @angle:pe-c-pe harmonic 93.89 113.77 # SOURCE3 1 0.0000
angle_coeff @angle:pf-c-pf harmonic 93.89 113.77 # SOURCE3 1 same_as_pe-c-pe
angle_coeff @angle:nb-cp-nb harmonic 71.31 125.72 # SOURCE4 5 0.6674
angle_coeff @angle:py-c-py harmonic 92.13 123.80 # SOURCE3 1 0.0000
angle_coeff @angle:ca-cq-ca harmonic 67.11 118.33 # CORR 526
angle_coeff @angle:ca-cq-cq harmonic 64.09 121.13 # CORR 991
angle_coeff @angle:ca-cq-nb harmonic 69.19 121.65 # SOURCE4 63 same as ca-cp-nb
angle_coeff @angle:cp-cq-cq harmonic 62.64 124.47 # CORR 10
angle_coeff @angle:cq-cq-cq harmonic 72.20 90.00 # SOURCE3 4 0.0000
angle_coeff @angle:cq-cq-nb harmonic 68.05 116.60 # SOURCE4 88 same as cp-cp-nb
angle_coeff @angle:s4-c-s4 harmonic 61.25 108.81 # SOURCE3 1
angle_coeff @angle:s6-c-s6 harmonic 59.39 115.75 # SOURCE3 1
angle_coeff @angle:sh-c-sh harmonic 62.47 115.33 # SOURCE3 1 0.0000
angle_coeff @angle:s-c-s harmonic 65.01 120.40 # SOURCE3 2 1.2766
angle_coeff @angle:s-c-sh harmonic 62.29 122.76 # SOURCE4 11 1.5734
angle_coeff @angle:s-c-ss harmonic 61.88 125.90 # SOURCE3 1 0.0000
angle_coeff @angle:ss-c-ss harmonic 63.79 113.00 # SOURCE3 1 0.0000
angle_coeff @angle:sx-c-sx harmonic 60.77 108.80 # SOURCE3 1 0.0000
angle_coeff @angle:sy-c-sy harmonic 59.54 115.78 # SOURCE3 1 0.0000
angle_coeff @angle:c2-cu-cx harmonic 58.56 148.21 # SOURCE4 6 1.8305
angle_coeff @angle:c-cu-cu harmonic 94.97 62.60 # SOURCE2 1 0.0000
angle_coeff @angle:cu-cu-cx harmonic 100.97 50.80 # SOURCE2 1 0.0000
angle_coeff @angle:cu-cu-ha harmonic 46.11 147.73 # SOURCE2 3 2.0950
angle_coeff @angle:cv-cv-cy harmonic 73.28 94.17 # SOURCE3 2 0.0000
angle_coeff @angle:cv-cv-ha harmonic 47.30 133.70 # SOURCE3 2 0.0000
angle_coeff @angle:cx-cv-cx harmonic 84.66 63.90 # SOURCE2 1 0.0000
angle_coeff @angle:cy-cv-ha harmonic 42.89 132.14 # SOURCE3 2 0.0000
angle_coeff @angle:c1-cx-cx harmonic 63.10 120.66 # SOURCE4 9 0.9067
angle_coeff @angle:c2-cx-cx harmonic 62.33 120.54 # SOURCE4 51 2.2377
angle_coeff @angle:c2-cx-h1 harmonic 46.63 115.78 # SOURCE4 8 0.2332
angle_coeff @angle:c2-cx-hc harmonic 46.77 115.10 # SOURCE4 12 0.7463
angle_coeff @angle:c2-cx-os harmonic 67.14 116.17 # SOURCE4 14 1.2782
angle_coeff @angle:c3-cx-c3 harmonic 63.00 114.48 # SOURCE4 46 1.9627
angle_coeff @angle:c3-cx-cx harmonic 61.82 120.06 # SOURCE4 448 2.1467
angle_coeff @angle:c3-cx-h1 harmonic 45.87 115.42 # SOURCE4 89 1.1096
angle_coeff @angle:c3-cx-hc harmonic 46.12 114.16 # SOURCE4 85 1.1118
angle_coeff @angle:c3-cx-n3 harmonic 64.31 118.50 # SOURCE4 17 2.4897
angle_coeff @angle:c3-cx-os harmonic 66.57 115.50 # SOURCE4 161 1.3016
angle_coeff @angle:ca-cx-cx harmonic 61.86 122.18 # SOURCE4 65 1.6898
angle_coeff @angle:ca-cx-h1 harmonic 46.81 114.57 # SOURCE4 7 0.6498
angle_coeff @angle:ca-cx-hc harmonic 47.05 113.41 # SOURCE4 18 0.7843
angle_coeff @angle:ca-cx-oh harmonic 69.25 112.93 # SOURCE3 1 0.0000
angle_coeff @angle:ca-cx-os harmonic 66.42 118.50 # SOURCE4 6 0.7514
angle_coeff @angle:c-cx-c3 harmonic 62.91 116.93 # SOURCE4 18 1.8253
angle_coeff @angle:cc-cx-cx harmonic 62.90 119.31 # CORR 39
angle_coeff @angle:cc-cx-hc harmonic 47.37 113.84 # SOURCE4 15 0.6682
angle_coeff @angle:c-cx-cx harmonic 62.96 117.96 # SOURCE4 147 1.8483
angle_coeff @angle:cd-cx-cx harmonic 62.90 119.31 # CORR 39
angle_coeff @angle:c-cx-h1 harmonic 46.27 117.25 # SOURCE4 24 0.7935
angle_coeff @angle:c-cx-hc harmonic 46.42 116.53 # SOURCE4 36 1.2830
angle_coeff @angle:cl-cx-cl harmonic 54.42 114.20 # SOURCE2 1 0.0000
angle_coeff @angle:cl-cx-cx harmonic 56.53 120.10 # SOURCE4 15 0.5917
angle_coeff @angle:cl-cx-h1 harmonic 40.37 111.43 # SOURCE3 1 0.0000
angle_coeff @angle:cl-cx-hc harmonic 39.60 115.80 # SOURCE2 1 0.0000
angle_coeff @angle:c-cx-os harmonic 67.25 115.59 # SOURCE4 36 0.8227
angle_coeff @angle:cu-cx-cu harmonic 91.53 54.60 # SOURCE2 1 0.0000
angle_coeff @angle:cu-cx-cx harmonic 88.72 58.50 # SOURCE4 7 0.1333
angle_coeff @angle:cu-cx-hc harmonic 45.49 118.09 # SOURCE4 7 1.0126
angle_coeff @angle:cx-cx-cx harmonic 87.90 60.00 # SOURCE4 681 0.6259
angle_coeff @angle:cx-cx-cy harmonic 67.54 100.53 # SOURCE3 4 0.0000
angle_coeff @angle:cx-cx-f harmonic 64.53 117.93 # SOURCE4 7 1.1613
angle_coeff @angle:cx-cx-h1 harmonic 45.45 119.66 # SOURCE3 12 0.4529
angle_coeff @angle:cx-cx-hc harmonic 45.79 117.92 # SOURCE3 92 1.1927
angle_coeff @angle:cx-cx-hx harmonic 45.47 119.62 # SOURCE4 9 0.1118
angle_coeff @angle:cx-cx-n3 harmonic 91.17 59.59 # SOURCE4 154 0.3104
angle_coeff @angle:cx-cx-na harmonic 62.94 125.85 # SOURCE4 16 2.0385
angle_coeff @angle:cx-cx-nh harmonic 92.03 59.15 # SOURCE4 116 0.6758
angle_coeff @angle:cx-cx-os harmonic 93.61 59.07 # SOURCE4 306 0.5253
angle_coeff @angle:cy-cx-hc harmonic 43.98 125.43 # SOURCE3 2 0.0000
angle_coeff @angle:f-cx-f harmonic 70.61 106.90 # SOURCE2 2 1.4000
angle_coeff @angle:f-cx-h1 harmonic 50.35 111.68 # SOURCE3 1 0.0000
angle_coeff @angle:f-cx-hc harmonic 50.22 112.30 # SOURCE2 1 0.0000
angle_coeff @angle:h1-cx-h1 harmonic 38.38 115.45 # SOURCE4 230 0.3302
angle_coeff @angle:h1-cx-n3 harmonic 47.97 116.43 # SOURCE4 173 1.4531
angle_coeff @angle:h1-cx-n harmonic 49.06 115.42 # SOURCE4 12 1.0443
angle_coeff @angle:h1-cx-na harmonic 49.96 108.67 # SOURCE4 8 1.6134
angle_coeff @angle:h1-cx-nh harmonic 48.50 116.32 # SOURCE4 151 1.0310
angle_coeff @angle:h1-cx-os harmonic 50.01 115.17 # SOURCE3 8 0.0226
angle_coeff @angle:h2-cx-h2 harmonic 37.87 119.43 # SOURCE3 1 0.0000
angle_coeff @angle:h2-cx-n2 harmonic 47.55 117.18 # SOURCE3 4 0.0000
angle_coeff @angle:hc-cx-hc harmonic 38.58 114.47 # SOURCE3 19 0.3295
angle_coeff @angle:hc-cx-os harmonic 50.25 114.10 # SOURCE2 1 0.0000
angle_coeff @angle:hx-cx-n4 harmonic 49.89 114.47 # SOURCE4 8 0.1059
angle_coeff @angle:n2-cx-n2 harmonic 102.06 50.16 # SOURCE3 1 0.0000
angle_coeff @angle:n-cx-oh harmonic 70.16 119.75 # SOURCE3 2 0.0000
angle_coeff @angle:n-cx-os harmonic 92.71 65.98 # SOURCE3 1 0.0000
angle_coeff @angle:oh-cx-oh harmonic 76.67 107.85 # SOURCE3 1 0.0000
angle_coeff @angle:oh-cx-os harmonic 71.64 118.12 # SOURCE3 4 1.3581
angle_coeff @angle:os-cx-os harmonic 70.90 115.84 # SOURCE4 7 2.0760
angle_coeff @angle:c2-cy-cy harmonic 66.57 100.40 # SOURCE2 1 0.0000
angle_coeff @angle:c3-cy-c3 harmonic 63.19 111.58 # SOURCE4 15 1.0060
angle_coeff @angle:c3-cy-cy harmonic 60.76 118.70 # SOURCE4 293 1.8510
angle_coeff @angle:c3-cy-h1 harmonic 46.16 111.77 # SOURCE4 119 0.4412
angle_coeff @angle:c3-cy-hc harmonic 46.21 111.55 # SOURCE3 5 0.6276
angle_coeff @angle:c3-cy-n3 harmonic 65.28 112.92 # SOURCE3 2 0.0000
angle_coeff @angle:c3-cy-n harmonic 68.32 104.05 # SOURCE4 122 0.5745
angle_coeff @angle:c3-cy-os harmonic 66.99 111.96 # SOURCE4 11 1.0668
angle_coeff @angle:c-cy-c3 harmonic 61.78 116.72 # SOURCE4 129 0.5236
angle_coeff @angle:cc-cy-cy harmonic 60.58 121.17 # CORR 19
angle_coeff @angle:c-cy-cy harmonic 71.81 84.99 # SOURCE4 263 0.6952
angle_coeff @angle:cd-cy-cy harmonic 60.58 121.17 # CORR 19
angle_coeff @angle:ce-cy-h2 harmonic 45.50 117.25 # SOURCE4 17 0.5351
angle_coeff @angle:ce-cy-n harmonic 74.69 88.02 # SOURCE4 14 0.1416
angle_coeff @angle:ce-cy-ss harmonic 58.47 121.33 # SOURCE4 13 0.1599
angle_coeff @angle:c-cy-h1 harmonic 45.89 113.10 # SOURCE4 71 0.7655
angle_coeff @angle:c-cy-hc harmonic 45.75 113.85 # SOURCE3 8 0.2067
angle_coeff @angle:cl-cy-cy harmonic 57.58 112.00 # SOURCE3 2 0.0000
angle_coeff @angle:cl-cy-h1 harmonic 40.98 106.59 # SOURCE3 1 0.0000
angle_coeff @angle:cl-cy-hc harmonic 39.62 114.00 # SOURCE2 1 0.0000
angle_coeff @angle:c-cy-n harmonic 64.32 117.39 # SOURCE4 70 1.0742
angle_coeff @angle:c-cy-os harmonic 66.27 114.42 # SOURCE4 6 1.2052
angle_coeff @angle:cv-cy-cy harmonic 71.46 86.67 # SOURCE4 6 1.1600
angle_coeff @angle:cv-cy-hc harmonic 46.06 114.47 # SOURCE4 7 0.4307
angle_coeff @angle:cx-cy-cy harmonic 66.08 101.23 # SOURCE3 4 0.0000
angle_coeff @angle:cx-cy-hc harmonic 45.25 118.30 # SOURCE2 3 5.7799
angle_coeff @angle:cy-cy-cy harmonic 70.16 87.61 # SOURCE3 32 1.5407
angle_coeff @angle:cy-cy-f harmonic 64.55 112.87 # SOURCE4 13 1.6772
angle_coeff @angle:cy-cy-h1 harmonic 44.87 114.84 # SOURCE3 20 2.5651
angle_coeff @angle:cy-cy-h2 harmonic 44.51 116.77 # SOURCE4 83 0.8683
angle_coeff @angle:cy-cy-hc harmonic 44.82 115.14 # SOURCE3 114 0.8364
angle_coeff @angle:cy-cy-n3 harmonic 73.47 87.58 # SOURCE3 4 0.6135
angle_coeff @angle:cy-cy-n harmonic 65.22 112.13 # SOURCE3 31 2.0700
angle_coeff @angle:cy-cy-na harmonic 63.12 119.70 # SOURCE4 9 0.3333
angle_coeff @angle:cy-cy-oh harmonic 66.00 114.19 # SOURCE3 4 0.0000
angle_coeff @angle:cy-cy-os harmonic 66.41 111.77 # SOURCE4 18 2.1334
angle_coeff @angle:cy-cy-s6 harmonic 58.93 117.46 # SOURCE4 7 1.2423
angle_coeff @angle:cy-cy-ss harmonic 58.83 118.18 # SOURCE4 55 0.9860
angle_coeff @angle:h1-cy-h1 harmonic 39.01 109.72 # SOURCE3 6 0.8087
angle_coeff @angle:h1-cy-n3 harmonic 48.21 113.36 # SOURCE3 6 1.4509
angle_coeff @angle:h1-cy-n harmonic 49.10 111.18 # SOURCE4 141 0.5848
angle_coeff @angle:h1-cy-oh harmonic 50.89 111.49 # SOURCE3 2 0.0000
angle_coeff @angle:h1-cy-os harmonic 50.53 110.94 # SOURCE3 8 0.6522
angle_coeff @angle:h1-cy-s6 harmonic 41.05 112.57 # SOURCE4 5 1.2943
angle_coeff @angle:h2-cy-n harmonic 48.42 114.44 # SOURCE4 88 0.7114
angle_coeff @angle:h2-cy-os harmonic 50.97 109.19 # SOURCE4 6 0.4162
angle_coeff @angle:h2-cy-s6 harmonic 42.11 106.85 # SOURCE4 6 0.3975
angle_coeff @angle:h2-cy-ss harmonic 41.64 109.73 # SOURCE4 92 0.7424
angle_coeff @angle:hc-cy-hc harmonic 39.24 109.04 # SOURCE3 28 0.5962
angle_coeff @angle:n-cy-os harmonic 71.62 107.50 # SOURCE4 9 2.3773
angle_coeff @angle:n-cy-s6 harmonic 65.24 103.45 # SOURCE4 6 0.7197
angle_coeff @angle:n-cy-ss harmonic 64.81 105.12 # SOURCE4 69 0.3987
angle_coeff @angle:nh-cz-nh harmonic 72.97 120.17 # SOURCE4 26 0.3964
angle_coeff @angle:br-n1-c1 harmonic 51.10 180.00 # HF/6-31G* 1
angle_coeff @angle:c1-n1-c1 harmonic 64.91 179.92 # HF/6-31G* 1
angle_coeff @angle:c1-n1-c2 harmonic 60.25 177.73 # HF/6-31G* 1
angle_coeff @angle:c1-n1-c3 harmonic 54.83 180.00 # HF/6-31G* 1
angle_coeff @angle:c1-n1-ca harmonic 56.97 179.99 # HF/6-31G* 1
angle_coeff @angle:c1-n1-cl harmonic 50.10 179.95 # HF/6-31G* 1
angle_coeff @angle:c1-n1-f harmonic 55.86 179.96 # HF/6-31G* 1
angle_coeff @angle:c1-n1-hn harmonic 45.62 179.98 # HF/6-31G* 1
angle_coeff @angle:c1-n1-i harmonic 46.23 179.95 # HF/6-31G* 1
angle_coeff @angle:c1-n1-n1 harmonic 66.89 180.00 # HF/6-31G* 1
angle_coeff @angle:c1-n1-n2 harmonic 65.70 171.56 # HF/6-31G* 1
angle_coeff @angle:c1-n1-n3 harmonic 60.69 175.59 # HF/6-31G* 1
angle_coeff @angle:c1-n1-n4 harmonic 59.68 179.69 # HF/6-31G* 1
angle_coeff @angle:c1-n1-na harmonic 59.95 180.00 # HF/6-31G* 1
angle_coeff @angle:c1-n1-nh harmonic 60.88 176.35 # HF/6-31G* 1
angle_coeff @angle:c1-n1-o harmonic 62.62 179.95 # HF/6-31G* 1
angle_coeff @angle:c1-n1-oh harmonic 62.88 174.31 # HF/6-31G* 1
angle_coeff @angle:c1-n1-os harmonic 62.15 176.61 # HF/6-31G* 1
angle_coeff @angle:c1-n1-p2 harmonic 68.11 172.83 # HF/6-31G* 1
angle_coeff @angle:c1-n1-p3 harmonic 68.68 173.51 # HF/6-31G* 1
angle_coeff @angle:c1-n1-p4 harmonic 67.87 173.64 # HF/6-31G* 1
angle_coeff @angle:c1-n1-p5 harmonic 71.49 177.28 # HF/6-31G* 1
angle_coeff @angle:c1-n1-s2 harmonic 60.33 178.11 # HF/6-31G* 1
angle_coeff @angle:c1-n1-s4 harmonic 55.20 169.60 # HF/6-31G* 1
angle_coeff @angle:c1-n1-s harmonic 53.31 179.99 # HF/6-31G* 1
angle_coeff @angle:c1-n1-s6 harmonic 61.81 175.92 # HF/6-31G* 1
angle_coeff @angle:c1-n1-sh harmonic 55.72 174.25 # HF/6-31G* 1
angle_coeff @angle:c1-n1-ss harmonic 55.44 176.06 # HF/6-31G* 1
angle_coeff @angle:c2-n1-n1 harmonic 61.58 180.00 # HF/6-31G* 1
angle_coeff @angle:c2-n1-o harmonic 73.09 116.94 # SOURCE3 2 0.0060
angle_coeff @angle:c2-n1-s harmonic 64.71 118.00 # SOURCE3 2 0.0121
angle_coeff @angle:c3-n1-n1 harmonic 56.30 180.00 # HF/6-31G* 1
angle_coeff @angle:ca-n1-n1 harmonic 58.54 180.00 # HF/6-31G* 1
angle_coeff @angle:ce-n1-o harmonic 71.28 122.40 # CORR 2
angle_coeff @angle:ce-n1-s harmonic 64.84 117.34 # CORR 2
angle_coeff @angle:cf-n1-o harmonic 71.28 122.40 # CORR 2
angle_coeff @angle:cf-n1-s harmonic 64.84 117.34 # CORR 2
angle_coeff @angle:cl-n1-n1 harmonic 51.37 179.94 # HF/6-31G* 1
angle_coeff @angle:f-n1-n1 harmonic 57.39 179.93 # HF/6-31G* 1
angle_coeff @angle:hn-n1-n1 harmonic 47.14 179.91 # HF/6-31G* 1
angle_coeff @angle:i-n1-n1 harmonic 47.26 179.94 # HF/6-31G* 1
angle_coeff @angle:n1-n1-n1 harmonic 68.97 179.97 # HF/6-31G* 1
angle_coeff @angle:n1-n1-n2 harmonic 67.65 171.57 # HF/6-31G* 1
angle_coeff @angle:n1-n1-n3 harmonic 62.49 175.09 # HF/6-31G* 1
angle_coeff @angle:n1-n1-n4 harmonic 61.31 179.91 # HF/6-31G* 1
angle_coeff @angle:n1-n1-na harmonic 61.63 179.97 # HF/6-31G* 1
angle_coeff @angle:n1-n1-nh harmonic 62.66 176.00 # HF/6-31G* 1
angle_coeff @angle:n1-n1-o harmonic 64.43 179.94 # HF/6-31G* 1
angle_coeff @angle:n1-n1-oh harmonic 64.78 173.77 # HF/6-31G* 1
angle_coeff @angle:n1-n1-os harmonic 64.01 176.12 # HF/6-31G* 1
angle_coeff @angle:n1-n1-p2 harmonic 69.42 174.71 # HF/6-31G* 1
angle_coeff @angle:n1-n1-p3 harmonic 70.24 174.27 # HF/6-31G* 1
angle_coeff @angle:n1-n1-s harmonic 54.64 180.00 # SOURCE3 1 0.0000
angle_coeff @angle:n1-n1-sh harmonic 57.01 175.07 # HF/6-31G* 1
angle_coeff @angle:n1-n1-ss harmonic 56.92 175.61 # HF/6-31G* 1
angle_coeff @angle:o-n1-p2 harmonic 84.67 116.05 # SOURCE3 1 0.0000
angle_coeff @angle:p2-n1-s harmonic 80.34 119.93 # SOURCE3 1 0.0000
angle_coeff @angle:br-n2-br harmonic 63.89 106.60 # SOURCE3 1
angle_coeff @angle:br-n2-c2 harmonic 59.13 112.40 # SOURCE3 1 0.0000
angle_coeff @angle:br-n2-n2 harmonic 61.08 110.42 # SOURCE3 1 0.0000
angle_coeff @angle:br-n2-o harmonic 60.10 114.47 # SOURCE3 1 0.0000
angle_coeff @angle:br-n2-p2 harmonic 80.05 111.03 # SOURCE3 1 0.0000
angle_coeff @angle:br-n2-s harmonic 62.40 115.78 # SOURCE3 1 0.0000
angle_coeff @angle:c1-n2-c1 harmonic 74.41 121.10 # SOURCE3 1
angle_coeff @angle:c1-n2-c3 harmonic 58.67 151.88 # SOURCE3 4 15.8282
angle_coeff @angle:c1-n2-cl harmonic 55.36 118.80 # SOURCE2 1 0.0000
angle_coeff @angle:c1-n2-hn harmonic 51.47 126.50 # SOURCE2 3 7.6267
angle_coeff @angle:c1-n2-n2 harmonic 76.75 113.40 # SOURCE3 1
angle_coeff @angle:c1-n2-o harmonic 79.20 113.59 # SOURCE3 1
angle_coeff @angle:c1-n2-p2 harmonic 84.76 119.57 # SOURCE3 1
angle_coeff @angle:c1-n2-s harmonic 69.80 117.67 # SOURCE3 1
angle_coeff @angle:c2-n2-c2 harmonic 70.76 118.18 # SOURCE3 1
angle_coeff @angle:c2-n2-c3 harmonic 66.13 115.30 # SOURCE3 8 4.2940
angle_coeff @angle:c2-n2-ca harmonic 69.83 119.94 # SOURCE3 1
angle_coeff @angle:c2-n2-cl harmonic 56.69 112.64 # SOURCE3 1 0.0000
angle_coeff @angle:c2-n2-f harmonic 68.30 108.14 # SOURCE3 1 0.0000
angle_coeff @angle:c2-n2-hn harmonic 52.63 110.33 # SOURCE3 9 0.6498
angle_coeff @angle:c2-n2-i harmonic 51.86 114.74 # SOURCE3 2 0.0139
angle_coeff @angle:c2-n2-n1 harmonic 75.45 115.09 # HF/6-31G* 1
angle_coeff @angle:c2-n2-n2 harmonic 77.94 103.59 # SOURCE3 2 0.0000
angle_coeff @angle:c2-n2-n3 harmonic 71.34 118.14 # SOURCE3 1
angle_coeff @angle:c2-n2-n4 harmonic 62.39 112.22 # SOURCE3 3 0.0406
angle_coeff @angle:c2-n2-n harmonic 70.16 117.98 # SOURCE4 11 0.9019
angle_coeff @angle:c2-n2-na harmonic 70.35 117.58 # SOURCE3 8 1.6671
angle_coeff @angle:c2-n2-nh harmonic 70.71 117.61 # SOURCE3 6 3.2642
angle_coeff @angle:c2-n2-no harmonic 64.22 111.54 # SOURCE3 1 0.0000
angle_coeff @angle:c2-n2-o harmonic 75.47 116.94 # SOURCE3 1
angle_coeff @angle:c2-n2-oh harmonic 72.08 110.89 # SOURCE4 22 1.2709
angle_coeff @angle:c2-n2-os harmonic 71.83 110.51 # SOURCE4 13 0.7888
angle_coeff @angle:c2-n2-p2 harmonic 85.03 116.00 # SOURCE3 1
angle_coeff @angle:c2-n2-p3 harmonic 77.54 119.30 # SOURCE3 3 2.8489
angle_coeff @angle:c2-n2-p4 harmonic 79.28 118.77 # SOURCE3 1
angle_coeff @angle:c2-n2-s4 harmonic 68.12 112.29 # SOURCE3 1
angle_coeff @angle:c2-n2-s6 harmonic 68.85 116.24 # SOURCE3 1
angle_coeff @angle:c2-n2-s harmonic 68.67 118.00 # SOURCE3 1
angle_coeff @angle:c2-n2-sh harmonic 63.09 115.48 # SOURCE3 1 0.0000
angle_coeff @angle:c2-n2-ss harmonic 64.97 118.04 # SOURCE3 4 2.2804
angle_coeff @angle:c3-n2-c3 harmonic 63.76 110.70 # SOURCE3 1
angle_coeff @angle:c3-n2-ca harmonic 65.97 114.95 # SOURCE4 5 0.9744
angle_coeff @angle:c3-n2-ce harmonic 65.37 118.53 # CORR 123
angle_coeff @angle:c3-n2-cf harmonic 65.37 118.53 # CORR 123
angle_coeff @angle:c3-n2-hn harmonic 45.18 118.40 # SOURCE3 1
angle_coeff @angle:c3-n2-n1 harmonic 68.64 116.20 # SOURCE4 12 0.5407
angle_coeff @angle:c3-n2-n2 harmonic 69.29 111.18 # SOURCE3 7 0.4349
angle_coeff @angle:c3-n2-nh harmonic 68.08 109.99 # SOURCE3 1 0.0000
angle_coeff @angle:c3-n2-o harmonic 70.29 112.40 # SOURCE2 1 0.0000
angle_coeff @angle:c3-n2-p2 harmonic 82.11 114.21 # SOURCE3 2 2.2772
angle_coeff @angle:c3-n2-s6 harmonic 66.28 113.84 # SOURCE3 1 0.0000
angle_coeff @angle:c3-n2-s harmonic 65.70 116.72 # SOURCE3 1 0.0000
angle_coeff @angle:ca-n2-ca harmonic 71.79 112.20 # SOURCE3 1
angle_coeff @angle:ca-n2-hn harmonic 50.01 120.00 # SOURCE3 1
angle_coeff @angle:ca-n2-n2 harmonic 74.00 113.53 # SOURCE3 1
angle_coeff @angle:ca-n2-o harmonic 75.26 116.00 # SOURCE2 1 0.0000
angle_coeff @angle:ca-n2-p2 harmonic 84.03 118.11 # SOURCE3 1
angle_coeff @angle:ca-n2-s harmonic 67.84 120.11 # SOURCE3 1
angle_coeff @angle:c-n2-c2 harmonic 66.22 120.97 # SOURCE3 1
angle_coeff @angle:c-n2-c harmonic 62.71 123.80 # SOURCE3 1
angle_coeff @angle:c-n2-ca harmonic 66.05 120.50 # SOURCE3 1
angle_coeff @angle:cc-n2-cl harmonic 55.90 115.79 # CORR 2
angle_coeff @angle:cc-n2-hn harmonic 52.42 110.72 # CORR 20
angle_coeff @angle:cc-n2-na harmonic 73.01 108.92 # SOURCE4 9 1.6245
angle_coeff @angle:cc-n2-nh harmonic 70.37 118.47 # SOURCE4 6 1.7995
angle_coeff @angle:cd-n2-cl harmonic 55.90 115.79 # CORR 2
angle_coeff @angle:cd-n2-hn harmonic 52.42 110.72 # CORR 20
angle_coeff @angle:ce-n2-hn harmonic 52.74 111.05 # CORR 69
angle_coeff @angle:ce-n2-n harmonic 70.35 118.04 # CORR 101
angle_coeff @angle:ce-n2-nh harmonic 70.64 118.57 # CORR 54
angle_coeff @angle:ce-n2-o harmonic 77.37 112.16 # SOURCE3 1
angle_coeff @angle:ce-n2-oh harmonic 71.48 113.38 # CORR 37
angle_coeff @angle:ce-n2-os harmonic 71.23 112.97 # CORR 40
angle_coeff @angle:ce-n2-s harmonic 69.30 116.28 # SOURCE3 1
angle_coeff @angle:cf-n2-hn harmonic 52.74 111.05 # CORR 69
angle_coeff @angle:cf-n2-n harmonic 70.35 118.04 # CORR 101
angle_coeff @angle:cf-n2-nh harmonic 70.64 118.57 # CORR 54
angle_coeff @angle:cf-n2-o harmonic 77.37 112.16 # SOURCE3 1 same_as_ce-n2-o
angle_coeff @angle:cf-n2-oh harmonic 71.48 113.38 # CORR 37
angle_coeff @angle:cf-n2-os harmonic 71.23 112.97 # CORR 40
angle_coeff @angle:cf-n2-s harmonic 69.30 116.28 # SOURCE3 1 same_as_ce-n2-s
angle_coeff @angle:cl-n2-n1 harmonic 59.29 108.70 # SOURCE2 1 0.0000
angle_coeff @angle:cl-n2-n2 harmonic 58.70 110.47 # SOURCE3 1 0.0000
angle_coeff @angle:cl-n2-o harmonic 58.23 114.03 # SOURCE3 1
angle_coeff @angle:cl-n2-p2 harmonic 73.98 112.98 # SOURCE3 1 0.0000
angle_coeff @angle:cl-n2-s harmonic 58.50 115.77 # SOURCE3 1 0.0000
angle_coeff @angle:cx-n2-n2 harmonic 90.46 64.92 # SOURCE3 2 0.0000
angle_coeff @angle:f-n2-n2 harmonic 68.29 114.60 # SOURCE2 1 0.0000
angle_coeff @angle:f-n2-o harmonic 71.17 110.10 # SOURCE2 1 0.0000
angle_coeff @angle:f-n2-p2 harmonic 84.30 107.10 # SOURCE3 1 0.0000
angle_coeff @angle:f-n2-s harmonic 67.14 110.73 # SOURCE3 1 0.0000
angle_coeff @angle:hn-n2-hn harmonic 38.61 120.00 # SOURCE3 1
angle_coeff @angle:hn-n2-n1 harmonic 55.33 114.10 # SOURCE2 1 0.0000
angle_coeff @angle:hn-n2-n2 harmonic 55.84 105.01 # SOURCE3 19 1.5183
angle_coeff @angle:hn-n2-ne harmonic 54.69 108.56 # SOURCE3 29 5.5708
angle_coeff @angle:hn-n2-nf harmonic 54.69 108.56 # SOURCE3 29 same_as_hn-n2-ne
angle_coeff @angle:hn-n2-o harmonic 57.61 107.37 # SOURCE3 1 0.0000
angle_coeff @angle:hn-n2-p2 harmonic 58.61 112.09 # SOURCE3 18 4.0663
angle_coeff @angle:hn-n2-p4 harmonic 54.50 111.33 # SOURCE3 1 0.0000
angle_coeff @angle:hn-n2-p5 harmonic 56.32 122.34 # SOURCE3 1 0.0000
angle_coeff @angle:hn-n2-pe harmonic 61.28 111.41 # SOURCE3 20 4.9895
angle_coeff @angle:hn-n2-pf harmonic 61.28 111.41 # SOURCE3 20 same_as_hn-n2-pe
angle_coeff @angle:hn-n2-s2 harmonic 48.34 115.80 # SOURCE2 1 0.0000
angle_coeff @angle:hn-n2-s4 harmonic 46.34 111.21 # SOURCE3 1 0.0000
angle_coeff @angle:hn-n2-s harmonic 49.11 108.17 # SOURCE3 1 0.0000
angle_coeff @angle:hn-n2-s6 harmonic 47.82 112.59 # SOURCE3 2 0.0000
angle_coeff @angle:i-n2-n2 harmonic 53.71 111.79 # SOURCE3 1 0.0000
angle_coeff @angle:i-n2-o harmonic 52.33 116.82 # SOURCE3 1 0.0000
angle_coeff @angle:i-n2-p2 harmonic 72.31 113.26 # SOURCE3 1 0.0000
angle_coeff @angle:i-n2-s harmonic 56.35 116.85 # SOURCE3 1 0.0000
angle_coeff @angle:n1-n2-n1 harmonic 80.82 112.00 # HF/6-31G* 1
angle_coeff @angle:n2-n2-n1 harmonic 62.28 180.00 # dac_for_azides 0
angle_coeff @angle:n2-n2-n2 harmonic 78.20 109.49 # SOURCE3 2 0.0000
angle_coeff @angle:n2-n2-n3 harmonic 76.59 108.88 # SOURCE3 1
angle_coeff @angle:n2-n2-n4 harmonic 65.78 106.45 # SOURCE3 1 0.0000
angle_coeff @angle:n2-n2-na harmonic 74.18 112.23 # SOURCE3 1
angle_coeff @angle:n2-n2-nh harmonic 74.76 111.70 # SOURCE3 5 0.3475
angle_coeff @angle:n2-n2-no harmonic 67.68 105.97 # SOURCE3 1 0.0000
angle_coeff @angle:n2-n2-o harmonic 80.17 110.43 # SOURCE3 1
angle_coeff @angle:n2-n2-oh harmonic 74.02 111.51 # SOURCE3 1 0.0000
angle_coeff @angle:n2-n2-os harmonic 74.69 108.38 # SOURCE3 1 0.0000
angle_coeff @angle:n2-n2-p2 harmonic 90.07 109.15 # SOURCE3 1
angle_coeff @angle:n2-n2-p3 harmonic 81.73 113.05 # SOURCE3 1 0.0000
angle_coeff @angle:n2-n2-p4 harmonic 81.37 118.77 # SOURCE3 1
angle_coeff @angle:n2-n2-p5 harmonic 89.80 110.46 # SOURCE3 1
angle_coeff @angle:n2-n2-s4 harmonic 71.60 107.30 # SOURCE3 1
angle_coeff @angle:n2-n2-s6 harmonic 72.35 111.25 # SOURCE3 1
angle_coeff @angle:n2-n2-s harmonic 71.24 115.91 # SOURCE3 1
angle_coeff @angle:n2-n2-sh harmonic 66.00 111.10 # SOURCE3 1 0.0000
angle_coeff @angle:n2-n2-ss harmonic 68.46 112.14 # SOURCE3 1 0.0000
angle_coeff @angle:n3-n2-n3 harmonic 72.95 115.07 # SOURCE3 1
angle_coeff @angle:n3-n2-o harmonic 76.86 114.00 # SOURCE2 1 0.0000
angle_coeff @angle:n3-n2-p2 harmonic 86.69 115.34 # SOURCE3 1
angle_coeff @angle:n3-n2-s harmonic 69.96 117.13 # SOURCE3 1
angle_coeff @angle:n4-n2-n4 harmonic 59.97 106.70 # SOURCE3 1
angle_coeff @angle:n4-n2-o harmonic 64.86 112.20 # SOURCE3 1 0.0000
angle_coeff @angle:n4-n2-p2 harmonic 79.54 113.07 # SOURCE3 1 0.0000
angle_coeff @angle:n4-n2-s harmonic 62.44 118.50 # SOURCE3 1 0.0000
angle_coeff @angle:na-n2-na harmonic 73.47 107.00 # SOURCE3 1
angle_coeff @angle:na-n2-o harmonic 75.74 113.09 # SOURCE3 1 0.0000
angle_coeff @angle:na-n2-p2 harmonic 84.58 119.16 # SOURCE3 1 0.0000
angle_coeff @angle:na-n2-s harmonic 68.94 118.26 # SOURCE3 1 0.0000
angle_coeff @angle:ne-n2-nh harmonic 74.13 113.09 # CORR 12
angle_coeff @angle:ne-n2-o harmonic 79.97 110.31 # SOURCE3 1
angle_coeff @angle:ne-n2-s harmonic 71.04 116.22 # SOURCE3 1
angle_coeff @angle:nf-n2-nh harmonic 74.13 113.09 # CORR 12
angle_coeff @angle:nf-n2-o harmonic 79.97 110.31 # SOURCE3 1 same_as_ne-n2-o
angle_coeff @angle:nf-n2-s harmonic 71.04 116.22 # SOURCE3 1 same_as_ne-n2-s
angle_coeff @angle:nh-n2-nh harmonic 69.67 121.20 # SOURCE3 1
angle_coeff @angle:nh-n2-o harmonic 76.02 113.60 # SOURCE4 13 1.0945
angle_coeff @angle:nh-n2-p2 harmonic 84.93 118.83 # SOURCE3 2 0.1024
angle_coeff @angle:nh-n2-s harmonic 69.56 116.90 # SOURCE3 2 0.2276
angle_coeff @angle:n-n2-n2 harmonic 75.48 108.18 # SOURCE4 8 0.3496
angle_coeff @angle:n-n2-o harmonic 74.99 115.10 # SOURCE4 31 0.2796
angle_coeff @angle:no-n2-no harmonic 62.81 103.70 # SOURCE3 1
angle_coeff @angle:no-n2-o harmonic 70.40 100.76 # SOURCE3 1 0.0000
angle_coeff @angle:no-n2-p2 harmonic 81.32 111.95 # SOURCE3 1 0.0000
angle_coeff @angle:n-n2-p2 harmonic 85.20 117.30 # SOURCE3 1 0.0000
angle_coeff @angle:n-n2-s harmonic 69.64 115.74 # SOURCE3 1 0.0000
angle_coeff @angle:oh-n2-oh harmonic 74.84 101.70 # SOURCE3 1
angle_coeff @angle:oh-n2-p2 harmonic 86.05 115.11 # SOURCE3 1 0.0000
angle_coeff @angle:oh-n2-s harmonic 69.52 116.08 # SOURCE3 1 0.0000
angle_coeff @angle:o-n2-o harmonic 81.02 115.37 # SOURCE3 1
angle_coeff @angle:o-n2-oh harmonic 75.56 112.15 # SOURCE2 2 1.4500
angle_coeff @angle:o-n2-os harmonic 75.73 110.35 # SOURCE3 2 0.0042
angle_coeff @angle:o-n2-p2 harmonic 88.65 116.08 # SOURCE3 1
angle_coeff @angle:o-n2-p3 harmonic 82.37 113.43 # SOURCE3 1 0.0000
angle_coeff @angle:o-n2-p4 harmonic 85.23 110.61 # SOURCE3 1
angle_coeff @angle:o-n2-p5 harmonic 91.73 109.11 # SOURCE3 1
angle_coeff @angle:o-n2-pe harmonic 85.18 134.56 # SOURCE3 1
angle_coeff @angle:o-n2-pf harmonic 85.18 134.56 # SOURCE3 1 same_as_o-n2-pe
angle_coeff @angle:o-n2-s4 harmonic 72.12 108.91 # SOURCE3 1
angle_coeff @angle:o-n2-s6 harmonic 73.56 111.34 # SOURCE3 1
angle_coeff @angle:o-n2-s harmonic 72.09 117.18 # SOURCE3 1
angle_coeff @angle:o-n2-sh harmonic 65.55 114.98 # SOURCE3 1 0.0000
angle_coeff @angle:os-n2-os harmonic 71.25 110.29 # SOURCE3 1
angle_coeff @angle:os-n2-p2 harmonic 87.70 110.20 # SOURCE3 1 0.0000
angle_coeff @angle:o-n2-ss harmonic 68.39 115.34 # SOURCE3 1 0.0000
angle_coeff @angle:os-n2-s harmonic 70.47 112.23 # SOURCE3 1 0.0000
angle_coeff @angle:p2-n2-p2 harmonic 107.12 116.80 # SOURCE3 1
angle_coeff @angle:p2-n2-p3 harmonic 98.43 124.48 # SOURCE3 1 0.0000
angle_coeff @angle:p2-n2-p4 harmonic 98.27 128.37 # SOURCE3 1
angle_coeff @angle:p2-n2-p5 harmonic 104.38 123.47 # SOURCE3 1
angle_coeff @angle:p2-n2-s4 harmonic 86.26 112.10 # SOURCE3 1
angle_coeff @angle:p2-n2-s6 harmonic 86.44 115.70 # SOURCE3 1
angle_coeff @angle:p2-n2-s harmonic 85.91 117.84 # SOURCE3 1
angle_coeff @angle:p2-n2-sh harmonic 80.45 118.45 # SOURCE3 1 0.0000
angle_coeff @angle:p2-n2-ss harmonic 82.01 120.43 # SOURCE3 1 0.0000
angle_coeff @angle:p3-n2-p3 harmonic 96.00 120.40 # SOURCE3 1
angle_coeff @angle:p3-n2-s harmonic 80.08 120.86 # SOURCE3 1 0.0000
angle_coeff @angle:p4-n2-s harmonic 77.83 131.84 # SOURCE3 1
angle_coeff @angle:p5-n2-p5 harmonic 105.81 120.60 # SOURCE3 1
angle_coeff @angle:p5-n2-s harmonic 85.34 119.89 # SOURCE3 1
angle_coeff @angle:pe-n2-s harmonic 88.59 115.73 # SOURCE3 1
angle_coeff @angle:pf-n2-s harmonic 88.59 115.73 # SOURCE3 1 same_as_pe-n2-s
angle_coeff @angle:s4-n2-s4 harmonic 66.00 119.18 # SOURCE3 1
angle_coeff @angle:s4-n2-s6 harmonic 67.18 119.18 # SOURCE3 1
angle_coeff @angle:s6-n2-s6 harmonic 68.49 119.18 # SOURCE3 1
angle_coeff @angle:sh-n2-sh harmonic 59.95 123.93 # SOURCE3 1
angle_coeff @angle:sh-n2-ss harmonic 61.33 123.93 # SOURCE3 1
angle_coeff @angle:s-n2-s harmonic 68.47 120.88 # SOURCE3 1
angle_coeff @angle:s-n2-s4 harmonic 69.20 113.00 # SOURCE3 1
angle_coeff @angle:s-n2-s6 harmonic 68.60 119.61 # SOURCE3 1
angle_coeff @angle:s-n2-sh harmonic 63.58 122.05 # SOURCE3 1 0.0000
angle_coeff @angle:s-n2-ss harmonic 66.58 118.19 # SOURCE3 1 0.0000
angle_coeff @angle:ss-n2-ss harmonic 62.92 123.93 # SOURCE3 1
angle_coeff @angle:br-n3-br harmonic 66.54 107.15 # SOURCE3 1 0.0000
angle_coeff @angle:br-n3-c3 harmonic 62.70 106.93 # SOURCE3 2 0.0000
angle_coeff @angle:c1-n3-c1 harmonic 64.09 123.34 # SOURCE3 1
angle_coeff @angle:c1-n3-f harmonic 68.22 104.70 # SOURCE2 1 0.0000
angle_coeff @angle:c1-n3-hn harmonic 47.74 118.31 # SOURCE3 1
angle_coeff @angle:c1-n3-o harmonic 70.01 116.63 # SOURCE3 1
angle_coeff @angle:c2-n3-c2 harmonic 66.22 124.68 # SOURCE3 1
angle_coeff @angle:c2-n3-hn harmonic 49.11 119.38 # SOURCE3 1
angle_coeff @angle:c3-n3-c3 harmonic 64.01 110.90 # SOURCE3 40 2.3048
angle_coeff @angle:c3-n3-cl harmonic 57.82 107.23 # SOURCE3 3 0.3673
angle_coeff @angle:c3-n3-cx harmonic 62.45 116.32 # SOURCE4 24 0.5119
angle_coeff @angle:c3-n3-cy harmonic 61.69 118.26 # SOURCE4 14 0.8788
angle_coeff @angle:c3-n3-f harmonic 66.81 103.13 # SOURCE3 2 0.0000
angle_coeff @angle:c3-n3-hn harmonic 47.13 109.92 # SOURCE3 120 2.2590
angle_coeff @angle:c3-n3-i harmonic 56.98 108.48 # SOURCE3 2 0.0000
angle_coeff @angle:c3-n3-n2 harmonic 66.23 118.75 # SOURCE2 2 2.6500
angle_coeff @angle:c3-n3-n3 harmonic 66.76 108.15 # SOURCE3 15 1.3999
angle_coeff @angle:c3-n3-n4 harmonic 67.18 109.65 # SOURCE3 3 0.1146
angle_coeff @angle:c3-n3-n harmonic 66.67 111.75 # SOURCE4 50 1.6777
angle_coeff @angle:c3-n3-nh harmonic 66.37 111.89 # SOURCE4 21 1.3006
angle_coeff @angle:c3-n3-no harmonic 66.02 111.27 # SOURCE3 1 0.0000
angle_coeff @angle:c3-n3-o harmonic 68.68 113.31 # SOURCE3 5 8.9081
angle_coeff @angle:c3-n3-oh harmonic 69.07 106.14 # SOURCE4 14 1.1040
angle_coeff @angle:c3-n3-os harmonic 68.48 104.95 # SOURCE4 9 0.9687
angle_coeff @angle:c3-n3-p3 harmonic 75.79 121.93 # SOURCE3 3 5.6009
angle_coeff @angle:c3-n3-p5 harmonic 78.53 119.81 # SOURCE4 58 1.8367
angle_coeff @angle:c3-n3-s4 harmonic 61.45 112.91 # SOURCE3 3 0.8983
angle_coeff @angle:c3-n3-s6 harmonic 63.67 116.57 # SOURCE4 73 1.8772
angle_coeff @angle:c3-n3-s harmonic 61.46 110.02 # SOURCE3 1 0.0000
angle_coeff @angle:c3-n3-sh harmonic 62.06 112.70 # SOURCE3 1 0.0000
angle_coeff @angle:c3-n3-ss harmonic 61.59 116.01 # SOURCE3 3 1.1944
angle_coeff @angle:c3-n3-sy harmonic 62.43 115.27 # SOURCE4 108 1.7647
angle_coeff @angle:cl-n3-cl harmonic 53.49 108.28 # SOURCE3 1 0.0000
angle_coeff @angle:cl-n3-hn harmonic 39.61 104.39 # SOURCE3 2 0.0000
angle_coeff @angle:cl-n3-n3 harmonic 59.29 107.65 # SOURCE3 1 0.0000
angle_coeff @angle:cx-n3-cx harmonic 86.39 60.71 # SOURCE4 57 0.2359
angle_coeff @angle:cx-n3-hn harmonic 47.15 109.57 # SOURCE4 26 0.7439
angle_coeff @angle:cx-n3-p5 harmonic 78.66 119.32 # SOURCE4 71 1.1948
angle_coeff @angle:cx-n3-py harmonic 76.73 121.75 # SOURCE4 10 1.0295
angle_coeff @angle:cy-n3-cy harmonic 70.04 90.87 # SOURCE4 10 0.5777
angle_coeff @angle:cy-n3-hn harmonic 46.25 112.12 # SOURCE4 9 1.9058
angle_coeff @angle:f-n3-f harmonic 67.71 102.22 # SOURCE2 4 0.7562
angle_coeff @angle:f-n3-hn harmonic 50.78 99.80 # SOURCE2 1 0.0000
angle_coeff @angle:hn-n3-hn harmonic 41.30 107.13 # SOURCE3 44 1.9687
angle_coeff @angle:hn-n3-i harmonic 35.43 109.98 # SOURCE3 2 0.0000
angle_coeff @angle:hn-n3-n1 harmonic 52.05 110.17 # HF/6-31G* 1
angle_coeff @angle:hn-n3-n2 harmonic 51.40 115.94 # SOURCE3 1
angle_coeff @angle:hn-n3-n3 harmonic 50.16 103.98 # SOURCE3 18 1.8593
angle_coeff @angle:hn-n3-n4 harmonic 50.87 106.40 # SOURCE3 5 0.5863
angle_coeff @angle:hn-n3-n harmonic 51.02 106.57 # SOURCE3 6 1.0767
angle_coeff @angle:hn-n3-na harmonic 50.32 107.89 # SOURCE3 1
angle_coeff @angle:hn-n3-nh harmonic 50.44 107.39 # SOURCE3 11 1.6294
angle_coeff @angle:hn-n3-no harmonic 50.25 104.78 # SOURCE3 3 1.1126
angle_coeff @angle:hn-n3-o harmonic 53.14 113.32 # SOURCE3 3 4.3945
angle_coeff @angle:hn-n3-oh harmonic 53.08 101.11 # SOURCE3 4 0.9921
angle_coeff @angle:hn-n3-os harmonic 51.67 100.92 # SOURCE3 6 0.7295
angle_coeff @angle:hn-n3-p2 harmonic 54.24 120.26 # SOURCE3 1
angle_coeff @angle:hn-n3-p3 harmonic 52.93 116.89 # SOURCE3 9 3.8816
angle_coeff @angle:hn-n3-p4 harmonic 54.97 113.05 # SOURCE3 2 0.0000
angle_coeff @angle:hn-n3-p5 harmonic 56.04 113.68 # SOURCE3 6 2.1781
angle_coeff @angle:hn-n3-s4 harmonic 42.47 108.93 # SOURCE3 7 1.7819
angle_coeff @angle:hn-n3-s harmonic 41.53 109.47 # SOURCE3 1
angle_coeff @angle:hn-n3-s6 harmonic 46.06 109.33 # SOURCE4 86 0.9610
angle_coeff @angle:hn-n3-sh harmonic 43.12 108.67 # SOURCE3 3 2.5025
angle_coeff @angle:hn-n3-ss harmonic 43.36 109.85 # SOURCE3 5 2.3215
angle_coeff @angle:hn-n3-sy harmonic 44.15 109.49 # SOURCE4 278 0.7897
angle_coeff @angle:i-n3-i harmonic 60.04 111.27 # SOURCE3 1 0.0000
angle_coeff @angle:n1-n3-n1 harmonic 72.40 113.21 # HF/6-31G* 1
angle_coeff @angle:n2-n3-n2 harmonic 71.82 118.73 # SOURCE3 1
angle_coeff @angle:n2-n3-o harmonic 74.13 114.91 # SOURCE3 1
angle_coeff @angle:n3-n3-n3 harmonic 69.57 105.71 # SOURCE3 3 0.3561
angle_coeff @angle:n4-n3-n4 harmonic 69.04 113.48 # SOURCE3 1 0.0000
angle_coeff @angle:n4-n3-nh harmonic 70.91 107.14 # SOURCE3 1
angle_coeff @angle:na-n3-na harmonic 69.21 112.00 # SOURCE3 1
angle_coeff @angle:nh-n3-nh harmonic 70.75 107.15 # SOURCE3 1 0.0000
angle_coeff @angle:n-n3-n harmonic 70.25 110.55 # SOURCE3 1 0.0000
angle_coeff @angle:no-n3-no harmonic 67.04 115.26 # SOURCE3 1 0.0000
angle_coeff @angle:oh-n3-oh harmonic 72.79 107.18 # SOURCE3 1 0.0000
angle_coeff @angle:o-n3-o harmonic 71.89 126.14 # SOURCE3 1
angle_coeff @angle:o-n3-p2 harmonic 84.34 117.02 # SOURCE3 1
angle_coeff @angle:o-n3-p4 harmonic 83.38 116.65 # SOURCE3 1
angle_coeff @angle:o-n3-s4 harmonic 64.56 114.09 # SOURCE3 1
angle_coeff @angle:o-n3-s6 harmonic 68.82 113.80 # SOURCE3 1
angle_coeff @angle:o-n3-s harmonic 62.04 119.81 # SOURCE3 1
angle_coeff @angle:os-n3-os harmonic 70.79 106.52 # SOURCE3 1 0.0000
angle_coeff @angle:p2-n3-p2 harmonic 97.53 130.13 # SOURCE3 1
angle_coeff @angle:p3-n3-p3 harmonic 98.56 118.74 # SOURCE3 3 3.3755
angle_coeff @angle:p4-n3-p4 harmonic 101.51 116.35 # SOURCE3 1
angle_coeff @angle:p5-n3-p5 harmonic 102.24 119.42 # SOURCE3 1 0.0000
angle_coeff @angle:s4-n3-s4 harmonic 60.13 120.02 # SOURCE3 1 0.0000
angle_coeff @angle:s4-n3-s6 harmonic 61.99 120.95 # SOURCE3 1
angle_coeff @angle:s6-n3-s6 harmonic 63.29 126.13 # SOURCE3 1 0.0000
angle_coeff @angle:sh-n3-sh harmonic 61.24 118.63 # SOURCE3 1 0.0000
angle_coeff @angle:sh-n3-ss harmonic 61.27 119.67 # SOURCE3 1
angle_coeff @angle:s-n3-s harmonic 56.48 131.36 # SOURCE3 1 0.0000
angle_coeff @angle:ss-n3-ss harmonic 61.60 119.57 # SOURCE3 1 0.0000
angle_coeff @angle:br-n4-br harmonic 65.14 114.82 # SOURCE3 1 0.0000
angle_coeff @angle:br-n4-hn harmonic 41.38 108.44 # SOURCE3 7 0.5630
angle_coeff @angle:c1-n4-c1 harmonic 65.53 113.87 # SOURCE3 1 0.0000
angle_coeff @angle:c1-n4-hn harmonic 48.62 110.19 # SOURCE3 7 1.0847
angle_coeff @angle:c2-n4-c2 harmonic 63.01 112.58 # SOURCE3 1 0.0000
angle_coeff @angle:c2-n4-c3 harmonic 63.10 110.96 # SOURCE4 13 2.4632
angle_coeff @angle:c2-n4-hn harmonic 46.43 111.36 # SOURCE3 13 1.2672
angle_coeff @angle:c3-n4-c3 harmonic 62.84 110.64 # SOURCE3 13 1.3060
angle_coeff @angle:c3-n4-ca harmonic 63.61 110.40 # SOURCE4 46 1.4643
angle_coeff @angle:c3-n4-cc harmonic 62.84 111.09 # SOURCE4 7 0.7065
angle_coeff @angle:c3-n4-cl harmonic 57.92 108.04 # SOURCE3 3 0.0000
angle_coeff @angle:c3-n4-hn harmonic 46.19 110.11 # SOURCE3 100 1.3136
angle_coeff @angle:c3-n4-n3 harmonic 66.73 108.72 # SOURCE3 2 0.0000
angle_coeff @angle:c3-n4-n4 harmonic 63.72 114.07 # SOURCE3 4 0.0000
angle_coeff @angle:c3-n4-n harmonic 66.20 109.26 # SOURCE4 7 1.9859
angle_coeff @angle:c3-n4-nh harmonic 64.76 111.73 # SOURCE3 1 0.0000
angle_coeff @angle:c3-n4-no harmonic 65.25 109.08 # SOURCE3 1 0.0000
angle_coeff @angle:c3-n4-o harmonic 67.25 111.66 # SOURCE3 1 0.0000
angle_coeff @angle:c3-n4-oh harmonic 65.90 113.73 # SOURCE3 1 0.0000
angle_coeff @angle:c3-n4-os harmonic 67.38 107.42 # SOURCE3 3 3.5920
angle_coeff @angle:c3-n4-p2 harmonic 71.92 112.52 # SOURCE3 1 0.0000
angle_coeff @angle:c3-n4-p3 harmonic 74.40 110.73 # SOURCE3 3 2.1084
angle_coeff @angle:c3-n4-p5 harmonic 75.11 113.22 # SOURCE3 3 0.4021
angle_coeff @angle:c3-n4-s4 harmonic 57.21 108.23 # SOURCE3 3 0.4195
angle_coeff @angle:c3-n4-s6 harmonic 57.75 111.56 # SOURCE3 3 1.8851
angle_coeff @angle:c3-n4-s harmonic 59.21 113.55 # SOURCE3 1 0.0000
angle_coeff @angle:c3-n4-sh harmonic 59.13 115.81 # SOURCE3 1 0.0000
angle_coeff @angle:c3-n4-ss harmonic 59.66 113.68 # SOURCE3 3 1.1405
angle_coeff @angle:ca-n4-ca harmonic 63.21 114.48 # SOURCE3 1 0.0000
angle_coeff @angle:ca-n4-hn harmonic 47.54 108.52 # SOURCE3 5 1.1693
angle_coeff @angle:c-n4-c harmonic 61.50 108.61 # SOURCE3 1 0.0000
angle_coeff @angle:c-n4-hn harmonic 44.68 110.86 # SOURCE3 10 1.0073
angle_coeff @angle:cl-n4-cl harmonic 52.73 114.91 # SOURCE3 1 0.0000
angle_coeff @angle:cl-n4-hn harmonic 39.53 108.87 # SOURCE3 7 0.7719
angle_coeff @angle:f-n4-f harmonic 70.47 109.05 # SOURCE3 1 0.0000
angle_coeff @angle:f-n4-hn harmonic 51.67 108.39 # SOURCE3 4 0.0000
angle_coeff @angle:hn-n4-hn harmonic 40.52 108.11 # SOURCE3 208 1.4126
angle_coeff @angle:hn-n4-i harmonic 36.44 108.72 # SOURCE3 7 1.2717
angle_coeff @angle:hn-n4-n1 harmonic 51.79 109.39 # HF/6-31G* 1
angle_coeff @angle:hn-n4-n2 harmonic 42.29 109.68 # SOURCE3 19 0.6266
angle_coeff @angle:hn-n4-n3 harmonic 49.85 110.40 # SOURCE3 11 0.7307
angle_coeff @angle:hn-n4-n4 harmonic 48.09 108.66 # SOURCE3 18 1.2967
angle_coeff @angle:hn-n4-n harmonic 49.59 109.08 # SOURCE3 13 1.6047
angle_coeff @angle:hn-n4-na harmonic 49.43 109.38 # SOURCE3 25 1.0758
angle_coeff @angle:hn-n4-nh harmonic 48.36 109.92 # SOURCE3 12 0.7304
angle_coeff @angle:hn-n4-no harmonic 49.19 104.38 # SOURCE3 2 0.0000
angle_coeff @angle:hn-n4-o harmonic 52.09 109.26 # SOURCE3 6 2.1203
angle_coeff @angle:hn-n4-oh harmonic 51.12 108.09 # SOURCE3 6 1.6728
angle_coeff @angle:hn-n4-os harmonic 50.15 109.39 # SOURCE3 10 1.4403
angle_coeff @angle:hn-n4-p2 harmonic 47.71 110.50 # SOURCE3 25 1.0664
angle_coeff @angle:hn-n4-p3 harmonic 49.73 109.89 # SOURCE3 10 2.3870
angle_coeff @angle:hn-n4-p4 harmonic 47.65 111.33 # SOURCE3 3 0.0000
angle_coeff @angle:hn-n4-p5 harmonic 51.29 110.00 # SOURCE3 10 1.0282
angle_coeff @angle:hn-n4-py harmonic 47.36 117.89 # SOURCE3 8 0.0000
angle_coeff @angle:hn-n4-s4 harmonic 37.07 110.10 # SOURCE3 6 0.8471
angle_coeff @angle:hn-n4-s harmonic 41.06 106.89 # SOURCE3 6 1.0775
angle_coeff @angle:hn-n4-s6 harmonic 38.64 108.94 # SOURCE3 10 0.5715
angle_coeff @angle:hn-n4-sh harmonic 41.29 108.56 # SOURCE3 6 0.8535
angle_coeff @angle:hn-n4-ss harmonic 41.15 109.17 # SOURCE3 10 0.8455
angle_coeff @angle:i-n4-i harmonic 58.99 118.49 # SOURCE3 1 0.0000
angle_coeff @angle:n1-n4-n1 harmonic 72.69 110.67 # HF/6-31G* 1
angle_coeff @angle:n2-n4-n2 harmonic 59.43 108.64 # SOURCE3 1 0.0000
angle_coeff @angle:n3-n4-n3 harmonic 69.79 111.07 # SOURCE3 1 0.0000
angle_coeff @angle:n4-n4-n4 harmonic 65.21 115.49 # SOURCE3 1 0.0000
angle_coeff @angle:na-n4-na harmonic 66.27 119.60 # SOURCE3 1 0.0000
angle_coeff @angle:nh-n4-nh harmonic 67.83 109.38 # SOURCE3 1 0.0000
angle_coeff @angle:n-n4-n harmonic 66.68 118.62 # SOURCE3 1 0.0000
angle_coeff @angle:oh-n4-oh harmonic 72.25 108.19 # SOURCE3 1 0.0000
angle_coeff @angle:o-n4-o harmonic 70.28 120.97 # SOURCE3 1 0.0000
angle_coeff @angle:os-n4-os harmonic 72.46 104.40 # SOURCE3 1 0.0000
angle_coeff @angle:p2-n4-p2 harmonic 89.65 113.91 # SOURCE3 2 0.0000
angle_coeff @angle:p3-n4-p3 harmonic 89.71 121.38 # SOURCE3 1 0.0000
angle_coeff @angle:p5-n4-p5 harmonic 98.15 107.02 # SOURCE3 1 0.0000
angle_coeff @angle:py-n4-py harmonic 116.94 69.79 # SOURCE3 2 0.0000
angle_coeff @angle:s4-n4-s4 harmonic 54.75 115.43 # SOURCE3 1
angle_coeff @angle:s6-n4-s6 harmonic 57.91 109.51 # SOURCE3 1 0.0000
angle_coeff @angle:sh-n4-sh harmonic 60.37 112.59 # SOURCE3 1 0.0000
angle_coeff @angle:s-n4-s harmonic 56.74 124.55 # SOURCE3 1 0.0000
angle_coeff @angle:ss-n4-ss harmonic 61.26 109.20 # SOURCE3 1 0.0000
angle_coeff @angle:br-na-br harmonic 60.55 123.00 # SOURCE3 1
angle_coeff @angle:br-na-c2 harmonic 63.61 100.48 # SOURCE3 2 1.0536
angle_coeff @angle:br-na-ca harmonic 57.15 124.81 # SOURCE3 1
angle_coeff @angle:br-na-cc harmonic 57.16 124.62 # SOURCE3 3 0.5348
angle_coeff @angle:br-na-cd harmonic 57.16 124.62 # SOURCE3 3 same_as_br-na-cc
angle_coeff @angle:br-na-nc harmonic 59.86 119.42 # SOURCE3 4 1.6703
angle_coeff @angle:br-na-nd harmonic 59.86 119.42 # SOURCE3 4 same_as_br-na-nc
angle_coeff @angle:br-na-os harmonic 63.92 104.99 # SOURCE3 1 0.0000
angle_coeff @angle:br-na-p2 harmonic 75.91 121.01 # SOURCE3 1
angle_coeff @angle:br-na-pc harmonic 76.39 120.26 # SOURCE3 3 2.1456
angle_coeff @angle:br-na-pd harmonic 76.39 120.26 # SOURCE3 3 same_as_br-na-pc
angle_coeff @angle:br-na-ss harmonic 62.46 112.28 # SOURCE3 1 0.0000
angle_coeff @angle:c1-na-c1 harmonic 67.20 117.20 # SOURCE3 1
angle_coeff @angle:c1-na-c2 harmonic 64.32 125.20 # SOURCE3 1
angle_coeff @angle:c1-na-ca harmonic 66.54 120.57 # SOURCE3 1
angle_coeff @angle:c1-na-cc harmonic 65.82 121.35 # SOURCE3 6 0.6517
angle_coeff @angle:c1-na-cd harmonic 65.82 121.35 # SOURCE3 6 0.6517
angle_coeff @angle:c1-na-nc harmonic 68.27 120.24 # SOURCE3 4 1.6849
angle_coeff @angle:c1-na-nd harmonic 68.27 120.24 # SOURCE3 4 same_as_c1-na-nc
angle_coeff @angle:c1-na-os harmonic 70.24 106.96 # SOURCE3 2 0.0000
angle_coeff @angle:c1-na-p2 harmonic 76.49 122.25 # SOURCE3 1
angle_coeff @angle:c1-na-pc harmonic 77.33 121.48 # SOURCE3 3 2.1681
angle_coeff @angle:c1-na-pd harmonic 77.33 121.48 # SOURCE3 3 same_as_c1-na-pc
angle_coeff @angle:c1-na-ss harmonic 61.89 118.30 # SOURCE3 1 0.0000
angle_coeff @angle:c2-na-c2 harmonic 67.80 110.37 # SOURCE3 6 0.5121
angle_coeff @angle:c2-na-c3 harmonic 64.23 117.20 # SOURCE3 2 0.0000
angle_coeff @angle:c2-na-ca harmonic 64.55 125.33 # SOURCE4 7 0.5648
angle_coeff @angle:c2-na-cc harmonic 63.98 125.75 # SOURCE3 10 1.5856
angle_coeff @angle:c2-na-cd harmonic 63.98 125.75 # SOURCE3 10 1.5856
angle_coeff @angle:c2-na-cl harmonic 58.85 101.01 # SOURCE3 2 1.5799
angle_coeff @angle:c2-na-f harmonic 68.64 103.11 # SOURCE3 1 0.0000
angle_coeff @angle:c2-na-hn harmonic 47.62 119.28 # SOURCE3 14 6.6027
angle_coeff @angle:c2-na-i harmonic 58.98 106.74 # SOURCE3 1 0.0000
angle_coeff @angle:c2-na-n1 harmonic 66.27 124.81 # HF/6-31G* 1
angle_coeff @angle:c2-na-n2 harmonic 65.80 125.00 # SOURCE3 1
angle_coeff @angle:c2-na-n3 harmonic 64.64 124.80 # SOURCE3 1
angle_coeff @angle:c2-na-n4 harmonic 65.19 121.32 # SOURCE3 1
angle_coeff @angle:c2-na-n harmonic 65.63 124.70 # SOURCE3 1
angle_coeff @angle:c2-na-na harmonic 65.14 124.60 # SOURCE3 1
angle_coeff @angle:c2-na-nc harmonic 67.42 120.61 # CORR 9
angle_coeff @angle:c2-na-nd harmonic 67.42 120.61 # CORR 9
angle_coeff @angle:c2-na-nh harmonic 65.04 124.98 # SOURCE3 1
angle_coeff @angle:c2-na-no harmonic 64.34 124.20 # SOURCE3 1
angle_coeff @angle:c2-na-o harmonic 68.21 125.90 # SOURCE3 1
angle_coeff @angle:c2-na-oh harmonic 65.80 123.90 # SOURCE3 1
angle_coeff @angle:c2-na-os harmonic 68.53 110.33 # SOURCE3 4 3.2172
angle_coeff @angle:c2-na-p2 harmonic 76.19 122.14 # SOURCE3 1
angle_coeff @angle:c2-na-p3 harmonic 74.55 126.10 # SOURCE3 1
angle_coeff @angle:c2-na-p4 harmonic 81.58 125.00 # SOURCE3 1
angle_coeff @angle:c2-na-p5 harmonic 76.43 125.10 # SOURCE3 1
angle_coeff @angle:c2-na-pc harmonic 76.96 121.56 # SOURCE3 3 1.6252
angle_coeff @angle:c2-na-pd harmonic 76.96 121.56 # SOURCE3 3 same_as_c2-na-pc
angle_coeff @angle:c2-na-s4 harmonic 58.37 124.90 # SOURCE3 1
angle_coeff @angle:c2-na-s6 harmonic 60.24 124.40 # SOURCE3 1
angle_coeff @angle:c2-na-s harmonic 58.90 125.80 # SOURCE3 1
angle_coeff @angle:c2-na-sh harmonic 60.23 125.10 # SOURCE3 1
angle_coeff @angle:c2-na-ss harmonic 62.34 115.53 # SOURCE3 5 1.4036
angle_coeff @angle:c3-na-c3 harmonic 60.72 125.59 # SOURCE3 1 0.0000
angle_coeff @angle:c3-na-ca harmonic 63.15 124.36 # SOURCE3 5 4.2557
angle_coeff @angle:c3-na-cc harmonic 62.56 125.09 # SOURCE3 18 1.2138
angle_coeff @angle:c3-na-cd harmonic 62.56 125.09 # SOURCE3 18 1.2138
angle_coeff @angle:c3-na-cp harmonic 63.76 119.46 # SOURCE4 7 0.4108
angle_coeff @angle:c3-na-n2 harmonic 65.48 120.05 # SOURCE4 5 0.8795
angle_coeff @angle:c3-na-n harmonic 67.37 112.68 # SOURCE4 12 0.5122
angle_coeff @angle:c3-na-nc harmonic 65.74 120.46 # SOURCE3 8 2.1625
angle_coeff @angle:c3-na-nd harmonic 65.74 120.46 # SOURCE3 8 2.1625
angle_coeff @angle:c3-na-os harmonic 68.91 104.39 # SOURCE3 3 1.2017
angle_coeff @angle:c3-na-p2 harmonic 75.04 123.12 # SOURCE3 1
angle_coeff @angle:c3-na-pc harmonic 75.89 122.11 # SOURCE3 3 2.8504
angle_coeff @angle:c3-na-pd harmonic 75.89 122.11 # SOURCE3 3 same_as_c3-na-pc
angle_coeff @angle:c3-na-sh harmonic 63.38 110.28 # SOURCE3 1
angle_coeff @angle:c3-na-ss harmonic 62.90 110.87 # SOURCE3 3 0.8260
angle_coeff @angle:ca-na-ca harmonic 66.98 120.09 # SOURCE4 321 1.7366
angle_coeff @angle:ca-na-cc harmonic 68.46 113.15 # SOURCE3 18 9.8644
angle_coeff @angle:ca-na-cd harmonic 68.46 113.15 # SOURCE3 18 9.8644
angle_coeff @angle:ca-na-cl harmonic 53.17 124.79 # SOURCE3 1
angle_coeff @angle:ca-na-cp harmonic 65.88 120.96 # SOURCE4 20 1.2820
angle_coeff @angle:ca-na-cx harmonic 63.07 124.09 # SOURCE4 12 1.8167
angle_coeff @angle:ca-na-f harmonic 65.51 116.40 # SOURCE3 1
angle_coeff @angle:ca-na-hn harmonic 47.63 125.59 # SOURCE4 437 1.1893
angle_coeff @angle:ca-na-i harmonic 55.21 121.62 # SOURCE3 1
angle_coeff @angle:ca-na-n2 harmonic 68.21 119.85 # SOURCE4 6 1.2043
angle_coeff @angle:ca-na-n4 harmonic 66.37 120.19 # SOURCE3 1
angle_coeff @angle:ca-na-n harmonic 67.34 122.00 # SOURCE3 1
angle_coeff @angle:ca-na-na harmonic 66.29 123.76 # SOURCE3 1
angle_coeff @angle:ca-na-nb harmonic 68.18 122.16 # SOURCE4 7 0.8543
angle_coeff @angle:ca-na-nc harmonic 69.27 117.85 # SOURCE3 6 3.6536
angle_coeff @angle:ca-na-nd harmonic 69.27 117.85 # SOURCE3 6 same_as_ca-na-nc
angle_coeff @angle:ca-na-nh harmonic 66.14 124.33 # SOURCE4 7 1.3855
angle_coeff @angle:ca-na-o harmonic 71.14 119.99 # SOURCE4 51 1.2671
angle_coeff @angle:ca-na-oh harmonic 66.69 124.08 # SOURCE3 1
angle_coeff @angle:ca-na-os harmonic 69.70 109.46 # SOURCE3 1 0.0000
angle_coeff @angle:ca-na-p2 harmonic 75.51 125.85 # SOURCE3 1
angle_coeff @angle:ca-na-p3 harmonic 75.50 124.38 # SOURCE3 1
angle_coeff @angle:ca-na-p4 harmonic 82.41 124.97 # SOURCE3 1
angle_coeff @angle:ca-na-p5 harmonic 77.51 123.30 # SOURCE3 1
angle_coeff @angle:ca-na-pc harmonic 77.26 122.13 # SOURCE3 3 2.2393
angle_coeff @angle:ca-na-pd harmonic 77.26 122.13 # SOURCE3 3 same_as_ca-na-pc
angle_coeff @angle:ca-na-py harmonic 72.61 140.88 # SOURCE3 2 0.0000
angle_coeff @angle:ca-na-s4 harmonic 60.55 117.23 # SOURCE3 1
angle_coeff @angle:ca-na-s6 harmonic 61.55 120.69 # SOURCE3 1
angle_coeff @angle:ca-na-s harmonic 59.27 125.64 # SOURCE3 1
angle_coeff @angle:ca-na-sh harmonic 60.55 125.44 # SOURCE3 1
angle_coeff @angle:ca-na-ss harmonic 59.16 129.91 # SOURCE4 8 0.1449
angle_coeff @angle:cc-na-cc harmonic 68.94 109.90 # SOURCE3 109 1.5547
angle_coeff @angle:cc-na-cd harmonic 63.88 128.01 # SOURCE3 1 0.0000
angle_coeff @angle:cc-na-ce harmonic 63.05 126.61 # SOURCE4 8 0.5158
angle_coeff @angle:cc-na-cl harmonic 53.10 124.61 # SOURCE3 3 0.5208
angle_coeff @angle:cc-na-f harmonic 64.60 118.03 # SOURCE3 4 0.3081
angle_coeff @angle:cc-na-hn harmonic 47.02 125.50 # CORR 861
angle_coeff @angle:cc-na-i harmonic 54.34 125.70 # SOURCE3 6 0.7821
angle_coeff @angle:cc-na-n2 harmonic 66.83 122.96 # SOURCE3 15 0.9350
angle_coeff @angle:cc-na-n4 harmonic 65.90 120.31 # SOURCE3 10 3.4394
angle_coeff @angle:cc-na-n harmonic 66.52 123.19 # SOURCE3 13 0.3010
angle_coeff @angle:cc-na-na harmonic 65.91 123.43 # SOURCE3 23 0.2088
angle_coeff @angle:cc-na-nc harmonic 70.18 113.02 # SOURCE3 38 2.2867
angle_coeff @angle:cc-na-nd harmonic 66.41 126.22 # CORR 124
angle_coeff @angle:cc-na-nh harmonic 66.23 122.25 # SOURCE3 19 0.2010
angle_coeff @angle:cc-na-no harmonic 65.40 121.78 # SOURCE3 9 0.3521
angle_coeff @angle:cc-na-o harmonic 69.01 125.21 # SOURCE3 10 0.0124
angle_coeff @angle:cc-na-oh harmonic 66.67 122.38 # SOURCE3 10 0.1570
angle_coeff @angle:cc-na-os harmonic 67.01 116.86 # CORR 48
angle_coeff @angle:cc-na-p2 harmonic 75.29 125.86 # SOURCE3 14 2.2993
angle_coeff @angle:cc-na-p3 harmonic 75.02 125.25 # SOURCE3 8 0.1998
angle_coeff @angle:cc-na-p4 harmonic 81.11 127.73 # SOURCE3 7 3.6077
angle_coeff @angle:cc-na-p5 harmonic 76.81 124.70 # SOURCE3 13 1.4225
angle_coeff @angle:cc-na-s4 harmonic 59.45 121.03 # SOURCE3 10 0.5589
angle_coeff @angle:cc-na-s6 harmonic 60.98 122.19 # SOURCE3 10 0.9634
angle_coeff @angle:cc-na-s harmonic 59.10 125.66 # SOURCE3 8 0.1880
angle_coeff @angle:cc-na-sh harmonic 60.71 123.96 # SOURCE3 10 0.3424
angle_coeff @angle:cc-na-ss harmonic 61.34 120.10 # CORR 44
angle_coeff @angle:cd-na-cd harmonic 68.94 109.90 # SOURCE3 109 1.5547
angle_coeff @angle:cd-na-cl harmonic 53.10 124.61 # SOURCE3 3 same_as_cc-na-cl
angle_coeff @angle:cd-na-f harmonic 64.60 118.03 # SOURCE3 4 0.3081
angle_coeff @angle:cd-na-hn harmonic 47.02 125.50 # CORR 861
angle_coeff @angle:cd-na-i harmonic 54.34 125.70 # SOURCE3 6 0.7821
angle_coeff @angle:cd-na-n2 harmonic 66.83 122.96 # SOURCE3 15 0.9350
angle_coeff @angle:cd-na-n4 harmonic 65.90 120.31 # SOURCE3 10 3.4394
angle_coeff @angle:cd-na-n harmonic 66.52 123.19 # SOURCE3 13 0.3010
angle_coeff @angle:cd-na-na harmonic 65.91 123.43 # SOURCE3 23 0.2088
angle_coeff @angle:cd-na-nc harmonic 66.41 126.22 # CORR 124
angle_coeff @angle:cd-na-nd harmonic 70.18 113.02 # SOURCE3 38 2.2867
angle_coeff @angle:cd-na-nh harmonic 66.23 122.25 # SOURCE3 19 0.2010
angle_coeff @angle:cd-na-no harmonic 65.40 121.78 # SOURCE3 9 0.3521
angle_coeff @angle:cd-na-o harmonic 69.01 125.21 # SOURCE3 10 0.0124
angle_coeff @angle:cd-na-oh harmonic 66.67 122.38 # SOURCE3 10 0.1570
angle_coeff @angle:cd-na-os harmonic 67.01 116.86 # CORR 48
angle_coeff @angle:cd-na-p2 harmonic 75.29 125.86 # SOURCE3 14 2.2993
angle_coeff @angle:cd-na-p3 harmonic 75.02 125.25 # SOURCE3 8 0.1998
angle_coeff @angle:cd-na-p4 harmonic 81.11 127.73 # SOURCE3 7 same_as_cc-na-p4
angle_coeff @angle:cd-na-p5 harmonic 76.81 124.70 # SOURCE3 13 1.4225
angle_coeff @angle:cd-na-s4 harmonic 59.45 121.03 # SOURCE3 10 0.5589
angle_coeff @angle:cd-na-s6 harmonic 60.98 122.19 # SOURCE3 10 0.9634
angle_coeff @angle:cd-na-s harmonic 59.10 125.66 # SOURCE3 8 0.1880
angle_coeff @angle:cd-na-sh harmonic 60.71 123.96 # SOURCE3 10 0.3424
angle_coeff @angle:cd-na-ss harmonic 61.34 120.10 # CORR 44
angle_coeff @angle:cl-na-cl harmonic 48.73 122.80 # SOURCE3 1
angle_coeff @angle:cl-na-nc harmonic 55.70 119.36 # SOURCE3 4 1.7128
angle_coeff @angle:cl-na-nd harmonic 55.70 119.36 # SOURCE3 4 same_as_cl-na-nc
angle_coeff @angle:cl-na-os harmonic 58.63 106.58 # SOURCE3 1 0.0000
angle_coeff @angle:cl-na-p2 harmonic 68.67 121.29 # SOURCE3 1
angle_coeff @angle:cl-na-pc harmonic 69.19 120.51 # SOURCE3 3 2.1985
angle_coeff @angle:cl-na-pd harmonic 69.19 120.51 # SOURCE3 3 same_as_cl-na-pc
angle_coeff @angle:cl-na-ss harmonic 56.71 111.91 # SOURCE3 1 0.0000
angle_coeff @angle:f-na-f harmonic 62.22 120.20 # SOURCE3 1
angle_coeff @angle:f-na-nc harmonic 66.64 118.05 # SOURCE3 4 1.7931
angle_coeff @angle:f-na-nd harmonic 66.64 118.05 # SOURCE3 4 same_as_f-na-nc
angle_coeff @angle:f-na-os harmonic 69.15 103.86 # SOURCE3 1 0.0000
angle_coeff @angle:f-na-p2 harmonic 75.54 119.95 # SOURCE3 1
angle_coeff @angle:f-na-pc harmonic 76.37 119.10 # SOURCE3 3 2.3967
angle_coeff @angle:f-na-pd harmonic 76.37 119.10 # SOURCE3 3 same_as_f-na-pc
angle_coeff @angle:f-na-ss harmonic 63.34 108.01 # SOURCE3 1 0.0000
angle_coeff @angle:hn-na-hn harmonic 39.83 116.80 # SOURCE3 1
angle_coeff @angle:hn-na-n harmonic 50.90 111.26 # SOURCE4 5 1.1280
angle_coeff @angle:hn-na-nc harmonic 50.00 119.61 # SOURCE3 16 1.8079
angle_coeff @angle:hn-na-nd harmonic 50.00 119.61 # SOURCE3 16 1.8079
angle_coeff @angle:hn-na-os harmonic 51.44 101.41 # SOURCE3 7 3.0814
angle_coeff @angle:hn-na-p2 harmonic 51.02 122.52 # SOURCE3 1
angle_coeff @angle:hn-na-pc harmonic 51.81 121.48 # SOURCE3 3 2.9355
angle_coeff @angle:hn-na-pd harmonic 51.81 121.48 # SOURCE3 3 same_as_hn-na-pc
angle_coeff @angle:hn-na-ss harmonic 42.24 113.95 # SOURCE3 1 0.0000
angle_coeff @angle:i-na-i harmonic 58.32 124.20 # SOURCE3 1
angle_coeff @angle:i-na-nc harmonic 56.94 120.03 # SOURCE3 4 2.0032
angle_coeff @angle:i-na-nd harmonic 56.94 120.03 # SOURCE3 4 same_as_i-na-nc
angle_coeff @angle:i-na-os harmonic 59.85 109.91 # SOURCE3 1 0.0000
angle_coeff @angle:i-na-p2 harmonic 73.36 122.28 # SOURCE3 1
angle_coeff @angle:i-na-pc harmonic 73.81 121.40 # SOURCE3 3 2.4763
angle_coeff @angle:i-na-pd harmonic 73.81 121.40 # SOURCE3 3 same_as_i-na-pc
angle_coeff @angle:i-na-ss harmonic 59.04 118.40 # SOURCE3 1 0.0000
angle_coeff @angle:n2-na-n2 harmonic 70.35 116.71 # SOURCE3 1
angle_coeff @angle:n2-na-nc harmonic 69.85 119.96 # SOURCE3 4 4.5041
angle_coeff @angle:n2-na-nd harmonic 69.85 119.96 # SOURCE3 4 same_as_n2-na-nc
angle_coeff @angle:n2-na-os harmonic 70.33 111.53 # SOURCE3 1 0.0000
angle_coeff @angle:n2-na-p2 harmonic 77.46 124.88 # SOURCE3 1
angle_coeff @angle:n2-na-pc harmonic 78.60 123.18 # SOURCE3 3 4.7947
angle_coeff @angle:n2-na-pd harmonic 78.60 123.18 # SOURCE3 3 same_as_n2-na-pc
angle_coeff @angle:n2-na-ss harmonic 61.71 124.64 # SOURCE3 1 0.0000
angle_coeff @angle:n3-na-n3 harmonic 65.77 124.00 # SOURCE3 1
angle_coeff @angle:n4-na-n4 harmonic 68.57 111.70 # SOURCE3 1
angle_coeff @angle:n4-na-nc harmonic 69.09 116.44 # SOURCE3 4 3.6604
angle_coeff @angle:n4-na-nd harmonic 69.09 116.44 # SOURCE3 4 same_as_n4-na-nc
angle_coeff @angle:n4-na-os harmonic 71.61 102.97 # SOURCE3 1 0.0000
angle_coeff @angle:n4-na-p2 harmonic 77.04 123.56 # SOURCE3 1
angle_coeff @angle:n4-na-pc harmonic 78.10 121.98 # SOURCE3 3 4.4884
angle_coeff @angle:n4-na-pd harmonic 78.10 121.98 # SOURCE3 3 same_as_n4-na-pc
angle_coeff @angle:na-na-na harmonic 66.77 123.60 # SOURCE3 1
angle_coeff @angle:na-na-nc harmonic 69.08 119.64 # SOURCE3 4 1.6920
angle_coeff @angle:na-na-nd harmonic 69.08 119.64 # SOURCE3 4 same_as_na-na-nc
angle_coeff @angle:na-na-os harmonic 70.25 109.47 # SOURCE3 1 0.0000
angle_coeff @angle:na-na-p2 harmonic 78.07 121.72 # SOURCE3 1
angle_coeff @angle:na-na-pc harmonic 78.92 120.91 # SOURCE3 3 2.3033
angle_coeff @angle:na-na-pd harmonic 78.92 120.91 # SOURCE3 3 same_as_na-na-pc
angle_coeff @angle:na-na-ss harmonic 63.50 116.50 # SOURCE3 1 0.0000
angle_coeff @angle:nc-na-nc harmonic 71.20 117.08 # SOURCE3 31 1.8121
angle_coeff @angle:nc-na-nd harmonic 69.53 122.77 # SOURCE4 5 0.1352
angle_coeff @angle:nc-na-nh harmonic 68.82 120.55 # SOURCE3 8 1.1436
angle_coeff @angle:nc-na-no harmonic 68.19 119.15 # SOURCE3 4 1.6049
angle_coeff @angle:nc-na-o harmonic 72.04 122.79 # SOURCE3 6 1.3154
angle_coeff @angle:nc-na-oh harmonic 69.71 119.22 # SOURCE3 4 1.7201
angle_coeff @angle:nc-na-os harmonic 68.30 119.65 # SOURCE3 4 1.5019
angle_coeff @angle:nc-na-p2 harmonic 79.23 119.99 # SOURCE3 4 3.6009
angle_coeff @angle:nc-na-p3 harmonic 78.72 120.07 # SOURCE3 4 3.7188
angle_coeff @angle:nc-na-p4 harmonic 86.25 119.77 # SOURCE3 3 0.3747
angle_coeff @angle:nc-na-p5 harmonic 80.84 118.95 # SOURCE3 4 3.1194
angle_coeff @angle:nc-na-pc harmonic 80.31 118.66 # SOURCE3 27 1.5082
angle_coeff @angle:nc-na-s4 harmonic 61.52 119.20 # SOURCE3 4 2.3841
angle_coeff @angle:nc-na-s6 harmonic 63.45 119.24 # SOURCE3 4 2.2262
angle_coeff @angle:nc-na-s harmonic 61.55 122.26 # SOURCE3 4 0.9173
angle_coeff @angle:nc-na-sh harmonic 63.29 120.50 # SOURCE3 4 1.5016
angle_coeff @angle:nc-na-ss harmonic 62.94 120.50 # SOURCE3 4 1.5615
angle_coeff @angle:nd-na-nd harmonic 71.20 117.08 # SOURCE3 31 1.8121
angle_coeff @angle:nd-na-nh harmonic 68.82 120.55 # SOURCE3 8 same_as_nc-na-nh
angle_coeff @angle:nd-na-no harmonic 68.19 119.15 # SOURCE3 4 same_as_nc-na-no
angle_coeff @angle:nd-na-o harmonic 72.04 122.79 # SOURCE3 6 same_as_nc-na-o
angle_coeff @angle:nd-na-oh harmonic 69.71 119.22 # SOURCE3 4 same_as_nc-na-oh
angle_coeff @angle:nd-na-os harmonic 68.30 119.65 # SOURCE3 4 same_as_nc-na-os
angle_coeff @angle:nd-na-p2 harmonic 79.23 119.99 # SOURCE3 4 same_as_nc-na-p2
angle_coeff @angle:nd-na-p3 harmonic 78.72 120.07 # SOURCE3 4 same_as_nc-na-p3
angle_coeff @angle:nd-na-p4 harmonic 86.25 119.77 # SOURCE3 3 same_as_nc-na-p4
angle_coeff @angle:nd-na-p5 harmonic 80.84 118.95 # SOURCE3 4 same_as_nc-na-p5
angle_coeff @angle:nd-na-pd harmonic 80.31 118.66 # SOURCE3 27 same_as_nc-na-pc
angle_coeff @angle:nd-na-s4 harmonic 61.52 119.20 # SOURCE3 4 same_as_nc-na-s4
angle_coeff @angle:nd-na-s6 harmonic 63.45 119.24 # SOURCE3 4 same_as_nc-na-s6
angle_coeff @angle:nd-na-s harmonic 61.55 122.26 # SOURCE3 4 same_as_nc-na-s
angle_coeff @angle:nd-na-sh harmonic 63.29 120.50 # SOURCE3 4 same_as_nc-na-sh
angle_coeff @angle:nd-na-ss harmonic 62.94 120.50 # SOURCE3 4 same_as_nc-na-ss
angle_coeff @angle:nh-na-nh harmonic 66.77 123.60 # SOURCE3 1
angle_coeff @angle:nh-na-os harmonic 69.65 111.37 # SOURCE3 1 0.0000
angle_coeff @angle:nh-na-p2 harmonic 78.35 120.86 # SOURCE3 1
angle_coeff @angle:nh-na-pc harmonic 79.10 120.38 # SOURCE3 6 1.3513
angle_coeff @angle:nh-na-pd harmonic 79.10 120.38 # SOURCE3 6 same_as_nh-na-pc
angle_coeff @angle:nh-na-ss harmonic 64.66 112.35 # SOURCE3 2 5.2951
angle_coeff @angle:n-na-n harmonic 67.78 123.80 # SOURCE3 1
angle_coeff @angle:n-na-nc harmonic 69.61 119.85 # SOURCE3 4 1.6156
angle_coeff @angle:n-na-nd harmonic 69.61 119.85 # SOURCE3 4 same_as_n-na-nc
angle_coeff @angle:no-na-no harmonic 65.22 122.80 # SOURCE3 1
angle_coeff @angle:no-na-os harmonic 70.30 106.55 # SOURCE3 1 0.0000
angle_coeff @angle:no-na-pc harmonic 78.65 120.11 # SOURCE3 3 2.0821
angle_coeff @angle:no-na-pd harmonic 78.65 120.11 # SOURCE3 3 same_as_no-na-pc
angle_coeff @angle:n-na-os harmonic 72.34 104.71 # SOURCE3 1 0.0000
angle_coeff @angle:no-na-ss harmonic 63.49 114.95 # SOURCE3 1 0.0000
angle_coeff @angle:n-na-p2 harmonic 78.46 121.35 # SOURCE3 1
angle_coeff @angle:n-na-pc harmonic 79.30 120.64 # SOURCE3 3 2.0168
angle_coeff @angle:n-na-pd harmonic 79.30 120.64 # SOURCE3 3 same_as_n-na-pc
angle_coeff @angle:n-na-ss harmonic 63.84 116.10 # SOURCE3 1 0.0000
angle_coeff @angle:oh-na-oh harmonic 68.13 122.20 # SOURCE3 1
angle_coeff @angle:oh-na-p2 harmonic 78.88 120.76 # SOURCE3 1
angle_coeff @angle:oh-na-pc harmonic 79.74 119.99 # SOURCE3 3 2.1734
angle_coeff @angle:oh-na-pd harmonic 79.74 119.99 # SOURCE3 3 same_as_oh-na-pc
angle_coeff @angle:oh-na-ss harmonic 64.88 113.04 # SOURCE3 1 0.0000
angle_coeff @angle:o-na-o harmonic 74.03 126.20 # SOURCE3 1
angle_coeff @angle:o-na-os harmonic 70.76 118.39 # SOURCE3 1 0.0000
angle_coeff @angle:o-na-p2 harmonic 79.51 122.80 # SOURCE3 1
angle_coeff @angle:o-na-pc harmonic 80.36 122.34 # SOURCE3 3 1.2908
angle_coeff @angle:o-na-pd harmonic 80.36 122.34 # SOURCE3 3 same_as_o-na-pc
angle_coeff @angle:os-na-os harmonic 71.29 104.45 # SOURCE3 2 0.0983
angle_coeff @angle:os-na-p2 harmonic 79.21 117.86 # SOURCE3 1 0.0000
angle_coeff @angle:os-na-p3 harmonic 83.58 104.70 # SOURCE3 1 0.0000
angle_coeff @angle:os-na-p5 harmonic 82.64 111.41 # SOURCE3 1 0.0000
angle_coeff @angle:os-na-pc harmonic 79.09 119.91 # SOURCE3 3 1.9002
angle_coeff @angle:os-na-pd harmonic 79.09 119.91 # SOURCE3 3 same_as_os-na-pc
angle_coeff @angle:os-na-s4 harmonic 64.81 105.88 # SOURCE3 2 0.0000
angle_coeff @angle:os-na-s6 harmonic 64.80 112.00 # SOURCE3 2 0.0000
angle_coeff @angle:os-na-ss harmonic 65.33 109.64 # SOURCE3 3 4.1395
angle_coeff @angle:p2-na-p2 harmonic 96.62 120.91 # SOURCE3 1
angle_coeff @angle:p2-na-p3 harmonic 94.74 124.80 # SOURCE3 1
angle_coeff @angle:p2-na-p5 harmonic 96.33 123.99 # SOURCE3 1
angle_coeff @angle:p2-na-pc harmonic 97.16 120.72 # SOURCE3 3 0.2407
angle_coeff @angle:p2-na-pd harmonic 97.16 120.72 # SOURCE3 3 same_as_p2-na-pc
angle_coeff @angle:p2-na-s4 harmonic 74.88 122.47 # SOURCE3 1
angle_coeff @angle:p2-na-s6 harmonic 76.31 122.50 # SOURCE3 1
angle_coeff @angle:p2-na-s harmonic 75.69 121.85 # SOURCE3 1
angle_coeff @angle:p2-na-sh harmonic 76.68 121.75 # SOURCE3 1
angle_coeff @angle:p2-na-ss harmonic 76.38 121.88 # SOURCE3 1
angle_coeff @angle:p3-na-p3 harmonic 93.72 126.60 # SOURCE3 1
angle_coeff @angle:p3-na-pc harmonic 95.76 123.32 # SOURCE3 3 4.1781
angle_coeff @angle:p3-na-pd harmonic 95.76 123.32 # SOURCE3 3 same_as_p3-na-pc
angle_coeff @angle:p5-na-p5 harmonic 97.06 124.60 # SOURCE3 1
angle_coeff @angle:p5-na-pc harmonic 97.33 122.69 # SOURCE3 3 3.6738
angle_coeff @angle:p5-na-pd harmonic 97.33 122.69 # SOURCE3 3 same_as_p5-na-pc
angle_coeff @angle:p5-na-ss harmonic 78.22 118.52 # SOURCE3 1 0.0000
angle_coeff @angle:pc-na-pc harmonic 97.62 120.78 # SOURCE3 27 1.6457
angle_coeff @angle:pc-na-s4 harmonic 75.52 121.51 # SOURCE3 3 2.7242
angle_coeff @angle:pc-na-s6 harmonic 76.99 121.55 # SOURCE3 3 2.7065
angle_coeff @angle:pc-na-s harmonic 76.17 121.47 # SOURCE3 3 1.0668
angle_coeff @angle:pc-na-sh harmonic 77.28 121.08 # SOURCE3 3 1.8942
angle_coeff @angle:pc-na-ss harmonic 76.97 121.20 # SOURCE3 3 1.9295
angle_coeff @angle:pd-na-pd harmonic 97.62 120.78 # SOURCE3 27 same_as_pc-na-pc
angle_coeff @angle:pd-na-s4 harmonic 75.52 121.51 # SOURCE3 3 same_as_pc-na-s4
angle_coeff @angle:pd-na-s6 harmonic 76.99 121.55 # SOURCE3 3 same_as_pc-na-s6
angle_coeff @angle:pd-na-s harmonic 76.17 121.47 # SOURCE3 3 same_as_pc-na-s
angle_coeff @angle:pd-na-sh harmonic 77.28 121.08 # SOURCE3 3 same_as_pc-na-sh
angle_coeff @angle:pd-na-ss harmonic 76.97 121.20 # SOURCE3 3 same_as_pc-na-ss
angle_coeff @angle:py-na-py harmonic 122.69 78.25 # SOURCE3 1 0.0000
angle_coeff @angle:s4-na-s4 harmonic 58.05 124.20 # SOURCE3 1
angle_coeff @angle:s4-na-s6 harmonic 62.00 112.86 # SOURCE3 1
angle_coeff @angle:s4-na-ss harmonic 62.16 111.92 # SOURCE3 1 0.0000
angle_coeff @angle:s6-na-s6 harmonic 60.51 123.20 # SOURCE3 1
angle_coeff @angle:s6-na-ss harmonic 61.44 119.10 # SOURCE3 1 0.0000
angle_coeff @angle:sh-na-sh harmonic 60.38 124.60 # SOURCE3 1
angle_coeff @angle:sh-na-ss harmonic 61.63 118.79 # SOURCE3 1 0.0000
angle_coeff @angle:s-na-s harmonic 58.55 126.00 # SOURCE3 1
angle_coeff @angle:s-na-ss harmonic 62.52 112.49 # SOURCE3 1 0.0000
angle_coeff @angle:ss-na-ss harmonic 62.90 113.24 # SOURCE3 2 6.6084
angle_coeff @angle:sy-na-sy harmonic 60.51 123.20 # SOURCE3 1
angle_coeff @angle:ca-nb-ca harmonic 68.59 115.86 # SOURCE3 46 1.1645
angle_coeff @angle:ca-nb-cp harmonic 68.01 118.04 # SOURCE4 58 0.7819
angle_coeff @angle:ca-nb-cq harmonic 68.01 118.04 # SOURCE4 58 same as ca-nb-cp
angle_coeff @angle:ca-nb-nb harmonic 69.37 118.89 # SOURCE3 10 0.6031
angle_coeff @angle:cp-nb-nb harmonic 68.79 121.11 # SOURCE4 12 0.4315
angle_coeff @angle:nb-nb-nb harmonic 70.44 121.04 # SOURCE3 1 0.0000
angle_coeff @angle:br-n-br harmonic 66.59 116.20 # SOURCE3 1 0.0000
angle_coeff @angle:br-n-c harmonic 61.85 120.77 # SOURCE3 5 2.6390
angle_coeff @angle:br-n-ca harmonic 62.07 118.19 # SOURCE3 1
angle_coeff @angle:br-n-cc harmonic 62.34 118.19 # SOURCE3 1 same_as_br-n-cd
angle_coeff @angle:br-n-cd harmonic 62.34 118.19 # SOURCE3 1 0.0000
angle_coeff @angle:c1-n-c1 harmonic 73.52 102.69 # SOURCE3 1
angle_coeff @angle:c1-n-ca harmonic 65.90 118.88 # SOURCE3 1
angle_coeff @angle:c1-n-cc harmonic 67.02 118.88 # SOURCE3 1 same_as_c1-n-cd
angle_coeff @angle:c1-n-cd harmonic 67.02 118.88 # SOURCE3 1 0.0000
angle_coeff @angle:c2-n-c2 harmonic 65.18 116.75 # SOURCE3 1 0.0000
angle_coeff @angle:c2-n-c3 harmonic 63.06 119.98 # SOURCE4 23 2.3373
angle_coeff @angle:c2-n-ca harmonic 64.88 116.54 # SOURCE3 1
angle_coeff @angle:c2-n-cc harmonic 65.85 116.54 # SOURCE3 1 same_as_c2-n-cd
angle_coeff @angle:c2-n-cd harmonic 65.85 116.54 # SOURCE3 1 0.0000
angle_coeff @angle:c2-n-hn harmonic 47.33 118.36 # SOURCE4 40 1.8005
angle_coeff @angle:c3-n-c3 harmonic 63.13 115.56 # SOURCE4 392 2.0191
angle_coeff @angle:c3-n-ca harmonic 62.76 119.96 # SOURCE4 165 2.0808
angle_coeff @angle:c3-n-cc harmonic 63.33 121.00 # CORR 267
angle_coeff @angle:c3-n-cd harmonic 63.33 121.00 # CORR 267
angle_coeff @angle:c3-n-cy harmonic 62.51 117.11 # SOURCE4 49 1.0344
angle_coeff @angle:c3-n-hn harmonic 46.04 116.78 # SOURCE3 39 2.1985
angle_coeff @angle:c3-n-n2 harmonic 64.89 121.68 # SOURCE4 52 1.3175
angle_coeff @angle:c3-n-n harmonic 66.40 114.82 # SOURCE4 9 0.7008
angle_coeff @angle:c3-n-nc harmonic 66.97 115.21 # CORR 48
angle_coeff @angle:c3-n-nd harmonic 66.97 115.21 # CORR 48
angle_coeff @angle:c3-n-oh harmonic 66.88 113.05 # SOURCE4 31 0.8144
angle_coeff @angle:c3-n-os harmonic 66.99 112.65 # SOURCE4 16 1.5399
angle_coeff @angle:c3-n-sy harmonic 60.53 121.27 # SOURCE4 5 1.1298
angle_coeff @angle:ca-n-ca harmonic 64.31 117.39 # SOURCE4 39 1.6465
angle_coeff @angle:ca-n-cc harmonic 66.19 114.06 # CORR 34
angle_coeff @angle:ca-n-cd harmonic 66.19 114.06 # CORR 34
angle_coeff @angle:ca-n-cl harmonic 57.24 117.72 # SOURCE3 1
angle_coeff @angle:ca-n-f harmonic 64.62 114.92 # SOURCE3 1
angle_coeff @angle:ca-n-hn harmonic 47.36 115.94 # SOURCE4 537 1.8890
angle_coeff @angle:ca-n-i harmonic 56.58 119.30 # SOURCE3 1
angle_coeff @angle:ca-n-n2 harmonic 65.72 122.17 # SOURCE4 5 0.2545
angle_coeff @angle:ca-n-n4 harmonic 64.15 122.98 # SOURCE3 1
angle_coeff @angle:ca-n-n harmonic 66.30 118.54 # SOURCE4 21 0.3399
angle_coeff @angle:ca-n-na harmonic 66.33 119.31 # SOURCE4 16 0.3168
angle_coeff @angle:ca-n-nc harmonic 68.25 114.36 # CORR 6
angle_coeff @angle:ca-n-nd harmonic 68.25 114.36 # CORR 6
angle_coeff @angle:ca-n-nh harmonic 66.60 116.45 # SOURCE3 1
angle_coeff @angle:ca-n-p2 harmonic 79.60 112.32 # SOURCE3 1
angle_coeff @angle:ca-n-p3 harmonic 74.22 125.11 # SOURCE3 1
angle_coeff @angle:ca-n-s4 harmonic 59.97 118.40 # SOURCE3 1
angle_coeff @angle:ca-n-s6 harmonic 62.01 117.32 # SOURCE3 1
angle_coeff @angle:ca-n-ss harmonic 62.15 116.60 # SOURCE3 1
angle_coeff @angle:c-n-c1 harmonic 68.47 117.04 # SOURCE3 1 0.0000
angle_coeff @angle:c-n-c2 harmonic 65.09 122.15 # SOURCE3 9 5.1016
angle_coeff @angle:c-n-c3 harmonic 63.92 121.35 # SOURCE3 54 2.3808
angle_coeff @angle:c3-nc-cd harmonic 67.60 109.51 # SOURCE3 9 5.4142
angle_coeff @angle:c-n-c harmonic 65.33 127.14 # SOURCE4 514 2.0111
angle_coeff @angle:c-n-ca harmonic 64.29 123.71 # SOURCE3 10 3.8159
angle_coeff @angle:ca-nc-ca harmonic 70.73 109.95 # SOURCE3 1
angle_coeff @angle:ca-nc-cd harmonic 72.43 104.94 # CORR 437
angle_coeff @angle:ca-nc-n harmonic 73.68 104.69 # CORR 2
angle_coeff @angle:ca-nc-na harmonic 74.57 102.74 # CORR 14
angle_coeff @angle:ca-nc-os harmonic 73.08 104.48 # CORR 10
angle_coeff @angle:ca-nc-ss harmonic 67.84 116.29 # SOURCE3 1
angle_coeff @angle:c-n-cc harmonic 65.24 124.19 # SOURCE3 57 2.2262
angle_coeff @angle:c-nc-ca harmonic 66.11 120.66 # CORR 2
angle_coeff @angle:cc-n-cc harmonic 68.80 108.92 # SOURCE3 11 0.3167
angle_coeff @angle:cc-nc-cc harmonic 70.50 104.34 # CORR 6
angle_coeff @angle:cc-nc-cd harmonic 71.08 105.67 # CORR 1240
angle_coeff @angle:c-nc-cd harmonic 66.18 120.48 # CORR 138
angle_coeff @angle:cc-n-cl harmonic 57.67 117.72 # SOURCE3 1 same_as_cd-n-cl
angle_coeff @angle:cc-nc-na harmonic 73.38 102.97 # SOURCE3 1 0.0000
angle_coeff @angle:cc-nc-nd harmonic 72.54 107.94 # SOURCE3 6 1.4052
angle_coeff @angle:c-n-cd harmonic 65.24 124.19 # SOURCE3 57 2.2262
angle_coeff @angle:cd-nc-cd harmonic 68.53 117.28 # CORR 17
angle_coeff @angle:cd-nc-n harmonic 69.66 117.19 # CORR 64
angle_coeff @angle:cd-nc-na harmonic 74.24 103.73 # SOURCE3 122 2.3292
angle_coeff @angle:cd-nc-nc harmonic 71.99 107.88 # CORR 355
angle_coeff @angle:cd-nc-os harmonic 73.04 104.66 # CORR 116
angle_coeff @angle:cd-nc-ss harmonic 70.36 108.15 # CORR 45
angle_coeff @angle:c-n-ce harmonic 62.21 131.83 # SOURCE4 146 1.3048
angle_coeff @angle:cc-n-f harmonic 65.61 114.92 # SOURCE3 1 same_as_cd-n-f
angle_coeff @angle:cc-n-hn harmonic 47.99 119.14 # CORR 276
angle_coeff @angle:cc-n-i harmonic 56.61 119.30 # SOURCE3 1 same_as_cd-n-i
angle_coeff @angle:c-n-cl harmonic 58.34 116.35 # SOURCE4 11 0.6829
angle_coeff @angle:cc-n-n2 harmonic 70.09 110.87 # SOURCE3 1 same_as_cd-n-n2
angle_coeff @angle:cc-n-n harmonic 66.53 121.37 # SOURCE3 1 same_as_cd-n-n
angle_coeff @angle:cc-n-na harmonic 67.87 117.57 # SOURCE3 1 same_as_cd-n-na
angle_coeff @angle:cc-n-nc harmonic 70.08 112.03 # CORR 14
angle_coeff @angle:cc-n-nh harmonic 67.30 117.52 # SOURCE3 1 same_as_cd-n-nh
angle_coeff @angle:cc-n-no harmonic 66.40 115.92 # SOURCE3 1 same_as_cd-n-no
angle_coeff @angle:cc-n-o harmonic 70.07 120.54 # SOURCE3 1 same_as_cd-n-o
angle_coeff @angle:cc-n-oh harmonic 67.32 118.15 # SOURCE3 1 same_as_cd-n-oh
angle_coeff @angle:cc-n-os harmonic 68.06 115.56 # SOURCE3 1 same_as_cd-n-os
angle_coeff @angle:cc-n-p2 harmonic 80.17 112.32 # SOURCE3 1 same_as_cd-n-p2
angle_coeff @angle:cc-n-p3 harmonic 74.70 125.11 # SOURCE3 1 same_as_cd-n-p3
angle_coeff @angle:cc-n-p5 harmonic 78.11 121.00 # SOURCE3 1 same_as_cd-n-p5
angle_coeff @angle:cc-n-s4 harmonic 60.34 118.40 # SOURCE3 1 same_as_cd-n-s4
angle_coeff @angle:cc-n-s6 harmonic 62.48 117.32 # SOURCE3 1 same_as_cd-n-s6
angle_coeff @angle:cc-n-s harmonic 60.78 118.29 # SOURCE3 1 same_as_cd-n-s
angle_coeff @angle:cc-n-sh harmonic 61.64 119.13 # SOURCE3 1 same_as_cd-n-sh
angle_coeff @angle:cc-n-ss harmonic 62.62 116.60 # SOURCE3 2 same_as_cd-n-ss
angle_coeff @angle:c-n-cx harmonic 64.22 122.07 # SOURCE4 11 1.9478
angle_coeff @angle:c-n-cy harmonic 72.26 94.23 # SOURCE4 270 1.3777
angle_coeff @angle:cd-n-cd harmonic 68.80 108.92 # SOURCE3 11 same_as_cc-n-cc
angle_coeff @angle:cd-n-cl harmonic 57.67 117.72 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-f harmonic 65.61 114.92 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-hn harmonic 47.99 119.14 # CORR 276
angle_coeff @angle:cd-n-i harmonic 56.61 119.30 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-n2 harmonic 70.09 110.87 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-n harmonic 66.53 121.37 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-na harmonic 67.87 117.57 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-nd harmonic 70.08 112.03 # CORR 14
angle_coeff @angle:cd-n-nh harmonic 67.30 117.52 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-no harmonic 66.40 115.92 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-o harmonic 70.07 120.54 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-oh harmonic 67.32 118.15 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-os harmonic 68.06 115.56 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-p2 harmonic 80.17 112.32 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-p3 harmonic 74.70 125.11 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-p5 harmonic 78.11 121.00 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-s4 harmonic 60.34 118.40 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-s6 harmonic 62.48 117.32 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-s harmonic 60.78 118.29 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-sh harmonic 61.64 119.13 # SOURCE3 1 0.0000
angle_coeff @angle:cd-n-ss harmonic 62.62 116.60 # SOURCE3 2 1.8318
angle_coeff @angle:ce-n-cy harmonic 64.70 111.89 # CORR 152
angle_coeff @angle:c-n-f harmonic 68.30 108.63 # SOURCE3 3 4.6785
angle_coeff @angle:cf-n-cy harmonic 64.70 111.89 # CORR 152
angle_coeff @angle:c-n-hn harmonic 49.21 118.46 # SOURCE3 157 2.4094
angle_coeff @angle:c-n-i harmonic 56.34 120.38 # SOURCE3 5 2.1600
angle_coeff @angle:cl-n-cl harmonic 54.70 111.69 # SOURCE3 1 0.0000
angle_coeff @angle:c-n-n2 harmonic 68.06 120.59 # SOURCE3 9 3.2410
angle_coeff @angle:c-n-n3 harmonic 67.13 120.43 # SOURCE3 5 0.9481
angle_coeff @angle:c-n-n4 harmonic 68.85 112.32 # SOURCE3 5 1.2622
angle_coeff @angle:c-n-n harmonic 68.18 118.42 # SOURCE3 10 2.8922
angle_coeff @angle:c-n-na harmonic 68.25 119.20 # SOURCE3 11 2.3032
angle_coeff @angle:na-nc-nd harmonic 75.97 105.47 # SOURCE3 6 0.6349
angle_coeff @angle:c-n-nc harmonic 67.16 125.19 # CORR 84
angle_coeff @angle:nc-nc-nd harmonic 73.11 111.29 # CORR 61
angle_coeff @angle:c-n-nd harmonic 67.16 125.19 # CORR 84
angle_coeff @angle:nd-nc-os harmonic 74.42 107.22 # SOURCE3 3 0.4707
angle_coeff @angle:c-n-nh harmonic 68.02 117.81 # SOURCE4 21 1.5935
angle_coeff @angle:c-n-no harmonic 66.47 118.16 # SOURCE3 4 5.4870
angle_coeff @angle:c-n-o harmonic 71.64 118.90 # SOURCE3 9 5.4085
angle_coeff @angle:c-n-oh harmonic 69.53 113.39 # SOURCE3 6 1.3345
angle_coeff @angle:c-n-os harmonic 69.60 113.14 # SOURCE3 7 3.0839
angle_coeff @angle:c-n-p2 harmonic 76.53 124.56 # SOURCE3 8 3.6907
angle_coeff @angle:c-n-p3 harmonic 75.82 122.54 # SOURCE3 9 4.4802
angle_coeff @angle:c-n-p4 harmonic 76.84 123.44 # SOURCE3 1 0.0000
angle_coeff @angle:c-n-p5 harmonic 76.23 128.50 # SOURCE4 6 0.5353
angle_coeff @angle:c-n-pc harmonic 77.00 122.23 # SOURCE3 3 2.8787
angle_coeff @angle:c-n-pd harmonic 77.00 122.23 # SOURCE3 3 same_as_c-n-pc
angle_coeff @angle:c-n-s4 harmonic 60.09 120.41 # SOURCE3 4 3.1760
angle_coeff @angle:c-n-s6 harmonic 60.86 125.01 # SOURCE4 13 1.6314
angle_coeff @angle:c-n-s harmonic 59.04 126.55 # SOURCE3 3 4.3365
angle_coeff @angle:c-n-sh harmonic 61.87 119.54 # SOURCE3 4 1.7681
angle_coeff @angle:c-n-ss harmonic 61.97 120.37 # SOURCE3 7 1.4450
angle_coeff @angle:c-n-sy harmonic 60.91 124.81 # SOURCE4 51 1.0517
angle_coeff @angle:cx-n-hn harmonic 46.26 118.58 # SOURCE4 5 0.3288
angle_coeff @angle:cx-n-os harmonic 97.40 54.04 # SOURCE3 1 0.0000
angle_coeff @angle:cy-n-hn harmonic 45.34 119.00 # SOURCE4 65 1.3840
angle_coeff @angle:c3-nd-cc harmonic 67.60 109.51 # SOURCE3 9 same_as_c3-nc-cd
angle_coeff @angle:ca-nd-ca harmonic 70.73 109.95 # SOURCE3 1 same_as_ca-nc-ca
angle_coeff @angle:ca-nd-cc harmonic 72.43 104.94 # CORR 437
angle_coeff @angle:ca-nd-n harmonic 73.68 104.69 # CORR 2
angle_coeff @angle:ca-nd-na harmonic 74.57 102.74 # CORR 14
angle_coeff @angle:ca-nd-nc harmonic 73.55 108.41 # SOURCE4 9 0.1575
angle_coeff @angle:ca-nd-os harmonic 73.08 104.48 # CORR 10
angle_coeff @angle:ca-nd-ss harmonic 67.84 116.29 # SOURCE3 1 same_as_ca-nc-ss
angle_coeff @angle:c-nd-ca harmonic 66.11 120.66 # CORR 2
angle_coeff @angle:c-nd-cc harmonic 66.18 120.48 # CORR 138
angle_coeff @angle:cc-nd-cc harmonic 68.53 117.28 # CORR 17
angle_coeff @angle:cc-nd-cd harmonic 71.08 105.67 # CORR 1240
angle_coeff @angle:cc-nd-n harmonic 69.66 117.19 # CORR 64
angle_coeff @angle:cc-nd-na harmonic 74.24 103.73 # SOURCE3 122 2.3292
angle_coeff @angle:cc-nd-nd harmonic 71.99 107.88 # CORR 355
angle_coeff @angle:cc-nd-os harmonic 73.04 104.66 # CORR 116
angle_coeff @angle:cc-nd-ss harmonic 70.36 108.15 # CORR 45
angle_coeff @angle:cd-nd-cd harmonic 70.50 104.34 # CORR 6
angle_coeff @angle:cd-nd-na harmonic 73.38 102.97 # SOURCE3 1 same_as_cc-nc-na
angle_coeff @angle:cd-nd-nc harmonic 72.54 107.94 # SOURCE3 6 1.4052
angle_coeff @angle:na-nd-nc harmonic 75.97 105.47 # SOURCE3 6 0.6349
angle_coeff @angle:nc-nd-nd harmonic 73.11 111.29 # CORR 61
angle_coeff @angle:nc-nd-os harmonic 74.42 107.22 # SOURCE3 3 same_as_nd-nc-os
angle_coeff @angle:c1-ne-ca harmonic 60.41 150.84 # CORR 9
angle_coeff @angle:c1-ne-cg harmonic 66.00 140.00 # SOURCE2 1 0.0000
angle_coeff @angle:c2-ne-ca harmonic 66.09 120.84 # CORR 55
angle_coeff @angle:c2-ne-ce harmonic 67.33 118.17 # SOURCE3 3 1.2374
angle_coeff @angle:c2-ne-cg harmonic 68.36 123.58 # SOURCE4 12 0.8560
angle_coeff @angle:c2-ne-n2 harmonic 74.56 113.31 # SOURCE3 1
angle_coeff @angle:c2-ne-ne harmonic 69.17 110.86 # SOURCE3 7 4.5874
angle_coeff @angle:c2-ne-p2 harmonic 80.83 134.03 # SOURCE3 1
angle_coeff @angle:c2-ne-pe harmonic 79.24 120.52 # SOURCE3 8 8.1381
angle_coeff @angle:c2-ne-px harmonic 80.57 117.75 # SOURCE3 5 0.8581
angle_coeff @angle:c2-ne-py harmonic 84.33 117.04 # SOURCE3 3 1.4398
angle_coeff @angle:c2-ne-sx harmonic 60.95 111.98 # SOURCE3 3 0.4090
angle_coeff @angle:c2-ne-sy harmonic 61.78 118.92 # CORR 9
angle_coeff @angle:ca-ne-cf harmonic 65.56 121.98 # CORR 15
angle_coeff @angle:ca-ne-n2 harmonic 69.73 114.06 # CORR 11
angle_coeff @angle:ca-ne-nf harmonic 69.69 115.12 # CORR 44
angle_coeff @angle:ca-ne-o harmonic 71.10 113.96 # SOURCE3 3 1.1253
angle_coeff @angle:ca-ne-p2 harmonic 83.08 118.09 # SOURCE3 1 0.0000
angle_coeff @angle:ca-ne-s harmonic 65.75 120.11 # SOURCE3 1 0.0000
angle_coeff @angle:c-ne-c2 harmonic 67.85 118.53 # CORR 6
angle_coeff @angle:ce-ne-n2 harmonic 71.16 111.19 # SOURCE3 1 0.0000
angle_coeff @angle:ce-ne-o harmonic 72.26 112.16 # SOURCE3 1 0.0000
angle_coeff @angle:ce-ne-p2 harmonic 83.85 117.02 # SOURCE3 1 0.0000
angle_coeff @angle:ce-ne-s harmonic 67.15 116.28 # SOURCE3 1 0.0000
angle_coeff @angle:cg-ne-n1 harmonic 71.71 120.20 # SOURCE2 1 0.0000
angle_coeff @angle:cg-ne-n2 harmonic 73.16 113.39 # SOURCE3 1 0.0000
angle_coeff @angle:cg-ne-o harmonic 74.43 114.70 # SOURCE2 1 0.0000
angle_coeff @angle:cg-ne-p2 harmonic 84.75 119.57 # SOURCE3 1 0.0000
angle_coeff @angle:cg-ne-s harmonic 68.28 117.70 # SOURCE3 1 0.0000
angle_coeff @angle:c-ne-sy harmonic 61.66 116.05 # SOURCE4 6 1.2661
angle_coeff @angle:n2-ne-n2 harmonic 78.59 107.22 # SOURCE3 1
angle_coeff @angle:n2-ne-ne harmonic 70.94 110.72 # SOURCE3 9 6.1488
angle_coeff @angle:n2-ne-o harmonic 78.09 114.10 # SOURCE3 1 0.0000
angle_coeff @angle:n2-ne-p2 harmonic 91.59 109.66 # SOURCE3 1
angle_coeff @angle:n2-ne-pe harmonic 84.18 112.15 # SOURCE3 7 6.5273
angle_coeff @angle:n2-ne-px harmonic 83.20 115.97 # SOURCE3 3 1.9854
angle_coeff @angle:n2-ne-py harmonic 87.34 114.60 # SOURCE3 3 2.9261
angle_coeff @angle:n2-ne-s harmonic 71.27 115.90 # SOURCE3 1 0.0000
angle_coeff @angle:n2-ne-sx harmonic 63.80 107.29 # SOURCE3 1 0.0000
angle_coeff @angle:n2-ne-sy harmonic 65.46 111.21 # SOURCE3 1 0.0000
angle_coeff @angle:ne-ne-o harmonic 72.28 110.45 # SOURCE3 10 1.8535
angle_coeff @angle:ne-ne-p2 harmonic 85.32 114.39 # SOURCE3 6 4.0528
angle_coeff @angle:ne-ne-s harmonic 67.59 115.95 # SOURCE3 6 3.4604
angle_coeff @angle:o-ne-o harmonic 76.91 124.09 # SOURCE3 2 8.7534
angle_coeff @angle:o-ne-pe harmonic 78.32 132.32 # SOURCE3 11 23.9559
angle_coeff @angle:o-ne-px harmonic 86.11 110.62 # SOURCE3 1 0.0000
angle_coeff @angle:o-ne-py harmonic 90.01 110.79 # SOURCE3 4 1.6818
angle_coeff @angle:o-ne-s harmonic 71.99 117.19 # SOURCE3 2 0.0225
angle_coeff @angle:o-ne-sx harmonic 63.79 108.92 # SOURCE3 1 0.0000
angle_coeff @angle:o-ne-sy harmonic 66.05 111.34 # SOURCE3 1 0.0000
angle_coeff @angle:p2-ne-pe harmonic 104.56 116.81 # SOURCE3 1 0.0000
angle_coeff @angle:p2-ne-px harmonic 100.10 128.35 # SOURCE3 1 0.0000
angle_coeff @angle:p2-ne-py harmonic 105.15 123.47 # SOURCE3 1 0.0000
angle_coeff @angle:p2-ne-sx harmonic 80.48 112.12 # SOURCE3 1 0.0000
angle_coeff @angle:p2-ne-sy harmonic 81.80 115.73 # SOURCE3 1 0.0000
angle_coeff @angle:pe-ne-s harmonic 83.52 115.73 # SOURCE3 1 0.0000
angle_coeff @angle:px-ne-s harmonic 78.54 131.84 # SOURCE3 1 0.0000
angle_coeff @angle:py-ne-s harmonic 86.30 116.18 # SOURCE3 4 3.7135
angle_coeff @angle:s-ne-s harmonic 68.65 120.87 # SOURCE3 1 0.0000
angle_coeff @angle:s-ne-sx harmonic 63.66 112.96 # SOURCE3 1 0.0000
angle_coeff @angle:s-ne-sy harmonic 63.94 119.63 # SOURCE3 1 0.0000
angle_coeff @angle:c1-nf-ca harmonic 60.41 150.84 # CORR 9
angle_coeff @angle:c1-nf-ch harmonic 66.00 140.00 # SOURCE2 1 same_as_c1-ne-cg
angle_coeff @angle:c2-nf-ca harmonic 66.09 120.84 # CORR 55
angle_coeff @angle:c2-nf-cf harmonic 67.33 118.17 # SOURCE3 3 same_as_c2-ne-ce
angle_coeff @angle:c2-nf-n2 harmonic 74.56 113.31 # SOURCE3 1 same_as_c2-ne-n2
angle_coeff @angle:c2-nf-nf harmonic 69.17 110.86 # SOURCE3 7 same_as_c2-ne-ne
angle_coeff @angle:c2-nf-p2 harmonic 80.83 134.03 # SOURCE3 1 same_as_c2-ne-p2
angle_coeff @angle:c2-nf-pf harmonic 79.24 120.52 # SOURCE3 8 same_as_c2-ne-pe
angle_coeff @angle:c2-nf-px harmonic 80.57 117.75 # SOURCE3 5 same_as_c2-ne-px
angle_coeff @angle:c2-nf-py harmonic 84.33 117.04 # SOURCE3 3 same_as_c2-ne-py
angle_coeff @angle:c2-nf-sx harmonic 60.95 111.98 # SOURCE3 3 same_as_c2-ne-sx
angle_coeff @angle:c2-nf-sy harmonic 61.78 118.92 # CORR 9
angle_coeff @angle:ca-nf-ce harmonic 65.56 121.98 # CORR 15
angle_coeff @angle:ca-nf-n2 harmonic 69.73 114.06 # CORR 11
angle_coeff @angle:ca-nf-ne harmonic 69.69 115.12 # CORR 44
angle_coeff @angle:ca-nf-o harmonic 71.10 113.96 # SOURCE3 3 same_as_ca-ne-o
angle_coeff @angle:ca-nf-p2 harmonic 83.08 118.09 # SOURCE3 1 same_as_ca-ne-p2
angle_coeff @angle:ca-nf-s harmonic 65.75 120.11 # SOURCE3 1 same_as_ca-ne-s
angle_coeff @angle:c-nf-c2 harmonic 67.85 118.53 # CORR 6
angle_coeff @angle:cf-nf-n2 harmonic 71.16 111.19 # SOURCE3 1 same_as_ce-ne-n2
angle_coeff @angle:cf-nf-o harmonic 72.26 112.16 # SOURCE3 1 same_as_ce-ne-o
angle_coeff @angle:cf-nf-p2 harmonic 83.85 117.02 # SOURCE3 1 same_as_ce-ne-p2
angle_coeff @angle:cf-nf-s harmonic 67.15 116.28 # SOURCE3 1 same_as_ce-ne-s
angle_coeff @angle:ch-nf-n1 harmonic 71.71 120.20 # SOURCE2 1 same_as_cg-ne-n1
angle_coeff @angle:ch-nf-n2 harmonic 73.16 113.39 # SOURCE3 1 same_as_cg-ne-n2
angle_coeff @angle:ch-nf-o harmonic 74.43 114.70 # SOURCE2 1 same_as_cg-ne-o
angle_coeff @angle:ch-nf-p2 harmonic 84.75 119.57 # SOURCE3 1 same_as_cg-ne-p2
angle_coeff @angle:ch-nf-s harmonic 68.28 117.70 # SOURCE3 1 same_as_cg-ne-s
angle_coeff @angle:f-n-f harmonic 67.90 102.98 # SOURCE3 1 0.0000
angle_coeff @angle:n2-nf-n2 harmonic 78.59 107.22 # SOURCE3 1 same_as_n2-ne-n2
angle_coeff @angle:n2-nf-nf harmonic 70.94 110.72 # SOURCE3 9 same_as_n2-ne-ne
angle_coeff @angle:n2-nf-o harmonic 78.09 114.10 # SOURCE3 1 same_as_n2-ne-o
angle_coeff @angle:n2-nf-p2 harmonic 91.59 109.66 # SOURCE3 1 same_as_n2-ne-p2
angle_coeff @angle:n2-nf-pf harmonic 84.18 112.15 # SOURCE3 7 same_as_n2-ne-pe
angle_coeff @angle:n2-nf-px harmonic 83.20 115.97 # SOURCE3 3 same_as_n2-ne-px
angle_coeff @angle:n2-nf-py harmonic 87.34 114.60 # SOURCE3 3 same_as_n2-ne-py
angle_coeff @angle:n2-nf-s harmonic 71.27 115.90 # SOURCE3 1 same_as_n2-ne-s
angle_coeff @angle:n2-nf-sx harmonic 63.80 107.29 # SOURCE3 1 same_as_n2-ne-sx
angle_coeff @angle:n2-nf-sy harmonic 65.46 111.21 # SOURCE3 1 same_as_n2-ne-sy
angle_coeff @angle:nf-nf-o harmonic 72.28 110.45 # SOURCE3 10 same_as_ne-ne-o
angle_coeff @angle:nf-nf-p2 harmonic 85.32 114.39 # SOURCE3 6 same_as_ne-ne-p2
angle_coeff @angle:nf-nf-s harmonic 67.59 115.95 # SOURCE3 6 same_as_ne-ne-s
angle_coeff @angle:o-nf-o harmonic 76.91 124.09 # SOURCE3 2 same_as_o-ne-o
angle_coeff @angle:o-nf-pf harmonic 78.32 132.32 # SOURCE3 11 same_as_o-ne-pe
angle_coeff @angle:o-nf-px harmonic 86.11 110.62 # SOURCE3 1 same_as_o-ne-px
angle_coeff @angle:o-nf-py harmonic 90.01 110.79 # SOURCE3 4 same_as_o-ne-py
angle_coeff @angle:o-nf-s harmonic 71.99 117.19 # SOURCE3 2 same_as_o-ne-s
angle_coeff @angle:o-nf-sx harmonic 63.79 108.92 # SOURCE3 1 same_as_o-ne-sx
angle_coeff @angle:o-nf-sy harmonic 66.05 111.34 # SOURCE3 1 same_as_o-ne-sy
angle_coeff @angle:p2-nf-pf harmonic 104.56 116.81 # SOURCE3 1 same_as_p2-ne-pe
angle_coeff @angle:p2-nf-px harmonic 100.10 128.35 # SOURCE3 1 same_as_p2-ne-px
angle_coeff @angle:p2-nf-py harmonic 105.15 123.47 # SOURCE3 1 same_as_p2-ne-py
angle_coeff @angle:p2-nf-sx harmonic 80.48 112.12 # SOURCE3 1 same_as_p2-ne-sx
angle_coeff @angle:p2-nf-sy harmonic 81.80 115.73 # SOURCE3 1 same_as_p2-ne-sy
angle_coeff @angle:pf-nf-s harmonic 83.52 115.73 # SOURCE3 1 same_as_pe-ne-s
angle_coeff @angle:px-nf-s harmonic 78.54 131.84 # SOURCE3 1 same_as_px-ne-s
angle_coeff @angle:py-nf-s harmonic 86.30 116.18 # SOURCE3 4 same_as_py-ne-s
angle_coeff @angle:s-nf-s harmonic 68.65 120.87 # SOURCE3 1 same_as_s-ne-s
angle_coeff @angle:s-nf-sx harmonic 63.66 112.96 # SOURCE3 1 same_as_s-ne-sx
angle_coeff @angle:s-nf-sy harmonic 63.94 119.63 # SOURCE3 1 same_as_s-ne-sy
angle_coeff @angle:br-nh-br harmonic 67.09 106.27 # SOURCE3 1
angle_coeff @angle:br-nh-ca harmonic 62.04 111.88 # SOURCE3 1 0.0000
angle_coeff @angle:br-nh-hn harmonic 42.11 101.56 # SOURCE3 1 0.0000
angle_coeff @angle:c1-nh-c1 harmonic 68.33 116.98 # SOURCE3 1 0.0000
angle_coeff @angle:c1-nh-c2 harmonic 66.36 122.71 # SOURCE4 5 1.0077
angle_coeff @angle:c1-nh-ca harmonic 66.22 122.36 # SOURCE3 3 1.2016
angle_coeff @angle:c1-nh-hn harmonic 49.55 117.30 # SOURCE4 8 0.7120
angle_coeff @angle:c2-nh-c2 harmonic 65.54 124.50 # SOURCE4 43 1.7515
angle_coeff @angle:c2-nh-c3 harmonic 63.17 123.71 # SOURCE3 8 3.5348
angle_coeff @angle:c2-nh-ca harmonic 64.59 127.34 # SOURCE4 97 2.4321
angle_coeff @angle:c2-nh-cc harmonic 64.92 126.03 # CORR 11
angle_coeff @angle:c2-nh-cd harmonic 64.92 126.03 # CORR 11
angle_coeff @angle:c2-nh-cx harmonic 63.08 124.44 # SOURCE4 10 1.6817
angle_coeff @angle:c2-nh-hn harmonic 49.62 114.89 # SOURCE4 1000 1.4571
angle_coeff @angle:c2-nh-n2 harmonic 68.36 120.00 # SOURCE4 33 1.1823
angle_coeff @angle:c2-nh-n3 harmonic 67.57 116.98 # SOURCE4 14 1.4183
angle_coeff @angle:c2-nh-no harmonic 66.09 125.63 # SOURCE4 7 0.7554
angle_coeff @angle:c2-nh-oh harmonic 69.45 112.51 # SOURCE4 12 1.1687
angle_coeff @angle:c2-nh-os harmonic 69.27 112.93 # SOURCE4 6 0.3945
angle_coeff @angle:c2-nh-sy harmonic 61.76 121.13 # SOURCE4 10 0.5133
angle_coeff @angle:c3-nh-c3 harmonic 63.53 114.44 # SOURCE4 523 2.1428
angle_coeff @angle:c3-nh-ca harmonic 64.56 117.77 # SOURCE3 8 1.7521
angle_coeff @angle:c3-nh-cc harmonic 64.17 119.23 # CORR 163
angle_coeff @angle:c3-nh-cd harmonic 64.17 119.23 # CORR 163
angle_coeff @angle:c3-nh-cf harmonic 63.47 119.92 # SOURCE4 20 1.8571
angle_coeff @angle:c3-nh-cz harmonic 63.01 125.51 # SOURCE4 12 0.5177
angle_coeff @angle:c3-nh-hn harmonic 46.46 114.95 # SOURCE3 19 2.4787
angle_coeff @angle:c3-nh-n2 harmonic 67.89 112.35 # SOURCE3 9 4.0058
angle_coeff @angle:c3-nh-n harmonic 67.10 111.71 # SOURCE4 6 2.4251
angle_coeff @angle:c3-nh-na harmonic 66.92 112.43 # SOURCE4 8 1.4219
angle_coeff @angle:c3-nh-p2 harmonic 77.12 123.35 # SOURCE3 1 0.0000
angle_coeff @angle:c3-nh-sy harmonic 61.91 116.12 # SOURCE4 13 1.2830
angle_coeff @angle:ca-nh-ca harmonic 64.34 127.46 # SOURCE3 2 0.0002
angle_coeff @angle:ca-nh-cc harmonic 63.77 129.77 # CORR 38
angle_coeff @angle:ca-nh-cd harmonic 63.77 129.77 # CORR 38
angle_coeff @angle:ca-nh-cl harmonic 57.67 113.15 # SOURCE3 1 0.0000
angle_coeff @angle:ca-nh-cx harmonic 63.11 123.63 # SOURCE4 36 0.5899
angle_coeff @angle:ca-nh-f harmonic 67.90 106.09 # SOURCE3 3 1.0660
angle_coeff @angle:ca-nh-hn harmonic 49.08 116.13 # SOURCE4 1780 1.2853
angle_coeff @angle:ca-nh-i harmonic 55.55 117.83 # SOURCE3 1 0.0000
angle_coeff @angle:ca-nh-n1 harmonic 69.37 117.13 # HF/6-31G* 1
angle_coeff @angle:ca-nh-n2 harmonic 67.82 121.11 # SOURCE4 19 0.9700
angle_coeff @angle:ca-nh-n3 harmonic 68.18 114.21 # SOURCE3 6 2.2412
angle_coeff @angle:ca-nh-n4 harmonic 68.56 108.94 # SOURCE3 5 0.6562
angle_coeff @angle:ca-nh-n harmonic 68.07 116.15 # SOURCE4 12 0.8135
angle_coeff @angle:ca-nh-na harmonic 68.58 114.54 # SOURCE3 8 0.7807
angle_coeff @angle:ca-nh-nh harmonic 68.49 114.87 # SOURCE3 6 2.1432
angle_coeff @angle:ca-nh-no harmonic 69.19 113.92 # SOURCE3 4 2.9561
angle_coeff @angle:ca-nh-o harmonic 69.64 121.92 # SOURCE3 2 3.9630
angle_coeff @angle:ca-nh-oh harmonic 69.15 112.80 # SOURCE3 1 0.0000
angle_coeff @angle:ca-nh-os harmonic 69.93 110.17 # SOURCE3 3 0.6448
angle_coeff @angle:ca-nh-p2 harmonic 77.99 125.27 # SOURCE3 8 5.1798
angle_coeff @angle:ca-nh-p3 harmonic 76.07 125.70 # SOURCE3 3 5.7796
angle_coeff @angle:ca-nh-p4 harmonic 77.43 124.01 # SOURCE3 3 2.5810
angle_coeff @angle:ca-nh-p5 harmonic 78.16 125.61 # SOURCE3 3 0.5287
angle_coeff @angle:ca-nh-s4 harmonic 62.13 115.62 # SOURCE3 3 0.3434
angle_coeff @angle:ca-nh-s6 harmonic 61.56 123.53 # SOURCE4 33 2.0385
angle_coeff @angle:ca-nh-s harmonic 59.38 122.54 # SOURCE3 3 2.7001
angle_coeff @angle:ca-nh-sh harmonic 61.78 121.41 # SOURCE3 1 0.0000
angle_coeff @angle:ca-nh-ss harmonic 61.75 121.50 # SOURCE3 3 2.6255
angle_coeff @angle:ca-nh-sy harmonic 60.64 125.26 # SOURCE4 41 1.7517
angle_coeff @angle:cc-nh-cx harmonic 63.09 123.72 # CORR 58
angle_coeff @angle:cc-nh-hn harmonic 48.86 117.16 # SOURCE3 11 2.6137
angle_coeff @angle:cc-nh-n2 harmonic 68.23 119.66 # SOURCE4 5 1.3903
angle_coeff @angle:cc-nh-sy harmonic 61.22 122.91 # SOURCE4 23 1.2029
angle_coeff @angle:cd-nh-cx harmonic 63.09 123.72 # CORR 58
angle_coeff @angle:cd-nh-hn harmonic 48.86 117.16 # SOURCE3 11 2.6137
angle_coeff @angle:ce-nh-hn harmonic 48.38 115.62 # CORR 203
angle_coeff @angle:ce-nh-o harmonic 66.85 129.43 # CORR 2
angle_coeff @angle:ce-nh-sy harmonic 63.58 112.97 # SOURCE4 7 1.0636
angle_coeff @angle:cf-nh-hn harmonic 48.38 115.62 # CORR 203
angle_coeff @angle:cf-nh-o harmonic 66.85 129.43 # CORR 2
angle_coeff @angle:cl-nh-cl harmonic 54.43 106.60 # SOURCE3 1
angle_coeff @angle:cl-nh-hn harmonic 40.07 104.14 # SOURCE3 1 0.0000
angle_coeff @angle:cx-nh-cx harmonic 86.53 62.02 # SOURCE4 45 0.6189
angle_coeff @angle:cx-nh-hn harmonic 45.79 118.89 # SOURCE4 8 0.1391
angle_coeff @angle:cz-nh-hn harmonic 48.79 121.24 # SOURCE4 40 0.5682
angle_coeff @angle:f-nh-f harmonic 66.93 101.70 # SOURCE3 1 0.0000
angle_coeff @angle:f-nh-hn harmonic 49.80 101.23 # SOURCE3 1 0.0000
angle_coeff @angle:hn-nh-hn harmonic 40.05 114.85 # SOURCE4 1108 2.0811
angle_coeff @angle:hn-nh-i harmonic 36.55 107.57 # SOURCE3 1 0.0000
angle_coeff @angle:hn-nh-n1 harmonic 52.31 110.57 # HF/6-31G* 1
angle_coeff @angle:hn-nh-n2 harmonic 50.08 118.22 # SOURCE4 75 2.3319
angle_coeff @angle:hn-nh-n3 harmonic 50.05 109.12 # SOURCE3 5 2.3680
angle_coeff @angle:hn-nh-n4 harmonic 49.69 104.40 # SOURCE3 3 0.5056
angle_coeff @angle:hn-nh-n harmonic 50.89 107.96 # SOURCE4 16 1.2025
angle_coeff @angle:hn-nh-na harmonic 50.95 107.91 # SOURCE3 26 1.5528
angle_coeff @angle:hn-nh-nh harmonic 50.32 110.64 # SOURCE4 8 1.3390
angle_coeff @angle:hn-nh-no harmonic 50.99 109.93 # SOURCE4 7 0.2027
angle_coeff @angle:hn-nh-o harmonic 52.99 116.45 # SOURCE3 2 0.6063
angle_coeff @angle:hn-nh-oh harmonic 51.13 106.55 # SOURCE4 8 0.4590
angle_coeff @angle:hn-nh-os harmonic 51.51 104.76 # SOURCE3 3 0.4883
angle_coeff @angle:hn-nh-p2 harmonic 54.38 118.18 # SOURCE3 21 3.6927
angle_coeff @angle:hn-nh-p3 harmonic 53.06 116.19 # SOURCE3 3 3.0539
angle_coeff @angle:hn-nh-p4 harmonic 54.74 112.60 # SOURCE3 3 0.8237
angle_coeff @angle:hn-nh-p5 harmonic 55.35 115.26 # SOURCE3 3 0.9168
angle_coeff @angle:hn-nh-s4 harmonic 43.06 107.48 # SOURCE3 3 1.3960
angle_coeff @angle:hn-nh-s harmonic 40.81 114.37 # SOURCE3 1 0.0000
angle_coeff @angle:hn-nh-s6 harmonic 44.04 109.98 # SOURCE4 29 0.7478
angle_coeff @angle:hn-nh-sh harmonic 43.27 112.25 # SOURCE3 1 0.0000
angle_coeff @angle:hn-nh-ss harmonic 42.95 113.89 # SOURCE3 3 1.4030
angle_coeff @angle:hn-nh-sy harmonic 43.28 111.23 # SOURCE4 62 1.1413
angle_coeff @angle:i-nh-i harmonic 59.80 115.82 # SOURCE3 1
angle_coeff @angle:n1-nh-n1 harmonic 75.13 106.71 # HF/6-31G* 1
angle_coeff @angle:n2-nh-n2 harmonic 70.76 117.50 # SOURCE3 2 1.1907
angle_coeff @angle:n2-nh-n3 harmonic 69.63 115.54 # SOURCE3 1 0.0000
angle_coeff @angle:n2-nh-o harmonic 70.40 126.06 # SOURCE3 1 0.0000
angle_coeff @angle:n3-nh-n3 harmonic 69.52 110.98 # SOURCE3 1 0.0000
angle_coeff @angle:n4-nh-n4 harmonic 68.15 108.36 # SOURCE3 1 0.0000
angle_coeff @angle:na-nh-na harmonic 70.14 112.01 # SOURCE3 1 0.0000
angle_coeff @angle:hn-n-hn harmonic 39.73 117.85 # SOURCE3 15 2.3694
angle_coeff @angle:nh-nh-nh harmonic 70.07 112.23 # SOURCE3 1 0.0000
angle_coeff @angle:hn-n-i harmonic 36.08 117.24 # SOURCE3 2 0.4435
angle_coeff @angle:hn-n-n2 harmonic 49.62 118.33 # SOURCE3 5 2.2377
angle_coeff @angle:hn-n-n3 harmonic 48.69 117.22 # SOURCE4 37 1.3737
angle_coeff @angle:hn-n-n4 harmonic 48.90 112.68 # SOURCE3 3 1.9746
angle_coeff @angle:hn-n-n harmonic 50.14 113.12 # SOURCE3 7 3.2954
angle_coeff @angle:hn-n-na harmonic 50.40 113.55 # SOURCE3 8 1.9324
angle_coeff @angle:hn-n-nc harmonic 50.74 115.24 # SOURCE4 10 0.4966
angle_coeff @angle:hn-n-nh harmonic 49.74 113.13 # SOURCE4 12 1.2125
angle_coeff @angle:hn-n-no harmonic 48.71 110.11 # SOURCE3 1 0.0000
angle_coeff @angle:hn-n-o harmonic 53.83 116.32 # SOURCE3 2 0.0175
angle_coeff @angle:n-nh-o harmonic 72.07 115.63 # SOURCE3 1
angle_coeff @angle:hn-n-oh harmonic 50.33 110.71 # SOURCE4 46 1.1278
angle_coeff @angle:no-nh-no harmonic 72.07 108.55 # SOURCE3 1 0.0000
angle_coeff @angle:hn-n-os harmonic 50.52 109.82 # SOURCE4 12 0.6996
angle_coeff @angle:hn-n-p2 harmonic 52.51 118.05 # SOURCE3 7 3.0564
angle_coeff @angle:hn-n-p3 harmonic 50.93 119.63 # SOURCE3 2 0.0000
angle_coeff @angle:hn-n-p4 harmonic 53.00 115.71 # SOURCE3 1 0.0000
angle_coeff @angle:hn-n-p5 harmonic 54.50 113.20 # SOURCE4 6 1.0341
angle_coeff @angle:hn-n-s4 harmonic 41.18 112.46 # SOURCE3 1 0.0000
angle_coeff @angle:hn-n-s harmonic 41.14 114.92 # SOURCE3 2 0.0260
angle_coeff @angle:hn-n-s6 harmonic 43.06 112.18 # SOURCE4 6 0.6101
angle_coeff @angle:hn-n-sh harmonic 42.19 114.91 # SOURCE3 1 0.0000
angle_coeff @angle:hn-n-ss harmonic 42.36 115.60 # SOURCE3 3 0.6414
angle_coeff @angle:hn-n-sy harmonic 43.02 112.34 # SOURCE4 38 0.6039
angle_coeff @angle:oh-nh-oh harmonic 72.15 106.27 # SOURCE3 1
angle_coeff @angle:o-nh-o harmonic 72.24 128.06 # SOURCE3 1
angle_coeff @angle:os-nh-os harmonic 72.41 105.27 # SOURCE3 1
angle_coeff @angle:p2-nh-p2 harmonic 98.07 127.33 # SOURCE3 2 2.7857
angle_coeff @angle:p3-nh-p3 harmonic 96.03 125.08 # SOURCE3 1
angle_coeff @angle:p5-nh-p5 harmonic 104.72 112.76 # SOURCE3 1
angle_coeff @angle:s4-nh-s4 harmonic 62.56 112.39 # SOURCE3 1
angle_coeff @angle:s6-nh-s6 harmonic 62.35 120.27 # SOURCE3 1
angle_coeff @angle:sh-nh-sh harmonic 62.26 119.00 # SOURCE3 1
angle_coeff @angle:s-nh-s harmonic 59.67 118.73 # SOURCE3 1 0.0000
angle_coeff @angle:ss-nh-ss harmonic 62.19 119.25 # SOURCE3 1
angle_coeff @angle:i-n-i harmonic 60.66 118.20 # SOURCE3 1 0.0000
angle_coeff @angle:n2-n-n2 harmonic 70.16 116.89 # SOURCE3 1 0.0000
angle_coeff @angle:n3-n-n3 harmonic 68.02 117.94 # SOURCE3 1 0.0000
angle_coeff @angle:n4-n-n4 harmonic 68.42 112.69 # SOURCE3 1 0.0000
angle_coeff @angle:na-n-na harmonic 69.61 117.38 # SOURCE3 1 0.0000
angle_coeff @angle:nc-n-nc harmonic 71.04 116.41 # CORR 2
angle_coeff @angle:nc-n-p2 harmonic 80.69 117.21 # CORR 2
angle_coeff @angle:nc-n-pc harmonic 80.42 117.21 # CORR 2
angle_coeff @angle:nd-n-nd harmonic 71.04 116.41 # CORR 2
angle_coeff @angle:nd-n-p2 harmonic 80.69 117.21 # CORR 2
angle_coeff @angle:nd-n-pd harmonic 80.42 117.21 # CORR 2
angle_coeff @angle:nh-n-nh harmonic 69.10 115.18 # SOURCE3 1 0.0000
angle_coeff @angle:n-n-n harmonic 69.89 114.62 # SOURCE3 1 0.0000
angle_coeff @angle:no-n-no harmonic 68.52 108.66 # SOURCE3 1 0.0000
angle_coeff @angle:br-no-o harmonic 58.48 113.19 # SOURCE3 2 0.0000
angle_coeff @angle:c1-no-o harmonic 71.34 116.63 # SOURCE3 6 0.0000
angle_coeff @angle:c2-no-o harmonic 69.87 116.87 # SOURCE3 8 0.4200
angle_coeff @angle:c3-no-o harmonic 66.96 116.56 # SOURCE3 6 0.3959
angle_coeff @angle:ca-no-o harmonic 68.74 118.10 # SOURCE3 10 1.1524
angle_coeff @angle:cc-no-o harmonic 70.34 117.52 # SOURCE4 198 0.6255
angle_coeff @angle:cl-no-o harmonic 57.30 115.08 # SOURCE3 2 0.0000
angle_coeff @angle:c-no-o harmonic 67.10 115.26 # SOURCE3 1
angle_coeff @angle:hn-no-o harmonic 55.31 115.49 # SOURCE3 2 0.0000
angle_coeff @angle:oh-n-oh harmonic 72.05 107.26 # SOURCE3 1 0.0000
angle_coeff @angle:i-no-o harmonic 54.60 116.31 # SOURCE3 2 0.0000
angle_coeff @angle:n1-no-o harmonic 73.78 115.00 # HF/6-31G* 1
angle_coeff @angle:n2-no-o harmonic 65.79 115.10 # SOURCE2 2 2.4000
angle_coeff @angle:n3-no-o harmonic 72.01 115.56 # SOURCE3 6 0.6427
angle_coeff @angle:n4-no-o harmonic 72.87 109.00 # SOURCE3 2 0.0000
angle_coeff @angle:na-no-o harmonic 72.24 115.49 # SOURCE3 18 0.5640
angle_coeff @angle:nh-no-o harmonic 74.08 115.71 # SOURCE3 8 0.4811
angle_coeff @angle:n-no-o harmonic 71.67 115.41 # SOURCE3 8 0.3748
angle_coeff @angle:no-no-o harmonic 59.92 112.38 # SOURCE3 4 0.0000
angle_coeff @angle:o-n-o harmonic 73.39 128.61 # SOURCE3 3 1.0626
angle_coeff @angle:o-no-o harmonic 77.15 125.13 # SOURCE4 461 0.7605
angle_coeff @angle:o-no-oh harmonic 74.09 114.70 # SOURCE3 2 0.0000
angle_coeff @angle:o-no-os harmonic 73.71 114.01 # SOURCE3 8 0.9778
angle_coeff @angle:o-no-p2 harmonic 82.07 117.38 # SOURCE3 20 0.8083
angle_coeff @angle:o-no-p3 harmonic 77.73 116.78 # SOURCE3 6 0.4929
angle_coeff @angle:o-no-p4 harmonic 76.69 116.64 # SOURCE3 6 0.0089
angle_coeff @angle:o-no-p5 harmonic 78.18 116.69 # SOURCE3 8 0.4507
angle_coeff @angle:o-no-s4 harmonic 57.15 114.49 # SOURCE3 6 0.5674
angle_coeff @angle:o-no-s6 harmonic 57.79 114.39 # SOURCE3 6 0.8311
angle_coeff @angle:o-no-s harmonic 64.05 119.81 # SOURCE3 4 0.0042
angle_coeff @angle:o-no-sh harmonic 62.94 116.10 # SOURCE3 2 0.0000
angle_coeff @angle:o-no-ss harmonic 62.27 115.58 # SOURCE3 6 0.5860
angle_coeff @angle:os-n-os harmonic 72.28 106.53 # SOURCE3 1 0.0000
angle_coeff @angle:p2-n-p2 harmonic 98.03 119.62 # SOURCE3 1
angle_coeff @angle:p3-n-p3 harmonic 100.67 108.73 # SOURCE3 3 0.2591
angle_coeff @angle:p4-n-p4 harmonic 102.85 108.55 # SOURCE3 1
angle_coeff @angle:p5-n-p5 harmonic 108.79 99.99 # SOURCE3 1
angle_coeff @angle:pc-n-pc harmonic 97.64 119.62 # SOURCE3 1 0.0000
angle_coeff @angle:pd-n-pd harmonic 97.64 119.62 # SOURCE3 1 same_as_pc-n-pc
angle_coeff @angle:s4-n-s4 harmonic 61.03 113.75 # SOURCE3 1 0.0000
angle_coeff @angle:s6-n-s6 harmonic 61.82 119.68 # SOURCE3 1 0.0000
angle_coeff @angle:sh-n-sh harmonic 61.53 119.03 # SOURCE3 1 0.0000
angle_coeff @angle:s-n-s harmonic 58.48 126.00 # SOURCE3 1
angle_coeff @angle:ss-n-ss harmonic 62.06 118.49 # SOURCE3 1 0.0000
angle_coeff @angle:br-oh-ho harmonic 42.15 101.60 # SOURCE3 1 0.0000
angle_coeff @angle:c1-oh-ho harmonic 50.20 108.76 # SOURCE3 1 0.0000
angle_coeff @angle:c2-oh-ho harmonic 49.91 108.98 # SOURCE3 6 2.2379
angle_coeff @angle:c3-oh-ho harmonic 47.09 108.16 # SOURCE3 42 1.3034
angle_coeff @angle:ca-oh-ho harmonic 48.85 109.47 # SOURCE3 7 1.0405
angle_coeff @angle:cc-oh-ho harmonic 49.96 107.06 # CORR 117
angle_coeff @angle:cd-oh-ho harmonic 49.96 107.06 # CORR 117
angle_coeff @angle:ce-oh-ho harmonic 49.85 106.95 # CORR 34
angle_coeff @angle:cf-oh-ho harmonic 49.85 106.95 # CORR 34
angle_coeff @angle:c-oh-ho harmonic 51.19 107.37 # SOURCE3 34 1.6830
angle_coeff @angle:cl-oh-ho harmonic 40.51 102.40 # SOURCE2 1 0.0000
angle_coeff @angle:cx-oh-ho harmonic 49.64 106.17 # SOURCE3 3 0.0644
angle_coeff @angle:cy-oh-ho harmonic 47.62 107.32 # SOURCE4 5 0.4955
angle_coeff @angle:f-oh-ho harmonic 48.47 96.80 # SOURCE2 1 0.0000
angle_coeff @angle:ho-oh-ho harmonic 41.93 104.80 # SOURCE2 1 0.0000
angle_coeff @angle:ho-oh-i harmonic 35.67 107.98 # SOURCE3 2 0.0000
angle_coeff @angle:ho-oh-n1 harmonic 52.55 107.81 # HF/6-31G* 1
angle_coeff @angle:ho-oh-n2 harmonic 50.57 102.74 # SOURCE3 9 2.1286
angle_coeff @angle:ho-oh-n3 harmonic 50.61 102.33 # SOURCE3 5 1.2591
angle_coeff @angle:ho-oh-n4 harmonic 49.44 106.63 # SOURCE3 3 0.2770
angle_coeff @angle:ho-oh-n harmonic 50.46 101.03 # SOURCE3 6 1.4086
angle_coeff @angle:ho-oh-na harmonic 50.24 103.71 # SOURCE3 9 1.2590
angle_coeff @angle:ho-oh-nh harmonic 49.97 102.42 # SOURCE4 15 0.6819
angle_coeff @angle:ho-oh-no harmonic 50.31 102.17 # SOURCE3 1 0.0000
angle_coeff @angle:ho-oh-o harmonic 47.26 100.87 # SOURCE3 1
angle_coeff @angle:ho-oh-oh harmonic 49.34 98.72 # SOURCE3 2 0.0000
angle_coeff @angle:ho-oh-os harmonic 49.58 99.69 # SOURCE4 18 0.3384
angle_coeff @angle:ho-oh-p2 harmonic 55.87 109.45 # SOURCE3 8 3.3491
angle_coeff @angle:ho-oh-p3 harmonic 53.84 110.64 # SOURCE3 3 0.5191
angle_coeff @angle:ho-oh-p4 harmonic 55.27 110.19 # SOURCE3 4 0.2372
angle_coeff @angle:ho-oh-p5 harmonic 55.88 110.14 # SOURCE3 92 3.8033
angle_coeff @angle:ho-oh-py harmonic 56.18 110.73 # SOURCE3 79 1.7835
angle_coeff @angle:ho-oh-s4 harmonic 42.77 106.76 # SOURCE4 9 0.4035
angle_coeff @angle:ho-oh-s harmonic 40.86 100.15 # SOURCE3 2 0.0000
angle_coeff @angle:ho-oh-s6 harmonic 45.46 109.20 # SOURCE3 13 0.1856
angle_coeff @angle:ho-oh-sh harmonic 42.97 106.24 # SOURCE3 2 0.0661
angle_coeff @angle:ho-oh-ss harmonic 43.10 107.06 # SOURCE3 4 0.9967
angle_coeff @angle:ho-oh-sy harmonic 44.20 106.41 # SOURCE4 33 0.3729
angle_coeff @angle:br-os-br harmonic 65.08 110.63 # SOURCE3 1 0.0000
angle_coeff @angle:c1-os-c1 harmonic 66.99 115.02 # SOURCE3 1 0.0000
angle_coeff @angle:c1-os-c3 harmonic 64.47 113.39 # SOURCE3 1 0.0000
angle_coeff @angle:c2-os-c2 harmonic 65.95 113.14 # SOURCE3 6 2.1932
angle_coeff @angle:c2-os-c3 harmonic 64.21 112.09 # SOURCE3 7 4.1809
angle_coeff @angle:c2-os-ca harmonic 65.43 113.59 # SOURCE3 1 0.0000
angle_coeff @angle:c2-os-n2 harmonic 64.91 118.13 # SOURCE3 1 0.0000
angle_coeff @angle:c2-os-na harmonic 68.21 103.85 # SOURCE3 4 0.6297
angle_coeff @angle:c2-os-os harmonic 68.35 102.77 # SOURCE3 1 0.0000
angle_coeff @angle:c2-os-p5 harmonic 77.31 126.37 # SOURCE4 7 1.7939
angle_coeff @angle:c2-os-ss harmonic 63.08 108.13 # SOURCE3 1 0.0000
angle_coeff @angle:c3-os-c3 harmonic 62.39 112.45 # SOURCE4 1293 1.6468
angle_coeff @angle:c3-os-ca harmonic 62.27 117.97 # SOURCE4 2495 1.4576
angle_coeff @angle:c3-os-cc harmonic 62.50 117.33 # CORR 248
angle_coeff @angle:c3-os-cd harmonic 62.50 117.33 # CORR 248
angle_coeff @angle:c3-os-ce harmonic 62.79 116.05 # CORR 37
angle_coeff @angle:c3-os-cf harmonic 62.79 116.05 # CORR 37
angle_coeff @angle:c3-os-cl harmonic 56.20 110.50 # SOURCE2 1 0.0000
angle_coeff @angle:c3-os-cy harmonic 61.67 115.65 # SOURCE4 5 0.2390
angle_coeff @angle:c3-os-i harmonic 54.88 113.70 # SOURCE3 1 0.0000
angle_coeff @angle:c3-os-n1 harmonic 66.31 113.50 # HF/6-31G* 1
angle_coeff @angle:c3-os-n2 harmonic 65.92 108.12 # SOURCE3 7 0.3048
angle_coeff @angle:c3-os-n3 harmonic 64.52 110.28 # SOURCE4 14 1.9026
angle_coeff @angle:c3-os-n4 harmonic 64.88 110.50 # SOURCE3 3 0.5426
angle_coeff @angle:c3-os-n harmonic 65.40 109.52 # SOURCE4 14 0.6827
angle_coeff @angle:c3-os-na harmonic 64.54 109.91 # SOURCE3 9 1.8268
angle_coeff @angle:c3-os-nc harmonic 64.80 112.73 # SOURCE3 2 1.0358
angle_coeff @angle:c3-os-nd harmonic 64.80 112.73 # SOURCE3 2 same_as_c3-os-nc
angle_coeff @angle:c3-os-nh harmonic 65.22 109.69 # SOURCE4 8 0.1662
angle_coeff @angle:c3-os-no harmonic 63.89 113.80 # SOURCE4 42 0.2726
angle_coeff @angle:c3-os-o harmonic 65.62 103.00 # SOURCE3 1 0.0000
angle_coeff @angle:c3-os-oh harmonic 65.24 107.97 # SOURCE4 11 0.4333
angle_coeff @angle:c3-os-os harmonic 65.89 105.01 # SOURCE3 7 0.6328
angle_coeff @angle:c3-os-p2 harmonic 80.24 115.47 # SOURCE3 8 2.6374
angle_coeff @angle:c3-os-p3 harmonic 76.51 115.97 # SOURCE3 3 0.3597
angle_coeff @angle:c3-os-p4 harmonic 77.59 117.48 # SOURCE3 4 0.3850
angle_coeff @angle:c3-os-p5 harmonic 78.48 118.00 # SOURCE3 31 1.2882
angle_coeff @angle:c3-os-py harmonic 78.07 117.80 # SOURCE3 16 0.9654
angle_coeff @angle:c3-os-s4 harmonic 61.32 111.50 # SOURCE3 6 1.4240
angle_coeff @angle:c3-os-s6 harmonic 63.21 115.79 # SOURCE4 60 1.2588
angle_coeff @angle:c3-os-s harmonic 59.28 109.55 # SOURCE3 1 0.0000
angle_coeff @angle:c3-os-sh harmonic 61.67 112.82 # SOURCE3 1 0.0000
angle_coeff @angle:c3-os-ss harmonic 60.74 113.19 # SOURCE3 3 0.2455
angle_coeff @angle:ca-os-ca harmonic 63.31 119.95 # SOURCE4 107 1.6535
angle_coeff @angle:ca-os-cc harmonic 67.21 106.65 # CORR 62
angle_coeff @angle:ca-os-cd harmonic 67.21 106.65 # CORR 62
angle_coeff @angle:ca-os-n3 harmonic 65.39 112.19 # SOURCE3 1 0.0000
angle_coeff @angle:ca-os-na harmonic 66.47 108.24 # SOURCE3 1 0.0000
angle_coeff @angle:ca-os-nc harmonic 66.09 113.68 # SOURCE3 2
angle_coeff @angle:ca-os-nd harmonic 66.09 113.68 # SOURCE3 2
angle_coeff @angle:ca-os-p5 harmonic 77.96 123.42 # SOURCE4 54 1.1358
angle_coeff @angle:ca-os-s6 harmonic 63.95 116.97 # SOURCE4 15 0.9514
angle_coeff @angle:c-os-c2 harmonic 64.91 118.02 # SOURCE4 7 0.3666
angle_coeff @angle:c-os-c3 harmonic 63.63 115.14 # SOURCE3 17 1.8967
angle_coeff @angle:c-os-c harmonic 64.54 120.64 # SOURCE4 7 1.5114
angle_coeff @angle:c-os-ca harmonic 63.75 120.87 # SOURCE4 257 1.7209
angle_coeff @angle:c-os-cc harmonic 64.15 119.62 # SOURCE3 5 6.0675
angle_coeff @angle:cc-os-cc harmonic 67.27 106.69 # CORR 252
angle_coeff @angle:cc-os-cd harmonic 63.80 118.62 # SOURCE4 14 1.9764
angle_coeff @angle:c-os-cd harmonic 64.15 119.62 # SOURCE3 5 6.0675
angle_coeff @angle:cc-os-na harmonic 65.51 111.66 # SOURCE3 28 4.1343
angle_coeff @angle:cc-os-nc harmonic 68.12 107.23 # SOURCE3 6 2.7507
angle_coeff @angle:cc-os-os harmonic 66.27 108.47 # SOURCE3 2 0.0000
angle_coeff @angle:cc-os-ss harmonic 59.85 119.59 # SOURCE3 1 0.0000
angle_coeff @angle:c-os-cy harmonic 71.75 91.10 # SOURCE3 2 0.0155
angle_coeff @angle:cd-os-cd harmonic 67.27 106.69 # CORR 252
angle_coeff @angle:cd-os-na harmonic 65.51 111.66 # SOURCE3 28 4.1343
angle_coeff @angle:cd-os-nd harmonic 68.12 107.23 # SOURCE3 6 2.7507
angle_coeff @angle:cd-os-os harmonic 66.27 108.47 # SOURCE3 2 same_as_cc-os-os
angle_coeff @angle:cd-os-ss harmonic 59.85 119.59 # SOURCE3 1 same_as_cc-os-ss
angle_coeff @angle:cl-os-cl harmonic 52.29 110.76 # SOURCE3 2 0.0000
angle_coeff @angle:c-os-n2 harmonic 66.95 112.08 # SOURCE4 6 0.1154
angle_coeff @angle:c-os-n harmonic 66.83 112.10 # SOURCE4 6 0.6163
angle_coeff @angle:c-os-oh harmonic 66.50 110.50 # SOURCE3 1 0.0000
angle_coeff @angle:c-os-os harmonic 66.25 110.28 # SOURCE4 10 1.3612
angle_coeff @angle:c-os-p5 harmonic 78.89 122.10 # SOURCE4 5 0.5870
angle_coeff @angle:c-os-sy harmonic 61.85 113.49 # SOURCE3 1 0.0000
angle_coeff @angle:cx-os-cx harmonic 85.27 61.82 # SOURCE4 107 0.1793
angle_coeff @angle:cx-os-n harmonic 88.98 59.99 # SOURCE3 1 0.0000
angle_coeff @angle:cx-os-os harmonic 90.38 56.52 # SOURCE3 2 0.0000
angle_coeff @angle:cy-os-cy harmonic 68.81 93.40 # SOURCE2 2 1.4000
angle_coeff @angle:f-os-f harmonic 63.94 103.30 # SOURCE2 1 0.0000
angle_coeff @angle:f-os-os harmonic 63.94 109.50 # SOURCE2 1 0.0000
angle_coeff @angle:i-os-i harmonic 58.06 115.67 # SOURCE3 1 0.0000
angle_coeff @angle:n1-os-n1 harmonic 70.28 117.79 # HF/6-31G* 1
angle_coeff @angle:n2-os-n2 harmonic 68.76 106.83 # SOURCE3 1 0.0000
angle_coeff @angle:n2-os-s6 harmonic 66.63 111.30 # SOURCE4 7 0.5651
angle_coeff @angle:n3-os-n3 harmonic 67.76 104.88 # SOURCE3 1 0.0000
angle_coeff @angle:n4-os-n4 harmonic 65.66 114.68 # SOURCE3 1 0.0000
angle_coeff @angle:na-os-na harmonic 66.10 109.59 # SOURCE3 1 0.0000
angle_coeff @angle:na-os-ss harmonic 64.75 104.34 # SOURCE3 1 0.0000
angle_coeff @angle:nc-os-nc harmonic 68.17 110.40 # SOURCE2 1 0.0000
angle_coeff @angle:nc-os-ss harmonic 63.38 110.97 # SOURCE3 1 0.0000
angle_coeff @angle:nd-os-nd harmonic 68.17 110.40 # SOURCE2 1 same_as_nc-os-nc
angle_coeff @angle:nd-os-ss harmonic 63.38 110.97 # SOURCE3 1 same_as_nc-os-ss
angle_coeff @angle:nh-os-nh harmonic 67.81 108.29 # SOURCE3 1 0.0000
angle_coeff @angle:n-os-n harmonic 68.08 108.31 # SOURCE3 1 0.0000
angle_coeff @angle:no-os-no harmonic 66.40 111.86 # SOURCE3 1 0.0000
angle_coeff @angle:n-os-s6 harmonic 65.87 113.62 # SOURCE4 5 0.0928
angle_coeff @angle:o-os-o harmonic 62.76 114.68 # SOURCE3 1 0.0000
angle_coeff @angle:p2-os-p2 harmonic 103.59 120.02 # SOURCE3 1 0.0000
angle_coeff @angle:p2-os-p5 harmonic 108.26 107.86 # SOURCE3 1 0.0000
angle_coeff @angle:p3-os-p3 harmonic 96.17 121.22 # SOURCE3 1 0.0000
angle_coeff @angle:p3-os-py harmonic 105.11 105.58 # SOURCE3 1 0.0000
angle_coeff @angle:p5-os-p5 harmonic 99.18 126.25 # SOURCE3 1 0.0000
angle_coeff @angle:s4-os-s4 harmonic 62.09 111.63 # SOURCE3 1 0.0000
angle_coeff @angle:s6-os-s6 harmonic 64.77 119.07 # SOURCE3 2 0.4318
angle_coeff @angle:sh-os-sh harmonic 61.15 118.95 # SOURCE3 1 0.0000
angle_coeff @angle:s-os-s harmonic 56.98 118.08 # SOURCE3 1 0.0000
angle_coeff @angle:ss-os-ss harmonic 60.82 115.64 # SOURCE3 1 0.0000
angle_coeff @angle:br-p2-br harmonic 40.68 108.60 # SOURCE3 1
angle_coeff @angle:br-p2-c2 harmonic 39.43 102.32 # SOURCE3 2 0.0146
angle_coeff @angle:br-p2-n2 harmonic 40.42 103.33 # SOURCE3 1 0.0000
angle_coeff @angle:br-p2-o harmonic 39.43 110.87 # SOURCE3 1 0.0000
angle_coeff @angle:br-p2-p2 harmonic 50.16 115.46 # SOURCE3 4 7.8622
angle_coeff @angle:br-p2-s harmonic 40.59 110.52 # SOURCE3 1 0.0000
angle_coeff @angle:c1-p2-c1 harmonic 39.20 99.04 # SOURCE3 1
angle_coeff @angle:c1-p2-c2 harmonic 39.82 101.29 # SOURCE3 1
angle_coeff @angle:c1-p2-n2 harmonic 41.36 101.79 # SOURCE3 1
angle_coeff @angle:c1-p2-o harmonic 41.32 107.62 # SOURCE3 1
angle_coeff @angle:c1-p2-p2 harmonic 53.31 99.54 # SOURCE3 1
angle_coeff @angle:c1-p2-s harmonic 41.00 105.90 # SOURCE3 1
angle_coeff @angle:c2-p2-c2 harmonic 40.45 104.50 # SOURCE3 1
angle_coeff @angle:c2-p2-c3 harmonic 38.60 101.90 # SOURCE3 4 0.1132
angle_coeff @angle:c2-p2-ca harmonic 38.79 101.95 # SOURCE3 1
angle_coeff @angle:c2-p2-cl harmonic 35.61 102.72 # SOURCE3 2 0.0000
angle_coeff @angle:c2-p2-f harmonic 41.60 103.47 # SOURCE3 2 0.0136
angle_coeff @angle:c2-p2-hp harmonic 30.13 97.19 # SOURCE3 3 0.0216
angle_coeff @angle:c2-p2-i harmonic 33.85 101.94 # SOURCE3 2 0.0368
angle_coeff @angle:c2-p2-n2 harmonic 43.20 99.88 # SOURCE3 1
angle_coeff @angle:c2-p2-n3 harmonic 41.99 101.80 # SOURCE3 1
angle_coeff @angle:c2-p2-n4 harmonic 39.07 98.26 # SOURCE3 6 0.1522
angle_coeff @angle:c2-p2-n harmonic 40.89 103.28 # SOURCE3 4 3.3113
angle_coeff @angle:c2-p2-na harmonic 40.54 103.99 # SOURCE3 8 1.6834
angle_coeff @angle:c2-p2-nh harmonic 41.20 105.17 # SOURCE3 8 0.8263
angle_coeff @angle:c2-p2-no harmonic 41.91 97.97 # SOURCE3 3 0.4175
angle_coeff @angle:c2-p2-o harmonic 41.51 115.16 # SOURCE3 1
angle_coeff @angle:c2-p2-oh harmonic 42.50 102.89 # SOURCE3 3 0.8191
angle_coeff @angle:c2-p2-os harmonic 43.35 102.12 # SOURCE3 4 0.8783
angle_coeff @angle:c2-p2-p2 harmonic 54.72 99.56 # SOURCE3 1
angle_coeff @angle:c2-p2-p3 harmonic 48.11 99.27 # SOURCE3 4 1.1590
angle_coeff @angle:c2-p2-p4 harmonic 48.19 96.94 # SOURCE3 1
angle_coeff @angle:c2-p2-p5 harmonic 48.01 97.61 # SOURCE3 1
angle_coeff @angle:c2-p2-s4 harmonic 38.27 95.15 # SOURCE3 1
angle_coeff @angle:c2-p2-s6 harmonic 38.35 95.51 # SOURCE3 1
angle_coeff @angle:c2-p2-s harmonic 42.19 105.53 # SOURCE3 1
angle_coeff @angle:c2-p2-sh harmonic 40.19 101.49 # SOURCE3 3 0.0057
angle_coeff @angle:c2-p2-ss harmonic 40.19 101.81 # SOURCE3 4 0.5883
angle_coeff @angle:c3-p2-c3 harmonic 37.36 99.30 # SOURCE3 1
angle_coeff @angle:c3-p2-n2 harmonic 40.30 100.82 # SOURCE3 1 0.0000
angle_coeff @angle:c3-p2-o harmonic 40.10 106.72 # SOURCE3 1 0.0000
angle_coeff @angle:c3-p2-os harmonic 40.68 101.34 # SOURCE3 1 0.0000
angle_coeff @angle:c3-p2-p2 harmonic 51.78 100.48 # SOURCE3 1 0.0000
angle_coeff @angle:c3-p2-s harmonic 40.04 105.68 # SOURCE3 1 0.0000
angle_coeff @angle:ca-p2-ca harmonic 37.59 99.70 # SOURCE3 1
angle_coeff @angle:ca-p2-n2 harmonic 40.53 100.82 # SOURCE3 1
angle_coeff @angle:ca-p2-n harmonic 41.68 89.97 # SOURCE3 1
angle_coeff @angle:ca-p2-na harmonic 41.69 89.21 # SOURCE3 1
angle_coeff @angle:ca-p2-o harmonic 40.31 106.88 # SOURCE3 1
angle_coeff @angle:ca-p2-s harmonic 39.79 107.93 # SOURCE3 1
angle_coeff @angle:c-p2-c2 harmonic 38.89 97.30 # SOURCE3 1
angle_coeff @angle:c-p2-c harmonic 38.29 90.10 # SOURCE3 1
angle_coeff @angle:ce-p2-o harmonic 40.63 107.44 # SOURCE3 1
angle_coeff @angle:ce-p2-s harmonic 40.55 105.54 # SOURCE3 1
angle_coeff @angle:cf-p2-o harmonic 40.63 107.44 # SOURCE3 1 same_as_ce-p2-o
angle_coeff @angle:cf-p2-s harmonic 40.55 105.54 # SOURCE3 1 same_as_ce-p2-s
angle_coeff @angle:cl-p2-cl harmonic 32.00 108.70 # SOURCE3 1
angle_coeff @angle:cl-p2-n2 harmonic 36.67 103.38 # SOURCE3 1 0.0000
angle_coeff @angle:cl-p2-o harmonic 36.00 110.57 # SOURCE3 1 0.0000
angle_coeff @angle:cl-p2-p2 harmonic 47.78 103.11 # SOURCE3 1 0.0000
angle_coeff @angle:cl-p2-s harmonic 36.62 110.11 # SOURCE3 1 0.0000
angle_coeff @angle:f-p2-f harmonic 42.20 107.10 # SOURCE3 1
angle_coeff @angle:f-p2-n2 harmonic 43.59 103.57 # SOURCE3 1 0.0000
angle_coeff @angle:f-p2-o harmonic 43.81 110.61 # SOURCE3 1 0.0000
angle_coeff @angle:f-p2-p2 harmonic 54.54 103.48 # SOURCE3 1 0.0000
angle_coeff @angle:f-p2-s harmonic 41.15 114.71 # SOURCE3 2 5.2794
angle_coeff @angle:hp-p2-hp harmonic 22.84 98.76 # SOURCE3 1
angle_coeff @angle:hp-p2-n1 harmonic 31.08 95.18 # SOURCE3 2 1.5708
angle_coeff @angle:hp-p2-n2 harmonic 32.08 95.54 # SOURCE3 19 4.7352
angle_coeff @angle:hp-p2-ne harmonic 31.94 100.10 # SOURCE3 14 6.1290
angle_coeff @angle:hp-p2-nf harmonic 31.94 100.10 # SOURCE3 14 same_as_hp-p2-ne
angle_coeff @angle:hp-p2-o harmonic 32.04 105.58 # SOURCE3 1 0.0000
angle_coeff @angle:hp-p2-p2 harmonic 38.16 101.88 # SOURCE3 27 12.9535
angle_coeff @angle:hp-p2-p4 harmonic 32.69 94.51 # SOURCE3 1 0.0000
angle_coeff @angle:hp-p2-p5 harmonic 33.66 89.07 # SOURCE3 1 0.0000
angle_coeff @angle:hp-p2-pe harmonic 37.56 97.25 # SOURCE3 16 8.8916
angle_coeff @angle:hp-p2-pf harmonic 37.56 97.25 # SOURCE3 16 same_as_hp-p2-pe
angle_coeff @angle:hp-p2-s4 harmonic 26.33 89.99 # SOURCE3 1 0.0000
angle_coeff @angle:hp-p2-s harmonic 30.26 102.52 # SOURCE3 1 0.0000
angle_coeff @angle:hp-p2-s6 harmonic 26.74 88.13 # SOURCE3 1 0.0000
angle_coeff @angle:i-p2-i harmonic 35.75 104.16 # SOURCE3 1
angle_coeff @angle:i-p2-n2 harmonic 34.63 101.77 # SOURCE3 1 0.0000
angle_coeff @angle:i-p2-o harmonic 33.34 109.51 # SOURCE3 1 0.0000
angle_coeff @angle:i-p2-p2 harmonic 46.22 102.63 # SOURCE3 1 0.0000
angle_coeff @angle:i-p2-s harmonic 35.18 110.60 # SOURCE3 1 0.0000
angle_coeff @angle:n1-p2-n1 harmonic 46.52 86.22 # HF/6-31G* 1
angle_coeff @angle:n2-p2-n2 harmonic 45.62 98.00 # SOURCE3 1
angle_coeff @angle:n2-p2-n3 harmonic 44.14 100.42 # SOURCE3 1
angle_coeff @angle:n2-p2-n4 harmonic 41.53 93.42 # SOURCE3 1 0.0000
angle_coeff @angle:n2-p2-na harmonic 42.63 102.03 # SOURCE3 1 0.0000
angle_coeff @angle:n2-p2-nh harmonic 43.69 101.87 # SOURCE3 2 0.8491
angle_coeff @angle:n2-p2-no harmonic 43.64 98.12 # SOURCE3 1 0.0000
angle_coeff @angle:n2-p2-o harmonic 43.53 115.34 # SOURCE3 1
angle_coeff @angle:n2-p2-oh harmonic 43.02 109.72 # SOURCE3 1 0.0000
angle_coeff @angle:n2-p2-os harmonic 45.35 102.29 # SOURCE3 1 0.0000
angle_coeff @angle:n2-p2-p3 harmonic 49.55 99.51 # SOURCE3 1 0.0000
angle_coeff @angle:n2-p2-p4 harmonic 48.48 101.73 # SOURCE3 1
angle_coeff @angle:n2-p2-p5 harmonic 50.50 93.68 # SOURCE3 1
angle_coeff @angle:n2-p2-s4 harmonic 38.89 97.83 # SOURCE3 1
angle_coeff @angle:n2-p2-s6 harmonic 38.99 98.14 # SOURCE3 1
angle_coeff @angle:n2-p2-s harmonic 42.45 112.94 # SOURCE3 1
angle_coeff @angle:n2-p2-sh harmonic 41.75 100.82 # SOURCE3 1 0.0000
angle_coeff @angle:n2-p2-ss harmonic 41.64 101.76 # SOURCE3 1 0.0000
angle_coeff @angle:n3-p2-n3 harmonic 42.10 106.30 # SOURCE3 1
angle_coeff @angle:n3-p2-o harmonic 44.16 106.83 # SOURCE3 1
angle_coeff @angle:n3-p2-p2 harmonic 55.78 100.58 # SOURCE3 1
angle_coeff @angle:n3-p2-s harmonic 43.18 105.75 # SOURCE3 1
angle_coeff @angle:n4-p2-n4 harmonic 39.61 88.80 # SOURCE3 1
angle_coeff @angle:n4-p2-o harmonic 40.67 101.36 # SOURCE3 1 0.0000
angle_coeff @angle:n4-p2-p2 harmonic 52.72 96.53 # SOURCE3 1 0.0000
angle_coeff @angle:n4-p2-s harmonic 40.06 104.98 # SOURCE3 1 0.0000
angle_coeff @angle:na-p2-na harmonic 40.23 106.10 # SOURCE3 1
angle_coeff @angle:na-p2-o harmonic 42.71 107.46 # SOURCE3 1 0.0000
angle_coeff @angle:na-p2-s harmonic 41.81 108.15 # SOURCE3 1 0.0000
angle_coeff @angle:ne-p2-o harmonic 45.72 107.71 # SOURCE3 1
angle_coeff @angle:ne-p2-s harmonic 44.34 105.50 # SOURCE3 1
angle_coeff @angle:nf-p2-o harmonic 45.72 107.71 # SOURCE3 1 same_as_ne-p2-o
angle_coeff @angle:nf-p2-s harmonic 44.34 105.50 # SOURCE3 1 same_as_ne-p2-s
angle_coeff @angle:nh-p2-nh harmonic 42.33 104.00 # SOURCE3 1
angle_coeff @angle:nh-p2-o harmonic 43.75 108.11 # SOURCE3 2 0.6773
angle_coeff @angle:nh-p2-p2 harmonic 53.77 107.73 # SOURCE3 3 3.1678
angle_coeff @angle:nh-p2-s harmonic 42.31 109.62 # SOURCE3 2 1.7725
angle_coeff @angle:n-p2-n2 harmonic 43.55 98.85 # SOURCE3 1 0.0000
angle_coeff @angle:n-p2-o harmonic 43.46 105.08 # SOURCE3 1 0.0000
angle_coeff @angle:no-p2-no harmonic 42.08 98.20 # SOURCE3 1
angle_coeff @angle:no-p2-o harmonic 43.42 104.87 # SOURCE3 1 0.0000
angle_coeff @angle:no-p2-p2 harmonic 52.75 108.57 # SOURCE3 3 8.2121
angle_coeff @angle:no-p2-s harmonic 41.76 109.06 # SOURCE3 2 5.4074
angle_coeff @angle:n-p2-p2 harmonic 54.46 102.12 # SOURCE3 1 0.0000
angle_coeff @angle:n-p2-s harmonic 41.20 112.34 # SOURCE3 1 0.0000
angle_coeff @angle:oh-p2-oh harmonic 44.96 100.10 # SOURCE3 1
angle_coeff @angle:oh-p2-p2 harmonic 54.71 107.82 # SOURCE3 2 2.6708
angle_coeff @angle:oh-p2-s harmonic 43.05 109.75 # SOURCE3 1 0.0000
angle_coeff @angle:o-p2-o harmonic 44.39 119.96 # SOURCE3 1
angle_coeff @angle:o-p2-oh harmonic 44.33 110.46 # SOURCE3 1 0.0000
angle_coeff @angle:o-p2-os harmonic 45.59 108.81 # SOURCE3 1 0.0000
angle_coeff @angle:o-p2-p2 harmonic 54.57 114.23 # SOURCE3 1
angle_coeff @angle:o-p2-p3 harmonic 48.45 106.69 # SOURCE3 1 0.0000
angle_coeff @angle:o-p2-p4 harmonic 48.42 104.37 # SOURCE3 1
angle_coeff @angle:o-p2-p5 harmonic 48.37 104.49 # SOURCE3 1
angle_coeff @angle:o-p2-pe harmonic 46.73 145.96 # SOURCE3 1
angle_coeff @angle:o-p2-pf harmonic 46.73 145.96 # SOURCE3 1 same_as_o-p2-pe
angle_coeff @angle:o-p2-s4 harmonic 37.68 106.59 # SOURCE3 1
angle_coeff @angle:o-p2-s6 harmonic 38.12 105.04 # SOURCE3 1
angle_coeff @angle:o-p2-s harmonic 42.77 117.42 # SOURCE3 1
angle_coeff @angle:o-p2-sh harmonic 40.81 109.60 # SOURCE3 1 0.0000
angle_coeff @angle:os-p2-os harmonic 47.01 98.30 # SOURCE3 1
angle_coeff @angle:os-p2-p2 harmonic 57.14 101.46 # SOURCE3 1 0.0000
angle_coeff @angle:o-p2-ss harmonic 40.89 109.60 # SOURCE3 1 0.0000
angle_coeff @angle:os-p2-s harmonic 43.89 108.47 # SOURCE3 3 1.7065
angle_coeff @angle:p2-p2-n2 harmonic 57.57 97.40 # SOURCE3 1
angle_coeff @angle:p2-p2-p3 harmonic 64.09 101.73 # SOURCE3 1 0.0000
angle_coeff @angle:p2-p2-p4 harmonic 63.42 101.98 # SOURCE3 1
angle_coeff @angle:p2-p2-p5 harmonic 64.24 99.33 # SOURCE3 1
angle_coeff @angle:p2-p2-s4 harmonic 51.53 95.73 # SOURCE3 1
angle_coeff @angle:p2-p2-s6 harmonic 51.64 95.95 # SOURCE3 1
angle_coeff @angle:p2-p2-s harmonic 54.52 111.28 # SOURCE3 1
angle_coeff @angle:p2-p2-sh harmonic 50.78 113.94 # SOURCE3 3 8.5009
angle_coeff @angle:p3-p2-p3 harmonic 59.88 101.00 # SOURCE3 1
angle_coeff @angle:p3-p2-s harmonic 48.09 113.28 # SOURCE3 2 6.7035
angle_coeff @angle:p4-p2-s harmonic 49.75 103.89 # SOURCE3 1
angle_coeff @angle:p5-p2-p5 harmonic 62.82 89.40 # SOURCE3 1
angle_coeff @angle:p5-p2-s harmonic 50.38 101.21 # SOURCE3 1
angle_coeff @angle:pe-p2-s harmonic 54.45 106.35 # SOURCE3 1
angle_coeff @angle:pf-p2-s harmonic 54.45 106.35 # SOURCE3 1 same_as_pe-p2-s
angle_coeff @angle:s4-p2-s4 harmonic 39.97 85.30 # SOURCE3 1
angle_coeff @angle:s6-p2-s6 harmonic 37.42 98.20 # SOURCE3 1
angle_coeff @angle:sh-p2-sh harmonic 41.33 98.50 # SOURCE3 1
angle_coeff @angle:s-p2-s harmonic 44.19 106.60 # SOURCE3 1
angle_coeff @angle:s-p2-s4 harmonic 38.90 105.29 # SOURCE3 1
angle_coeff @angle:s-p2-s6 harmonic 38.73 106.93 # SOURCE3 1
angle_coeff @angle:s-p2-sh harmonic 40.82 110.73 # SOURCE3 2 0.0232
angle_coeff @angle:s-p2-ss harmonic 40.27 114.14 # SOURCE3 4 5.9223
angle_coeff @angle:ss-p2-ss harmonic 41.56 97.90 # SOURCE3 1
angle_coeff @angle:br-p3-br harmonic 41.27 103.54 # SOURCE3 1 0.0000
angle_coeff @angle:br-p3-hp harmonic 26.94 96.36 # SOURCE3 4 0.6701
angle_coeff @angle:c1-p3-c1 harmonic 38.48 100.50 # SOURCE3 1 0.0000
angle_coeff @angle:c1-p3-f harmonic 40.73 96.90 # SOURCE2 1 0.0000
angle_coeff @angle:c1-p3-hp harmonic 28.14 97.67 # SOURCE3 2 0.0000
angle_coeff @angle:c2-p3-c2 harmonic 37.32 101.77 # SOURCE3 3 0.0000
angle_coeff @angle:c2-p3-hp harmonic 27.57 97.85 # SOURCE3 4 0.0000
angle_coeff @angle:c3-p3-c3 harmonic 37.51 99.66 # SOURCE3 40 0.9854
angle_coeff @angle:c3-p3-ca harmonic 37.29 101.94 # SOURCE3 2 0.0000
angle_coeff @angle:c3-p3-cl harmonic 35.74 99.89 # SOURCE3 1 0.0000
angle_coeff @angle:c3-p3-f harmonic 39.74 97.80 # SOURCE2 1 0.0000
angle_coeff @angle:c3-p3-hp harmonic 27.47 97.66 # SOURCE3 9 0.4096
angle_coeff @angle:c3-p3-n2 harmonic 39.87 96.55 # SOURCE3 2 0.0000
angle_coeff @angle:c3-p3-n3 harmonic 39.28 101.18 # SOURCE3 10 2.2338
angle_coeff @angle:c3-p3-n4 harmonic 38.58 96.94 # SOURCE3 6 0.4815
angle_coeff @angle:c3-p3-n harmonic 38.78 101.77 # SOURCE3 12 2.4449
angle_coeff @angle:c3-p3-na harmonic 39.16 100.17 # SOURCE3 4 0.0554
angle_coeff @angle:c3-p3-nh harmonic 38.65 104.50 # SOURCE3 2 0.0000
angle_coeff @angle:c3-p3-no harmonic 38.96 96.98 # SOURCE3 2 0.0000
angle_coeff @angle:c3-p3-o harmonic 39.33 111.67 # SOURCE3 28 5.3387
angle_coeff @angle:c3-p3-oh harmonic 40.60 98.21 # SOURCE3 2 0.0000
angle_coeff @angle:c3-p3-os harmonic 40.25 99.53 # SOURCE3 3 1.7678
angle_coeff @angle:c3-p3-p3 harmonic 45.77 100.31 # SOURCE3 18 2.1836
angle_coeff @angle:c3-p3-p5 harmonic 45.65 100.90 # SOURCE3 10 2.7070
angle_coeff @angle:c3-p3-s4 harmonic 37.94 98.88 # SOURCE3 8 6.2235
angle_coeff @angle:c3-p3-s6 harmonic 37.62 101.18 # SOURCE3 12 6.4536
angle_coeff @angle:c3-p3-sh harmonic 37.43 98.71 # SOURCE3 2 0.0000
angle_coeff @angle:c3-p3-ss harmonic 37.44 99.37 # SOURCE3 2 0.0000
angle_coeff @angle:ca-p3-ca harmonic 37.89 99.86 # SOURCE3 1 0.0000
angle_coeff @angle:ca-p3-hp harmonic 27.74 97.50 # SOURCE3 2 0.0000
angle_coeff @angle:c-p3-c3 harmonic 37.60 97.06 # SOURCE3 3 1.1490
angle_coeff @angle:c-p3-c harmonic 36.51 100.90 # SOURCE3 1 0.0000
angle_coeff @angle:c-p3-hp harmonic 27.15 96.55 # SOURCE3 6 0.5223
angle_coeff @angle:cl-p3-cl harmonic 33.91 102.82 # SOURCE3 1 0.0000
angle_coeff @angle:cl-p3-f harmonic 37.03 99.20 # SOURCE2 1 0.0000
angle_coeff @angle:cl-p3-hp harmonic 25.67 96.30 # SOURCE3 3 0.6203
angle_coeff @angle:c-p3-os harmonic 43.95 81.32 # SOURCE3 1 0.0000
angle_coeff @angle:cx-p3-hp harmonic 27.54 95.20 # SOURCE2 1 0.0000
angle_coeff @angle:f-p3-f harmonic 43.08 97.40 # SOURCE2 8 1.6636
angle_coeff @angle:f-p3-hp harmonic 30.56 96.41 # SOURCE3 2 0.0000
angle_coeff @angle:f-p3-n3 harmonic 41.86 100.60 # SOURCE2 1 0.0000
angle_coeff @angle:f-p3-os harmonic 42.42 102.20 # SOURCE2 1 0.0000
angle_coeff @angle:f-p3-p3 harmonic 47.13 97.20 # SOURCE2 1 0.0000
angle_coeff @angle:hp-p3-hp harmonic 22.02 95.52 # SOURCE3 44 2.4200
angle_coeff @angle:hp-p3-i harmonic 23.42 96.19 # SOURCE3 4 0.6454
angle_coeff @angle:hp-p3-n1 harmonic 31.27 92.98 # HF/6-31G* 1
angle_coeff @angle:hp-p3-n2 harmonic 29.07 98.28 # SOURCE3 10 1.8860
angle_coeff @angle:hp-p3-n3 harmonic 30.10 94.46 # SOURCE3 2 0.0000
angle_coeff @angle:hp-p3-n4 harmonic 28.34 93.21 # SOURCE3 2 0.0000
angle_coeff @angle:hp-p3-n harmonic 29.47 95.15 # SOURCE3 2 0.0000
angle_coeff @angle:hp-p3-na harmonic 29.25 97.27 # SOURCE3 12 0.9318
angle_coeff @angle:hp-p3-nh harmonic 30.16 94.10 # SOURCE3 2 0.0000
angle_coeff @angle:hp-p3-no harmonic 28.83 93.06 # SOURCE3 2 0.0000
angle_coeff @angle:hp-p3-o harmonic 32.01 101.02 # SOURCE3 2 0.0000
angle_coeff @angle:hp-p3-oh harmonic 30.73 95.95 # SOURCE3 2 0.0000
angle_coeff @angle:hp-p3-os harmonic 30.39 97.35 # SOURCE3 6 2.8326
angle_coeff @angle:hp-p3-p2 harmonic 32.41 99.11 # SOURCE3 16 4.3022
angle_coeff @angle:hp-p3-p3 harmonic 32.07 95.52 # SOURCE3 4 0.0844
angle_coeff @angle:hp-p3-p4 harmonic 31.97 95.95 # SOURCE3 6 0.0489
angle_coeff @angle:hp-p3-p5 harmonic 32.08 95.54 # SOURCE3 2 0.0000
angle_coeff @angle:hp-p3-s4 harmonic 26.89 95.49 # SOURCE3 2 0.0000
angle_coeff @angle:hp-p3-s6 harmonic 27.38 92.95 # SOURCE3 2 0.0000
angle_coeff @angle:hp-p3-sh harmonic 26.51 94.21 # SOURCE3 2 0.0000
angle_coeff @angle:hp-p3-ss harmonic 26.59 94.61 # SOURCE3 2 0.0000
angle_coeff @angle:i-p3-i harmonic 36.63 105.25 # SOURCE3 1 0.0000
angle_coeff @angle:n1-p3-n1 harmonic 45.91 90.44 # HF/6-31G* 1
angle_coeff @angle:n2-p3-n2 harmonic 40.40 103.46 # SOURCE3 1 0.0000
angle_coeff @angle:n3-p3-n3 harmonic 39.27 113.80 # SOURCE3 1 0.0000
angle_coeff @angle:n3-p3-o harmonic 43.04 107.10 # SOURCE3 4 0.0000
angle_coeff @angle:n3-p3-oh harmonic 43.13 98.36 # SOURCE3 1
angle_coeff @angle:n4-p3-n4 harmonic 38.45 100.53 # SOURCE3 1 0.0000
angle_coeff @angle:na-p3-na harmonic 39.91 106.22 # SOURCE3 1
angle_coeff @angle:nh-p3-nh harmonic 40.11 109.11 # SOURCE3 1 0.0000
angle_coeff @angle:n-p3-n harmonic 40.04 104.58 # SOURCE3 1
angle_coeff @angle:n-p3-o harmonic 42.80 104.99 # SOURCE3 4 0.0000
angle_coeff @angle:no-p3-no harmonic 39.64 98.33 # SOURCE3 1 0.0000
angle_coeff @angle:oh-p3-oh harmonic 42.77 104.48 # SOURCE3 1 0.0000
angle_coeff @angle:o-p3-o harmonic 43.78 122.18 # SOURCE3 2 7.8556
angle_coeff @angle:o-p3-p3 harmonic 45.09 116.74 # SOURCE3 14 0.7525
angle_coeff @angle:o-p3-p5 harmonic 46.98 107.62 # SOURCE3 4 0.0000
angle_coeff @angle:o-p3-s4 harmonic 38.63 110.70 # SOURCE3 4 0.7259
angle_coeff @angle:o-p3-s6 harmonic 39.52 106.66 # SOURCE3 6 3.4017
angle_coeff @angle:os-p3-os harmonic 42.11 106.65 # SOURCE3 1 0.0000
angle_coeff @angle:p2-p3-p2 harmonic 59.12 103.58 # SOURCE3 1 0.0000
angle_coeff @angle:p3-p3-p3 harmonic 57.00 105.31 # SOURCE3 4 3.5864
angle_coeff @angle:p4-p3-p4 harmonic 58.70 99.09 # SOURCE3 1
angle_coeff @angle:p5-p3-p5 harmonic 58.78 99.10 # SOURCE3 1 0.0000
angle_coeff @angle:s4-p3-s4 harmonic 39.08 98.26 # SOURCE3 1 0.0000
angle_coeff @angle:s6-p3-s6 harmonic 39.36 97.78 # SOURCE3 1 0.0000
angle_coeff @angle:sh-p3-sh harmonic 36.56 107.58 # SOURCE3 1 0.0000
angle_coeff @angle:s-p3-s harmonic 34.08 131.32 # SOURCE3 1
angle_coeff @angle:ss-p3-ss harmonic 36.47 109.24 # SOURCE3 1 0.0000
angle_coeff @angle:br-p4-br harmonic 41.07 110.41 # SOURCE3 1
angle_coeff @angle:br-p4-o harmonic 37.80 124.80 # SOURCE3 1
angle_coeff @angle:c2-p4-c2 harmonic 37.13 104.21 # SOURCE3 1
angle_coeff @angle:c2-p4-hp harmonic 27.68 99.50 # SOURCE3 2 0.0000
angle_coeff @angle:c2-p4-o harmonic 39.43 113.59 # SOURCE3 1
angle_coeff @angle:c3-p4-c3 harmonic 37.20 102.55 # SOURCE3 4 0.0192
angle_coeff @angle:c3-p4-n2 harmonic 39.09 103.17 # SOURCE3 1
angle_coeff @angle:c3-p4-n3 harmonic 39.50 102.37 # SOURCE3 1 0.0000
angle_coeff @angle:c3-p4-n4 harmonic 37.54 99.57 # SOURCE3 1 0.0000
angle_coeff @angle:c3-p4-n harmonic 38.98 103.26 # SOURCE3 1 0.0000
angle_coeff @angle:c3-p4-na harmonic 37.92 117.67 # SOURCE3 5 19.0404
angle_coeff @angle:c3-p4-nh harmonic 39.33 102.79 # SOURCE3 1 0.0000
angle_coeff @angle:c3-p4-no harmonic 38.24 99.80 # SOURCE3 3 0.2151
angle_coeff @angle:c3-p4-o harmonic 38.77 116.44 # SOURCE3 25 2.6494
angle_coeff @angle:c3-p4-oh harmonic 41.01 98.56 # SOURCE3 2 0.4558
angle_coeff @angle:c3-p4-os harmonic 41.17 98.01 # SOURCE3 2 0.0931
angle_coeff @angle:c3-p4-p2 harmonic 44.43 109.27 # SOURCE3 1
angle_coeff @angle:c3-p4-p3 harmonic 45.09 103.53 # SOURCE3 1 0.0000
angle_coeff @angle:c3-p4-p4 harmonic 48.14 102.12 # SOURCE3 1
angle_coeff @angle:c3-p4-p5 harmonic 44.64 104.15 # SOURCE3 1
angle_coeff @angle:c3-p4-sh harmonic 37.43 100.17 # SOURCE3 2 0.0815
angle_coeff @angle:c3-p4-ss harmonic 37.38 101.19 # SOURCE3 1
angle_coeff @angle:ca-p4-ca harmonic 36.83 107.77 # SOURCE3 1
angle_coeff @angle:ca-p4-o harmonic 40.03 111.64 # SOURCE3 1
angle_coeff @angle:cl-p4-cl harmonic 33.80 103.51 # SOURCE3 1 0.0000
angle_coeff @angle:cl-p4-o harmonic 36.03 116.53 # SOURCE3 2 0.0000
angle_coeff @angle:hp-p4-hp harmonic 22.57 99.21 # SOURCE3 4 6.4572
angle_coeff @angle:hp-p4-n1 harmonic 30.24 99.91 # HF/6-31G* 1
angle_coeff @angle:hp-p4-o harmonic 31.44 109.35 # SOURCE3 6 10.8284
angle_coeff @angle:hp-p4-p3 harmonic 31.40 98.96 # SOURCE3 4 0.0000
angle_coeff @angle:hp-p4-s harmonic 24.32 110.24 # SOURCE3 4 4.1081
angle_coeff @angle:i-p4-i harmonic 38.53 113.22 # SOURCE3 2 6.7916
angle_coeff @angle:i-p4-o harmonic 37.71 110.22 # SOURCE3 4 9.7726
angle_coeff @angle:n1-p4-n1 harmonic 43.01 100.61 # HF/6-31G* 1
angle_coeff @angle:n1-p4-o harmonic 42.53 114.59 # HF/6-31G* 1
angle_coeff @angle:n2-p4-n2 harmonic 41.52 102.54 # SOURCE3 1
angle_coeff @angle:n2-p4-o harmonic 40.81 120.28 # SOURCE3 1
angle_coeff @angle:n3-p4-o harmonic 42.50 113.27 # SOURCE3 1 0.0000
angle_coeff @angle:n4-p4-o harmonic 39.56 107.61 # SOURCE3 1 0.0000
angle_coeff @angle:na-p4-o harmonic 45.17 110.60 # SOURCE3 5 1.3133
angle_coeff @angle:nh-p4-nh harmonic 43.52 95.30 # SOURCE3 1 0.0000
angle_coeff @angle:nh-p4-o harmonic 41.87 115.86 # SOURCE3 3 3.2712
angle_coeff @angle:n-p4-o harmonic 41.05 117.99 # SOURCE3 1 0.0000
angle_coeff @angle:no-p4-o harmonic 39.42 114.69 # SOURCE3 3 0.1070
angle_coeff @angle:oh-p4-oh harmonic 45.67 95.71 # SOURCE3 1 0.0000
angle_coeff @angle:o-p4-o harmonic 45.06 117.22 # SOURCE3 6 2.7792
angle_coeff @angle:o-p4-oh harmonic 42.88 117.39 # SOURCE3 4 1.0083
angle_coeff @angle:o-p4-os harmonic 43.10 116.67 # SOURCE3 4 0.6923
angle_coeff @angle:o-p4-p2 harmonic 44.91 121.35 # SOURCE3 1
angle_coeff @angle:o-p4-p3 harmonic 45.60 114.00 # SOURCE3 3 0.6663
angle_coeff @angle:o-p4-p4 harmonic 48.81 116.43 # SOURCE3 1
angle_coeff @angle:o-p4-p5 harmonic 46.05 109.76 # SOURCE3 1
angle_coeff @angle:o-p4-s4 harmonic 35.77 112.19 # SOURCE3 1
angle_coeff @angle:o-p4-s6 harmonic 35.22 113.89 # SOURCE3 1
angle_coeff @angle:o-p4-s harmonic 37.34 112.78 # SOURCE3 2 0.0000
angle_coeff @angle:o-p4-sh harmonic 36.99 118.09 # SOURCE3 1
angle_coeff @angle:os-p4-os harmonic 44.74 100.34 # SOURCE3 1 0.0000
angle_coeff @angle:o-p4-ss harmonic 37.47 116.14 # SOURCE3 4 1.0636
angle_coeff @angle:p2-p4-p2 harmonic 56.48 110.71 # SOURCE3 1
angle_coeff @angle:p3-p4-p3 harmonic 54.50 114.98 # SOURCE3 1 0.0000
angle_coeff @angle:p4-p4-p4 harmonic 61.44 107.38 # SOURCE3 1
angle_coeff @angle:p5-p4-p5 harmonic 55.76 107.78 # SOURCE3 1
angle_coeff @angle:s4-p4-s4 harmonic 36.61 96.24 # SOURCE3 1
angle_coeff @angle:s6-p4-s6 harmonic 35.22 102.36 # SOURCE3 1
angle_coeff @angle:sh-p4-sh harmonic 38.45 98.81 # SOURCE3 1 0.0000
angle_coeff @angle:s-p4-s harmonic 36.54 106.30 # SOURCE3 2 25.0119
angle_coeff @angle:ss-p4-ss harmonic 37.60 104.41 # SOURCE3 1 0.0000
angle_coeff @angle:br-p5-br harmonic 41.96 103.38 # SOURCE3 1 0.0000
angle_coeff @angle:br-p5-o harmonic 39.04 114.65 # SOURCE3 3 1.0910
angle_coeff @angle:br-p5-oh harmonic 40.90 102.92 # SOURCE3 4 0.5468
angle_coeff @angle:c1-p5-c1 harmonic 38.83 102.89 # SOURCE3 1 0.0000
angle_coeff @angle:c1-p5-o harmonic 40.32 115.77 # SOURCE3 2 0.0000
angle_coeff @angle:c1-p5-oh harmonic 41.43 102.79 # SOURCE3 2 0.0000
angle_coeff @angle:c2-p5-c2 harmonic 35.85 106.56 # SOURCE3 1
angle_coeff @angle:c2-p5-o harmonic 39.62 109.24 # SOURCE4 7 2.2628
angle_coeff @angle:c2-p5-oh harmonic 40.04 101.69 # SOURCE3 1
angle_coeff @angle:c2-p5-os harmonic 39.90 103.34 # SOURCE3 1
angle_coeff @angle:c3-p5-c3 harmonic 36.95 106.23 # SOURCE3 14 2.6389
angle_coeff @angle:c3-p5-hp harmonic 27.05 103.62 # SOURCE4 7 1.1616
angle_coeff @angle:c3-p5-n3 harmonic 40.01 102.76 # SOURCE3 1 0.0000
angle_coeff @angle:c3-p5-o harmonic 39.91 112.50 # SOURCE3 23 4.4203
angle_coeff @angle:c3-p5-oh harmonic 40.83 101.56 # SOURCE3 17 2.1803
angle_coeff @angle:c3-p5-os harmonic 41.20 100.77 # SOURCE4 51 2.0928
angle_coeff @angle:c3-p5-p4 harmonic 44.32 106.27 # SOURCE3 1
angle_coeff @angle:c3-p5-s harmonic 37.51 113.40 # SOURCE3 4 2.0067
angle_coeff @angle:c3-p5-ss harmonic 36.91 103.76 # SOURCE3 1 0.0000
angle_coeff @angle:ca-p5-ca harmonic 37.10 107.53 # SOURCE3 1
angle_coeff @angle:ca-p5-o harmonic 39.95 113.98 # SOURCE3 1
angle_coeff @angle:ca-p5-oh harmonic 41.04 101.77 # SOURCE3 1
angle_coeff @angle:ca-p5-os harmonic 40.86 103.75 # SOURCE3 1
angle_coeff @angle:c-p5-c harmonic 35.96 104.16 # SOURCE3 1
angle_coeff @angle:cl-p5-cl harmonic 33.77 103.70 # SOURCE2 1 0.0000
angle_coeff @angle:cl-p5-o harmonic 36.29 115.32 # SOURCE3 2 0.0000
angle_coeff @angle:cl-p5-oh harmonic 37.85 102.44 # SOURCE3 2 0.0000
angle_coeff @angle:c-p5-o harmonic 39.74 107.19 # SOURCE4 16 0.5711
angle_coeff @angle:c-p5-oh harmonic 39.73 102.12 # SOURCE3 1
angle_coeff @angle:f-p5-f harmonic 42.49 99.96 # SOURCE2 4 0.9197
angle_coeff @angle:f-p5-o harmonic 43.22 112.03 # SOURCE4 7 0.5178
angle_coeff @angle:f-p5-oh harmonic 43.33 101.98 # SOURCE3 2 0.0000
angle_coeff @angle:f-p5-os harmonic 43.51 102.70 # SOURCE4 5 0.1524
angle_coeff @angle:f-p5-s harmonic 38.09 117.40 # SOURCE2 1 0.0000
angle_coeff @angle:hp-p5-hp harmonic 21.44 101.09 # SOURCE3 4 1.3036
angle_coeff @angle:hp-p5-n1 harmonic 31.09 101.32 # HF/6-31G* 1
angle_coeff @angle:hp-p5-o harmonic 30.21 116.58 # SOURCE3 7 1.3282
angle_coeff @angle:hp-p5-oh harmonic 30.57 101.45 # SOURCE3 5 0.9084
angle_coeff @angle:hp-p5-s harmonic 25.97 119.20 # SOURCE2 1 0.0000
angle_coeff @angle:i-p5-i harmonic 35.88 107.17 # SOURCE3 1 0.0000
angle_coeff @angle:i-p5-o harmonic 32.99 115.93 # SOURCE3 3 0.0415
angle_coeff @angle:i-p5-oh harmonic 35.44 102.26 # SOURCE3 4 1.9577
angle_coeff @angle:n1-p5-n1 harmonic 45.78 101.55 # HF/6-31G* 1
angle_coeff @angle:n1-p5-o harmonic 44.71 113.78 # HF/6-31G* 1
angle_coeff @angle:n2-p5-n2 harmonic 43.96 106.34 # SOURCE3 1
angle_coeff @angle:n2-p5-o harmonic 44.30 113.53 # SOURCE3 1
angle_coeff @angle:n2-p5-oh harmonic 44.68 102.40 # SOURCE3 1
angle_coeff @angle:n3-p5-n3 harmonic 42.87 103.37 # SOURCE4 47 2.1009
angle_coeff @angle:n3-p5-nh harmonic 42.63 104.02 # SOURCE4 5 1.8740
angle_coeff @angle:n3-p5-o harmonic 43.02 114.64 # SOURCE4 76 2.2728
angle_coeff @angle:n3-p5-oh harmonic 43.43 104.18 # SOURCE3 6 0.4373
angle_coeff @angle:n3-p5-os harmonic 44.20 101.94 # SOURCE4 34 2.3553
angle_coeff @angle:n3-p5-s harmonic 39.05 117.12 # SOURCE4 7 0.7109
angle_coeff @angle:n4-p5-n4 harmonic 39.18 102.20 # SOURCE3 1 0.0000
angle_coeff @angle:n4-p5-o harmonic 41.10 109.78 # SOURCE3 5 2.7519
angle_coeff @angle:n4-p5-oh harmonic 42.23 98.48 # SOURCE3 6 0.4104
angle_coeff @angle:n4-p5-os harmonic 43.31 94.55 # SOURCE3 2 0.0000
angle_coeff @angle:na-p5-na harmonic 40.56 108.57 # SOURCE3 1 0.0000
angle_coeff @angle:na-p5-o harmonic 42.38 113.43 # SOURCE3 11 0.8968
angle_coeff @angle:na-p5-oh harmonic 43.14 102.07 # SOURCE3 16 1.4144
angle_coeff @angle:na-p5-os harmonic 43.20 103.06 # SOURCE3 4 0.7463
angle_coeff @angle:nh-p5-nh harmonic 43.48 99.51 # SOURCE3 1 0.0000
angle_coeff @angle:nh-p5-o harmonic 42.11 118.91 # SOURCE3 3 1.3237
angle_coeff @angle:nh-p5-oh harmonic 43.40 103.81 # SOURCE3 2 0.0000
angle_coeff @angle:nh-p5-os harmonic 44.39 100.51 # SOURCE3 2 0.0000
angle_coeff @angle:n-p5-n3 harmonic 42.13 104.11 # SOURCE4 11 1.4088
angle_coeff @angle:n-p5-n harmonic 41.80 103.09 # SOURCE3 1 0.0000
angle_coeff @angle:n-p5-o harmonic 43.40 108.73 # SOURCE4 5 0.2571
angle_coeff @angle:n-p5-oh harmonic 43.17 102.44 # SOURCE3 4 0.0999
angle_coeff @angle:no-p5-no harmonic 40.40 95.68 # SOURCE3 1 0.0000
angle_coeff @angle:no-p5-o harmonic 40.49 112.75 # SOURCE3 4 3.3684
angle_coeff @angle:no-p5-oh harmonic 41.56 101.35 # SOURCE3 2 0.0000
angle_coeff @angle:no-p5-os harmonic 41.69 101.70 # SOURCE3 4 0.0565
angle_coeff @angle:n-p5-os harmonic 43.85 100.48 # SOURCE3 2 0.0000
angle_coeff @angle:oh-p5-oh harmonic 44.58 102.45 # SOURCE3 39 2.4223
angle_coeff @angle:oh-p5-os harmonic 44.91 102.37 # SOURCE3 8 1.5063
angle_coeff @angle:oh-p5-p2 harmonic 48.24 103.53 # SOURCE3 1
angle_coeff @angle:oh-p5-p3 harmonic 47.55 103.83 # SOURCE3 13 0.4303
angle_coeff @angle:oh-p5-p4 harmonic 47.57 101.79 # SOURCE3 1
angle_coeff @angle:oh-p5-p5 harmonic 51.43 100.45 # SOURCE3 1
angle_coeff @angle:oh-p5-s4 harmonic 40.30 103.24 # SOURCE3 1
angle_coeff @angle:oh-p5-s6 harmonic 40.65 101.48 # SOURCE3 1
angle_coeff @angle:oh-p5-s harmonic 42.20 102.88 # SOURCE3 3 1.6044
angle_coeff @angle:oh-p5-sh harmonic 40.01 101.41 # SOURCE3 2 0.0000
angle_coeff @angle:oh-p5-ss harmonic 38.95 104.33 # SOURCE3 6 2.0112
angle_coeff @angle:o-p5-o harmonic 46.01 115.80 # SOURCE3 17 5.7902
angle_coeff @angle:o-p5-oh harmonic 43.79 115.26 # SOURCE4 740 1.3004
angle_coeff @angle:o-p5-os harmonic 44.01 116.09 # SOURCE3 35 3.2062
angle_coeff @angle:o-p5-p2 harmonic 46.23 114.60 # SOURCE3 1
angle_coeff @angle:o-p5-p3 harmonic 45.38 115.48 # SOURCE3 9 2.1084
angle_coeff @angle:o-p5-p4 harmonic 45.07 114.66 # SOURCE3 1
angle_coeff @angle:o-p5-p5 harmonic 49.11 113.44 # SOURCE3 1
angle_coeff @angle:o-p5-s4 harmonic 39.61 110.23 # SOURCE3 1
angle_coeff @angle:o-p5-s6 harmonic 39.34 111.75 # SOURCE3 1
angle_coeff @angle:o-p5-s harmonic 40.46 116.94 # SOURCE3 3 2.9506
angle_coeff @angle:o-p5-sh harmonic 38.14 114.56 # SOURCE3 3 1.7645
angle_coeff @angle:os-p5-os harmonic 45.37 101.77 # SOURCE4 243 2.0816
angle_coeff @angle:os-p5-p3 harmonic 47.66 103.67 # SOURCE3 2 0.0000
angle_coeff @angle:os-p5-p5 harmonic 50.58 104.48 # SOURCE3 1
angle_coeff @angle:os-p5-s4 harmonic 40.57 102.52 # SOURCE3 1
angle_coeff @angle:os-p5-s6 harmonic 40.69 101.89 # SOURCE3 1
angle_coeff @angle:o-p5-ss harmonic 37.95 112.46 # SOURCE3 6 2.7392
angle_coeff @angle:os-p5-s harmonic 39.69 117.28 # SOURCE4 74 0.7542
angle_coeff @angle:os-p5-sh harmonic 39.51 104.59 # SOURCE3 2 0.0000
angle_coeff @angle:os-p5-ss harmonic 39.36 102.65 # SOURCE4 25 1.8093
angle_coeff @angle:p2-p5-p2 harmonic 57.39 107.14 # SOURCE3 1
angle_coeff @angle:p3-p5-p3 harmonic 57.04 105.23 # SOURCE3 3 5.1024
angle_coeff @angle:p4-p5-p4 harmonic 57.42 101.62 # SOURCE3 1
angle_coeff @angle:p5-p5-p5 harmonic 59.38 112.72 # SOURCE3 1
angle_coeff @angle:s6-p5-s6 harmonic 38.64 105.18 # SOURCE3 1
angle_coeff @angle:sh-p5-sh harmonic 37.97 104.56 # SOURCE3 1 0.0000
angle_coeff @angle:sh-p5-ss harmonic 37.22 107.13 # SOURCE3 1
angle_coeff @angle:s-p5-s harmonic 39.37 114.13 # SOURCE3 1 0.0000
angle_coeff @angle:ss-p5-ss harmonic 36.51 109.61 # SOURCE3 1 0.0000
angle_coeff @angle:cd-pc-n harmonic 42.75 90.80 # SOURCE3 3 2.3423
angle_coeff @angle:cd-pc-na harmonic 43.00 90.18 # SOURCE3 81 2.7619
angle_coeff @angle:cc-pd-n harmonic 42.75 90.80 # SOURCE3 3 same_as_cd-pc-n
angle_coeff @angle:cc-pd-na harmonic 43.00 90.18 # SOURCE3 81 same_as_cd-pc-na
angle_coeff @angle:c2-pe-ca harmonic 38.84 101.44 # SOURCE3 3 0.7177
angle_coeff @angle:c2-pe-ce harmonic 38.68 103.01 # SOURCE3 4 1.4470
angle_coeff @angle:c2-pe-cg harmonic 40.85 104.03 # SOURCE3 3 3.8740
angle_coeff @angle:c2-pe-n2 harmonic 44.94 94.14 # SOURCE3 1
angle_coeff @angle:c2-pe-ne harmonic 41.85 98.70 # SOURCE3 12 5.3383
angle_coeff @angle:c2-pe-o harmonic 41.06 115.16 # SOURCE3 2 0.0149
angle_coeff @angle:c2-pe-p2 harmonic 50.94 107.82 # SOURCE3 1
angle_coeff @angle:c2-pe-pe harmonic 48.17 102.99 # SOURCE3 9 8.2860
angle_coeff @angle:c2-pe-px harmonic 51.11 97.37 # SOURCE3 4 0.6655
angle_coeff @angle:c2-pe-py harmonic 50.92 96.71 # SOURCE3 4 1.2755
angle_coeff @angle:c2-pe-s harmonic 41.06 111.16 # SOURCE3 2 0.0000
angle_coeff @angle:c2-pe-sx harmonic 38.51 95.11 # SOURCE3 4 0.2676
angle_coeff @angle:c2-pe-sy harmonic 37.78 95.56 # SOURCE3 2 0.0462
angle_coeff @angle:ca-pe-n2 harmonic 40.97 102.03 # SOURCE3 1 0.0000
angle_coeff @angle:ca-pe-o harmonic 40.40 106.88 # SOURCE3 2 0.0018
angle_coeff @angle:ca-pe-p2 harmonic 50.96 100.79 # SOURCE3 1 0.0000
angle_coeff @angle:ca-pe-pf harmonic 48.44 99.70 # SOURCE3 2 0.0000
angle_coeff @angle:ca-pe-s harmonic 40.07 107.93 # SOURCE3 1 0.0000
angle_coeff @angle:c-pe-c2 harmonic 38.58 97.30 # SOURCE3 3 0.0335
angle_coeff @angle:ce-pe-n2 harmonic 41.45 100.55 # SOURCE3 1 0.0000
angle_coeff @angle:ce-pe-o harmonic 40.47 107.44 # SOURCE3 1 0.0000
angle_coeff @angle:ce-pe-p2 harmonic 51.42 99.56 # SOURCE3 1 0.0000
angle_coeff @angle:ce-pe-s harmonic 40.65 105.54 # SOURCE3 1 0.0000
angle_coeff @angle:cg-pe-n2 harmonic 44.31 101.79 # SOURCE3 1 0.0000
angle_coeff @angle:cg-pe-o harmonic 43.57 107.62 # SOURCE3 1 0.0000
angle_coeff @angle:cg-pe-p2 harmonic 52.47 104.68 # SOURCE3 2 5.1435
angle_coeff @angle:cg-pe-s harmonic 42.30 108.60 # SOURCE3 4 2.6981
angle_coeff @angle:n2-pe-n2 harmonic 45.26 108.14 # SOURCE3 1
angle_coeff @angle:n2-pe-ne harmonic 42.89 106.80 # SOURCE3 6 4.5981
angle_coeff @angle:n2-pe-o harmonic 44.34 115.39 # SOURCE3 1 0.0000
angle_coeff @angle:n2-pe-p2 harmonic 52.85 111.60 # SOURCE3 1
angle_coeff @angle:n2-pe-pe harmonic 48.70 109.40 # SOURCE3 1 0.0000
angle_coeff @angle:n2-pe-px harmonic 50.28 110.30 # SOURCE3 3 6.0548
angle_coeff @angle:n2-pe-py harmonic 54.11 93.68 # SOURCE3 1 0.0000
angle_coeff @angle:n2-pe-s harmonic 42.94 114.84 # SOURCE3 3 3.6512
angle_coeff @angle:n2-pe-sx harmonic 39.42 97.83 # SOURCE3 1 0.0000
angle_coeff @angle:n2-pe-sy harmonic 38.61 98.14 # SOURCE3 1 0.0000
angle_coeff @angle:ne-pe-o harmonic 42.65 110.24 # SOURCE3 3 3.8478
angle_coeff @angle:ne-pe-p2 harmonic 52.77 104.48 # SOURCE3 2 7.1207
angle_coeff @angle:ne-pe-s harmonic 42.21 109.19 # SOURCE3 5 3.6708
angle_coeff @angle:o-pe-o harmonic 44.01 119.96 # SOURCE3 1 0.0000
angle_coeff @angle:o-pe-p2 harmonic 52.71 114.23 # SOURCE3 1 0.0000
angle_coeff @angle:o-pe-pe harmonic 42.47 145.96 # SOURCE3 1 0.0000
angle_coeff @angle:o-pe-px harmonic 52.10 104.37 # SOURCE3 1 0.0000
angle_coeff @angle:o-pe-py harmonic 51.64 104.49 # SOURCE3 1 0.0000
angle_coeff @angle:o-pe-s harmonic 42.89 117.42 # SOURCE3 2 0.0426
angle_coeff @angle:o-pe-sx harmonic 38.02 106.59 # SOURCE3 1 0.0000
angle_coeff @angle:o-pe-sy harmonic 37.56 105.04 # SOURCE3 1 0.0000
angle_coeff @angle:p2-pe-pe harmonic 65.58 98.24 # SOURCE3 1 0.0000
angle_coeff @angle:p2-pe-px harmonic 64.12 108.28 # SOURCE3 2 6.2959
angle_coeff @angle:p2-pe-py harmonic 62.99 110.87 # SOURCE3 3 8.1645
angle_coeff @angle:p2-pe-s harmonic 53.42 111.28 # SOURCE3 1 0.0000
angle_coeff @angle:p2-pe-sx harmonic 51.26 95.73 # SOURCE3 1 0.0000
angle_coeff @angle:p2-pe-sy harmonic 50.47 95.95 # SOURCE3 1 0.0000
angle_coeff @angle:pe-pe-s harmonic 50.40 107.91 # SOURCE3 2 1.5577
angle_coeff @angle:px-pe-s harmonic 51.97 107.62 # SOURCE3 2 3.7266
angle_coeff @angle:py-pe-s harmonic 51.36 108.73 # SOURCE3 3 5.3201
angle_coeff @angle:s-pe-s harmonic 34.43 178.44 # SOURCE3 1 0.0000
angle_coeff @angle:s-pe-sx harmonic 38.72 108.32 # SOURCE3 2 3.0318
angle_coeff @angle:s-pe-sy harmonic 38.35 106.93 # SOURCE3 1 0.0000
angle_coeff @angle:c2-pf-ca harmonic 38.84 101.44 # SOURCE3 3 same_as_c2-pe-ca
angle_coeff @angle:c2-pf-cf harmonic 38.68 103.01 # SOURCE3 4 same_as_c2-pe-ce
angle_coeff @angle:c2-pf-ch harmonic 40.85 104.03 # SOURCE3 3 same_as_c2-pe-cg
angle_coeff @angle:c2-pf-n2 harmonic 44.94 94.14 # SOURCE3 1 same_as_c2-pe-n2
angle_coeff @angle:c2-pf-nf harmonic 41.85 98.70 # SOURCE3 12 same_as_c2-pe-ne
angle_coeff @angle:c2-pf-o harmonic 41.06 115.16 # SOURCE3 2 same_as_c2-pe-o
angle_coeff @angle:c2-pf-p2 harmonic 50.94 107.82 # SOURCE3 1 same_as_c2-pe-p2
angle_coeff @angle:c2-pf-pf harmonic 48.17 102.99 # SOURCE3 9 same_as_c2-pe-pe
angle_coeff @angle:c2-pf-px harmonic 51.11 97.37 # SOURCE3 4 same_as_c2-pe-px
angle_coeff @angle:c2-pf-py harmonic 50.92 96.71 # SOURCE3 4 same_as_c2-pe-py
angle_coeff @angle:c2-pf-s harmonic 41.06 111.16 # SOURCE3 2 same_as_c2-pe-s
angle_coeff @angle:c2-pf-sx harmonic 38.51 95.11 # SOURCE3 4 same_as_c2-pe-sx
angle_coeff @angle:c2-pf-sy harmonic 37.78 95.56 # SOURCE3 2 same_as_c2-pe-sy
angle_coeff @angle:ca-pf-n2 harmonic 40.97 102.03 # SOURCE3 1 same_as_ca-pe-n2
angle_coeff @angle:ca-pf-o harmonic 40.40 106.88 # SOURCE3 2 same_as_ca-pe-o
angle_coeff @angle:ca-pf-p2 harmonic 50.96 100.79 # SOURCE3 1 same_as_ca-pe-p2
angle_coeff @angle:ca-pf-pe harmonic 48.44 99.70 # SOURCE3 2 0.0000
angle_coeff @angle:ca-pf-s harmonic 40.07 107.93 # SOURCE3 1 same_as_ca-pe-s
angle_coeff @angle:c-pf-c2 harmonic 38.58 97.30 # SOURCE3 3 same_as_c-pe-c2
angle_coeff @angle:cf-pf-n2 harmonic 41.45 100.55 # SOURCE3 1 same_as_ce-pe-n2
angle_coeff @angle:cf-pf-o harmonic 40.47 107.44 # SOURCE3 1 same_as_ce-pe-o
angle_coeff @angle:cf-pf-p2 harmonic 51.42 99.56 # SOURCE3 1 same_as_ce-pe-p2
angle_coeff @angle:cf-pf-s harmonic 40.65 105.54 # SOURCE3 1 same_as_ce-pe-s
angle_coeff @angle:ch-pf-n2 harmonic 44.31 101.79 # SOURCE3 1 same_as_cg-pe-n2
angle_coeff @angle:ch-pf-o harmonic 43.57 107.62 # SOURCE3 1 same_as_cg-pe-o
angle_coeff @angle:ch-pf-p2 harmonic 52.47 104.68 # SOURCE3 2 same_as_cg-pe-p2
angle_coeff @angle:ch-pf-s harmonic 42.30 108.60 # SOURCE3 4 same_as_cg-pe-s
angle_coeff @angle:n2-pf-n2 harmonic 45.26 108.14 # SOURCE3 1 same_as_n2-pe-n2
angle_coeff @angle:n2-pf-nf harmonic 42.89 106.80 # SOURCE3 6 same_as_n2-pe-ne
angle_coeff @angle:n2-pf-o harmonic 44.34 115.39 # SOURCE3 1 same_as_n2-pe-o
angle_coeff @angle:n2-pf-p2 harmonic 52.85 111.60 # SOURCE3 1 same_as_n2-pe-p2
angle_coeff @angle:n2-pf-pf harmonic 48.70 109.40 # SOURCE3 1 same_as_n2-pe-pe
angle_coeff @angle:n2-pf-px harmonic 50.28 110.30 # SOURCE3 3 same_as_n2-pe-px
angle_coeff @angle:n2-pf-py harmonic 54.11 93.68 # SOURCE3 1 same_as_n2-pe-py
angle_coeff @angle:n2-pf-s harmonic 42.94 114.84 # SOURCE3 3 same_as_n2-pe-s
angle_coeff @angle:n2-pf-sx harmonic 39.42 97.83 # SOURCE3 1 same_as_n2-pe-sx
angle_coeff @angle:n2-pf-sy harmonic 38.61 98.14 # SOURCE3 1 same_as_n2-pe-sy
angle_coeff @angle:nf-pf-o harmonic 42.65 110.24 # SOURCE3 3 same_as_ne-pe-o
angle_coeff @angle:nf-pf-p2 harmonic 52.77 104.48 # SOURCE3 2 same_as_ne-pe-p2
angle_coeff @angle:nf-pf-s harmonic 42.21 109.19 # SOURCE3 5 same_as_ne-pe-s
angle_coeff @angle:o-pf-o harmonic 44.01 119.96 # SOURCE3 1 same_as_o-pe-o
angle_coeff @angle:o-pf-p2 harmonic 52.71 114.23 # SOURCE3 1 same_as_o-pe-p2
angle_coeff @angle:o-pf-pf harmonic 42.47 145.96 # SOURCE3 1 same_as_o-pe-pe
angle_coeff @angle:o-pf-px harmonic 52.10 104.37 # SOURCE3 1 same_as_o-pe-px
angle_coeff @angle:o-pf-py harmonic 51.64 104.49 # SOURCE3 1 same_as_o-pe-py
angle_coeff @angle:o-pf-s harmonic 42.89 117.42 # SOURCE3 2 same_as_o-pe-s
angle_coeff @angle:o-pf-sx harmonic 38.02 106.59 # SOURCE3 1 same_as_o-pe-sx
angle_coeff @angle:o-pf-sy harmonic 37.56 105.04 # SOURCE3 1 same_as_o-pe-sy
angle_coeff @angle:p2-pf-pf harmonic 65.58 98.24 # SOURCE3 1 same_as_p2-pe-pe
angle_coeff @angle:p2-pf-px harmonic 64.12 108.28 # SOURCE3 2 same_as_p2-pe-px
angle_coeff @angle:p2-pf-py harmonic 62.99 110.87 # SOURCE3 3 same_as_p2-pe-py
angle_coeff @angle:p2-pf-s harmonic 53.42 111.28 # SOURCE3 1 same_as_p2-pe-s
angle_coeff @angle:p2-pf-sx harmonic 51.26 95.73 # SOURCE3 1 same_as_p2-pe-sx
angle_coeff @angle:p2-pf-sy harmonic 50.47 95.95 # SOURCE3 1 same_as_p2-pe-sy
angle_coeff @angle:pf-pf-s harmonic 50.40 107.91 # SOURCE3 2 same_as_pe-pe-s
angle_coeff @angle:px-pf-s harmonic 51.97 107.62 # SOURCE3 2 same_as_px-pe-s
angle_coeff @angle:py-pf-s harmonic 51.36 108.73 # SOURCE3 3 same_as_py-pe-s
angle_coeff @angle:s-pf-s harmonic 34.43 178.44 # SOURCE3 1 same_as_s-pe-s
angle_coeff @angle:s-pf-sx harmonic 38.72 108.32 # SOURCE3 2 same_as_s-pe-sx
angle_coeff @angle:s-pf-sy harmonic 38.35 106.93 # SOURCE3 1 same_as_s-pe-sy
angle_coeff @angle:c3-px-ca harmonic 36.97 104.79 # SOURCE3 1 0.0000
angle_coeff @angle:c3-px-ce harmonic 37.00 104.86 # SOURCE3 4 0.6354
angle_coeff @angle:c3-px-cf harmonic 37.00 104.86 # SOURCE3 4 same_as_c3-px-ce
angle_coeff @angle:c3-px-ne harmonic 39.55 102.46 # SOURCE3 7 1.8685
angle_coeff @angle:c3-px-nf harmonic 39.55 102.46 # SOURCE3 7 same_as_c3-px-ne
angle_coeff @angle:c3-px-o harmonic 39.39 113.68 # SOURCE3 28 4.8990
angle_coeff @angle:c3-px-pe harmonic 47.82 105.73 # SOURCE3 10 4.4059
angle_coeff @angle:c3-px-pf harmonic 47.82 105.73 # SOURCE3 10 same_as_c3-px-pe
angle_coeff @angle:c3-px-py harmonic 45.50 103.11 # SOURCE3 3 0.8680
angle_coeff @angle:c3-px-sx harmonic 36.06 99.55 # SOURCE3 1 0.0000
angle_coeff @angle:c3-px-sy harmonic 35.30 103.41 # SOURCE3 1 0.0000
angle_coeff @angle:ca-px-ca harmonic 37.08 104.15 # SOURCE3 2 3.6168
angle_coeff @angle:ca-px-o harmonic 40.49 107.50 # SOURCE3 5 5.7355
angle_coeff @angle:c-px-c3 harmonic 36.70 101.72 # SOURCE3 1 0.0000
angle_coeff @angle:ce-px-ce harmonic 37.15 104.21 # SOURCE3 1 0.0000
angle_coeff @angle:ce-px-o harmonic 39.42 113.79 # SOURCE3 6 0.3877
angle_coeff @angle:cf-px-cf harmonic 37.15 104.21 # SOURCE3 1 same_as_ce-px-ce
angle_coeff @angle:cf-px-o harmonic 39.42 113.79 # SOURCE3 6 same_as_ce-px-o
angle_coeff @angle:c-px-o harmonic 37.98 114.47 # SOURCE3 1 0.0000
angle_coeff @angle:ne-px-ne harmonic 41.92 103.22 # SOURCE3 2 0.6807
angle_coeff @angle:ne-px-o harmonic 42.27 114.13 # SOURCE3 11 8.9737
angle_coeff @angle:nf-px-nf harmonic 41.92 103.22 # SOURCE3 2 same_as_ne-px-ne
angle_coeff @angle:nf-px-o harmonic 42.27 114.13 # SOURCE3 11 same_as_ne-px-o
angle_coeff @angle:o-px-pe harmonic 49.41 116.50 # SOURCE3 12 8.2925
angle_coeff @angle:o-px-pf harmonic 49.41 116.50 # SOURCE3 12 same_as_o-px-pe
angle_coeff @angle:o-px-py harmonic 45.90 114.20 # SOURCE3 5 1.7165
angle_coeff @angle:o-px-sx harmonic 35.81 112.81 # SOURCE3 3 0.8799
angle_coeff @angle:o-px-sy harmonic 35.59 113.54 # SOURCE3 3 0.5010
angle_coeff @angle:pe-px-pe harmonic 61.38 110.71 # SOURCE3 1 0.0000
angle_coeff @angle:pf-px-pf harmonic 61.38 110.71 # SOURCE3 1 same_as_pe-px-pe
angle_coeff @angle:py-px-py harmonic 56.72 107.78 # SOURCE3 1 0.0000
angle_coeff @angle:sx-px-sx harmonic 36.76 96.24 # SOURCE3 1 0.0000
angle_coeff @angle:sy-px-sy harmonic 35.53 102.36 # SOURCE3 1 0.0000
angle_coeff @angle:c3-py-n4 harmonic 37.34 103.83 # SOURCE3 4 0.0000
angle_coeff @angle:c3-py-na harmonic 38.76 106.89 # SOURCE3 2 0.0000
angle_coeff @angle:c3-py-o harmonic 38.95 117.87 # SOURCE3 13 2.3554
angle_coeff @angle:c3-py-oh harmonic 41.22 100.16 # SOURCE3 2 0.0000
angle_coeff @angle:c3-py-os harmonic 40.15 105.39 # SOURCE3 1 0.0000
angle_coeff @angle:c3-py-px harmonic 44.89 106.27 # SOURCE3 2 0.0000
angle_coeff @angle:c3-py-py harmonic 43.54 113.97 # SOURCE3 10 1.6346
angle_coeff @angle:c3-py-sx harmonic 34.74 106.36 # SOURCE3 4 0.0000
angle_coeff @angle:ca-py-ca harmonic 36.99 107.55 # SOURCE3 1 0.0000
angle_coeff @angle:ca-py-o harmonic 39.82 113.98 # SOURCE3 3 0.5309
angle_coeff @angle:ca-py-oh harmonic 40.90 102.68 # SOURCE4 5 1.2945
angle_coeff @angle:ca-py-os harmonic 40.66 103.75 # SOURCE3 2 0.0000
angle_coeff @angle:c-py-c3 harmonic 35.71 110.36 # SOURCE3 1 0.0000
angle_coeff @angle:c-py-c harmonic 36.23 104.20 # SOURCE3 1 0.0000
angle_coeff @angle:ce-py-ce harmonic 37.29 106.54 # SOURCE3 1 0.0000
angle_coeff @angle:ce-py-o harmonic 40.24 112.16 # SOURCE3 5 3.2594
angle_coeff @angle:ce-py-oh harmonic 40.58 104.77 # SOURCE3 6 2.1852
angle_coeff @angle:ce-py-os harmonic 40.82 103.34 # SOURCE3 2 0.0000
angle_coeff @angle:cf-py-cf harmonic 37.29 106.54 # SOURCE3 1 same_as_ce-py-ce
angle_coeff @angle:cf-py-o harmonic 40.24 112.16 # SOURCE3 5 same_as_ce-py-o
angle_coeff @angle:cf-py-oh harmonic 40.58 104.77 # SOURCE3 6 same_as_ce-py-oh
angle_coeff @angle:cf-py-os harmonic 40.82 103.34 # SOURCE3 2 same_as_ce-py-os
angle_coeff @angle:c-py-o harmonic 38.52 115.25 # SOURCE3 6 2.6519
angle_coeff @angle:c-py-oh harmonic 40.03 102.14 # SOURCE3 6 1.0654
angle_coeff @angle:c-py-os harmonic 41.32 95.74 # SOURCE3 3 9.0999
angle_coeff @angle:n3-py-ne harmonic 41.93 108.44 # SOURCE4 12 0.9498
angle_coeff @angle:n4-py-o harmonic 38.83 115.58 # SOURCE3 4 0.0000
angle_coeff @angle:n4-py-py harmonic 63.24 55.10 # SOURCE3 4 0.0000
angle_coeff @angle:na-py-o harmonic 40.78 122.40 # SOURCE3 2 0.0000
angle_coeff @angle:na-py-py harmonic 67.66 50.88 # SOURCE3 2 0.0000
angle_coeff @angle:ne-py-ne harmonic 43.51 106.29 # SOURCE3 1 0.0000
angle_coeff @angle:ne-py-o harmonic 44.00 113.21 # SOURCE3 15 3.8894
angle_coeff @angle:ne-py-oh harmonic 44.13 104.70 # SOURCE3 26 2.7513
angle_coeff @angle:ne-py-os harmonic 44.80 101.33 # SOURCE3 2 0.0000
angle_coeff @angle:nf-py-nf harmonic 43.51 106.29 # SOURCE3 1 same_as_ne-py-ne
angle_coeff @angle:nf-py-o harmonic 44.00 113.21 # SOURCE3 15 same_as_ne-py-o
angle_coeff @angle:nf-py-oh harmonic 44.13 104.70 # SOURCE3 26 same_as_ne-py-oh
angle_coeff @angle:nf-py-os harmonic 44.80 101.33 # SOURCE3 2 same_as_ne-py-os
angle_coeff @angle:oh-py-oh harmonic 45.06 101.78 # SOURCE3 35 2.2937
angle_coeff @angle:oh-py-pe harmonic 50.99 104.84 # SOURCE3 22 2.0337
angle_coeff @angle:oh-py-pf harmonic 50.99 104.84 # SOURCE3 22 same_as_oh-py-pe
angle_coeff @angle:oh-py-px harmonic 47.75 104.30 # SOURCE3 8 1.2772
angle_coeff @angle:oh-py-py harmonic 48.91 100.45 # SOURCE3 6 0.0000
angle_coeff @angle:oh-py-sx harmonic 37.44 100.94 # SOURCE3 4 0.0000
angle_coeff @angle:oh-py-sy harmonic 38.51 101.47 # SOURCE3 6 0.2490
angle_coeff @angle:o-py-oh harmonic 43.74 116.14 # SOURCE3 79 2.1455
angle_coeff @angle:o-py-os harmonic 43.55 116.79 # SOURCE3 17 1.3534
angle_coeff @angle:o-py-pe harmonic 49.46 114.56 # SOURCE3 12 3.6114
angle_coeff @angle:o-py-pf harmonic 49.46 114.56 # SOURCE3 12 same_as_o-py-pe
angle_coeff @angle:o-py-px harmonic 46.50 111.37 # SOURCE3 5 0.3803
angle_coeff @angle:o-py-py harmonic 44.97 120.43 # SOURCE3 16 6.0629
angle_coeff @angle:os-py-os harmonic 45.06 101.25 # SOURCE3 8 2.0860
angle_coeff @angle:os-py-py harmonic 47.94 104.48 # SOURCE3 4 0.0000
angle_coeff @angle:os-py-sx harmonic 36.90 103.86 # SOURCE3 2 0.0000
angle_coeff @angle:os-py-sy harmonic 38.37 102.12 # SOURCE3 2 0.0000
angle_coeff @angle:o-py-sx harmonic 34.68 118.56 # SOURCE3 7 6.2976
angle_coeff @angle:o-py-sy harmonic 36.96 111.71 # SOURCE3 5 1.1937
angle_coeff @angle:pe-py-pe harmonic 61.78 107.14 # SOURCE3 1 0.0000
angle_coeff @angle:pf-py-pf harmonic 61.78 107.14 # SOURCE3 1 same_as_pe-py-pe
angle_coeff @angle:py-py-py harmonic 55.80 112.70 # SOURCE3 1 0.0000
angle_coeff @angle:py-py-sx harmonic 58.65 61.54 # SOURCE3 4 0.0000
angle_coeff @angle:sy-py-sy harmonic 36.13 105.17 # SOURCE3 1 0.0000
angle_coeff @angle:c1-s2-o harmonic 65.76 117.25 # SOURCE3 1 0.0000
angle_coeff @angle:c2-s2-n2 harmonic 68.67 110.84 # SOURCE3 1 0.0000
angle_coeff @angle:c2-s2-o harmonic 66.18 114.70 # SOURCE2 1 0.0000
angle_coeff @angle:cl-s2-n1 harmonic 53.42 117.70 # SOURCE2 1 0.0000
angle_coeff @angle:f-s2-n1 harmonic 66.15 116.90 # SOURCE2 1 0.0000
angle_coeff @angle:n1-s2-o harmonic 73.05 108.46 # HF/6-31G* 1
angle_coeff @angle:n2-s2-o harmonic 67.93 121.20 # SOURCE2 2 0.8000
angle_coeff @angle:o-s2-o harmonic 67.99 116.17 # SOURCE3 1 0.0000
angle_coeff @angle:o-s2-s harmonic 63.79 118.30 # SOURCE2 1 0.0000
angle_coeff @angle:s-s2-s harmonic 63.50 115.04 # SOURCE3 1 0.0000
angle_coeff @angle:br-s4-br harmonic 64.61 98.02 # SOURCE3 1
angle_coeff @angle:br-s4-c3 harmonic 62.19 92.98 # SOURCE3 1 0.0000
angle_coeff @angle:br-s4-o harmonic 59.20 112.07 # SOURCE3 1 0.0000
angle_coeff @angle:c1-s4-c1 harmonic 65.35 93.55 # SOURCE3 1 0.0000
angle_coeff @angle:c1-s4-o harmonic 65.98 110.36 # SOURCE3 2 0.0000
angle_coeff @angle:c2-s4-c2 harmonic 62.00 102.29 # SOURCE3 1
angle_coeff @angle:c2-s4-c3 harmonic 63.48 94.95 # SOURCE3 1
angle_coeff @angle:c2-s4-o harmonic 66.61 107.09 # SOURCE3 1
angle_coeff @angle:c3-s4-c3 harmonic 62.07 96.82 # SOURCE3 11 1.5580
angle_coeff @angle:c3-s4-ca harmonic 62.99 95.00 # SOURCE3 1
angle_coeff @angle:c3-s4-f harmonic 66.32 91.70 # SOURCE3 1 0.0000
angle_coeff @angle:c3-s4-hs harmonic 46.55 90.60 # SOURCE3 1 0.0000
angle_coeff @angle:c3-s4-i harmonic 52.86 90.53 # SOURCE3 1 0.0000
angle_coeff @angle:c3-s4-n2 harmonic 69.07 90.59 # SOURCE3 1
angle_coeff @angle:c3-s4-n3 harmonic 65.18 94.49 # SOURCE3 4 1.5570
angle_coeff @angle:c3-s4-n harmonic 64.28 96.07 # SOURCE3 4 1.0354
angle_coeff @angle:c3-s4-n4 harmonic 61.99 92.47 # SOURCE3 1 0.0000
angle_coeff @angle:c3-s4-na harmonic 65.11 93.07 # SOURCE3 10 1.8813
angle_coeff @angle:c3-s4-nh harmonic 64.51 97.08 # SOURCE3 1 0.0000
angle_coeff @angle:c3-s4-no harmonic 62.53 89.53 # SOURCE3 1 0.0000
angle_coeff @angle:c3-s4-o harmonic 65.63 106.21 # SOURCE3 60 2.0426
angle_coeff @angle:c3-s4-oh harmonic 68.22 90.25 # SOURCE4 8 0.3023
angle_coeff @angle:c3-s4-os harmonic 68.23 90.06 # SOURCE3 4 0.4484
angle_coeff @angle:c3-s4-p2 harmonic 76.43 94.37 # SOURCE3 1
angle_coeff @angle:c3-s4-p3 harmonic 78.19 96.54 # SOURCE3 4 1.3634
angle_coeff @angle:c3-s4-p4 harmonic 73.69 97.40 # SOURCE3 1
angle_coeff @angle:c3-s4-p5 harmonic 78.32 99.18 # SOURCE3 1
angle_coeff @angle:c3-s4-s4 harmonic 64.31 89.50 # SOURCE3 1
angle_coeff @angle:c3-s4-s harmonic 61.31 98.72 # SOURCE3 2 0.0185
angle_coeff @angle:c3-s4-s6 harmonic 61.62 97.48 # SOURCE3 1
angle_coeff @angle:c3-s4-sh harmonic 60.74 94.66 # SOURCE3 1 0.0000
angle_coeff @angle:c3-s4-ss harmonic 60.58 95.31 # SOURCE3 3 1.4101
angle_coeff @angle:ca-s4-ca harmonic 63.26 95.21 # SOURCE3 1
angle_coeff @angle:ca-s4-o harmonic 66.01 106.63 # SOURCE3 1
angle_coeff @angle:c-s4-c3 harmonic 61.53 95.07 # SOURCE3 1
angle_coeff @angle:c-s4-c harmonic 63.34 86.83 # SOURCE3 1
angle_coeff @angle:cl-s4-cl harmonic 53.89 97.68 # SOURCE3 1 0.0000
angle_coeff @angle:cl-s4-o harmonic 58.13 108.34 # SOURCE3 2 0.0000
angle_coeff @angle:c-s4-o harmonic 63.97 106.17 # SOURCE3 1
angle_coeff @angle:cx-s4-cx harmonic 86.71 48.80 # SOURCE2 1 0.0000
angle_coeff @angle:cx-s4-o harmonic 64.10 110.00 # SOURCE2 1 0.0000
angle_coeff @angle:f-s4-f harmonic 69.99 92.71 # SOURCE2 3 0.1490
angle_coeff @angle:f-s4-o harmonic 70.11 106.81 # SOURCE2 2 0.0100
angle_coeff @angle:f-s4-s harmonic 59.78 107.50 # SOURCE2 1 0.0000
angle_coeff @angle:hs-s4-hs harmonic 37.79 87.00 # SOURCE3 2 0.0202
angle_coeff @angle:hs-s4-n1 harmonic 51.22 90.51 # HF/6-31G* 1
angle_coeff @angle:hs-s4-o harmonic 49.80 110.27 # SOURCE3 5 0.1908
angle_coeff @angle:i-s4-i harmonic 54.45 97.29 # SOURCE3 1
angle_coeff @angle:i-s4-o harmonic 47.32 113.91 # SOURCE3 1 0.0000
angle_coeff @angle:n1-s4-n1 harmonic 72.41 94.02 # HF/6-31G* 1
angle_coeff @angle:n1-s4-o harmonic 70.24 110.09 # HF/6-31G* 1
angle_coeff @angle:n2-s4-n2 harmonic 75.77 90.17 # SOURCE3 1
angle_coeff @angle:n2-s4-o harmonic 72.12 107.57 # SOURCE3 1
angle_coeff @angle:n3-s4-n3 harmonic 68.89 91.19 # SOURCE3 1 0.0000
angle_coeff @angle:n3-s4-o harmonic 67.59 109.07 # SOURCE3 6 2.3605
angle_coeff @angle:n4-s4-n4 harmonic 60.39 94.61 # SOURCE3 1 0.0000
angle_coeff @angle:n4-s4-o harmonic 63.17 104.91 # SOURCE3 3 0.4370
angle_coeff @angle:na-s4-na harmonic 63.63 103.10 # SOURCE3 1
angle_coeff @angle:na-s4-o harmonic 66.52 109.75 # SOURCE3 10 2.6919
angle_coeff @angle:nh-s4-nh harmonic 68.96 92.24 # SOURCE3 1 0.0000
angle_coeff @angle:nh-s4-o harmonic 68.40 107.54 # SOURCE3 3 0.0401
angle_coeff @angle:n-s4-n harmonic 68.03 91.30 # SOURCE3 1
angle_coeff @angle:n-s4-o harmonic 68.09 105.70 # SOURCE3 4 1.6857
angle_coeff @angle:no-s4-no harmonic 63.55 83.40 # SOURCE3 1 0.0000
angle_coeff @angle:no-s4-o harmonic 62.93 103.58 # SOURCE3 3 1.5109
angle_coeff @angle:oh-s4-oh harmonic 69.00 100.34 # SOURCE3 1
angle_coeff @angle:o-s4-o harmonic 74.43 110.61 # SOURCE3 5 3.6413
angle_coeff @angle:o-s4-oh harmonic 69.42 110.13 # SOURCE4 10 0.5760
angle_coeff @angle:o-s4-os harmonic 69.67 109.02 # SOURCE3 8 1.5005
angle_coeff @angle:o-s4-p2 harmonic 76.18 106.77 # SOURCE3 1
angle_coeff @angle:o-s4-p3 harmonic 79.76 106.51 # SOURCE3 8 4.0943
angle_coeff @angle:o-s4-p4 harmonic 75.38 103.36 # SOURCE3 1
angle_coeff @angle:o-s4-p5 harmonic 85.32 96.95 # SOURCE3 1
angle_coeff @angle:o-s4-s4 harmonic 63.80 104.55 # SOURCE3 1
angle_coeff @angle:o-s4-s harmonic 61.69 112.22 # SOURCE3 4 2.8682
angle_coeff @angle:o-s4-s6 harmonic 64.33 102.84 # SOURCE3 1
angle_coeff @angle:o-s4-sh harmonic 60.56 107.51 # SOURCE3 3 0.7511
angle_coeff @angle:os-s4-os harmonic 71.26 93.68 # SOURCE3 2 2.4166
angle_coeff @angle:o-s4-ss harmonic 60.06 109.49 # SOURCE3 5 1.8509
angle_coeff @angle:p2-s4-p2 harmonic 98.20 92.62 # SOURCE3 1
angle_coeff @angle:p3-s4-p3 harmonic 101.37 95.71 # SOURCE3 2 1.2239
angle_coeff @angle:p5-s4-p5 harmonic 104.72 93.86 # SOURCE3 1
angle_coeff @angle:s4-s4-s4 harmonic 65.42 90.17 # SOURCE3 1
angle_coeff @angle:s4-s4-s6 harmonic 65.42 90.17 # SOURCE3 1
angle_coeff @angle:s6-s4-s6 harmonic 64.23 93.52 # SOURCE3 1
angle_coeff @angle:sh-s4-sh harmonic 58.79 102.76 # SOURCE3 1 0.0000
angle_coeff @angle:sh-s4-ss harmonic 58.85 102.64 # SOURCE3 1
angle_coeff @angle:s-s4-s harmonic 59.87 108.08 # SOURCE3 1 0.0000
angle_coeff @angle:ss-s4-ss harmonic 61.05 95.47 # SOURCE3 1 0.0000
angle_coeff @angle:br-s6-br harmonic 67.11 101.57 # SOURCE3 1 0.0000
angle_coeff @angle:br-s6-c3 harmonic 63.24 98.99 # SOURCE3 1 0.0000
angle_coeff @angle:br-s6-f harmonic 63.06 100.60 # SOURCE2 1 0.0000
angle_coeff @angle:br-s6-o harmonic 63.90 107.58 # SOURCE3 6 0.3000
angle_coeff @angle:c1-s6-c1 harmonic 64.09 99.99 # SOURCE3 1 0.0000
angle_coeff @angle:c1-s6-o harmonic 68.10 108.23 # SOURCE3 4 0.0000
angle_coeff @angle:c2-s6-c2 harmonic 61.86 102.75 # SOURCE3 1
angle_coeff @angle:c2-s6-c3 harmonic 61.23 104.05 # SOURCE3 1
angle_coeff @angle:c2-s6-o harmonic 67.53 106.58 # SOURCE3 1
angle_coeff @angle:c3-s6-c3 harmonic 61.35 102.83 # SOURCE3 7 1.2531
angle_coeff @angle:c3-s6-ca harmonic 61.51 103.17 # SOURCE3 1
angle_coeff @angle:c3-s6-cy harmonic 62.55 94.57 # SOURCE4 8 0.4183
angle_coeff @angle:c3-s6-f harmonic 65.73 97.11 # SOURCE3 1 0.0000
angle_coeff @angle:c3-s6-hs harmonic 44.94 100.62 # SOURCE3 1 0.0000
angle_coeff @angle:c3-s6-i harmonic 50.82 97.74 # SOURCE3 1 0.0000
angle_coeff @angle:c3-s6-n2 harmonic 63.42 112.95 # SOURCE4 11 0.7920
angle_coeff @angle:c3-s6-n3 harmonic 65.71 101.38 # SOURCE4 60 0.9507
angle_coeff @angle:c3-s6-n harmonic 63.84 102.97 # SOURCE3 4 0.8785
angle_coeff @angle:c3-s6-n4 harmonic 61.33 99.40 # SOURCE3 3 0.4695
angle_coeff @angle:c3-s6-na harmonic 63.68 102.81 # SOURCE3 10 3.1256
angle_coeff @angle:c3-s6-nh harmonic 63.74 104.31 # SOURCE4 34 1.5848
angle_coeff @angle:c3-s6-no harmonic 60.08 99.57 # SOURCE3 1 0.0000
angle_coeff @angle:c3-s6-o harmonic 66.59 108.32 # SOURCE3 112 1.8014
angle_coeff @angle:c3-s6-oh harmonic 67.71 98.60 # SOURCE4 42 0.8366
angle_coeff @angle:c3-s6-os harmonic 68.68 96.32 # SOURCE4 30 0.4539
angle_coeff @angle:c3-s6-p2 harmonic 72.54 106.47 # SOURCE3 1
angle_coeff @angle:c3-s6-p3 harmonic 76.24 103.40 # SOURCE3 3 0.8516
angle_coeff @angle:c3-s6-p4 harmonic 71.10 104.12 # SOURCE3 1
angle_coeff @angle:c3-s6-p5 harmonic 77.16 103.46 # SOURCE3 1
angle_coeff @angle:c3-s6-s4 harmonic 61.78 98.10 # SOURCE3 1
angle_coeff @angle:c3-s6-s harmonic 60.70 104.50 # SOURCE3 1 0.0000
angle_coeff @angle:c3-s6-s6 harmonic 60.60 101.95 # SOURCE3 1
angle_coeff @angle:c3-s6-sh harmonic 60.07 101.84 # SOURCE3 1 0.0000
angle_coeff @angle:c3-s6-ss harmonic 59.68 102.47 # SOURCE3 3 1.7451
angle_coeff @angle:ca-s6-ca harmonic 61.80 103.08 # SOURCE3 1
angle_coeff @angle:ca-s6-o harmonic 68.37 104.07 # SOURCE4 59 0.5636
angle_coeff @angle:c-s6-c3 harmonic 60.12 101.24 # SOURCE3 1
angle_coeff @angle:c-s6-c harmonic 59.07 99.82 # SOURCE3 1
angle_coeff @angle:cc-s6-o harmonic 65.29 103.63 # SOURCE4 9 0.5934
angle_coeff @angle:cl-s6-cl harmonic 52.93 101.25 # SOURCE3 1 0.0000
angle_coeff @angle:cl-s6-f harmonic 57.88 99.00 # SOURCE2 1 0.0000
angle_coeff @angle:cl-s6-o harmonic 58.51 107.66 # SOURCE3 4 0.0000
angle_coeff @angle:c-s6-o harmonic 63.97 107.97 # SOURCE3 1
angle_coeff @angle:c-s6-os harmonic 64.36 102.12 # SOURCE3 1
angle_coeff @angle:cx-s6-cx harmonic 86.21 54.70 # SOURCE2 1 0.0000
angle_coeff @angle:cy-s6-o harmonic 63.83 110.22 # SOURCE4 20 1.1009
angle_coeff @angle:f-s6-f harmonic 70.81 94.70 # SOURCE2 3 0.9899
angle_coeff @angle:f-s6-o harmonic 72.38 106.48 # SOURCE3 2 0.0000
angle_coeff @angle:hs-s6-hs harmonic 35.84 99.02 # SOURCE3 2 0.0595
angle_coeff @angle:hs-s6-n1 harmonic 54.71 97.27 # HF/6-31G* 1
angle_coeff @angle:hs-s6-o harmonic 51.91 107.60 # SOURCE3 10 0.0343
angle_coeff @angle:i-s6-i harmonic 53.90 99.25 # SOURCE3 1
angle_coeff @angle:i-s6-o harmonic 47.73 109.74 # SOURCE3 2 0.0000
angle_coeff @angle:n1-s6-n1 harmonic 83.71 95.52 # HF/6-31G* 1
angle_coeff @angle:n1-s6-o harmonic 78.79 107.52 # HF/6-31G* 1
angle_coeff @angle:n2-s6-n2 harmonic 75.20 98.61 # SOURCE3 1
angle_coeff @angle:n2-s6-o harmonic 72.08 116.41 # SOURCE3 3 5.0830
angle_coeff @angle:n2-s6-oh harmonic 71.75 106.96 # SOURCE3 2 0.0000
angle_coeff @angle:n2-s6-os harmonic 73.30 103.25 # SOURCE3 1
angle_coeff @angle:n3-s6-n3 harmonic 71.49 98.57 # SOURCE4 7 0.2690
angle_coeff @angle:n3-s6-o harmonic 72.90 106.80 # SOURCE3 14 1.7908
angle_coeff @angle:n3-s6-os harmonic 72.84 99.26 # SOURCE4 8 0.5141
angle_coeff @angle:n4-s6-n4 harmonic 59.97 101.85 # SOURCE3 1 0.0000
angle_coeff @angle:n4-s6-o harmonic 65.83 102.92 # SOURCE3 10 1.5434
angle_coeff @angle:na-s6-na harmonic 67.74 98.04 # SOURCE3 1
angle_coeff @angle:na-s6-o harmonic 70.46 105.67 # SOURCE3 20 0.8019
angle_coeff @angle:nh-s6-nh harmonic 70.22 94.56 # SOURCE3 1 0.0000
angle_coeff @angle:nh-s6-o harmonic 70.23 109.12 # SOURCE3 6 0.9556
angle_coeff @angle:n-s6-n harmonic 66.18 104.16 # SOURCE3 1
angle_coeff @angle:n-s6-o harmonic 70.74 105.91 # SOURCE3 8 0.2953
angle_coeff @angle:no-s6-no harmonic 61.24 91.63 # SOURCE3 1 0.0000
angle_coeff @angle:no-s6-o harmonic 62.67 107.43 # SOURCE3 6 1.5494
angle_coeff @angle:n-s6-os harmonic 70.81 99.23 # SOURCE4 5 0.9794
angle_coeff @angle:oh-s6-oh harmonic 73.67 100.34 # SOURCE3 6 0.0076
angle_coeff @angle:oh-s6-os harmonic 75.33 96.62 # SOURCE4 26 0.6688
angle_coeff @angle:oh-s6-p2 harmonic 75.13 109.67 # SOURCE3 2 0.0000
angle_coeff @angle:o-s6-o harmonic 74.58 119.73 # SOURCE4 324 2.0530
angle_coeff @angle:o-s6-oh harmonic 74.13 108.21 # SOURCE3 18 0.7437
angle_coeff @angle:o-s6-os harmonic 74.58 107.84 # SOURCE3 12 0.7025
angle_coeff @angle:o-s6-p2 harmonic 76.65 106.61 # SOURCE3 1
angle_coeff @angle:o-s6-p3 harmonic 80.16 107.07 # SOURCE3 22 1.0550
angle_coeff @angle:o-s6-p4 harmonic 73.92 105.67 # SOURCE3 1
angle_coeff @angle:o-s6-p5 harmonic 81.69 106.64 # SOURCE3 1
angle_coeff @angle:o-s6-s4 harmonic 63.02 107.85 # SOURCE3 1
angle_coeff @angle:o-s6-s harmonic 63.52 110.29 # SOURCE3 6 2.2405
angle_coeff @angle:o-s6-s6 harmonic 63.55 106.07 # SOURCE3 1
angle_coeff @angle:o-s6-sh harmonic 62.53 106.81 # SOURCE3 6 0.6292
angle_coeff @angle:os-s6-os harmonic 74.80 98.70 # SOURCE3 1 0.0000
angle_coeff @angle:o-s6-ss harmonic 62.06 107.43 # SOURCE3 10 1.1423
angle_coeff @angle:p3-s6-p3 harmonic 94.93 110.17 # SOURCE3 4 5.3678
angle_coeff @angle:p5-s6-p5 harmonic 99.25 104.49 # SOURCE3 1
angle_coeff @angle:s4-s6-s4 harmonic 61.51 101.99 # SOURCE3 1
angle_coeff @angle:s4-s6-s6 harmonic 65.42 90.17 # SOURCE3 1
angle_coeff @angle:s6-s6-s6 harmonic 61.12 103.29 # SOURCE3 1
angle_coeff @angle:sh-s6-sh harmonic 59.41 106.43 # SOURCE3 1 0.0000
angle_coeff @angle:sh-s6-ss harmonic 60.36 102.64 # SOURCE3 1
angle_coeff @angle:s-s6-s harmonic 60.63 109.34 # SOURCE3 1 0.0000
angle_coeff @angle:ss-s6-ss harmonic 60.46 101.82 # SOURCE3 1 0.0000
angle_coeff @angle:br-sh-hs harmonic 43.54 95.64 # SOURCE3 1 0.0000
angle_coeff @angle:c1-sh-hs harmonic 48.23 95.99 # calculated_based_on_C#C-SH 0
angle_coeff @angle:c2-sh-hs harmonic 45.81 97.08 # SOURCE4 5 0.3132
angle_coeff @angle:c3-sh-hs harmonic 44.94 96.60 # SOURCE3 12 0.8009
angle_coeff @angle:ca-sh-hs harmonic 46.32 94.84 # SOURCE4 13 0.4130
angle_coeff @angle:cc-sh-hs harmonic 46.41 95.38 # SOURCE4 8 1.1410
angle_coeff @angle:c-sh-hs harmonic 45.96 96.07 # SOURCE3 6 1.1164
angle_coeff @angle:f-sh-hs harmonic 48.09 96.50 # SOURCE3 1 0.0000
angle_coeff @angle:hs-sh-hs harmonic 37.45 93.72 # SOURCE3 3 0.4777
angle_coeff @angle:hs-sh-i harmonic 37.09 96.44 # SOURCE3 1 0.0000
angle_coeff @angle:hs-sh-n1 harmonic 51.69 93.51 # HF/6-31G* 1
angle_coeff @angle:hs-sh-n2 harmonic 48.12 95.82 # SOURCE3 5 3.1495
angle_coeff @angle:hs-sh-n harmonic 48.41 95.59 # SOURCE3 4 3.9065
angle_coeff @angle:hs-sh-n3 harmonic 48.06 95.98 # SOURCE3 3 1.1735
angle_coeff @angle:hs-sh-n4 harmonic 47.15 93.13 # SOURCE3 3 0.1675
angle_coeff @angle:hs-sh-na harmonic 48.12 97.38 # SOURCE3 9 1.0223
angle_coeff @angle:hs-sh-nh harmonic 47.52 101.11 # SOURCE3 1 0.0000
angle_coeff @angle:hs-sh-no harmonic 47.35 92.93 # SOURCE3 1 0.0000
angle_coeff @angle:hs-sh-o harmonic 48.22 109.23 # SOURCE3 2 0.0068
angle_coeff @angle:hs-sh-oh harmonic 48.75 98.64 # SOURCE3 2 0.0605
angle_coeff @angle:hs-sh-os harmonic 49.35 98.15 # SOURCE3 3 0.1661
angle_coeff @angle:hs-sh-p2 harmonic 56.52 99.12 # SOURCE3 10 5.4110
angle_coeff @angle:hs-sh-p3 harmonic 53.11 95.81 # SOURCE3 3 0.4396
angle_coeff @angle:hs-sh-p4 harmonic 54.01 94.22 # SOURCE3 4 0.7605
angle_coeff @angle:hs-sh-p5 harmonic 54.80 94.52 # SOURCE3 3 0.5589
angle_coeff @angle:hs-sh-s harmonic 40.94 102.87 # SOURCE3 2 0.0000
angle_coeff @angle:hs-sh-s4 harmonic 42.04 92.16 # SOURCE3 3 1.6519
angle_coeff @angle:hs-sh-s6 harmonic 42.91 93.83 # SOURCE3 3 1.2561
angle_coeff @angle:hs-sh-sh harmonic 42.80 99.07 # SOURCE3 2 0.0000
angle_coeff @angle:hs-sh-ss harmonic 42.59 99.17 # SOURCE3 3 0.2457
angle_coeff @angle:br-ss-br harmonic 67.00 102.92 # SOURCE3 1 0.0000
angle_coeff @angle:br-ss-c3 harmonic 63.06 99.03 # SOURCE3 1 0.0000
angle_coeff @angle:c1-ss-c1 harmonic 66.30 98.30 # SOURCE2 1 0.0000
angle_coeff @angle:c1-ss-c3 harmonic 62.89 99.90 # SOURCE2 1 0.0000
angle_coeff @angle:c2-ss-c2 harmonic 63.71 99.56 # SOURCE3 1 0.0000
angle_coeff @angle:c2-ss-c3 harmonic 61.87 100.37 # SOURCE4 100 2.3280
angle_coeff @angle:c2-ss-cy harmonic 65.30 88.61 # SOURCE4 27 0.4481
angle_coeff @angle:c2-ss-n2 harmonic 64.45 106.76 # SOURCE3 1 0.0000
angle_coeff @angle:c2-ss-na harmonic 65.02 100.51 # SOURCE3 6 6.9702
angle_coeff @angle:c2-ss-os harmonic 69.78 89.76 # SOURCE3 1 0.0000
angle_coeff @angle:c2-ss-ss harmonic 64.78 92.26 # SOURCE3 1 0.0000
angle_coeff @angle:c3-ss-c3 harmonic 60.63 99.92 # SOURCE3 14 2.0723
angle_coeff @angle:c3-ss-ca harmonic 60.80 102.12 # SOURCE4 161 1.3084
angle_coeff @angle:c3-ss-cc harmonic 61.74 100.75 # CORR 87
angle_coeff @angle:c3-ss-cd harmonic 61.74 100.75 # CORR 87
angle_coeff @angle:c3-ss-cl harmonic 56.40 99.40 # SOURCE2 1 0.0000
angle_coeff @angle:c3-ss-cy harmonic 61.94 94.32 # SOURCE4 62 0.3646
angle_coeff @angle:c3-ss-f harmonic 63.40 97.49 # SOURCE3 1 0.0000
angle_coeff @angle:c3-ss-i harmonic 56.03 100.00 # SOURCE3 1 0.0000
angle_coeff @angle:c3-ss-n1 harmonic 65.93 98.44 # HF/6-31G* 1
angle_coeff @angle:c3-ss-n2 harmonic 65.94 96.42 # SOURCE3 5 1.3604
angle_coeff @angle:c3-ss-n3 harmonic 64.10 98.83 # SOURCE3 3 0.2909
angle_coeff @angle:c3-ss-n harmonic 63.71 100.30 # SOURCE3 4 0.6579
angle_coeff @angle:c3-ss-n4 harmonic 62.94 97.79 # SOURCE3 3 0.2002
angle_coeff @angle:c3-ss-na harmonic 63.51 100.14 # SOURCE3 12 1.7415
angle_coeff @angle:c3-ss-nh harmonic 63.75 100.63 # SOURCE3 1 0.0000
angle_coeff @angle:c3-ss-no harmonic 62.40 98.62 # SOURCE3 1 0.0000
angle_coeff @angle:c3-ss-o harmonic 64.67 106.60 # SOURCE3 2 1.6714
angle_coeff @angle:c3-ss-oh harmonic 65.29 98.28 # SOURCE3 2 1.4326
angle_coeff @angle:c3-ss-os harmonic 64.97 98.21 # SOURCE3 4 1.7097
angle_coeff @angle:c3-ss-p2 harmonic 80.22 98.41 # SOURCE3 8 0.9454
angle_coeff @angle:c3-ss-p3 harmonic 76.29 98.70 # SOURCE3 3 0.0356
angle_coeff @angle:c3-ss-p4 harmonic 76.93 98.16 # SOURCE3 4 0.1361
angle_coeff @angle:c3-ss-p5 harmonic 75.86 100.22 # SOURCE4 23 1.1410
angle_coeff @angle:c3-ss-s4 harmonic 60.11 96.37 # SOURCE3 3 0.0202
angle_coeff @angle:c3-ss-s harmonic 59.94 101.90 # SOURCE3 1 0.0000
angle_coeff @angle:c3-ss-s6 harmonic 60.94 96.76 # SOURCE3 3 1.5680
angle_coeff @angle:c3-ss-sh harmonic 60.36 101.93 # SOURCE3 1 0.0000
angle_coeff @angle:c3-ss-ss harmonic 60.34 103.10 # SOURCE4 70 1.3377
angle_coeff @angle:ca-ss-ca harmonic 62.76 98.71 # SOURCE4 97 1.2321
angle_coeff @angle:ca-ss-cc harmonic 66.53 89.47 # CORR 134
angle_coeff @angle:ca-ss-cd harmonic 66.53 89.47 # CORR 134
angle_coeff @angle:ca-ss-cl harmonic 56.45 101.05 # SOURCE3 1 0.0000
angle_coeff @angle:ca-ss-n harmonic 65.76 97.16 # SOURCE3 1
angle_coeff @angle:ca-ss-na harmonic 64.76 99.32 # SOURCE3 1
angle_coeff @angle:ca-ss-nc harmonic 69.21 94.76 # SOURCE3 1 0.0000
angle_coeff @angle:ca-ss-nd harmonic 69.21 94.76 # SOURCE3 1 same_as_ca-ss-nc
angle_coeff @angle:ca-ss-ss harmonic 60.39 104.90 # SOURCE4 19 0.8743
angle_coeff @angle:c-ss-c2 harmonic 65.63 92.43 # SOURCE3 1 0.0000
angle_coeff @angle:c-ss-c3 harmonic 61.48 100.29 # SOURCE3 5 2.2127
angle_coeff @angle:c-ss-c harmonic 62.20 101.40 # SOURCE3 1 0.0000
angle_coeff @angle:c-ss-cc harmonic 65.61 92.43 # SOURCE4 14 2.3600
angle_coeff @angle:cc-ss-cc harmonic 67.01 89.91 # SOURCE3 11 2.2164
angle_coeff @angle:cc-ss-cd harmonic 67.07 89.74 # SOURCE4 49 0.7509
angle_coeff @angle:cc-ss-n harmonic 66.42 97.16 # SOURCE3 1 same_as_cd-ss-n
angle_coeff @angle:cc-ss-na harmonic 65.39 99.33 # SOURCE3 18 same_as_cd-ss-na
angle_coeff @angle:cc-ss-nc harmonic 70.31 94.08 # CORR 13
angle_coeff @angle:cc-ss-os harmonic 66.48 98.81 # SOURCE3 2 2.1583
angle_coeff @angle:cc-ss-ss harmonic 63.91 94.76 # CORR 13
angle_coeff @angle:cd-ss-cd harmonic 67.01 89.91 # SOURCE3 11 2.2164
angle_coeff @angle:cd-ss-n harmonic 66.42 97.16 # SOURCE3 1 0.0000
angle_coeff @angle:cd-ss-na harmonic 65.39 99.33 # SOURCE3 18 2.5847
angle_coeff @angle:cd-ss-nd harmonic 70.31 94.08 # CORR 13
angle_coeff @angle:cd-ss-os harmonic 66.48 98.81 # SOURCE3 2 same_as_cc-ss-os
angle_coeff @angle:cd-ss-ss harmonic 63.91 94.76 # CORR 13
angle_coeff @angle:cl-ss-cl harmonic 52.39 103.37 # SOURCE3 1 0.0000
angle_coeff @angle:cx-ss-cx harmonic 87.49 48.30 # SOURCE2 1 0.0000
angle_coeff @angle:f-ss-f harmonic 66.18 98.30 # SOURCE2 1 0.0000
angle_coeff @angle:f-ss-ss harmonic 59.85 108.30 # SOURCE2 1 0.0000
angle_coeff @angle:i-ss-i harmonic 58.15 106.29 # SOURCE3 1 0.0000
angle_coeff @angle:n1-ss-n1 harmonic 73.07 96.96 # HF/6-31G* 1
angle_coeff @angle:n2-ss-n2 harmonic 71.12 96.75 # SOURCE3 1 0.0000
angle_coeff @angle:n3-ss-n3 harmonic 66.50 102.34 # SOURCE3 1 0.0000
angle_coeff @angle:n4-ss-n4 harmonic 63.55 101.19 # SOURCE3 1 0.0000
angle_coeff @angle:na-ss-na harmonic 65.92 102.81 # SOURCE3 1 0.0000
angle_coeff @angle:nc-ss-nc harmonic 75.03 97.94 # CORR 9
angle_coeff @angle:nd-ss-nd harmonic 75.03 97.94 # CORR 9
angle_coeff @angle:nh-ss-nh harmonic 65.30 107.89 # SOURCE3 1 0.0000
angle_coeff @angle:n-ss-n harmonic 66.45 103.10 # SOURCE3 1 0.0000
angle_coeff @angle:no-ss-no harmonic 61.43 106.43 # SOURCE3 1 0.0000
angle_coeff @angle:oh-ss-oh harmonic 68.23 104.25 # SOURCE3 1 0.0000
angle_coeff @angle:o-ss-o harmonic 69.80 119.30 # SOURCE2 1 0.0000
angle_coeff @angle:o-ss-p5 harmonic 78.64 106.41 # SOURCE3 1 0.0000
angle_coeff @angle:o-ss-s6 harmonic 62.35 105.39 # SOURCE3 1
angle_coeff @angle:os-ss-os harmonic 67.76 102.99 # SOURCE3 1 0.0000
angle_coeff @angle:o-ss-ss harmonic 62.04 112.70 # SOURCE2 1 0.0000
angle_coeff @angle:p2-ss-p2 harmonic 105.52 99.52 # SOURCE3 1 0.0000
angle_coeff @angle:p3-ss-p3 harmonic 96.77 101.67 # SOURCE3 1
angle_coeff @angle:p5-ss-p5 harmonic 103.25 89.83 # SOURCE3 1 0.0000
angle_coeff @angle:s4-ss-s4 harmonic 60.86 96.08 # SOURCE3 1 0.0000
angle_coeff @angle:s4-ss-s6 harmonic 59.93 101.26 # SOURCE3 1
angle_coeff @angle:s6-ss-s6 harmonic 60.46 101.81 # SOURCE3 1 0.0000
angle_coeff @angle:sh-ss-sh harmonic 60.28 107.54 # SOURCE3 1 0.0000
angle_coeff @angle:sh-ss-ss harmonic 60.81 106.53 # SOURCE3 1
angle_coeff @angle:s-ss-s harmonic 57.67 115.04 # SOURCE3 1
angle_coeff @angle:ss-ss-ss harmonic 60.44 108.76 # SOURCE4 8 0.2385
angle_coeff @angle:c3-sx-ca harmonic 61.85 96.41 # SOURCE4 13 0.3130
angle_coeff @angle:c3-sx-cc harmonic 62.52 95.11 # SOURCE4 17 0.6557
angle_coeff @angle:c3-sx-ce harmonic 62.82 94.95 # SOURCE3 3 0.0007
angle_coeff @angle:c3-sx-cf harmonic 62.82 94.95 # SOURCE3 3 same_as_c3-sx-ce
angle_coeff @angle:c3-sx-ne harmonic 65.33 90.06 # SOURCE3 5 1.9627
angle_coeff @angle:c3-sx-nf harmonic 65.33 90.06 # SOURCE3 5 same_as_c3-sx-ne
angle_coeff @angle:c3-sx-o harmonic 64.94 107.88 # SOURCE3 30 0.8721
angle_coeff @angle:c3-sx-pe harmonic 76.99 94.32 # SOURCE3 7 0.5547
angle_coeff @angle:c3-sx-pf harmonic 76.99 94.32 # SOURCE3 7 same_as_c3-sx-pe
angle_coeff @angle:c3-sx-px harmonic 74.26 96.46 # SOURCE3 3 1.3351
angle_coeff @angle:c3-sx-py harmonic 74.13 95.67 # SOURCE3 1 0.0000
angle_coeff @angle:c3-sx-sx harmonic 57.22 91.47 # SOURCE3 4 1.9919
angle_coeff @angle:c3-sx-sy harmonic 58.71 95.47 # SOURCE3 3 2.8422
angle_coeff @angle:ca-sx-ca harmonic 61.97 95.21 # SOURCE3 1 0.0000
angle_coeff @angle:ca-sx-o harmonic 64.82 106.89 # SOURCE4 25 0.5562
angle_coeff @angle:c-sx-c3 harmonic 62.01 92.71 # SOURCE3 3 0.3095
angle_coeff @angle:c-sx-c harmonic 62.83 86.85 # SOURCE3 1 0.0000
angle_coeff @angle:cc-sx-o harmonic 65.92 104.49 # SOURCE4 17 1.7759
angle_coeff @angle:ce-sx-ce harmonic 63.02 94.96 # SOURCE3 1 0.0000
angle_coeff @angle:ce-sx-o harmonic 65.38 107.47 # SOURCE3 5 0.3128
angle_coeff @angle:cf-sx-cf harmonic 63.02 94.96 # SOURCE3 1 same_as_ce-sx-ce
angle_coeff @angle:cf-sx-o harmonic 65.38 107.47 # SOURCE3 5 same_as_ce-sx-o
angle_coeff @angle:c-sx-o harmonic 63.47 106.17 # SOURCE3 5 0.9477
angle_coeff @angle:ne-sx-ne harmonic 66.37 90.17 # SOURCE3 1 0.0000
angle_coeff @angle:ne-sx-o harmonic 65.36 109.20 # SOURCE3 7 1.4542
angle_coeff @angle:nf-sx-nf harmonic 66.37 90.17 # SOURCE3 1 same_as_ne-sx-ne
angle_coeff @angle:nf-sx-o harmonic 65.36 109.20 # SOURCE3 7 same_as_ne-sx-o
angle_coeff @angle:o-sx-pe harmonic 77.00 106.43 # SOURCE3 9 2.8345
angle_coeff @angle:o-sx-pf harmonic 77.00 106.43 # SOURCE3 9 same_as_o-sx-pe
angle_coeff @angle:o-sx-px harmonic 75.16 104.77 # SOURCE3 3 1.9810
angle_coeff @angle:o-sx-py harmonic 73.10 109.13 # SOURCE3 7 5.6840
angle_coeff @angle:o-sx-sx harmonic 55.68 104.65 # SOURCE3 6 3.0524
angle_coeff @angle:o-sx-sy harmonic 59.44 103.41 # SOURCE3 5 0.9618
angle_coeff @angle:pe-sx-pe harmonic 99.19 92.62 # SOURCE3 1 0.0000
angle_coeff @angle:pf-sx-pf harmonic 99.19 92.62 # SOURCE3 1 same_as_pe-sx-pe
angle_coeff @angle:py-sx-py harmonic 110.11 69.23 # SOURCE3 3 17.4143
angle_coeff @angle:sx-sx-sx harmonic 58.65 84.90 # SOURCE3 1 0.0000
angle_coeff @angle:sy-sx-sy harmonic 59.25 93.52 # SOURCE3 1 0.0000
angle_coeff @angle:c3-sy-ca harmonic 60.74 103.86 # SOURCE4 54 0.3180
angle_coeff @angle:c3-sy-cc harmonic 61.24 102.19 # SOURCE4 12 1.5324
angle_coeff @angle:c3-sy-ce harmonic 60.79 103.81 # SOURCE3 3 0.3368
angle_coeff @angle:c3-sy-cf harmonic 60.79 103.81 # SOURCE3 3 same_as_c3-sy-ce
angle_coeff @angle:c3-sy-ne harmonic 63.01 103.12 # SOURCE3 5 4.1882
angle_coeff @angle:c3-sy-nf harmonic 63.01 103.12 # SOURCE3 5 same_as_c3-sy-ne
angle_coeff @angle:c3-sy-o harmonic 65.97 108.48 # SOURCE3 62 0.8576
angle_coeff @angle:c3-sy-pe harmonic 71.79 106.03 # SOURCE3 6 2.6117
angle_coeff @angle:c3-sy-pf harmonic 71.79 106.03 # SOURCE3 6 same_as_c3-sy-pe
angle_coeff @angle:c3-sy-px harmonic 71.71 103.62 # SOURCE3 3 0.7078
angle_coeff @angle:c3-sy-py harmonic 73.48 103.39 # SOURCE3 3 0.4563
angle_coeff @angle:c3-sy-sx harmonic 56.27 104.64 # SOURCE3 3 4.6276
angle_coeff @angle:c3-sy-sy harmonic 57.43 100.78 # SOURCE3 4 1.1633
angle_coeff @angle:ca-sy-ca harmonic 60.65 104.04 # SOURCE4 25 2.0762
angle_coeff @angle:ca-sy-cc harmonic 60.36 105.09 # SOURCE4 5 0.3628
angle_coeff @angle:ca-sy-n3 harmonic 64.10 102.48 # SOURCE4 180 1.0802
angle_coeff @angle:ca-sy-n harmonic 62.89 105.45 # SOURCE4 51 1.1497
angle_coeff @angle:ca-sy-ne harmonic 62.86 103.47 # SOURCE4 11 1.6071
angle_coeff @angle:ca-sy-nh harmonic 62.86 105.59 # SOURCE4 78 1.5805
angle_coeff @angle:ca-sy-o harmonic 65.84 108.73 # SOURCE3 26 1.2638
angle_coeff @angle:ca-sy-oh harmonic 65.64 101.25 # SOURCE4 23 0.9100
angle_coeff @angle:ca-sy-os harmonic 67.64 92.98 # SOURCE3 1 0.0000
angle_coeff @angle:c-sy-c3 harmonic 60.09 101.25 # SOURCE3 3 1.1850
angle_coeff @angle:c-sy-c harmonic 59.23 99.81 # SOURCE3 1 0.0000
angle_coeff @angle:cc-sy-n3 harmonic 64.10 102.54 # CORR 30
angle_coeff @angle:cc-sy-o harmonic 66.17 107.71 # CORR 100
angle_coeff @angle:cd-sy-n3 harmonic 64.10 102.54 # CORR 30
angle_coeff @angle:cd-sy-nh harmonic 65.53 97.20 # SOURCE4 6 0.2429
angle_coeff @angle:cd-sy-o harmonic 66.17 107.71 # CORR 100
angle_coeff @angle:ce-sy-ce harmonic 61.09 102.78 # SOURCE3 1 0.0000
angle_coeff @angle:ce-sy-o harmonic 66.35 107.25 # SOURCE3 10 0.5477
angle_coeff @angle:cf-sy-cf harmonic 61.09 102.78 # SOURCE3 1 same_as_ce-sy-ce
angle_coeff @angle:cf-sy-o harmonic 66.35 107.25 # SOURCE3 10 same_as_ce-sy-o
angle_coeff @angle:c-sy-o harmonic 64.07 107.23 # SOURCE3 10 0.8425
angle_coeff @angle:f-sy-o harmonic 63.64 105.60 # SOURCE4 7 0.2000
angle_coeff @angle:n2-sy-o harmonic 61.16 123.53 # SOURCE4 6 1.2388
angle_coeff @angle:n3-sy-ne harmonic 66.36 102.40 # SOURCE4 5 1.3390
angle_coeff @angle:n3-sy-o harmonic 70.45 107.11 # SOURCE4 375 1.1257
angle_coeff @angle:na-sy-na harmonic 67.74 98.04 # SOURCE3 1
angle_coeff @angle:nc-sy-nc harmonic 75.24 98.04 # SOURCE3 2
angle_coeff @angle:nd-sy-nd harmonic 75.24 98.04 # SOURCE3 2
angle_coeff @angle:ne-sy-ne harmonic 66.58 98.62 # SOURCE3 1 0.0000
angle_coeff @angle:ne-sy-o harmonic 68.89 107.06 # SOURCE3 14 2.2705
angle_coeff @angle:nf-sy-nf harmonic 66.58 98.62 # SOURCE3 1 same_as_ne-sy-ne
angle_coeff @angle:nf-sy-o harmonic 68.89 107.06 # SOURCE3 14 same_as_ne-sy-o
angle_coeff @angle:nh-sy-o harmonic 70.18 106.38 # SOURCE4 123 1.6517
angle_coeff @angle:n-sy-o harmonic 69.79 107.50 # SOURCE4 61 1.8720
angle_coeff @angle:o-sy-o harmonic 72.40 121.88 # SOURCE3 46 0.9495
angle_coeff @angle:o-sy-oh harmonic 72.26 106.93 # SOURCE3 8 0.7424
angle_coeff @angle:o-sy-os harmonic 70.39 108.31 # SOURCE4 7 0.1222
angle_coeff @angle:o-sy-pe harmonic 75.40 106.90 # SOURCE3 12 1.4524
angle_coeff @angle:o-sy-pf harmonic 75.40 106.90 # SOURCE3 12 same_as_o-sy-pe
angle_coeff @angle:o-sy-px harmonic 74.45 106.17 # SOURCE3 6 0.7059
angle_coeff @angle:o-sy-py harmonic 76.54 106.67 # SOURCE3 10 0.6478
angle_coeff @angle:o-sy-sx harmonic 58.62 106.33 # SOURCE3 10 2.0456
angle_coeff @angle:o-sy-sy harmonic 58.79 106.19 # SOURCE3 12 0.1754
angle_coeff @angle:py-sy-py harmonic 92.79 104.49 # SOURCE3 1 0.0000
angle_coeff @angle:sx-sy-sx harmonic 56.74 101.99 # SOURCE3 1 0.0000
angle_coeff @angle:sy-sy-sy harmonic 56.50 103.29 # SOURCE3 1 0.0000
angle_coeff @angle:c2-c1-cf harmonic 58.18 179.01 # NEW 6
angle_coeff @angle:c3-c1-ch harmonic 55.79 178.52 # NEW 39
angle_coeff @angle:nf-c1-s harmonic 57.59 175.81 # NEW 8
angle_coeff @angle:br-c2-cf harmonic 63.21 121.59 # NEW 7
angle_coeff @angle:cd-c2-h4 harmonic 49.19 120.33 # NEW 7
angle_coeff @angle:cd-c2-nh harmonic 69.46 122.96 # NEW 10
angle_coeff @angle:cd-c2-o harmonic 72.80 123.59 # NEW 6
angle_coeff @angle:cf-c2-cl harmonic 58.06 123.90 # NEW 11
angle_coeff @angle:cf-c2-h4 harmonic 49.38 122.29 # NEW 75
angle_coeff @angle:cf-c2-na harmonic 68.82 123.71 # NEW 6
angle_coeff @angle:cf-c2-nh harmonic 70.64 120.72 # NEW 93
angle_coeff @angle:cf-c2-no harmonic 68.45 119.65 # NEW 5
angle_coeff @angle:cf-c2-o harmonic 73.66 123.08 # NEW 5
angle_coeff @angle:cf-c2-oh harmonic 70.90 123.27 # NEW 42
angle_coeff @angle:cf-c2-os harmonic 70.47 122.52 # NEW 51
angle_coeff @angle:h4-c2-nf harmonic 52.87 119.63 # NEW 10
angle_coeff @angle:h5-c2-nf harmonic 52.76 119.62 # NEW 17
angle_coeff @angle:nf-c2-os harmonic 74.86 118.76 # NEW 5
angle_coeff @angle:nf-c2-ss harmonic 65.41 120.06 # NEW 9
angle_coeff @angle:n-c2-nf harmonic 70.89 125.38 # NEW 10
angle_coeff @angle:ca-c3-cf harmonic 63.81 112.33 # NEW 51
angle_coeff @angle:cd-c3-cx harmonic 63.85 112.55 # NEW 5
angle_coeff @angle:c-c3-cf harmonic 64.02 111.98 # NEW 16
angle_coeff @angle:cd-c3-hx harmonic 47.17 111.02 # NEW 9
angle_coeff @angle:cd-c3-n2 harmonic 66.85 110.47 # NEW 11
angle_coeff @angle:cd-c3-n4 harmonic 64.88 115.58 # NEW 6
angle_coeff @angle:cd-c3-na harmonic 66.43 113.39 # NEW 8
angle_coeff @angle:cd-c3-p5 harmonic 76.89 116.23 # NEW 6
angle_coeff @angle:cf-c3-cf harmonic 64.24 111.44 # NEW 18
angle_coeff @angle:cf-c3-n harmonic 67.09 110.41 # NEW 6
angle_coeff @angle:cf-c3-oh harmonic 68.00 111.05 # NEW 17
angle_coeff @angle:cf-c3-os harmonic 68.64 108.10 # NEW 16
angle_coeff @angle:cf-c3-ss harmonic 61.87 111.10 # NEW 7
angle_coeff @angle:cd-ca-cq harmonic 64.63 124.30 # NEW 10
angle_coeff @angle:cf-ca-na harmonic 67.44 119.85 # NEW 9
angle_coeff @angle:ch-ca-cq harmonic 65.26 121.53 # NEW 12
angle_coeff @angle:cl-ca-cq harmonic 58.19 120.31 # NEW 18
angle_coeff @angle:cq-ca-f harmonic 67.10 119.39 # NEW 16
angle_coeff @angle:cq-ca-h4 harmonic 48.15 120.03 # NEW 27
angle_coeff @angle:cq-ca-na harmonic 72.91 108.79 # NEW 165
angle_coeff @angle:cq-ca-nb harmonic 68.56 123.72 # NEW 50
angle_coeff @angle:cq-ca-nh harmonic 68.66 121.52 # NEW 11
angle_coeff @angle:cq-ca-oh harmonic 69.26 120.96 # NEW 12
angle_coeff @angle:cq-ca-ss harmonic 63.87 112.75 # NEW 8
angle_coeff @angle:ca-c-nf harmonic 67.74 114.39 # NEW 5
angle_coeff @angle:br-cd-c harmonic 63.98 115.68 # NEW 8
angle_coeff @angle:br-cd-cd harmonic 61.82 124.89 # NEW 8
angle_coeff @angle:br-cd-cc harmonic 62.26 124.56 # NEW 32
angle_coeff @angle:br-cd-na harmonic 64.60 121.42 # NEW 6
angle_coeff @angle:ca-cd-cf harmonic 62.51 127.87 # NEW 11
angle_coeff @angle:ca-cd-nh harmonic 67.46 122.45 # NEW 9
angle_coeff @angle:cd-c-cf harmonic 64.64 115.68 # NEW 6
angle_coeff @angle:cd-cd-f harmonic 66.35 119.41 # NEW 7
angle_coeff @angle:c-cd-ch harmonic 64.98 118.14 # NEW 7
angle_coeff @angle:cd-cd-sy harmonic 59.22 128.36 # NEW 8
angle_coeff @angle:cc-cd-f harmonic 67.42 121.08 # NEW 28
angle_coeff @angle:cc-cd-no harmonic 65.78 128.95 # NEW 117
angle_coeff @angle:c-cd-f harmonic 66.16 116.87 # NEW 16
angle_coeff @angle:ch-cd-na harmonic 67.51 122.35 # NEW 5
angle_coeff @angle:ch-cd-ss harmonic 62.33 120.70 # NEW 12
angle_coeff @angle:cd-c-h4 harmonic 47.13 115.45 # NEW 5
angle_coeff @angle:cl-cd-na harmonic 59.37 121.61 # NEW 12
angle_coeff @angle:cl-cd-ss harmonic 58.09 119.85 # NEW 11
angle_coeff @angle:c-cd-nf harmonic 67.11 119.88 # NEW 6
angle_coeff @angle:cd-c-s harmonic 61.67 127.94 # NEW 12
angle_coeff @angle:cd-c-ss harmonic 63.47 112.52 # NEW 10
angle_coeff @angle:cx-cd-nc harmonic 65.61 127.75 # NEW 12
angle_coeff @angle:cx-cd-os harmonic 67.94 118.08 # NEW 10
angle_coeff @angle:cc-c-cx harmonic 63.88 117.46 # NEW 13
angle_coeff @angle:cc-c-nc harmonic 68.65 113.75 # NEW 14
angle_coeff @angle:cf-c-cx harmonic 63.95 116.25 # NEW 6
angle_coeff @angle:cf-c-h4 harmonic 46.93 114.88 # NEW 19
angle_coeff @angle:cf-c-ss harmonic 63.94 110.39 # NEW 5
angle_coeff @angle:na-cd-no harmonic 68.48 124.90 # NEW 48
angle_coeff @angle:na-cd-oh harmonic 73.25 117.26 # NEW 16
angle_coeff @angle:na-cd-sx harmonic 63.25 117.04 # NEW 13
angle_coeff @angle:na-cd-sy harmonic 63.13 120.55 # NEW 7
angle_coeff @angle:nd-cd-no harmonic 69.31 121.54 # NEW 7
angle_coeff @angle:nc-cd-nc harmonic 70.88 128.17 # NEW 7
angle_coeff @angle:nc-cd-nf harmonic 69.29 129.66 # NEW 7
angle_coeff @angle:nc-cd-no harmonic 69.90 122.68 # NEW 16
angle_coeff @angle:nc-cd-sh harmonic 62.75 124.92 # NEW 5
angle_coeff @angle:nc-cd-sx harmonic 60.81 127.60 # NEW 14
angle_coeff @angle:nc-cd-sy harmonic 62.75 123.08 # NEW 13
angle_coeff @angle:nf-cd-ss harmonic 65.39 116.99 # NEW 7
angle_coeff @angle:n-cd-n2 harmonic 74.78 114.48 # NEW 15
angle_coeff @angle:no-cd-os harmonic 71.01 117.59 # NEW 62
angle_coeff @angle:no-cd-ss harmonic 63.76 121.10 # NEW 10
angle_coeff @angle:ca-cc-cf harmonic 65.09 125.10 # NEW 9
angle_coeff @angle:ca-cc-na harmonic 67.03 123.45 # NEW 39
angle_coeff @angle:cd-cc-cg harmonic 64.92 126.05 # NEW 30
angle_coeff @angle:cd-cc-cy harmonic 63.93 122.13 # NEW 10
angle_coeff @angle:cd-cc-nd harmonic 69.42 123.82 # NEW 14
angle_coeff @angle:cc-cc-cy harmonic 63.17 120.93 # NEW 6
angle_coeff @angle:cf-cc-nc harmonic 68.22 124.90 # NEW 5
angle_coeff @angle:c-cc-h4 harmonic 46.77 118.19 # NEW 8
angle_coeff @angle:na-cc-nh harmonic 72.43 116.98 # NEW 46
angle_coeff @angle:na-cc-ss harmonic 67.07 111.46 # NEW 20
angle_coeff @angle:nc-cc-nc harmonic 69.47 125.58 # NEW 13
angle_coeff @angle:oh-cc-os harmonic 75.54 111.61 # NEW 6
angle_coeff @angle:c2-cf-cl harmonic 57.87 119.51 # NEW 24
angle_coeff @angle:c2-cf-h4 harmonic 48.64 125.58 # NEW 11
angle_coeff @angle:c2-cf-n1 harmonic 72.67 117.85 # NEW 7
angle_coeff @angle:c2-cf-na harmonic 69.29 119.19 # NEW 5
angle_coeff @angle:c2-cf-oh harmonic 70.32 123.78 # NEW 10
angle_coeff @angle:c3-cf-ch harmonic 63.79 118.48 # NEW 8
angle_coeff @angle:c3-cf-ne harmonic 67.26 120.75 # NEW 6
angle_coeff @angle:c3-cf-nh harmonic 65.76 119.90 # NEW 5
angle_coeff @angle:ca-cf-cf harmonic 63.84 119.62 # NEW 14
angle_coeff @angle:ca-cf-cl harmonic 57.99 114.22 # NEW 6
angle_coeff @angle:ca-cf-h4 harmonic 46.71 116.86 # NEW 74
angle_coeff @angle:ca-cf-nh harmonic 67.87 115.51 # NEW 93
angle_coeff @angle:ca-cf-os harmonic 68.60 115.58 # NEW 8
angle_coeff @angle:ca-cf-ss harmonic 61.21 117.73 # NEW 5
angle_coeff @angle:c-cf-ca harmonic 63.79 117.98 # NEW 8
angle_coeff @angle:cd-cf-cc harmonic 63.28 130.36 # NEW 5
angle_coeff @angle:c-cf-cf harmonic 63.46 120.89 # NEW 16
angle_coeff @angle:c-cf-ch harmonic 64.57 118.32 # NEW 15
angle_coeff @angle:cd-cf-h4 harmonic 47.52 115.40 # NEW 29
angle_coeff @angle:c-cf-cl harmonic 57.67 115.40 # NEW 6
angle_coeff @angle:cd-cf-nh harmonic 67.31 119.17 # NEW 8
angle_coeff @angle:c-cf-cy harmonic 72.72 88.22 # NEW 19
angle_coeff @angle:cf-cf-cl harmonic 57.29 117.93 # NEW 12
angle_coeff @angle:cf-cf-oh harmonic 69.29 116.89 # NEW 11
angle_coeff @angle:ce-cf-cy harmonic 60.53 137.74 # NEW 13
angle_coeff @angle:ce-cf-h4 harmonic 49.02 123.76 # NEW 5
angle_coeff @angle:ce-cf-n1 harmonic 72.03 120.03 # NEW 6
angle_coeff @angle:ce-cf-nh harmonic 69.48 121.52 # NEW 12
angle_coeff @angle:ch-cf-n2 harmonic 69.59 121.43 # NEW 6
angle_coeff @angle:c-cf-oh harmonic 68.34 117.92 # NEW 5
angle_coeff @angle:c-cf-os harmonic 69.09 113.78 # NEW 21
angle_coeff @angle:h4-cf-n1 harmonic 52.58 116.36 # NEW 7
angle_coeff @angle:h4-cf-nf harmonic 49.72 115.81 # NEW 7
angle_coeff @angle:n2-cf-os harmonic 74.58 118.13 # NEW 6
angle_coeff @angle:n2-cf-ss harmonic 64.40 117.23 # NEW 6
angle_coeff @angle:nf-cf-nh harmonic 71.89 112.91 # NEW 12
angle_coeff @angle:ne-cf-nh harmonic 73.31 118.13 # NEW 6
angle_coeff @angle:ca-ce-cd harmonic 62.70 130.80 # NEW 12
angle_coeff @angle:c-ce-cc harmonic 64.25 117.76 # NEW 10
angle_coeff @angle:c-ce-n2 harmonic 70.16 114.88 # NEW 5
angle_coeff @angle:h4-ce-nf harmonic 52.29 120.21 # NEW 6
angle_coeff @angle:c1-ch-cd harmonic 56.97 178.60 # NEW 6
angle_coeff @angle:ch-cg-cg harmonic 58.68 179.67 # NEW 7
angle_coeff @angle:n-c-nf harmonic 74.43 110.37 # NEW 10
angle_coeff @angle:ca-cq-na harmonic 68.78 119.43 # NEW 21
angle_coeff @angle:nb-cq-nb harmonic 71.31 125.72 # NEW 5
angle_coeff @angle:cd-cx-hc harmonic 47.37 113.84 # NEW 15
angle_coeff @angle:cf-cy-h2 harmonic 45.50 117.25 # NEW 17
angle_coeff @angle:cf-cy-n harmonic 74.69 88.02 # NEW 14
angle_coeff @angle:cf-cy-ss harmonic 58.47 121.33 # NEW 13
angle_coeff @angle:cd-n2-na harmonic 73.01 108.92 # NEW 9
angle_coeff @angle:cd-n2-nh harmonic 70.37 118.47 # NEW 6
angle_coeff @angle:c3-n4-cd harmonic 62.84 111.09 # NEW 7
angle_coeff @angle:c3-na-cq harmonic 63.76 119.46 # NEW 7
angle_coeff @angle:ca-na-cq harmonic 65.88 120.96 # NEW 20
angle_coeff @angle:cd-na-cf harmonic 63.05 126.61 # NEW 8
angle_coeff @angle:cq-nb-nb harmonic 68.79 121.11 # NEW 12
angle_coeff @angle:c-n-cf harmonic 62.21 131.83 # NEW 146
angle_coeff @angle:ca-nc-nd harmonic 73.55 108.41 # NEW 9
angle_coeff @angle:c2-nf-ch harmonic 68.36 123.58 # NEW 12
angle_coeff @angle:c-nf-sy harmonic 61.66 116.05 # NEW 6
angle_coeff @angle:c3-nh-ce harmonic 63.47 119.92 # NEW 20
angle_coeff @angle:cd-nh-n2 harmonic 68.23 119.66 # NEW 5
angle_coeff @angle:cd-nh-sy harmonic 61.22 122.91 # NEW 23
angle_coeff @angle:cf-nh-sy harmonic 63.58 112.97 # NEW 7
angle_coeff @angle:hn-n-nd harmonic 50.74 115.24 # NEW 10
angle_coeff @angle:cd-no-o harmonic 70.34 117.52 # NEW 198
angle_coeff @angle:n3-py-nf harmonic 41.93 108.44 # NEW 12
angle_coeff @angle:cd-s6-o harmonic 70.23 103.63 # NEW 9
angle_coeff @angle:cd-sh-hs harmonic 46.41 95.38 # NEW 8
angle_coeff @angle:c-ss-cd harmonic 65.61 92.43 # NEW 14
angle_coeff @angle:c3-sx-cd harmonic 62.52 95.11 # NEW 17
angle_coeff @angle:cd-sx-o harmonic 65.92 104.49 # NEW 17
angle_coeff @angle:c3-sy-cd harmonic 61.24 102.19 # NEW 12
angle_coeff @angle:ca-sy-cd harmonic 60.36 105.09 # NEW 5
angle_coeff @angle:ca-sy-nf harmonic 62.86 103.47 # NEW 11
angle_coeff @angle:cc-sy-nh harmonic 65.53 97.20 # NEW 6
angle_coeff @angle:n3-sy-nf harmonic 66.36 102.40 # NEW 5
} # (end of angle_coeffs)
write_once("Data Angles By Type") {
@angle:hw-ow-hw @atom:hw @atom:ow @atom:hw
@angle:hw-hw-ow @atom:hw @atom:hw @atom:ow
@angle:br-c1-br @atom:br @atom:c1 @atom:br
@angle:br-c1-c1 @atom:br @atom:c1 @atom:c1
@angle:c1-c1-c1 @atom:c1 @atom:c1 @atom:c1
@angle:c1-c1-c2 @atom:c1 @atom:c1 @atom:c2
@angle:c1-c1-c3 @atom:c1 @atom:c1 @atom:c3
@angle:c1-c1-ca @atom:c1 @atom:c1 @atom:ca
@angle:c1-c1-cl @atom:c1 @atom:c1 @atom:cl
@angle:c1-c1-f @atom:c1 @atom:c1 @atom:f
@angle:c1-c1-ha @atom:c1 @atom:c1 @atom:ha
@angle:c1-c1-hc @atom:c1 @atom:c1 @atom:hc
@angle:c1-c1-i @atom:c1 @atom:c1 @atom:i
@angle:c1-c1-n1 @atom:c1 @atom:c1 @atom:n1
@angle:c1-c1-n2 @atom:c1 @atom:c1 @atom:n2
@angle:c1-c1-n3 @atom:c1 @atom:c1 @atom:n3
@angle:c1-c1-n4 @atom:c1 @atom:c1 @atom:n4
@angle:c1-c1-n @atom:c1 @atom:c1 @atom:n
@angle:c1-c1-na @atom:c1 @atom:c1 @atom:na
@angle:c1-c1-nh @atom:c1 @atom:c1 @atom:nh
@angle:c1-c1-no @atom:c1 @atom:c1 @atom:no
@angle:c1-c1-o @atom:c1 @atom:c1 @atom:o
@angle:c1-c1-oh @atom:c1 @atom:c1 @atom:oh
@angle:c1-c1-os @atom:c1 @atom:c1 @atom:os
@angle:c1-c1-p2 @atom:c1 @atom:c1 @atom:p2
@angle:c1-c1-p3 @atom:c1 @atom:c1 @atom:p3
@angle:c1-c1-p4 @atom:c1 @atom:c1 @atom:p4
@angle:c1-c1-p5 @atom:c1 @atom:c1 @atom:p5
@angle:c1-c1-s4 @atom:c1 @atom:c1 @atom:s4
@angle:c1-c1-s6 @atom:c1 @atom:c1 @atom:s6
@angle:c1-c1-s @atom:c1 @atom:c1 @atom:s
@angle:c1-c1-sh @atom:c1 @atom:c1 @atom:sh
@angle:c1-c1-ss @atom:c1 @atom:c1 @atom:ss
@angle:c2-c1-c2 @atom:c2 @atom:c1 @atom:c2
@angle:c2-c1-ce @atom:c2 @atom:c1 @atom:ce
@angle:c2-c1-n1 @atom:c2 @atom:c1 @atom:n1
@angle:c2-c1-o @atom:c2 @atom:c1 @atom:o
@angle:c2-c1-s2 @atom:c2 @atom:c1 @atom:s2
@angle:c3-c1-c3 @atom:c3 @atom:c1 @atom:c3
@angle:c3-c1-cg @atom:c3 @atom:c1 @atom:cg
@angle:c3-c1-n1 @atom:c3 @atom:c1 @atom:n1
@angle:ca-c1-ca @atom:ca @atom:c1 @atom:ca
@angle:c-c1-c1 @atom:c @atom:c1 @atom:c1
@angle:cg-c1-ha @atom:cg @atom:c1 @atom:ha
@angle:ch-c1-ha @atom:ch @atom:c1 @atom:ha
@angle:cl-c1-cl @atom:cl @atom:c1 @atom:cl
@angle:f-c1-f @atom:f @atom:c1 @atom:f
@angle:i-c1-i @atom:i @atom:c1 @atom:i
@angle:n1-c1-n1 @atom:n1 @atom:c1 @atom:n1
@angle:n1-c1-n3 @atom:n1 @atom:c1 @atom:n3
@angle:n1-c1-nh @atom:n1 @atom:c1 @atom:nh
@angle:n1-c1-os @atom:n1 @atom:c1 @atom:os
@angle:n1-c1-p3 @atom:n1 @atom:c1 @atom:p3
@angle:n1-c1-ss @atom:n1 @atom:c1 @atom:ss
@angle:n2-c1-n2 @atom:n2 @atom:c1 @atom:n2
@angle:n2-c1-o @atom:n2 @atom:c1 @atom:o
@angle:n2-c1-s @atom:n2 @atom:c1 @atom:s
@angle:n3-c1-n3 @atom:n3 @atom:c1 @atom:n3
@angle:n4-c1-n4 @atom:n4 @atom:c1 @atom:n4
@angle:na-c1-na @atom:na @atom:c1 @atom:na
@angle:ne-c1-o @atom:ne @atom:c1 @atom:o
@angle:ne-c1-s @atom:ne @atom:c1 @atom:s
@angle:nf-c1-o @atom:nf @atom:c1 @atom:o
@angle:nh-c1-nh @atom:nh @atom:c1 @atom:nh
@angle:n-c1-n @atom:n @atom:c1 @atom:n
@angle:no-c1-no @atom:no @atom:c1 @atom:no
@angle:oh-c1-oh @atom:oh @atom:c1 @atom:oh
@angle:o-c1-o @atom:o @atom:c1 @atom:o
@angle:os-c1-os @atom:os @atom:c1 @atom:os
@angle:p2-c1-p2 @atom:p2 @atom:c1 @atom:p2
@angle:p3-c1-p3 @atom:p3 @atom:c1 @atom:p3
@angle:p4-c1-p4 @atom:p4 @atom:c1 @atom:p4
@angle:p5-c1-p5 @atom:p5 @atom:c1 @atom:p5
@angle:s2-c1-s2 @atom:s2 @atom:c1 @atom:s2
@angle:s4-c1-s4 @atom:s4 @atom:c1 @atom:s4
@angle:s6-c1-s6 @atom:s6 @atom:c1 @atom:s6
@angle:sh-c1-sh @atom:sh @atom:c1 @atom:sh
@angle:s-c1-s @atom:s @atom:c1 @atom:s
@angle:ss-c1-ss @atom:ss @atom:c1 @atom:ss
@angle:br-c2-br @atom:br @atom:c2 @atom:br
@angle:br-c2-c2 @atom:br @atom:c2 @atom:c2
@angle:br-c2-c3 @atom:br @atom:c2 @atom:c3
@angle:br-c2-ce @atom:br @atom:c2 @atom:ce
@angle:br-c2-h4 @atom:br @atom:c2 @atom:h4
@angle:br-c2-ha @atom:br @atom:c2 @atom:ha
@angle:c1-c2-c1 @atom:c1 @atom:c2 @atom:c1
@angle:c1-c2-c2 @atom:c1 @atom:c2 @atom:c2
@angle:c1-c2-c3 @atom:c1 @atom:c2 @atom:c3
@angle:c1-c2-f @atom:c1 @atom:c2 @atom:f
@angle:c1-c2-ha @atom:c1 @atom:c2 @atom:ha
@angle:c2-c2-c2 @atom:c2 @atom:c2 @atom:c2
@angle:c2-c2-c3 @atom:c2 @atom:c2 @atom:c3
@angle:c2-c2-ca @atom:c2 @atom:c2 @atom:ca
@angle:c2-c2-cc @atom:c2 @atom:c2 @atom:cc
@angle:c2-c2-cd @atom:c2 @atom:c2 @atom:cd
@angle:c2-c2-cl @atom:c2 @atom:c2 @atom:cl
@angle:c2-c2-cx @atom:c2 @atom:c2 @atom:cx
@angle:c2-c2-cy @atom:c2 @atom:c2 @atom:cy
@angle:c2-c2-f @atom:c2 @atom:c2 @atom:f
@angle:c2-c2-h4 @atom:c2 @atom:c2 @atom:h4
@angle:c2-c2-ha @atom:c2 @atom:c2 @atom:ha
@angle:c2-c2-hc @atom:c2 @atom:c2 @atom:hc
@angle:c2-c2-hx @atom:c2 @atom:c2 @atom:hx
@angle:c2-c2-i @atom:c2 @atom:c2 @atom:i
@angle:c2-c2-n1 @atom:c2 @atom:c2 @atom:n1
@angle:c2-c2-n2 @atom:c2 @atom:c2 @atom:n2
@angle:c2-c2-n3 @atom:c2 @atom:c2 @atom:n3
@angle:c2-c2-n4 @atom:c2 @atom:c2 @atom:n4
@angle:c2-c2-n @atom:c2 @atom:c2 @atom:n
@angle:c2-c2-na @atom:c2 @atom:c2 @atom:na
@angle:c2-c2-nh @atom:c2 @atom:c2 @atom:nh
@angle:c2-c2-no @atom:c2 @atom:c2 @atom:no
@angle:c2-c2-o @atom:c2 @atom:c2 @atom:o
@angle:c2-c2-oh @atom:c2 @atom:c2 @atom:oh
@angle:c2-c2-os @atom:c2 @atom:c2 @atom:os
@angle:c2-c2-p2 @atom:c2 @atom:c2 @atom:p2
@angle:c2-c2-p3 @atom:c2 @atom:c2 @atom:p3
@angle:c2-c2-p4 @atom:c2 @atom:c2 @atom:p4
@angle:c2-c2-p5 @atom:c2 @atom:c2 @atom:p5
@angle:c2-c2-s4 @atom:c2 @atom:c2 @atom:s4
@angle:c2-c2-s6 @atom:c2 @atom:c2 @atom:s6
@angle:c2-c2-s @atom:c2 @atom:c2 @atom:s
@angle:c2-c2-sh @atom:c2 @atom:c2 @atom:sh
@angle:c2-c2-ss @atom:c2 @atom:c2 @atom:ss
@angle:c3-c2-c3 @atom:c3 @atom:c2 @atom:c3
@angle:c3-c2-cc @atom:c3 @atom:c2 @atom:cc
@angle:c3-c2-cd @atom:c3 @atom:c2 @atom:cd
@angle:c3-c2-ce @atom:c3 @atom:c2 @atom:ce
@angle:c3-c2-cf @atom:c3 @atom:c2 @atom:cf
@angle:c3-c2-h4 @atom:c3 @atom:c2 @atom:h4
@angle:c3-c2-ha @atom:c3 @atom:c2 @atom:ha
@angle:c3-c2-hc @atom:c3 @atom:c2 @atom:hc
@angle:c3-c2-n2 @atom:c3 @atom:c2 @atom:n2
@angle:c3-c2-n @atom:c3 @atom:c2 @atom:n
@angle:c3-c2-na @atom:c3 @atom:c2 @atom:na
@angle:c3-c2-ne @atom:c3 @atom:c2 @atom:ne
@angle:c3-c2-nf @atom:c3 @atom:c2 @atom:nf
@angle:c3-c2-nh @atom:c3 @atom:c2 @atom:nh
@angle:c3-c2-o @atom:c3 @atom:c2 @atom:o
@angle:c3-c2-oh @atom:c3 @atom:c2 @atom:oh
@angle:c3-c2-os @atom:c3 @atom:c2 @atom:os
@angle:c3-c2-p2 @atom:c3 @atom:c2 @atom:p2
@angle:c3-c2-s @atom:c3 @atom:c2 @atom:s
@angle:c3-c2-ss @atom:c3 @atom:c2 @atom:ss
@angle:ca-c2-ca @atom:ca @atom:c2 @atom:ca
@angle:ca-c2-hc @atom:ca @atom:c2 @atom:hc
@angle:c-c2-c2 @atom:c @atom:c2 @atom:c2
@angle:c-c2-c3 @atom:c @atom:c2 @atom:c3
@angle:c-c2-c @atom:c @atom:c2 @atom:c
@angle:cc-c2-h4 @atom:cc @atom:c2 @atom:h4
@angle:cc-c2-ha @atom:cc @atom:c2 @atom:ha
@angle:cc-c2-nh @atom:cc @atom:c2 @atom:nh
@angle:cc-c2-o @atom:cc @atom:c2 @atom:o
@angle:cd-c2-ha @atom:cd @atom:c2 @atom:ha
@angle:ce-c2-cl @atom:ce @atom:c2 @atom:cl
@angle:ce-c2-h4 @atom:ce @atom:c2 @atom:h4
@angle:ce-c2-ha @atom:ce @atom:c2 @atom:ha
@angle:ce-c2-na @atom:ce @atom:c2 @atom:na
@angle:ce-c2-nh @atom:ce @atom:c2 @atom:nh
@angle:ce-c2-no @atom:ce @atom:c2 @atom:no
@angle:ce-c2-o @atom:ce @atom:c2 @atom:o
@angle:ce-c2-oh @atom:ce @atom:c2 @atom:oh
@angle:ce-c2-os @atom:ce @atom:c2 @atom:os
@angle:cf-c2-ha @atom:cf @atom:c2 @atom:ha
@angle:c-c2-ha @atom:c @atom:c2 @atom:ha
@angle:c-c2-hc @atom:c @atom:c2 @atom:hc
@angle:cl-c2-cl @atom:cl @atom:c2 @atom:cl
@angle:cl-c2-h4 @atom:cl @atom:c2 @atom:h4
@angle:cl-c2-ha @atom:cl @atom:c2 @atom:ha
@angle:cx-c2-ha @atom:cx @atom:c2 @atom:ha
@angle:f-c2-f @atom:f @atom:c2 @atom:f
@angle:f-c2-ha @atom:f @atom:c2 @atom:ha
@angle:h4-c2-n2 @atom:h4 @atom:c2 @atom:n2
@angle:h4-c2-n @atom:h4 @atom:c2 @atom:n
@angle:h4-c2-na @atom:h4 @atom:c2 @atom:na
@angle:h4-c2-ne @atom:h4 @atom:c2 @atom:ne
@angle:h4-c2-nh @atom:h4 @atom:c2 @atom:nh
@angle:h4-c2-no @atom:h4 @atom:c2 @atom:no
@angle:h4-c2-os @atom:h4 @atom:c2 @atom:os
@angle:h4-c2-ss @atom:h4 @atom:c2 @atom:ss
@angle:h5-c2-n2 @atom:h5 @atom:c2 @atom:n2
@angle:h5-c2-na @atom:h5 @atom:c2 @atom:na
@angle:h5-c2-ne @atom:h5 @atom:c2 @atom:ne
@angle:h5-c2-nh @atom:h5 @atom:c2 @atom:nh
@angle:ha-c2-ha @atom:ha @atom:c2 @atom:ha
@angle:ha-c2-n1 @atom:ha @atom:c2 @atom:n1
@angle:ha-c2-n2 @atom:ha @atom:c2 @atom:n2
@angle:ha-c2-n3 @atom:ha @atom:c2 @atom:n3
@angle:ha-c2-n @atom:ha @atom:c2 @atom:n
@angle:ha-c2-na @atom:ha @atom:c2 @atom:na
@angle:ha-c2-ne @atom:ha @atom:c2 @atom:ne
@angle:ha-c2-nf @atom:ha @atom:c2 @atom:nf
@angle:ha-c2-nh @atom:ha @atom:c2 @atom:nh
@angle:ha-c2-no @atom:ha @atom:c2 @atom:no
@angle:ha-c2-o @atom:ha @atom:c2 @atom:o
@angle:ha-c2-oh @atom:ha @atom:c2 @atom:oh
@angle:ha-c2-os @atom:ha @atom:c2 @atom:os
@angle:ha-c2-p2 @atom:ha @atom:c2 @atom:p2
@angle:ha-c2-p3 @atom:ha @atom:c2 @atom:p3
@angle:ha-c2-p4 @atom:ha @atom:c2 @atom:p4
@angle:ha-c2-p5 @atom:ha @atom:c2 @atom:p5
@angle:ha-c2-pe @atom:ha @atom:c2 @atom:pe
@angle:ha-c2-pf @atom:ha @atom:c2 @atom:pf
@angle:ha-c2-s2 @atom:ha @atom:c2 @atom:s2
@angle:ha-c2-s4 @atom:ha @atom:c2 @atom:s4
@angle:ha-c2-s @atom:ha @atom:c2 @atom:s
@angle:ha-c2-s6 @atom:ha @atom:c2 @atom:s6
@angle:ha-c2-sh @atom:ha @atom:c2 @atom:sh
@angle:ha-c2-ss @atom:ha @atom:c2 @atom:ss
@angle:hc-c2-hc @atom:hc @atom:c2 @atom:hc
@angle:hc-c2-n2 @atom:hc @atom:c2 @atom:n2
@angle:hc-c2-n @atom:hc @atom:c2 @atom:n
@angle:hc-c2-na @atom:hc @atom:c2 @atom:na
@angle:hc-c2-nh @atom:hc @atom:c2 @atom:nh
@angle:hc-c2-no @atom:hc @atom:c2 @atom:no
@angle:hc-c2-oh @atom:hc @atom:c2 @atom:oh
@angle:hc-c2-os @atom:hc @atom:c2 @atom:os
@angle:hc-c2-p3 @atom:hc @atom:c2 @atom:p3
@angle:hc-c2-p5 @atom:hc @atom:c2 @atom:p5
@angle:hc-c2-s4 @atom:hc @atom:c2 @atom:s4
@angle:hc-c2-s6 @atom:hc @atom:c2 @atom:s6
@angle:hc-c2-sh @atom:hc @atom:c2 @atom:sh
@angle:hc-c2-ss @atom:hc @atom:c2 @atom:ss
@angle:hx-c2-n4 @atom:hx @atom:c2 @atom:n4
@angle:i-c2-i @atom:i @atom:c2 @atom:i
@angle:n1-c2-n1 @atom:n1 @atom:c2 @atom:n1
@angle:n2-c2-n2 @atom:n2 @atom:c2 @atom:n2
@angle:n2-c2-n4 @atom:n2 @atom:c2 @atom:n4
@angle:n2-c2-na @atom:n2 @atom:c2 @atom:na
@angle:n2-c2-nh @atom:n2 @atom:c2 @atom:nh
@angle:n2-c2-oh @atom:n2 @atom:c2 @atom:oh
@angle:n2-c2-os @atom:n2 @atom:c2 @atom:os
@angle:n2-c2-ss @atom:n2 @atom:c2 @atom:ss
@angle:n3-c2-n3 @atom:n3 @atom:c2 @atom:n3
@angle:n4-c2-n4 @atom:n4 @atom:c2 @atom:n4
@angle:n4-c2-ss @atom:n4 @atom:c2 @atom:ss
@angle:na-c2-na @atom:na @atom:c2 @atom:na
@angle:ne-c2-nh @atom:ne @atom:c2 @atom:nh
@angle:ne-c2-os @atom:ne @atom:c2 @atom:os
@angle:ne-c2-ss @atom:ne @atom:c2 @atom:ss
@angle:nf-c2-nh @atom:nf @atom:c2 @atom:nh
@angle:nh-c2-nh @atom:nh @atom:c2 @atom:nh
@angle:nh-c2-oh @atom:nh @atom:c2 @atom:oh
@angle:nh-c2-os @atom:nh @atom:c2 @atom:os
@angle:nh-c2-ss @atom:nh @atom:c2 @atom:ss
@angle:n-c2-n2 @atom:n @atom:c2 @atom:n2
@angle:n-c2-n @atom:n @atom:c2 @atom:n
@angle:n-c2-na @atom:n @atom:c2 @atom:na
@angle:n-c2-ne @atom:n @atom:c2 @atom:ne
@angle:n-c2-nh @atom:n @atom:c2 @atom:nh
@angle:no-c2-no @atom:no @atom:c2 @atom:no
@angle:n-c2-ss @atom:n @atom:c2 @atom:ss
@angle:oh-c2-oh @atom:oh @atom:c2 @atom:oh
@angle:o-c2-o @atom:o @atom:c2 @atom:o
@angle:o-c2-oh @atom:o @atom:c2 @atom:oh
@angle:o-c2-s @atom:o @atom:c2 @atom:s
@angle:os-c2-os @atom:os @atom:c2 @atom:os
@angle:p2-c2-p2 @atom:p2 @atom:c2 @atom:p2
@angle:p3-c2-p3 @atom:p3 @atom:c2 @atom:p3
@angle:p5-c2-p5 @atom:p5 @atom:c2 @atom:p5
@angle:s4-c2-s4 @atom:s4 @atom:c2 @atom:s4
@angle:s4-c2-s6 @atom:s4 @atom:c2 @atom:s6
@angle:s6-c2-s6 @atom:s6 @atom:c2 @atom:s6
@angle:sh-c2-sh @atom:sh @atom:c2 @atom:sh
@angle:sh-c2-ss @atom:sh @atom:c2 @atom:ss
@angle:s-c2-s @atom:s @atom:c2 @atom:s
@angle:ss-c2-ss @atom:ss @atom:c2 @atom:ss
@angle:br-c3-br @atom:br @atom:c3 @atom:br
@angle:br-c3-c1 @atom:br @atom:c3 @atom:c1
@angle:br-c3-c3 @atom:br @atom:c3 @atom:c3
@angle:br-c3-c @atom:br @atom:c3 @atom:c
@angle:br-c3-h1 @atom:br @atom:c3 @atom:h1
@angle:br-c3-h2 @atom:br @atom:c3 @atom:h2
@angle:br-c3-hc @atom:br @atom:c3 @atom:hc
@angle:c1-c3-c1 @atom:c1 @atom:c3 @atom:c1
@angle:c1-c3-c2 @atom:c1 @atom:c3 @atom:c2
@angle:c1-c3-c3 @atom:c1 @atom:c3 @atom:c3
@angle:c1-c3-ca @atom:c1 @atom:c3 @atom:ca
@angle:c1-c3-cc @atom:c1 @atom:c3 @atom:cc
@angle:c1-c3-cd @atom:c1 @atom:c3 @atom:cd
@angle:c1-c3-cl @atom:c1 @atom:c3 @atom:cl
@angle:c1-c3-h1 @atom:c1 @atom:c3 @atom:h1
@angle:c1-c3-hc @atom:c1 @atom:c3 @atom:hc
@angle:c1-c3-hx @atom:c1 @atom:c3 @atom:hx
@angle:c1-c3-n3 @atom:c1 @atom:c3 @atom:n3
@angle:c1-c3-n4 @atom:c1 @atom:c3 @atom:n4
@angle:c1-c3-n @atom:c1 @atom:c3 @atom:n
@angle:c1-c3-nh @atom:c1 @atom:c3 @atom:nh
@angle:c1-c3-oh @atom:c1 @atom:c3 @atom:oh
@angle:c1-c3-os @atom:c1 @atom:c3 @atom:os
@angle:c2-c3-c2 @atom:c2 @atom:c3 @atom:c2
@angle:c2-c3-c3 @atom:c2 @atom:c3 @atom:c3
@angle:c2-c3-ca @atom:c2 @atom:c3 @atom:ca
@angle:c2-c3-cc @atom:c2 @atom:c3 @atom:cc
@angle:c2-c3-cd @atom:c2 @atom:c3 @atom:cd
@angle:c2-c3-ce @atom:c2 @atom:c3 @atom:ce
@angle:c2-c3-cf @atom:c2 @atom:c3 @atom:cf
@angle:c2-c3-cl @atom:c2 @atom:c3 @atom:cl
@angle:c2-c3-cx @atom:c2 @atom:c3 @atom:cx
@angle:c2-c3-cy @atom:c2 @atom:c3 @atom:cy
@angle:c2-c3-f @atom:c2 @atom:c3 @atom:f
@angle:c2-c3-h1 @atom:c2 @atom:c3 @atom:h1
@angle:c2-c3-h2 @atom:c2 @atom:c3 @atom:h2
@angle:c2-c3-hc @atom:c2 @atom:c3 @atom:hc
@angle:c2-c3-hx @atom:c2 @atom:c3 @atom:hx
@angle:c2-c3-n2 @atom:c2 @atom:c3 @atom:n2
@angle:c2-c3-n3 @atom:c2 @atom:c3 @atom:n3
@angle:c2-c3-n @atom:c2 @atom:c3 @atom:n
@angle:c2-c3-na @atom:c2 @atom:c3 @atom:na
@angle:c2-c3-nh @atom:c2 @atom:c3 @atom:nh
@angle:c2-c3-oh @atom:c2 @atom:c3 @atom:oh
@angle:c2-c3-os @atom:c2 @atom:c3 @atom:os
@angle:c2-c3-s4 @atom:c2 @atom:c3 @atom:s4
@angle:c2-c3-ss @atom:c2 @atom:c3 @atom:ss
@angle:c3-c3-c3 @atom:c3 @atom:c3 @atom:c3
@angle:c3-c3-ca @atom:c3 @atom:c3 @atom:ca
@angle:c3-c3-cc @atom:c3 @atom:c3 @atom:cc
@angle:c3-c3-cd @atom:c3 @atom:c3 @atom:cd
@angle:c3-c3-ce @atom:c3 @atom:c3 @atom:ce
@angle:c3-c3-cf @atom:c3 @atom:c3 @atom:cf
@angle:c3-c3-cl @atom:c3 @atom:c3 @atom:cl
@angle:c3-c3-cx @atom:c3 @atom:c3 @atom:cx
@angle:c3-c3-cy @atom:c3 @atom:c3 @atom:cy
@angle:c3-c3-f @atom:c3 @atom:c3 @atom:f
@angle:c3-c3-h1 @atom:c3 @atom:c3 @atom:h1
@angle:c3-c3-h2 @atom:c3 @atom:c3 @atom:h2
@angle:c3-c3-hc @atom:c3 @atom:c3 @atom:hc
@angle:c3-c3-hx @atom:c3 @atom:c3 @atom:hx
@angle:c3-c3-i @atom:c3 @atom:c3 @atom:i
@angle:c3-c3-n1 @atom:c3 @atom:c3 @atom:n1
@angle:c3-c3-n2 @atom:c3 @atom:c3 @atom:n2
@angle:c3-c3-n3 @atom:c3 @atom:c3 @atom:n3
@angle:c3-c3-n4 @atom:c3 @atom:c3 @atom:n4
@angle:c3-c3-n @atom:c3 @atom:c3 @atom:n
@angle:c3-c3-na @atom:c3 @atom:c3 @atom:na
@angle:c3-c3-nh @atom:c3 @atom:c3 @atom:nh
@angle:c3-c3-no @atom:c3 @atom:c3 @atom:no
@angle:c3-c3-o @atom:c3 @atom:c3 @atom:o
@angle:c3-c3-oh @atom:c3 @atom:c3 @atom:oh
@angle:c3-c3-os @atom:c3 @atom:c3 @atom:os
@angle:c3-c3-p3 @atom:c3 @atom:c3 @atom:p3
@angle:c3-c3-p5 @atom:c3 @atom:c3 @atom:p5
@angle:c3-c3-s4 @atom:c3 @atom:c3 @atom:s4
@angle:c3-c3-s6 @atom:c3 @atom:c3 @atom:s6
@angle:c3-c3-sh @atom:c3 @atom:c3 @atom:sh
@angle:c3-c3-ss @atom:c3 @atom:c3 @atom:ss
@angle:c3-c3-sy @atom:c3 @atom:c3 @atom:sy
@angle:ca-c3-ca @atom:ca @atom:c3 @atom:ca
@angle:ca-c3-cc @atom:ca @atom:c3 @atom:cc
@angle:ca-c3-cd @atom:ca @atom:c3 @atom:cd
@angle:ca-c3-ce @atom:ca @atom:c3 @atom:ce
@angle:ca-c3-cl @atom:ca @atom:c3 @atom:cl
@angle:ca-c3-cx @atom:ca @atom:c3 @atom:cx
@angle:ca-c3-f @atom:ca @atom:c3 @atom:f
@angle:ca-c3-h1 @atom:ca @atom:c3 @atom:h1
@angle:ca-c3-h2 @atom:ca @atom:c3 @atom:h2
@angle:ca-c3-hc @atom:ca @atom:c3 @atom:hc
@angle:ca-c3-hx @atom:ca @atom:c3 @atom:hx
@angle:ca-c3-n2 @atom:ca @atom:c3 @atom:n2
@angle:ca-c3-n3 @atom:ca @atom:c3 @atom:n3
@angle:ca-c3-n4 @atom:ca @atom:c3 @atom:n4
@angle:ca-c3-n @atom:ca @atom:c3 @atom:n
@angle:ca-c3-na @atom:ca @atom:c3 @atom:na
@angle:ca-c3-nc @atom:ca @atom:c3 @atom:nc
@angle:ca-c3-nd @atom:ca @atom:c3 @atom:nd
@angle:ca-c3-nh @atom:ca @atom:c3 @atom:nh
@angle:ca-c3-oh @atom:ca @atom:c3 @atom:oh
@angle:ca-c3-os @atom:ca @atom:c3 @atom:os
@angle:ca-c3-p5 @atom:ca @atom:c3 @atom:p5
@angle:ca-c3-s6 @atom:ca @atom:c3 @atom:s6
@angle:ca-c3-ss @atom:ca @atom:c3 @atom:ss
@angle:ca-c3-sx @atom:ca @atom:c3 @atom:sx
@angle:c-c3-c1 @atom:c @atom:c3 @atom:c1
@angle:c-c3-c2 @atom:c @atom:c3 @atom:c2
@angle:c-c3-c3 @atom:c @atom:c3 @atom:c3
@angle:c-c3-c @atom:c @atom:c3 @atom:c
@angle:c-c3-ca @atom:c @atom:c3 @atom:ca
@angle:c-c3-cc @atom:c @atom:c3 @atom:cc
@angle:cc-c3-cc @atom:cc @atom:c3 @atom:cc
@angle:cc-c3-cd @atom:cc @atom:c3 @atom:cd
@angle:cc-c3-cx @atom:cc @atom:c3 @atom:cx
@angle:c-c3-cd @atom:c @atom:c3 @atom:cd
@angle:c-c3-ce @atom:c @atom:c3 @atom:ce
@angle:cc-c3-f @atom:cc @atom:c3 @atom:f
@angle:cc-c3-h1 @atom:cc @atom:c3 @atom:h1
@angle:cc-c3-hc @atom:cc @atom:c3 @atom:hc
@angle:cc-c3-hx @atom:cc @atom:c3 @atom:hx
@angle:c-c3-cl @atom:c @atom:c3 @atom:cl
@angle:cc-c3-n2 @atom:cc @atom:c3 @atom:n2
@angle:cc-c3-n3 @atom:cc @atom:c3 @atom:n3
@angle:cc-c3-n4 @atom:cc @atom:c3 @atom:n4
@angle:cc-c3-n @atom:cc @atom:c3 @atom:n
@angle:cc-c3-na @atom:cc @atom:c3 @atom:na
@angle:cc-c3-nc @atom:cc @atom:c3 @atom:nc
@angle:cc-c3-nh @atom:cc @atom:c3 @atom:nh
@angle:cc-c3-oh @atom:cc @atom:c3 @atom:oh
@angle:cc-c3-os @atom:cc @atom:c3 @atom:os
@angle:cc-c3-p5 @atom:cc @atom:c3 @atom:p5
@angle:cc-c3-sh @atom:cc @atom:c3 @atom:sh
@angle:cc-c3-ss @atom:cc @atom:c3 @atom:ss
@angle:c-c3-cx @atom:c @atom:c3 @atom:cx
@angle:cd-c3-cd @atom:cd @atom:c3 @atom:cd
@angle:cd-c3-f @atom:cd @atom:c3 @atom:f
@angle:cd-c3-h1 @atom:cd @atom:c3 @atom:h1
@angle:cd-c3-hc @atom:cd @atom:c3 @atom:hc
@angle:cd-c3-n3 @atom:cd @atom:c3 @atom:n3
@angle:cd-c3-n @atom:cd @atom:c3 @atom:n
@angle:cd-c3-nd @atom:cd @atom:c3 @atom:nd
@angle:cd-c3-nh @atom:cd @atom:c3 @atom:nh
@angle:cd-c3-oh @atom:cd @atom:c3 @atom:oh
@angle:cd-c3-os @atom:cd @atom:c3 @atom:os
@angle:cd-c3-sh @atom:cd @atom:c3 @atom:sh
@angle:cd-c3-ss @atom:cd @atom:c3 @atom:ss
@angle:ce-c3-ce @atom:ce @atom:c3 @atom:ce
@angle:ce-c3-cy @atom:ce @atom:c3 @atom:cy
@angle:ce-c3-h1 @atom:ce @atom:c3 @atom:h1
@angle:ce-c3-hc @atom:ce @atom:c3 @atom:hc
@angle:ce-c3-n3 @atom:ce @atom:c3 @atom:n3
@angle:ce-c3-n @atom:ce @atom:c3 @atom:n
@angle:ce-c3-oh @atom:ce @atom:c3 @atom:oh
@angle:ce-c3-os @atom:ce @atom:c3 @atom:os
@angle:ce-c3-ss @atom:ce @atom:c3 @atom:ss
@angle:c-c3-f @atom:c @atom:c3 @atom:f
@angle:cf-c3-cy @atom:cf @atom:c3 @atom:cy
@angle:cf-c3-h1 @atom:cf @atom:c3 @atom:h1
@angle:cf-c3-hc @atom:cf @atom:c3 @atom:hc
@angle:cf-c3-n3 @atom:cf @atom:c3 @atom:n3
@angle:c-c3-h1 @atom:c @atom:c3 @atom:h1
@angle:c-c3-h2 @atom:c @atom:c3 @atom:h2
@angle:c-c3-hc @atom:c @atom:c3 @atom:hc
@angle:c-c3-hx @atom:c @atom:c3 @atom:hx
@angle:cl-c3-cl @atom:cl @atom:c3 @atom:cl
@angle:cl-c3-f @atom:cl @atom:c3 @atom:f
@angle:cl-c3-h1 @atom:cl @atom:c3 @atom:h1
@angle:cl-c3-h2 @atom:cl @atom:c3 @atom:h2
@angle:cl-c3-hc @atom:cl @atom:c3 @atom:hc
@angle:cl-c3-os @atom:cl @atom:c3 @atom:os
@angle:cl-c3-ss @atom:cl @atom:c3 @atom:ss
@angle:c-c3-n2 @atom:c @atom:c3 @atom:n2
@angle:c-c3-n3 @atom:c @atom:c3 @atom:n3
@angle:c-c3-n4 @atom:c @atom:c3 @atom:n4
@angle:c-c3-n @atom:c @atom:c3 @atom:n
@angle:c-c3-na @atom:c @atom:c3 @atom:na
@angle:c-c3-nh @atom:c @atom:c3 @atom:nh
@angle:c-c3-oh @atom:c @atom:c3 @atom:oh
@angle:c-c3-os @atom:c @atom:c3 @atom:os
@angle:c-c3-p5 @atom:c @atom:c3 @atom:p5
@angle:c-c3-s6 @atom:c @atom:c3 @atom:s6
@angle:c-c3-sh @atom:c @atom:c3 @atom:sh
@angle:c-c3-ss @atom:c @atom:c3 @atom:ss
@angle:cx-c3-cx @atom:cx @atom:c3 @atom:cx
@angle:cx-c3-h1 @atom:cx @atom:c3 @atom:h1
@angle:cx-c3-hc @atom:cx @atom:c3 @atom:hc
@angle:cx-c3-hx @atom:cx @atom:c3 @atom:hx
@angle:cx-c3-n3 @atom:cx @atom:c3 @atom:n3
@angle:cx-c3-n4 @atom:cx @atom:c3 @atom:n4
@angle:cx-c3-n @atom:cx @atom:c3 @atom:n
@angle:cx-c3-oh @atom:cx @atom:c3 @atom:oh
@angle:cx-c3-os @atom:cx @atom:c3 @atom:os
@angle:cy-c3-h1 @atom:cy @atom:c3 @atom:h1
@angle:cy-c3-hc @atom:cy @atom:c3 @atom:hc
@angle:cy-c3-n3 @atom:cy @atom:c3 @atom:n3
@angle:cy-c3-oh @atom:cy @atom:c3 @atom:oh
@angle:cy-c3-os @atom:cy @atom:c3 @atom:os
@angle:f-c3-f @atom:f @atom:c3 @atom:f
@angle:f-c3-h1 @atom:f @atom:c3 @atom:h1
@angle:f-c3-h2 @atom:f @atom:c3 @atom:h2
@angle:f-c3-h3 @atom:f @atom:c3 @atom:h3
@angle:f-c3-hc @atom:f @atom:c3 @atom:hc
@angle:f-c3-n2 @atom:f @atom:c3 @atom:n2
@angle:f-c3-os @atom:f @atom:c3 @atom:os
@angle:f-c3-p5 @atom:f @atom:c3 @atom:p5
@angle:f-c3-s6 @atom:f @atom:c3 @atom:s6
@angle:f-c3-ss @atom:f @atom:c3 @atom:ss
@angle:h1-c3-h1 @atom:h1 @atom:c3 @atom:h1
@angle:h1-c3-n1 @atom:h1 @atom:c3 @atom:n1
@angle:h1-c3-n2 @atom:h1 @atom:c3 @atom:n2
@angle:h1-c3-n3 @atom:h1 @atom:c3 @atom:n3
@angle:h1-c3-n @atom:h1 @atom:c3 @atom:n
@angle:h1-c3-na @atom:h1 @atom:c3 @atom:na
@angle:h1-c3-nc @atom:h1 @atom:c3 @atom:nc
@angle:h1-c3-nd @atom:h1 @atom:c3 @atom:nd
@angle:h1-c3-nh @atom:h1 @atom:c3 @atom:nh
@angle:h1-c3-no @atom:h1 @atom:c3 @atom:no
@angle:h1-c3-o @atom:h1 @atom:c3 @atom:o
@angle:h1-c3-oh @atom:h1 @atom:c3 @atom:oh
@angle:h1-c3-os @atom:h1 @atom:c3 @atom:os
@angle:h1-c3-p5 @atom:h1 @atom:c3 @atom:p5
@angle:h1-c3-s4 @atom:h1 @atom:c3 @atom:s4
@angle:h1-c3-s @atom:h1 @atom:c3 @atom:s
@angle:h1-c3-s6 @atom:h1 @atom:c3 @atom:s6
@angle:h1-c3-sh @atom:h1 @atom:c3 @atom:sh
@angle:h1-c3-ss @atom:h1 @atom:c3 @atom:ss
@angle:h1-c3-sx @atom:h1 @atom:c3 @atom:sx
@angle:h1-c3-sy @atom:h1 @atom:c3 @atom:sy
@angle:h2-c3-h2 @atom:h2 @atom:c3 @atom:h2
@angle:h2-c3-i @atom:h2 @atom:c3 @atom:i
@angle:h2-c3-n2 @atom:h2 @atom:c3 @atom:n2
@angle:h2-c3-n3 @atom:h2 @atom:c3 @atom:n3
@angle:h2-c3-n @atom:h2 @atom:c3 @atom:n
@angle:h2-c3-na @atom:h2 @atom:c3 @atom:na
@angle:h2-c3-nc @atom:h2 @atom:c3 @atom:nc
@angle:h2-c3-nd @atom:h2 @atom:c3 @atom:nd
@angle:h2-c3-nh @atom:h2 @atom:c3 @atom:nh
@angle:h2-c3-no @atom:h2 @atom:c3 @atom:no
@angle:h2-c3-o @atom:h2 @atom:c3 @atom:o
@angle:h2-c3-oh @atom:h2 @atom:c3 @atom:oh
@angle:h2-c3-os @atom:h2 @atom:c3 @atom:os
@angle:h2-c3-s4 @atom:h2 @atom:c3 @atom:s4
@angle:h2-c3-s @atom:h2 @atom:c3 @atom:s
@angle:h2-c3-s6 @atom:h2 @atom:c3 @atom:s6
@angle:h2-c3-sh @atom:h2 @atom:c3 @atom:sh
@angle:h2-c3-ss @atom:h2 @atom:c3 @atom:ss
@angle:h3-c3-n3 @atom:h3 @atom:c3 @atom:n3
@angle:h3-c3-nc @atom:h3 @atom:c3 @atom:nc
@angle:h3-c3-nd @atom:h3 @atom:c3 @atom:nd
@angle:h3-c3-nh @atom:h3 @atom:c3 @atom:nh
@angle:h3-c3-os @atom:h3 @atom:c3 @atom:os
@angle:h3-c3-ss @atom:h3 @atom:c3 @atom:ss
@angle:hc-c3-hc @atom:hc @atom:c3 @atom:hc
@angle:hc-c3-i @atom:hc @atom:c3 @atom:i
@angle:hc-c3-n2 @atom:hc @atom:c3 @atom:n2
@angle:hc-c3-n3 @atom:hc @atom:c3 @atom:n3
@angle:hc-c3-n4 @atom:hc @atom:c3 @atom:n4
@angle:hc-c3-n @atom:hc @atom:c3 @atom:n
@angle:hc-c3-na @atom:hc @atom:c3 @atom:na
@angle:hc-c3-nh @atom:hc @atom:c3 @atom:nh
@angle:hc-c3-no @atom:hc @atom:c3 @atom:no
@angle:hc-c3-oh @atom:hc @atom:c3 @atom:oh
@angle:hc-c3-os @atom:hc @atom:c3 @atom:os
@angle:hc-c3-p2 @atom:hc @atom:c3 @atom:p2
@angle:hc-c3-p3 @atom:hc @atom:c3 @atom:p3
@angle:hc-c3-p4 @atom:hc @atom:c3 @atom:p4
@angle:hc-c3-p5 @atom:hc @atom:c3 @atom:p5
@angle:hc-c3-px @atom:hc @atom:c3 @atom:px
@angle:hc-c3-py @atom:hc @atom:c3 @atom:py
@angle:hc-c3-s4 @atom:hc @atom:c3 @atom:s4
@angle:hc-c3-s6 @atom:hc @atom:c3 @atom:s6
@angle:hc-c3-sh @atom:hc @atom:c3 @atom:sh
@angle:hc-c3-ss @atom:hc @atom:c3 @atom:ss
@angle:hx-c3-hx @atom:hx @atom:c3 @atom:hx
@angle:hx-c3-n4 @atom:hx @atom:c3 @atom:n4
@angle:i-c3-i @atom:i @atom:c3 @atom:i
@angle:n1-c3-n1 @atom:n1 @atom:c3 @atom:n1
@angle:n2-c3-n2 @atom:n2 @atom:c3 @atom:n2
@angle:n2-c3-nh @atom:n2 @atom:c3 @atom:nh
@angle:n2-c3-oh @atom:n2 @atom:c3 @atom:oh
@angle:n2-c3-os @atom:n2 @atom:c3 @atom:os
@angle:n3-c3-n3 @atom:n3 @atom:c3 @atom:n3
@angle:n3-c3-nc @atom:n3 @atom:c3 @atom:nc
@angle:n3-c3-nd @atom:n3 @atom:c3 @atom:nd
@angle:n3-c3-nh @atom:n3 @atom:c3 @atom:nh
@angle:n3-c3-oh @atom:n3 @atom:c3 @atom:oh
@angle:n3-c3-os @atom:n3 @atom:c3 @atom:os
@angle:n3-c3-p5 @atom:n3 @atom:c3 @atom:p5
@angle:n3-c3-ss @atom:n3 @atom:c3 @atom:ss
@angle:n4-c3-n4 @atom:n4 @atom:c3 @atom:n4
@angle:na-c3-na @atom:na @atom:c3 @atom:na
@angle:na-c3-os @atom:na @atom:c3 @atom:os
@angle:nc-c3-nc @atom:nc @atom:c3 @atom:nc
@angle:nc-c3-nh @atom:nc @atom:c3 @atom:nh
@angle:nc-c3-os @atom:nc @atom:c3 @atom:os
@angle:nd-c3-nd @atom:nd @atom:c3 @atom:nd
@angle:nd-c3-nh @atom:nd @atom:c3 @atom:nh
@angle:nd-c3-os @atom:nd @atom:c3 @atom:os
@angle:nh-c3-nh @atom:nh @atom:c3 @atom:nh
@angle:nh-c3-oh @atom:nh @atom:c3 @atom:oh
@angle:nh-c3-os @atom:nh @atom:c3 @atom:os
@angle:nh-c3-p5 @atom:nh @atom:c3 @atom:p5
@angle:nh-c3-ss @atom:nh @atom:c3 @atom:ss
@angle:n-c3-n2 @atom:n @atom:c3 @atom:n2
@angle:n-c3-n3 @atom:n @atom:c3 @atom:n3
@angle:n-c3-n @atom:n @atom:c3 @atom:n
@angle:n-c3-nh @atom:n @atom:c3 @atom:nh
@angle:n-c3-oh @atom:n @atom:c3 @atom:oh
@angle:no-c3-no @atom:no @atom:c3 @atom:no
@angle:n-c3-os @atom:n @atom:c3 @atom:os
@angle:n-c3-p5 @atom:n @atom:c3 @atom:p5
@angle:oh-c3-oh @atom:oh @atom:c3 @atom:oh
@angle:oh-c3-os @atom:oh @atom:c3 @atom:os
@angle:oh-c3-p5 @atom:oh @atom:c3 @atom:p5
@angle:oh-c3-sh @atom:oh @atom:c3 @atom:sh
@angle:o-c3-o @atom:o @atom:c3 @atom:o
@angle:os-c3-os @atom:os @atom:c3 @atom:os
@angle:os-c3-p5 @atom:os @atom:c3 @atom:p5
@angle:os-c3-ss @atom:os @atom:c3 @atom:ss
@angle:p2-c3-p2 @atom:p2 @atom:c3 @atom:p2
@angle:p3-c3-p3 @atom:p3 @atom:c3 @atom:p3
@angle:p5-c3-p5 @atom:p5 @atom:c3 @atom:p5
@angle:p5-c3-ss @atom:p5 @atom:c3 @atom:ss
@angle:s4-c3-s4 @atom:s4 @atom:c3 @atom:s4
@angle:s4-c3-s6 @atom:s4 @atom:c3 @atom:s6
@angle:s6-c3-s6 @atom:s6 @atom:c3 @atom:s6
@angle:sh-c3-sh @atom:sh @atom:c3 @atom:sh
@angle:sh-c3-ss @atom:sh @atom:c3 @atom:ss
@angle:s-c3-s @atom:s @atom:c3 @atom:s
@angle:ss-c3-ss @atom:ss @atom:c3 @atom:ss
@angle:br-ca-br @atom:br @atom:ca @atom:br
@angle:br-ca-ca @atom:br @atom:ca @atom:ca
@angle:c1-ca-c1 @atom:c1 @atom:ca @atom:c1
@angle:c1-ca-ca @atom:c1 @atom:ca @atom:ca
@angle:c2-ca-c2 @atom:c2 @atom:ca @atom:c2
@angle:c2-ca-ca @atom:c2 @atom:ca @atom:ca
@angle:c3-ca-c2 @atom:c3 @atom:ca @atom:c2
@angle:c3-ca-c3 @atom:c3 @atom:ca @atom:c3
@angle:c3-ca-ca @atom:c3 @atom:ca @atom:ca
@angle:c3-ca-cp @atom:c3 @atom:ca @atom:cp
@angle:c3-ca-cq @atom:c3 @atom:ca @atom:cq
@angle:c3-ca-na @atom:c3 @atom:ca @atom:na
@angle:c3-ca-nb @atom:c3 @atom:ca @atom:nb
@angle:ca-ca-ca @atom:ca @atom:ca @atom:ca
@angle:ca-ca-cc @atom:ca @atom:ca @atom:cc
@angle:ca-ca-cd @atom:ca @atom:ca @atom:cd
@angle:ca-ca-ce @atom:ca @atom:ca @atom:ce
@angle:ca-ca-cf @atom:ca @atom:ca @atom:cf
@angle:ca-ca-cg @atom:ca @atom:ca @atom:cg
@angle:ca-ca-ch @atom:ca @atom:ca @atom:ch
@angle:ca-ca-cl @atom:ca @atom:ca @atom:cl
@angle:ca-ca-cp @atom:ca @atom:ca @atom:cp
@angle:ca-ca-cq @atom:ca @atom:ca @atom:cq
@angle:ca-ca-cx @atom:ca @atom:ca @atom:cx
@angle:ca-ca-cy @atom:ca @atom:ca @atom:cy
@angle:ca-ca-f @atom:ca @atom:ca @atom:f
@angle:ca-ca-h4 @atom:ca @atom:ca @atom:h4
@angle:ca-ca-ha @atom:ca @atom:ca @atom:ha
@angle:ca-ca-i @atom:ca @atom:ca @atom:i
@angle:ca-ca-n1 @atom:ca @atom:ca @atom:n1
@angle:ca-ca-n2 @atom:ca @atom:ca @atom:n2
@angle:ca-ca-n4 @atom:ca @atom:ca @atom:n4
@angle:ca-ca-n @atom:ca @atom:ca @atom:n
@angle:ca-ca-na @atom:ca @atom:ca @atom:na
@angle:ca-ca-nb @atom:ca @atom:ca @atom:nb
@angle:ca-ca-nc @atom:ca @atom:ca @atom:nc
@angle:ca-ca-nd @atom:ca @atom:ca @atom:nd
@angle:ca-ca-ne @atom:ca @atom:ca @atom:ne
@angle:ca-ca-nf @atom:ca @atom:ca @atom:nf
@angle:ca-ca-nh @atom:ca @atom:ca @atom:nh
@angle:ca-ca-no @atom:ca @atom:ca @atom:no
@angle:ca-ca-o @atom:ca @atom:ca @atom:o
@angle:ca-ca-oh @atom:ca @atom:ca @atom:oh
@angle:ca-ca-os @atom:ca @atom:ca @atom:os
@angle:ca-ca-p2 @atom:ca @atom:ca @atom:p2
@angle:ca-ca-p3 @atom:ca @atom:ca @atom:p3
@angle:ca-ca-p4 @atom:ca @atom:ca @atom:p4
@angle:ca-ca-p5 @atom:ca @atom:ca @atom:p5
@angle:ca-ca-pe @atom:ca @atom:ca @atom:pe
@angle:ca-ca-pf @atom:ca @atom:ca @atom:pf
@angle:ca-ca-px @atom:ca @atom:ca @atom:px
@angle:ca-ca-py @atom:ca @atom:ca @atom:py
@angle:ca-ca-s4 @atom:ca @atom:ca @atom:s4
@angle:ca-ca-s6 @atom:ca @atom:ca @atom:s6
@angle:ca-ca-s @atom:ca @atom:ca @atom:s
@angle:ca-ca-sh @atom:ca @atom:ca @atom:sh
@angle:ca-ca-ss @atom:ca @atom:ca @atom:ss
@angle:ca-ca-sx @atom:ca @atom:ca @atom:sx
@angle:ca-ca-sy @atom:ca @atom:ca @atom:sy
@angle:c-ca-c3 @atom:c @atom:ca @atom:c3
@angle:c-ca-c @atom:c @atom:ca @atom:c
@angle:c-ca-ca @atom:c @atom:ca @atom:ca
@angle:cc-ca-cp @atom:cc @atom:ca @atom:cp
@angle:cc-ca-nb @atom:cc @atom:ca @atom:nb
@angle:cd-ca-nb @atom:cd @atom:ca @atom:nb
@angle:ce-ca-na @atom:ce @atom:ca @atom:na
@angle:ce-ca-nb @atom:ce @atom:ca @atom:nb
@angle:cf-ca-nb @atom:cf @atom:ca @atom:nb
@angle:cg-ca-cp @atom:cg @atom:ca @atom:cp
@angle:c-ca-ha @atom:c @atom:ca @atom:ha
@angle:cl-ca-cl @atom:cl @atom:ca @atom:cl
@angle:cl-ca-cp @atom:cl @atom:ca @atom:cp
@angle:cl-ca-nb @atom:cl @atom:ca @atom:nb
@angle:c-ca-nb @atom:c @atom:ca @atom:nb
@angle:c-ca-nc @atom:c @atom:ca @atom:nc
@angle:c-ca-nd @atom:c @atom:ca @atom:nd
@angle:cp-ca-f @atom:cp @atom:ca @atom:f
@angle:cp-ca-h4 @atom:cp @atom:ca @atom:h4
@angle:cp-ca-ha @atom:cp @atom:ca @atom:ha
@angle:cp-ca-na @atom:cp @atom:ca @atom:na
@angle:cp-ca-nb @atom:cp @atom:ca @atom:nb
@angle:cp-ca-nh @atom:cp @atom:ca @atom:nh
@angle:cp-ca-oh @atom:cp @atom:ca @atom:oh
@angle:cp-ca-ss @atom:cp @atom:ca @atom:ss
@angle:cp-ca-sy @atom:cp @atom:ca @atom:sy
@angle:cq-ca-ha @atom:cq @atom:ca @atom:ha
@angle:cq-ca-sy @atom:cq @atom:ca @atom:sy
@angle:f-ca-f @atom:f @atom:ca @atom:f
@angle:f-ca-nb @atom:f @atom:ca @atom:nb
@angle:h4-ca-n @atom:h4 @atom:ca @atom:n
@angle:h4-ca-na @atom:h4 @atom:ca @atom:na
@angle:h4-ca-nb @atom:h4 @atom:ca @atom:nb
@angle:h4-ca-nc @atom:h4 @atom:ca @atom:nc
@angle:h4-ca-nd @atom:h4 @atom:ca @atom:nd
@angle:h4-ca-os @atom:h4 @atom:ca @atom:os
@angle:h4-ca-ss @atom:h4 @atom:ca @atom:ss
@angle:h5-ca-nb @atom:h5 @atom:ca @atom:nb
@angle:h5-ca-nc @atom:h5 @atom:ca @atom:nc
@angle:h5-ca-nd @atom:h5 @atom:ca @atom:nd
@angle:ha-ca-n2 @atom:ha @atom:ca @atom:n2
@angle:ha-ca-p2 @atom:ha @atom:ca @atom:p2
@angle:i-ca-i @atom:i @atom:ca @atom:i
@angle:n1-ca-n1 @atom:n1 @atom:ca @atom:n1
@angle:n2-ca-n2 @atom:n2 @atom:ca @atom:n2
@angle:n2-ca-na @atom:n2 @atom:ca @atom:na
@angle:n4-ca-n4 @atom:n4 @atom:ca @atom:n4
@angle:na-ca-na @atom:na @atom:ca @atom:na
@angle:na-ca-nb @atom:na @atom:ca @atom:nb
@angle:na-ca-nh @atom:na @atom:ca @atom:nh
@angle:nb-ca-nb @atom:nb @atom:ca @atom:nb
@angle:nb-ca-nc @atom:nb @atom:ca @atom:nc
@angle:nb-ca-nd @atom:nb @atom:ca @atom:nd
@angle:nb-ca-nh @atom:nb @atom:ca @atom:nh
@angle:nb-ca-oh @atom:nb @atom:ca @atom:oh
@angle:nb-ca-os @atom:nb @atom:ca @atom:os
@angle:nb-ca-sh @atom:nb @atom:ca @atom:sh
@angle:nb-ca-ss @atom:nb @atom:ca @atom:ss
@angle:nc-ca-nc @atom:nc @atom:ca @atom:nc
@angle:nc-ca-nh @atom:nc @atom:ca @atom:nh
@angle:nd-ca-nd @atom:nd @atom:ca @atom:nd
@angle:nd-ca-nh @atom:nd @atom:ca @atom:nh
@angle:nh-ca-nh @atom:nh @atom:ca @atom:nh
@angle:n-ca-nc @atom:n @atom:ca @atom:nc
@angle:n-ca-nd @atom:n @atom:ca @atom:nd
@angle:n-ca-nh @atom:n @atom:ca @atom:nh
@angle:no-ca-no @atom:no @atom:ca @atom:no
@angle:oh-ca-oh @atom:oh @atom:ca @atom:oh
@angle:o-ca-o @atom:o @atom:ca @atom:o
@angle:os-ca-os @atom:os @atom:ca @atom:os
@angle:p2-ca-p2 @atom:p2 @atom:ca @atom:p2
@angle:p3-ca-p3 @atom:p3 @atom:ca @atom:p3
@angle:p5-ca-p5 @atom:p5 @atom:ca @atom:p5
@angle:s4-ca-s4 @atom:s4 @atom:ca @atom:s4
@angle:s6-ca-s6 @atom:s6 @atom:ca @atom:s6
@angle:sh-ca-sh @atom:sh @atom:ca @atom:sh
@angle:s-ca-s @atom:s @atom:ca @atom:s
@angle:ss-ca-ss @atom:ss @atom:ca @atom:ss
@angle:br-c-br @atom:br @atom:c @atom:br
@angle:br-c-c3 @atom:br @atom:c @atom:c3
@angle:br-c-o @atom:br @atom:c @atom:o
@angle:c1-c-c1 @atom:c1 @atom:c @atom:c1
@angle:c1-c-o @atom:c1 @atom:c @atom:o
@angle:c2-c-c2 @atom:c2 @atom:c @atom:c2
@angle:c2-c-ha @atom:c2 @atom:c @atom:ha
@angle:c2-c-o @atom:c2 @atom:c @atom:o
@angle:c2-c-s @atom:c2 @atom:c @atom:s
@angle:c3-c-c3 @atom:c3 @atom:c @atom:c3
@angle:c3-c-ca @atom:c3 @atom:c @atom:ca
@angle:c3-c-cc @atom:c3 @atom:c @atom:cc
@angle:c3-c-cd @atom:c3 @atom:c @atom:cd
@angle:c3-c-ce @atom:c3 @atom:c @atom:ce
@angle:c3-c-cf @atom:c3 @atom:c @atom:cf
@angle:c3-c-cg @atom:c3 @atom:c @atom:cg
@angle:c3-c-ch @atom:c3 @atom:c @atom:ch
@angle:c3-c-cl @atom:c3 @atom:c @atom:cl
@angle:c3-c-f @atom:c3 @atom:c @atom:f
@angle:c3-c-h4 @atom:c3 @atom:c @atom:h4
@angle:c3-c-ha @atom:c3 @atom:c @atom:ha
@angle:c3-c-i @atom:c3 @atom:c @atom:i
@angle:c3-c-n2 @atom:c3 @atom:c @atom:n2
@angle:c3-c-n4 @atom:c3 @atom:c @atom:n4
@angle:c3-c-n @atom:c3 @atom:c @atom:n
@angle:c3-c-ne @atom:c3 @atom:c @atom:ne
@angle:c3-c-nf @atom:c3 @atom:c @atom:nf
@angle:c3-c-o @atom:c3 @atom:c @atom:o
@angle:c3-c-oh @atom:c3 @atom:c @atom:oh
@angle:c3-c-os @atom:c3 @atom:c @atom:os
@angle:c3-c-p3 @atom:c3 @atom:c @atom:p3
@angle:c3-c-p5 @atom:c3 @atom:c @atom:p5
@angle:c3-c-pe @atom:c3 @atom:c @atom:pe
@angle:c3-c-pf @atom:c3 @atom:c @atom:pf
@angle:c3-c-px @atom:c3 @atom:c @atom:px
@angle:c3-c-py @atom:c3 @atom:c @atom:py
@angle:c3-c-s4 @atom:c3 @atom:c @atom:s4
@angle:c3-c-s6 @atom:c3 @atom:c @atom:s6
@angle:c3-c-s @atom:c3 @atom:c @atom:s
@angle:c3-c-sh @atom:c3 @atom:c @atom:sh
@angle:c3-c-ss @atom:c3 @atom:c @atom:ss
@angle:c3-c-sx @atom:c3 @atom:c @atom:sx
@angle:c3-c-sy @atom:c3 @atom:c @atom:sy
@angle:ca-c-ca @atom:ca @atom:c @atom:ca
@angle:ca-c-cc @atom:ca @atom:c @atom:cc
@angle:ca-c-cd @atom:ca @atom:c @atom:cd
@angle:ca-c-ce @atom:ca @atom:c @atom:ce
@angle:ca-c-cf @atom:ca @atom:c @atom:cf
@angle:ca-c-h4 @atom:ca @atom:c @atom:h4
@angle:ca-c-ha @atom:ca @atom:c @atom:ha
@angle:ca-c-n @atom:ca @atom:c @atom:n
@angle:ca-c-ne @atom:ca @atom:c @atom:ne
@angle:ca-c-o @atom:ca @atom:c @atom:o
@angle:ca-c-oh @atom:ca @atom:c @atom:oh
@angle:ca-c-os @atom:ca @atom:c @atom:os
@angle:ca-c-s @atom:ca @atom:c @atom:s
@angle:ca-c-sh @atom:ca @atom:c @atom:sh
@angle:ca-c-ss @atom:ca @atom:c @atom:ss
@angle:br-cc-c @atom:br @atom:cc @atom:c
@angle:br-cc-cc @atom:br @atom:cc @atom:cc
@angle:br-cc-cd @atom:br @atom:cc @atom:cd
@angle:br-cc-na @atom:br @atom:cc @atom:na
@angle:c2-cc-c3 @atom:c2 @atom:cc @atom:c3
@angle:c2-cc-ca @atom:c2 @atom:cc @atom:ca
@angle:c2-cc-cc @atom:c2 @atom:cc @atom:cc
@angle:c2-cc-cd @atom:c2 @atom:cc @atom:cd
@angle:c2-cc-ha @atom:c2 @atom:cc @atom:ha
@angle:c2-cc-n @atom:c2 @atom:cc @atom:n
@angle:c2-cc-os @atom:c2 @atom:cc @atom:os
@angle:c-c-c3 @atom:c @atom:c @atom:c3
@angle:c3-cc-ca @atom:c3 @atom:cc @atom:ca
@angle:c3-cc-cc @atom:c3 @atom:cc @atom:cc
@angle:c3-cc-cd @atom:c3 @atom:cc @atom:cd
@angle:c3-cc-cf @atom:c3 @atom:cc @atom:cf
@angle:c3-cc-ha @atom:c3 @atom:cc @atom:ha
@angle:c3-cc-n2 @atom:c3 @atom:cc @atom:n2
@angle:c3-cc-n @atom:c3 @atom:cc @atom:n
@angle:c3-cc-na @atom:c3 @atom:cc @atom:na
@angle:c3-cc-nc @atom:c3 @atom:cc @atom:nc
@angle:c3-cc-nd @atom:c3 @atom:cc @atom:nd
@angle:c3-cc-os @atom:c3 @atom:cc @atom:os
@angle:c3-cc-ss @atom:c3 @atom:cc @atom:ss
@angle:c-c-c @atom:c @atom:c @atom:c
@angle:c-c-ca @atom:c @atom:c @atom:ca
@angle:ca-cc-cc @atom:ca @atom:cc @atom:cc
@angle:ca-cc-cd @atom:ca @atom:cc @atom:cd
@angle:ca-cc-ce @atom:ca @atom:cc @atom:ce
@angle:ca-cc-h4 @atom:ca @atom:cc @atom:h4
@angle:ca-cc-ha @atom:ca @atom:cc @atom:ha
@angle:ca-cc-n @atom:ca @atom:cc @atom:n
@angle:ca-cc-nc @atom:ca @atom:cc @atom:nc
@angle:ca-cc-nd @atom:ca @atom:cc @atom:nd
@angle:ca-cc-nh @atom:ca @atom:cc @atom:nh
@angle:ca-cc-oh @atom:ca @atom:cc @atom:oh
@angle:ca-cc-os @atom:ca @atom:cc @atom:os
@angle:ca-cc-ss @atom:ca @atom:cc @atom:ss
@angle:c-cc-c2 @atom:c @atom:cc @atom:c2
@angle:c-cc-c3 @atom:c @atom:cc @atom:c3
@angle:c-cc-c @atom:c @atom:cc @atom:c
@angle:c-c-cc @atom:c @atom:c @atom:cc
@angle:c-cc-ca @atom:c @atom:cc @atom:ca
@angle:c-cc-cc @atom:c @atom:cc @atom:cc
@angle:cc-c-cc @atom:cc @atom:c @atom:cc
@angle:cc-cc-cc @atom:cc @atom:cc @atom:cc
@angle:cc-cc-cd @atom:cc @atom:cc @atom:cd
@angle:cc-cc-ce @atom:cc @atom:cc @atom:ce
@angle:cc-cc-cf @atom:cc @atom:cc @atom:cf
@angle:cc-cc-cg @atom:cc @atom:cc @atom:cg
@angle:c-cc-cd @atom:c @atom:cc @atom:cd
@angle:cc-c-cd @atom:cc @atom:c @atom:cd
@angle:c-cc-ce @atom:c @atom:cc @atom:ce
@angle:cc-c-ce @atom:cc @atom:c @atom:ce
@angle:cc-cc-f @atom:cc @atom:cc @atom:f
@angle:c-cc-cg @atom:c @atom:cc @atom:cg
@angle:cc-cc-h4 @atom:cc @atom:cc @atom:h4
@angle:cc-cc-ha @atom:cc @atom:cc @atom:ha
@angle:c-cc-cl @atom:c @atom:cc @atom:cl
@angle:cc-cc-n2 @atom:cc @atom:cc @atom:n2
@angle:cc-cc-n @atom:cc @atom:cc @atom:n
@angle:cc-cc-na @atom:cc @atom:cc @atom:na
@angle:cc-cc-nc @atom:cc @atom:cc @atom:nc
@angle:cc-cc-nd @atom:cc @atom:cc @atom:nd
@angle:cc-cc-nh @atom:cc @atom:cc @atom:nh
@angle:cc-cc-oh @atom:cc @atom:cc @atom:oh
@angle:cc-cc-os @atom:cc @atom:cc @atom:os
@angle:cc-cc-pd @atom:cc @atom:cc @atom:pd
@angle:cc-cc-ss @atom:cc @atom:cc @atom:ss
@angle:cc-cc-sy @atom:cc @atom:cc @atom:sy
@angle:c-c-cd @atom:c @atom:c @atom:cd
@angle:cd-cc-cd @atom:cd @atom:cc @atom:cd
@angle:cd-cc-ce @atom:cd @atom:cc @atom:ce
@angle:cd-cc-cl @atom:cd @atom:cc @atom:cl
@angle:cd-cc-f @atom:cd @atom:cc @atom:f
@angle:cd-cc-h4 @atom:cd @atom:cc @atom:h4
@angle:cd-cc-ha @atom:cd @atom:cc @atom:ha
@angle:cd-cc-n @atom:cd @atom:cc @atom:n
@angle:cd-cc-na @atom:cd @atom:cc @atom:na
@angle:cd-cc-nc @atom:cd @atom:cc @atom:nc
@angle:cd-cc-nh @atom:cd @atom:cc @atom:nh
@angle:cd-cc-no @atom:cd @atom:cc @atom:no
@angle:cd-cc-oh @atom:cd @atom:cc @atom:oh
@angle:cd-cc-os @atom:cd @atom:cc @atom:os
@angle:cd-cc-ss @atom:cd @atom:cc @atom:ss
@angle:cd-cc-sy @atom:cd @atom:cc @atom:sy
@angle:ce-cc-na @atom:ce @atom:cc @atom:na
@angle:ce-cc-nc @atom:ce @atom:cc @atom:nc
@angle:ce-cc-nd @atom:ce @atom:cc @atom:nd
@angle:ce-cc-os @atom:ce @atom:cc @atom:os
@angle:ce-cc-ss @atom:ce @atom:cc @atom:ss
@angle:c-cc-f @atom:c @atom:cc @atom:f
@angle:cg-cc-na @atom:cg @atom:cc @atom:na
@angle:cg-cc-ss @atom:cg @atom:cc @atom:ss
@angle:cc-c-h4 @atom:cc @atom:c @atom:h4
@angle:c-cc-ha @atom:c @atom:cc @atom:ha
@angle:cl-cc-na @atom:cl @atom:cc @atom:na
@angle:cl-cc-nd @atom:cl @atom:cc @atom:nd
@angle:cl-cc-ss @atom:cl @atom:cc @atom:ss
@angle:c-cc-n2 @atom:c @atom:cc @atom:n2
@angle:c-cc-n @atom:c @atom:cc @atom:n
@angle:cc-c-n @atom:cc @atom:c @atom:n
@angle:c-cc-nc @atom:c @atom:cc @atom:nc
@angle:cc-c-nd @atom:cc @atom:c @atom:nd
@angle:c-cc-nd @atom:c @atom:cc @atom:nd
@angle:c-cc-ne @atom:c @atom:cc @atom:ne
@angle:cc-c-o @atom:cc @atom:c @atom:o
@angle:c-cc-oh @atom:c @atom:cc @atom:oh
@angle:cc-c-oh @atom:cc @atom:c @atom:oh
@angle:c-cc-os @atom:c @atom:cc @atom:os
@angle:cc-c-os @atom:cc @atom:c @atom:os
@angle:cc-c-s @atom:cc @atom:c @atom:s
@angle:cc-c-ss @atom:cc @atom:c @atom:ss
@angle:cx-cc-nd @atom:cx @atom:cc @atom:nd
@angle:cx-cc-os @atom:cx @atom:cc @atom:os
@angle:cd-c-cd @atom:cd @atom:c @atom:cd
@angle:cd-c-cx @atom:cd @atom:c @atom:cx
@angle:cd-c-n @atom:cd @atom:c @atom:n
@angle:cd-c-nc @atom:cd @atom:c @atom:nc
@angle:cd-c-nd @atom:cd @atom:c @atom:nd
@angle:cd-c-o @atom:cd @atom:c @atom:o
@angle:cd-c-oh @atom:cd @atom:c @atom:oh
@angle:cd-c-os @atom:cd @atom:c @atom:os
@angle:ce-c-ce @atom:ce @atom:c @atom:ce
@angle:ce-c-cf @atom:ce @atom:c @atom:cf
@angle:ce-c-cx @atom:ce @atom:c @atom:cx
@angle:ce-c-h4 @atom:ce @atom:c @atom:h4
@angle:ce-c-ha @atom:ce @atom:c @atom:ha
@angle:ce-c-n @atom:ce @atom:c @atom:n
@angle:ce-c-o @atom:ce @atom:c @atom:o
@angle:ce-c-oh @atom:ce @atom:c @atom:oh
@angle:ce-c-os @atom:ce @atom:c @atom:os
@angle:ce-c-s @atom:ce @atom:c @atom:s
@angle:ce-c-ss @atom:ce @atom:c @atom:ss
@angle:cf-c-cf @atom:cf @atom:c @atom:cf
@angle:cf-c-ha @atom:cf @atom:c @atom:ha
@angle:cf-c-n @atom:cf @atom:c @atom:n
@angle:cf-c-o @atom:cf @atom:c @atom:o
@angle:cf-c-oh @atom:cf @atom:c @atom:oh
@angle:cf-c-os @atom:cf @atom:c @atom:os
@angle:cf-c-s @atom:cf @atom:c @atom:s
@angle:cg-c-cg @atom:cg @atom:c @atom:cg
@angle:cg-c-ha @atom:cg @atom:c @atom:ha
@angle:cg-c-o @atom:cg @atom:c @atom:o
@angle:c-c-h4 @atom:c @atom:c @atom:h4
@angle:h4-cc-n @atom:h4 @atom:cc @atom:n
@angle:h4-cc-na @atom:h4 @atom:cc @atom:na
@angle:h4-cc-nc @atom:h4 @atom:cc @atom:nc
@angle:h4-cc-nd @atom:h4 @atom:cc @atom:nd
@angle:h4-cc-os @atom:h4 @atom:cc @atom:os
@angle:h4-cc-ss @atom:h4 @atom:cc @atom:ss
@angle:h5-cc-n @atom:h5 @atom:cc @atom:n
@angle:h5-cc-na @atom:h5 @atom:cc @atom:na
@angle:h5-cc-nc @atom:h5 @atom:cc @atom:nc
@angle:h5-cc-nd @atom:h5 @atom:cc @atom:nd
@angle:h5-cc-os @atom:h5 @atom:cc @atom:os
@angle:h5-cc-ss @atom:h5 @atom:cc @atom:ss
@angle:c-c-ha @atom:c @atom:c @atom:ha
@angle:ha-cc-na @atom:ha @atom:cc @atom:na
@angle:ha-cc-nc @atom:ha @atom:cc @atom:nc
@angle:ha-cc-nd @atom:ha @atom:cc @atom:nd
@angle:ha-cc-os @atom:ha @atom:cc @atom:os
@angle:ha-cc-pd @atom:ha @atom:cc @atom:pd
@angle:ha-cc-ss @atom:ha @atom:cc @atom:ss
@angle:ch-c-ch @atom:ch @atom:c @atom:ch
@angle:ch-c-ha @atom:ch @atom:c @atom:ha
@angle:ch-c-o @atom:ch @atom:c @atom:o
@angle:cl-c-cl @atom:cl @atom:c @atom:cl
@angle:cl-c-f @atom:cl @atom:c @atom:f
@angle:cl-c-ha @atom:cl @atom:c @atom:ha
@angle:cl-c-o @atom:cl @atom:c @atom:o
@angle:cl-c-s @atom:cl @atom:c @atom:s
@angle:c-c-n @atom:c @atom:c @atom:n
@angle:na-cc-nc @atom:na @atom:cc @atom:nc
@angle:na-cc-nd @atom:na @atom:cc @atom:nd
@angle:na-cc-no @atom:na @atom:cc @atom:no
@angle:na-cc-oh @atom:na @atom:cc @atom:oh
@angle:na-cc-sx @atom:na @atom:cc @atom:sx
@angle:na-cc-sy @atom:na @atom:cc @atom:sy
@angle:nc-cc-nd @atom:nc @atom:cc @atom:nd
@angle:nc-cc-nh @atom:nc @atom:cc @atom:nh
@angle:nc-cc-no @atom:nc @atom:cc @atom:no
@angle:nc-cc-ss @atom:nc @atom:cc @atom:ss
@angle:nd-cc-nd @atom:nd @atom:cc @atom:nd
@angle:nd-cc-ne @atom:nd @atom:cc @atom:ne
@angle:nd-cc-nh @atom:nd @atom:cc @atom:nh
@angle:nd-cc-no @atom:nd @atom:cc @atom:no
@angle:nd-cc-oh @atom:nd @atom:cc @atom:oh
@angle:nd-cc-os @atom:nd @atom:cc @atom:os
@angle:nd-cc-sh @atom:nd @atom:cc @atom:sh
@angle:nd-cc-ss @atom:nd @atom:cc @atom:ss
@angle:nd-cc-sx @atom:nd @atom:cc @atom:sx
@angle:nd-cc-sy @atom:nd @atom:cc @atom:sy
@angle:ne-cc-ss @atom:ne @atom:cc @atom:ss
@angle:nh-cc-nh @atom:nh @atom:cc @atom:nh
@angle:nh-cc-os @atom:nh @atom:cc @atom:os
@angle:nh-cc-ss @atom:nh @atom:cc @atom:ss
@angle:n-cc-n2 @atom:n @atom:cc @atom:n2
@angle:n-cc-na @atom:n @atom:cc @atom:na
@angle:n-cc-nc @atom:n @atom:cc @atom:nc
@angle:n-cc-nd @atom:n @atom:cc @atom:nd
@angle:n-cc-nh @atom:n @atom:cc @atom:nh
@angle:no-cc-os @atom:no @atom:cc @atom:os
@angle:no-cc-ss @atom:no @atom:cc @atom:ss
@angle:n-cc-ss @atom:n @atom:cc @atom:ss
@angle:c-c-o @atom:c @atom:c @atom:o
@angle:c-c-oh @atom:c @atom:c @atom:oh
@angle:c-c-os @atom:c @atom:c @atom:os
@angle:os-cc-ss @atom:os @atom:cc @atom:ss
@angle:ss-cc-ss @atom:ss @atom:cc @atom:ss
@angle:ss-cc-sy @atom:ss @atom:cc @atom:sy
@angle:cx-c-cx @atom:cx @atom:c @atom:cx
@angle:cx-c-n @atom:cx @atom:c @atom:n
@angle:cx-c-o @atom:cx @atom:c @atom:o
@angle:cx-c-oh @atom:cx @atom:c @atom:oh
@angle:cx-c-os @atom:cx @atom:c @atom:os
@angle:cy-c-cy @atom:cy @atom:c @atom:cy
@angle:cy-c-n @atom:cy @atom:c @atom:n
@angle:cy-c-o @atom:cy @atom:c @atom:o
@angle:cy-c-oh @atom:cy @atom:c @atom:oh
@angle:cy-c-os @atom:cy @atom:c @atom:os
@angle:c2-cd-c3 @atom:c2 @atom:cd @atom:c3
@angle:c2-cd-ca @atom:c2 @atom:cd @atom:ca
@angle:c2-cd-cc @atom:c2 @atom:cd @atom:cc
@angle:c2-cd-cd @atom:c2 @atom:cd @atom:cd
@angle:c2-cd-ha @atom:c2 @atom:cd @atom:ha
@angle:c2-cd-n @atom:c2 @atom:cd @atom:n
@angle:c2-cd-os @atom:c2 @atom:cd @atom:os
@angle:c3-cd-ca @atom:c3 @atom:cd @atom:ca
@angle:c3-cd-cc @atom:c3 @atom:cd @atom:cc
@angle:c3-cd-cd @atom:c3 @atom:cd @atom:cd
@angle:c3-cd-ce @atom:c3 @atom:cd @atom:ce
@angle:c3-cd-ha @atom:c3 @atom:cd @atom:ha
@angle:c3-cd-n2 @atom:c3 @atom:cd @atom:n2
@angle:c3-cd-n @atom:c3 @atom:cd @atom:n
@angle:c3-cd-na @atom:c3 @atom:cd @atom:na
@angle:c3-cd-nc @atom:c3 @atom:cd @atom:nc
@angle:c3-cd-nd @atom:c3 @atom:cd @atom:nd
@angle:c3-cd-os @atom:c3 @atom:cd @atom:os
@angle:c3-cd-ss @atom:c3 @atom:cd @atom:ss
@angle:ca-cd-cc @atom:ca @atom:cd @atom:cc
@angle:ca-cd-cd @atom:ca @atom:cd @atom:cd
@angle:ca-cd-ce @atom:ca @atom:cd @atom:ce
@angle:ca-cd-h4 @atom:ca @atom:cd @atom:h4
@angle:ca-cd-ha @atom:ca @atom:cd @atom:ha
@angle:ca-cd-n @atom:ca @atom:cd @atom:n
@angle:ca-cd-na @atom:ca @atom:cd @atom:na
@angle:ca-cd-nc @atom:ca @atom:cd @atom:nc
@angle:ca-cd-nd @atom:ca @atom:cd @atom:nd
@angle:ca-cd-oh @atom:ca @atom:cd @atom:oh
@angle:ca-cd-os @atom:ca @atom:cd @atom:os
@angle:ca-cd-ss @atom:ca @atom:cd @atom:ss
@angle:c-cd-c2 @atom:c @atom:cd @atom:c2
@angle:c-cd-c3 @atom:c @atom:cd @atom:c3
@angle:c-cd-c @atom:c @atom:cd @atom:c
@angle:c-cd-ca @atom:c @atom:cd @atom:ca
@angle:c-cd-cc @atom:c @atom:cd @atom:cc
@angle:cc-cd-cc @atom:cc @atom:cd @atom:cc
@angle:cc-cd-cd @atom:cc @atom:cd @atom:cd
@angle:cc-cd-cf @atom:cc @atom:cd @atom:cf
@angle:cc-cd-ch @atom:cc @atom:cd @atom:ch
@angle:cc-cd-cl @atom:cc @atom:cd @atom:cl
@angle:cc-cd-cy @atom:cc @atom:cd @atom:cy
@angle:c-cd-cd @atom:c @atom:cd @atom:cd
@angle:c-cd-cf @atom:c @atom:cd @atom:cf
@angle:cc-cd-h4 @atom:cc @atom:cd @atom:h4
@angle:cc-cd-ha @atom:cc @atom:cd @atom:ha
@angle:c-cd-cl @atom:c @atom:cd @atom:cl
@angle:cc-cd-n @atom:cc @atom:cd @atom:n
@angle:cc-cd-na @atom:cc @atom:cd @atom:na
@angle:cc-cd-nc @atom:cc @atom:cd @atom:nc
@angle:cc-cd-nd @atom:cc @atom:cd @atom:nd
@angle:cc-cd-nh @atom:cc @atom:cd @atom:nh
@angle:cc-cd-oh @atom:cc @atom:cd @atom:oh
@angle:cc-cd-os @atom:cc @atom:cd @atom:os
@angle:cc-cd-ss @atom:cc @atom:cd @atom:ss
@angle:cc-cd-sy @atom:cc @atom:cd @atom:sy
@angle:cd-cd-cd @atom:cd @atom:cd @atom:cd
@angle:cd-cd-ce @atom:cd @atom:cd @atom:ce
@angle:cd-cd-cf @atom:cd @atom:cd @atom:cf
@angle:cd-cd-ch @atom:cd @atom:cd @atom:ch
@angle:cd-cd-cy @atom:cd @atom:cd @atom:cy
@angle:cd-cd-h4 @atom:cd @atom:cd @atom:h4
@angle:cd-cd-ha @atom:cd @atom:cd @atom:ha
@angle:cd-cd-n2 @atom:cd @atom:cd @atom:n2
@angle:cd-cd-n @atom:cd @atom:cd @atom:n
@angle:cd-cd-na @atom:cd @atom:cd @atom:na
@angle:cd-cd-nc @atom:cd @atom:cd @atom:nc
@angle:cd-cd-nd @atom:cd @atom:cd @atom:nd
@angle:cd-cd-nh @atom:cd @atom:cd @atom:nh
@angle:cd-cd-oh @atom:cd @atom:cd @atom:oh
@angle:cd-cd-os @atom:cd @atom:cd @atom:os
@angle:cd-cd-pc @atom:cd @atom:cd @atom:pc
@angle:cd-cd-ss @atom:cd @atom:cd @atom:ss
@angle:ce-cd-nd @atom:ce @atom:cd @atom:nd
@angle:cf-cd-na @atom:cf @atom:cd @atom:na
@angle:cf-cd-nc @atom:cf @atom:cd @atom:nc
@angle:cf-cd-nd @atom:cf @atom:cd @atom:nd
@angle:cf-cd-os @atom:cf @atom:cd @atom:os
@angle:cf-cd-ss @atom:cf @atom:cd @atom:ss
@angle:c-cd-h4 @atom:c @atom:cd @atom:h4
@angle:c-cd-ha @atom:c @atom:cd @atom:ha
@angle:cl-cd-nc @atom:cl @atom:cd @atom:nc
@angle:c-cd-n2 @atom:c @atom:cd @atom:n2
@angle:c-cd-n @atom:c @atom:cd @atom:n
@angle:c-cd-nc @atom:c @atom:cd @atom:nc
@angle:c-cd-nd @atom:c @atom:cd @atom:nd
@angle:c-cd-oh @atom:c @atom:cd @atom:oh
@angle:c-cd-os @atom:c @atom:cd @atom:os
@angle:h4-cd-n @atom:h4 @atom:cd @atom:n
@angle:h4-cd-na @atom:h4 @atom:cd @atom:na
@angle:h4-cd-nc @atom:h4 @atom:cd @atom:nc
@angle:h4-cd-nd @atom:h4 @atom:cd @atom:nd
@angle:h4-cd-os @atom:h4 @atom:cd @atom:os
@angle:h4-cd-ss @atom:h4 @atom:cd @atom:ss
@angle:h5-cd-n @atom:h5 @atom:cd @atom:n
@angle:h5-cd-na @atom:h5 @atom:cd @atom:na
@angle:h5-cd-nc @atom:h5 @atom:cd @atom:nc
@angle:h5-cd-nd @atom:h5 @atom:cd @atom:nd
@angle:h5-cd-os @atom:h5 @atom:cd @atom:os
@angle:h5-cd-ss @atom:h5 @atom:cd @atom:ss
@angle:ha-cd-na @atom:ha @atom:cd @atom:na
@angle:ha-cd-nc @atom:ha @atom:cd @atom:nc
@angle:ha-cd-nd @atom:ha @atom:cd @atom:nd
@angle:ha-cd-os @atom:ha @atom:cd @atom:os
@angle:ha-cd-pc @atom:ha @atom:cd @atom:pc
@angle:ha-cd-ss @atom:ha @atom:cd @atom:ss
@angle:na-cd-nc @atom:na @atom:cd @atom:nc
@angle:na-cd-nd @atom:na @atom:cd @atom:nd
@angle:na-cd-nh @atom:na @atom:cd @atom:nh
@angle:na-cd-ss @atom:na @atom:cd @atom:ss
@angle:nc-cd-nd @atom:nc @atom:cd @atom:nd
@angle:nc-cd-nh @atom:nc @atom:cd @atom:nh
@angle:nc-cd-oh @atom:nc @atom:cd @atom:oh
@angle:nc-cd-os @atom:nc @atom:cd @atom:os
@angle:nc-cd-ss @atom:nc @atom:cd @atom:ss
@angle:nd-cd-nd @atom:nd @atom:cd @atom:nd
@angle:nd-cd-nh @atom:nd @atom:cd @atom:nh
@angle:nd-cd-ss @atom:nd @atom:cd @atom:ss
@angle:nh-cd-nh @atom:nh @atom:cd @atom:nh
@angle:nh-cd-os @atom:nh @atom:cd @atom:os
@angle:nh-cd-ss @atom:nh @atom:cd @atom:ss
@angle:n-cd-na @atom:n @atom:cd @atom:na
@angle:n-cd-nc @atom:n @atom:cd @atom:nc
@angle:n-cd-nd @atom:n @atom:cd @atom:nd
@angle:n-cd-nh @atom:n @atom:cd @atom:nh
@angle:n-cd-ss @atom:n @atom:cd @atom:ss
@angle:oh-cd-os @atom:oh @atom:cd @atom:os
@angle:os-cd-ss @atom:os @atom:cd @atom:ss
@angle:ss-cd-ss @atom:ss @atom:cd @atom:ss
@angle:ss-cd-sy @atom:ss @atom:cd @atom:sy
@angle:c2-ce-c3 @atom:c2 @atom:ce @atom:c3
@angle:c2-ce-ca @atom:c2 @atom:ce @atom:ca
@angle:c2-ce-cc @atom:c2 @atom:ce @atom:cc
@angle:c2-ce-ce @atom:c2 @atom:ce @atom:ce
@angle:c2-ce-cg @atom:c2 @atom:ce @atom:cg
@angle:c2-ce-cl @atom:c2 @atom:ce @atom:cl
@angle:c2-ce-h4 @atom:c2 @atom:ce @atom:h4
@angle:c2-ce-ha @atom:c2 @atom:ce @atom:ha
@angle:c2-ce-n1 @atom:c2 @atom:ce @atom:n1
@angle:c2-ce-n2 @atom:c2 @atom:ce @atom:n2
@angle:c2-ce-na @atom:c2 @atom:ce @atom:na
@angle:c2-ce-ne @atom:c2 @atom:ce @atom:ne
@angle:c2-ce-oh @atom:c2 @atom:ce @atom:oh
@angle:c2-ce-p2 @atom:c2 @atom:ce @atom:p2
@angle:c2-ce-pe @atom:c2 @atom:ce @atom:pe
@angle:c2-ce-px @atom:c2 @atom:ce @atom:px
@angle:c2-ce-py @atom:c2 @atom:ce @atom:py
@angle:c2-ce-sx @atom:c2 @atom:ce @atom:sx
@angle:c2-ce-sy @atom:c2 @atom:ce @atom:sy
@angle:c3-ce-ca @atom:c3 @atom:ce @atom:ca
@angle:c3-ce-cc @atom:c3 @atom:ce @atom:cc
@angle:c3-ce-ce @atom:c3 @atom:ce @atom:ce
@angle:c3-ce-cf @atom:c3 @atom:ce @atom:cf
@angle:c3-ce-cg @atom:c3 @atom:ce @atom:cg
@angle:c3-ce-n2 @atom:c3 @atom:ce @atom:n2
@angle:c3-ce-nf @atom:c3 @atom:ce @atom:nf
@angle:c3-ce-nh @atom:c3 @atom:ce @atom:nh
@angle:ca-ce-ca @atom:ca @atom:ce @atom:ca
@angle:ca-ce-cc @atom:ca @atom:ce @atom:cc
@angle:ca-ce-ce @atom:ca @atom:ce @atom:ce
@angle:ca-ce-cf @atom:ca @atom:ce @atom:cf
@angle:ca-ce-cl @atom:ca @atom:ce @atom:cl
@angle:ca-ce-h4 @atom:ca @atom:ce @atom:h4
@angle:ca-ce-ha @atom:ca @atom:ce @atom:ha
@angle:ca-ce-n2 @atom:ca @atom:ce @atom:n2
@angle:ca-ce-nf @atom:ca @atom:ce @atom:nf
@angle:ca-ce-nh @atom:ca @atom:ce @atom:nh
@angle:ca-ce-oh @atom:ca @atom:ce @atom:oh
@angle:ca-ce-os @atom:ca @atom:ce @atom:os
@angle:ca-ce-ss @atom:ca @atom:ce @atom:ss
@angle:c-ce-c2 @atom:c @atom:ce @atom:c2
@angle:c-ce-c3 @atom:c @atom:ce @atom:c3
@angle:c-ce-c @atom:c @atom:ce @atom:c
@angle:c-ce-ca @atom:c @atom:ce @atom:ca
@angle:cc-ce-cd @atom:cc @atom:ce @atom:cd
@angle:cc-ce-cf @atom:cc @atom:ce @atom:cf
@angle:c-ce-cd @atom:c @atom:ce @atom:cd
@angle:c-ce-ce @atom:c @atom:ce @atom:ce
@angle:c-ce-cf @atom:c @atom:ce @atom:cf
@angle:c-ce-cg @atom:c @atom:ce @atom:cg
@angle:cc-ce-h4 @atom:cc @atom:ce @atom:h4
@angle:cc-ce-ha @atom:cc @atom:ce @atom:ha
@angle:c-ce-cl @atom:c @atom:ce @atom:cl
@angle:cc-ce-n2 @atom:cc @atom:ce @atom:n2
@angle:cc-ce-nh @atom:cc @atom:ce @atom:nh
@angle:c-ce-cy @atom:c @atom:ce @atom:cy
@angle:cd-ce-ce @atom:cd @atom:ce @atom:ce
@angle:cd-ce-ha @atom:cd @atom:ce @atom:ha
@angle:ce-ce-ce @atom:ce @atom:ce @atom:ce
@angle:ce-ce-cf @atom:ce @atom:ce @atom:cf
@angle:ce-ce-cl @atom:ce @atom:ce @atom:cl
@angle:ce-ce-h4 @atom:ce @atom:ce @atom:h4
@angle:ce-ce-ha @atom:ce @atom:ce @atom:ha
@angle:ce-ce-n1 @atom:ce @atom:ce @atom:n1
@angle:ce-ce-n2 @atom:ce @atom:ce @atom:n2
@angle:ce-ce-oh @atom:ce @atom:ce @atom:oh
@angle:cf-ce-cg @atom:cf @atom:ce @atom:cg
@angle:cf-ce-cy @atom:cf @atom:ce @atom:cy
@angle:cf-ce-h4 @atom:cf @atom:ce @atom:h4
@angle:cf-ce-ha @atom:cf @atom:ce @atom:ha
@angle:cf-ce-n1 @atom:cf @atom:ce @atom:n1
@angle:cf-ce-n @atom:cf @atom:ce @atom:n
@angle:cf-ce-nh @atom:cf @atom:ce @atom:nh
@angle:cf-ce-oh @atom:cf @atom:ce @atom:oh
@angle:cg-ce-cg @atom:cg @atom:ce @atom:cg
@angle:cg-ce-ha @atom:cg @atom:ce @atom:ha
@angle:cg-ce-n1 @atom:cg @atom:ce @atom:n1
@angle:cg-ce-n2 @atom:cg @atom:ce @atom:n2
@angle:c-ce-ha @atom:c @atom:ce @atom:ha
@angle:c-ce-n @atom:c @atom:ce @atom:n
@angle:c-ce-nh @atom:c @atom:ce @atom:nh
@angle:c-ce-oh @atom:c @atom:ce @atom:oh
@angle:c-ce-os @atom:c @atom:ce @atom:os
@angle:h4-ce-n1 @atom:h4 @atom:ce @atom:n1
@angle:h4-ce-n2 @atom:h4 @atom:ce @atom:n2
@angle:h4-ce-ne @atom:h4 @atom:ce @atom:ne
@angle:ha-ce-n1 @atom:ha @atom:ce @atom:n1
@angle:ha-ce-n2 @atom:ha @atom:ce @atom:n2
@angle:ha-ce-ne @atom:ha @atom:ce @atom:ne
@angle:ha-ce-nh @atom:ha @atom:ce @atom:nh
@angle:ha-ce-p2 @atom:ha @atom:ce @atom:p2
@angle:ha-ce-pe @atom:ha @atom:ce @atom:pe
@angle:ha-ce-px @atom:ha @atom:ce @atom:px
@angle:ha-ce-py @atom:ha @atom:ce @atom:py
@angle:ha-ce-sx @atom:ha @atom:ce @atom:sx
@angle:ha-ce-sy @atom:ha @atom:ce @atom:sy
@angle:n2-ce-nh @atom:n2 @atom:ce @atom:nh
@angle:n2-ce-os @atom:n2 @atom:ce @atom:os
@angle:n2-ce-ss @atom:n2 @atom:ce @atom:ss
@angle:ne-ce-ne @atom:ne @atom:ce @atom:ne
@angle:ne-ce-nh @atom:ne @atom:ce @atom:nh
@angle:nf-ce-nh @atom:nf @atom:ce @atom:nh
@angle:pe-ce-pe @atom:pe @atom:ce @atom:pe
@angle:py-ce-py @atom:py @atom:ce @atom:py
@angle:sx-ce-sx @atom:sx @atom:ce @atom:sx
@angle:sy-ce-sy @atom:sy @atom:ce @atom:sy
@angle:c2-cf-c3 @atom:c2 @atom:cf @atom:c3
@angle:c2-cf-ca @atom:c2 @atom:cf @atom:ca
@angle:c2-cf-cd @atom:c2 @atom:cf @atom:cd
@angle:c2-cf-cf @atom:c2 @atom:cf @atom:cf
@angle:c2-cf-ch @atom:c2 @atom:cf @atom:ch
@angle:c2-cf-ha @atom:c2 @atom:cf @atom:ha
@angle:c2-cf-n2 @atom:c2 @atom:cf @atom:n2
@angle:c2-cf-nf @atom:c2 @atom:cf @atom:nf
@angle:c2-cf-p2 @atom:c2 @atom:cf @atom:p2
@angle:c2-cf-pf @atom:c2 @atom:cf @atom:pf
@angle:c2-cf-px @atom:c2 @atom:cf @atom:px
@angle:c2-cf-py @atom:c2 @atom:cf @atom:py
@angle:c2-cf-sx @atom:c2 @atom:cf @atom:sx
@angle:c2-cf-sy @atom:c2 @atom:cf @atom:sy
@angle:c3-cf-ca @atom:c3 @atom:cf @atom:ca
@angle:c3-cf-cd @atom:c3 @atom:cf @atom:cd
@angle:c3-cf-ce @atom:c3 @atom:cf @atom:ce
@angle:c3-cf-cf @atom:c3 @atom:cf @atom:cf
@angle:c3-cf-n2 @atom:c3 @atom:cf @atom:n2
@angle:ca-cf-ca @atom:ca @atom:cf @atom:ca
@angle:ca-cf-cc @atom:ca @atom:cf @atom:cc
@angle:ca-cf-cd @atom:ca @atom:cf @atom:cd
@angle:ca-cf-ce @atom:ca @atom:cf @atom:ce
@angle:ca-cf-ha @atom:ca @atom:cf @atom:ha
@angle:ca-cf-n2 @atom:ca @atom:cf @atom:n2
@angle:ca-cf-ne @atom:ca @atom:cf @atom:ne
@angle:ca-cf-oh @atom:ca @atom:cf @atom:oh
@angle:c-cf-c2 @atom:c @atom:cf @atom:c2
@angle:c-cf-c3 @atom:c @atom:cf @atom:c3
@angle:c-cf-c @atom:c @atom:cf @atom:c
@angle:c-cf-cc @atom:c @atom:cf @atom:cc
@angle:cc-cf-cf @atom:cc @atom:cf @atom:cf
@angle:c-cf-cd @atom:c @atom:cf @atom:cd
@angle:c-cf-ce @atom:c @atom:cf @atom:ce
@angle:cc-cf-ha @atom:cc @atom:cf @atom:ha
@angle:cd-cf-ce @atom:cd @atom:cf @atom:ce
@angle:cd-cf-ha @atom:cd @atom:cf @atom:ha
@angle:cd-cf-n2 @atom:cd @atom:cf @atom:n2
@angle:ce-cf-cf @atom:ce @atom:cf @atom:cf
@angle:ce-cf-ch @atom:ce @atom:cf @atom:ch
@angle:ce-cf-ha @atom:ce @atom:cf @atom:ha
@angle:ce-cf-n @atom:ce @atom:cf @atom:n
@angle:ce-cf-oh @atom:ce @atom:cf @atom:oh
@angle:cf-cf-cf @atom:cf @atom:cf @atom:cf
@angle:cf-cf-h4 @atom:cf @atom:cf @atom:h4
@angle:cf-cf-ha @atom:cf @atom:cf @atom:ha
@angle:cf-cf-n1 @atom:cf @atom:cf @atom:n1
@angle:cf-cf-n2 @atom:cf @atom:cf @atom:n2
@angle:c-cf-ha @atom:c @atom:cf @atom:ha
@angle:ch-cf-ch @atom:ch @atom:cf @atom:ch
@angle:ch-cf-ha @atom:ch @atom:cf @atom:ha
@angle:ch-cf-n1 @atom:ch @atom:cf @atom:n1
@angle:c-cf-n2 @atom:c @atom:cf @atom:n2
@angle:c-cf-n @atom:c @atom:cf @atom:n
@angle:c-cf-nh @atom:c @atom:cf @atom:nh
@angle:f-c-f @atom:f @atom:c @atom:f
@angle:h4-cf-n2 @atom:h4 @atom:cf @atom:n2
@angle:h4-cf-ne @atom:h4 @atom:cf @atom:ne
@angle:ha-cf-n1 @atom:ha @atom:cf @atom:n1
@angle:ha-cf-n2 @atom:ha @atom:cf @atom:n2
@angle:ha-cf-nf @atom:ha @atom:cf @atom:nf
@angle:ha-cf-nh @atom:ha @atom:cf @atom:nh
@angle:ha-cf-p2 @atom:ha @atom:cf @atom:p2
@angle:ha-cf-pf @atom:ha @atom:cf @atom:pf
@angle:ha-cf-px @atom:ha @atom:cf @atom:px
@angle:ha-cf-py @atom:ha @atom:cf @atom:py
@angle:ha-cf-sx @atom:ha @atom:cf @atom:sx
@angle:ha-cf-sy @atom:ha @atom:cf @atom:sy
@angle:n2-cf-nh @atom:n2 @atom:cf @atom:nh
@angle:nf-cf-nf @atom:nf @atom:cf @atom:nf
@angle:f-c-o @atom:f @atom:c @atom:o
@angle:pf-cf-pf @atom:pf @atom:cf @atom:pf
@angle:py-cf-py @atom:py @atom:cf @atom:py
@angle:f-c-s @atom:f @atom:c @atom:s
@angle:sx-cf-sx @atom:sx @atom:cf @atom:sx
@angle:sy-cf-sy @atom:sy @atom:cf @atom:sy
@angle:c1-cg-ca @atom:c1 @atom:cg @atom:ca
@angle:c1-cg-cc @atom:c1 @atom:cg @atom:cc
@angle:c1-cg-ce @atom:c1 @atom:cg @atom:ce
@angle:c1-cg-cg @atom:c1 @atom:cg @atom:cg
@angle:c1-cg-ne @atom:c1 @atom:cg @atom:ne
@angle:c1-cg-pe @atom:c1 @atom:cg @atom:pe
@angle:ca-cg-ch @atom:ca @atom:cg @atom:ch
@angle:ca-cg-n1 @atom:ca @atom:cg @atom:n1
@angle:c-cg-c1 @atom:c @atom:cg @atom:c1
@angle:cc-cg-n1 @atom:cc @atom:cg @atom:n1
@angle:ce-cg-ch @atom:ce @atom:cg @atom:ch
@angle:ce-cg-n1 @atom:ce @atom:cg @atom:n1
@angle:n1-cg-ne @atom:n1 @atom:cg @atom:ne
@angle:h4-c-o @atom:h4 @atom:c @atom:o
@angle:h5-c-n @atom:h5 @atom:c @atom:n
@angle:h5-c-o @atom:h5 @atom:c @atom:o
@angle:ha-c-ha @atom:ha @atom:c @atom:ha
@angle:ha-c-i @atom:ha @atom:c @atom:i
@angle:ha-c-n @atom:ha @atom:c @atom:n
@angle:ha-c-o @atom:ha @atom:c @atom:o
@angle:ha-c-oh @atom:ha @atom:c @atom:oh
@angle:ha-c-os @atom:ha @atom:c @atom:os
@angle:ha-c-s @atom:ha @atom:c @atom:s
@angle:c1-ch-ca @atom:c1 @atom:ch @atom:ca
@angle:c1-ch-cf @atom:c1 @atom:ch @atom:cf
@angle:c1-ch-ch @atom:c1 @atom:ch @atom:ch
@angle:c1-ch-nf @atom:c1 @atom:ch @atom:nf
@angle:c1-ch-pf @atom:c1 @atom:ch @atom:pf
@angle:ca-ch-cg @atom:ca @atom:ch @atom:cg
@angle:ca-ch-n1 @atom:ca @atom:ch @atom:n1
@angle:c-ch-c1 @atom:c @atom:ch @atom:c1
@angle:cd-ch-n1 @atom:cd @atom:ch @atom:n1
@angle:cf-ch-cg @atom:cf @atom:ch @atom:cg
@angle:cf-ch-n1 @atom:cf @atom:ch @atom:n1
@angle:cg-ch-ch @atom:cg @atom:ch @atom:ch
@angle:n1-ch-nf @atom:n1 @atom:ch @atom:nf
@angle:i-c-i @atom:i @atom:c @atom:i
@angle:i-c-o @atom:i @atom:c @atom:o
@angle:f-cl-f @atom:f @atom:cl @atom:f
@angle:n2-c-n2 @atom:n2 @atom:c @atom:n2
@angle:n2-c-o @atom:n2 @atom:c @atom:o
@angle:n4-c-n4 @atom:n4 @atom:c @atom:n4
@angle:n4-c-o @atom:n4 @atom:c @atom:o
@angle:nc-c-o @atom:nc @atom:c @atom:o
@angle:nd-c-o @atom:nd @atom:c @atom:o
@angle:ne-c-ne @atom:ne @atom:c @atom:ne
@angle:ne-c-o @atom:ne @atom:c @atom:o
@angle:nf-c-nf @atom:nf @atom:c @atom:nf
@angle:nf-c-o @atom:nf @atom:c @atom:o
@angle:n-c-n @atom:n @atom:c @atom:n
@angle:n-c-nc @atom:n @atom:c @atom:nc
@angle:n-c-nd @atom:n @atom:c @atom:nd
@angle:n-c-ne @atom:n @atom:c @atom:ne
@angle:n-c-o @atom:n @atom:c @atom:o
@angle:n-c-oh @atom:n @atom:c @atom:oh
@angle:no-c-no @atom:no @atom:c @atom:no
@angle:no-c-o @atom:no @atom:c @atom:o
@angle:n-c-os @atom:n @atom:c @atom:os
@angle:n-c-s @atom:n @atom:c @atom:s
@angle:n-c-sh @atom:n @atom:c @atom:sh
@angle:n-c-ss @atom:n @atom:c @atom:ss
@angle:oh-c-oh @atom:oh @atom:c @atom:oh
@angle:oh-c-s @atom:oh @atom:c @atom:s
@angle:o-c-o @atom:o @atom:c @atom:o
@angle:o-c-oh @atom:o @atom:c @atom:oh
@angle:o-c-os @atom:o @atom:c @atom:os
@angle:o-c-p2 @atom:o @atom:c @atom:p2
@angle:o-c-p3 @atom:o @atom:c @atom:p3
@angle:o-c-p5 @atom:o @atom:c @atom:p5
@angle:o-c-pe @atom:o @atom:c @atom:pe
@angle:o-c-pf @atom:o @atom:c @atom:pf
@angle:o-c-px @atom:o @atom:c @atom:px
@angle:o-c-py @atom:o @atom:c @atom:py
@angle:o-c-s4 @atom:o @atom:c @atom:s4
@angle:o-c-s6 @atom:o @atom:c @atom:s6
@angle:o-c-s @atom:o @atom:c @atom:s
@angle:o-c-sh @atom:o @atom:c @atom:sh
@angle:os-c-os @atom:os @atom:c @atom:os
@angle:o-c-ss @atom:o @atom:c @atom:ss
@angle:os-c-s @atom:os @atom:c @atom:s
@angle:os-c-ss @atom:os @atom:c @atom:ss
@angle:o-c-sx @atom:o @atom:c @atom:sx
@angle:o-c-sy @atom:o @atom:c @atom:sy
@angle:p2-c-p2 @atom:p2 @atom:c @atom:p2
@angle:p3-c-p3 @atom:p3 @atom:c @atom:p3
@angle:p3-c-py @atom:p3 @atom:c @atom:py
@angle:p5-c-p5 @atom:p5 @atom:c @atom:p5
@angle:ca-cp-ca @atom:ca @atom:cp @atom:ca
@angle:ca-cp-cp @atom:ca @atom:cp @atom:cp
@angle:ca-cp-na @atom:ca @atom:cp @atom:na
@angle:ca-cp-nb @atom:ca @atom:cp @atom:nb
@angle:cp-cp-cp @atom:cp @atom:cp @atom:cp
@angle:cp-cp-cq @atom:cp @atom:cp @atom:cq
@angle:cp-cp-nb @atom:cp @atom:cp @atom:nb
@angle:pe-c-pe @atom:pe @atom:c @atom:pe
@angle:pf-c-pf @atom:pf @atom:c @atom:pf
@angle:nb-cp-nb @atom:nb @atom:cp @atom:nb
@angle:py-c-py @atom:py @atom:c @atom:py
@angle:ca-cq-ca @atom:ca @atom:cq @atom:ca
@angle:ca-cq-cq @atom:ca @atom:cq @atom:cq
@angle:ca-cq-nb @atom:ca @atom:cq @atom:nb
@angle:cp-cq-cq @atom:cp @atom:cq @atom:cq
@angle:cq-cq-cq @atom:cq @atom:cq @atom:cq
@angle:cq-cq-nb @atom:cq @atom:cq @atom:nb
@angle:s4-c-s4 @atom:s4 @atom:c @atom:s4
@angle:s6-c-s6 @atom:s6 @atom:c @atom:s6
@angle:sh-c-sh @atom:sh @atom:c @atom:sh
@angle:s-c-s @atom:s @atom:c @atom:s
@angle:s-c-sh @atom:s @atom:c @atom:sh
@angle:s-c-ss @atom:s @atom:c @atom:ss
@angle:ss-c-ss @atom:ss @atom:c @atom:ss
@angle:sx-c-sx @atom:sx @atom:c @atom:sx
@angle:sy-c-sy @atom:sy @atom:c @atom:sy
@angle:c2-cu-cx @atom:c2 @atom:cu @atom:cx
@angle:c-cu-cu @atom:c @atom:cu @atom:cu
@angle:cu-cu-cx @atom:cu @atom:cu @atom:cx
@angle:cu-cu-ha @atom:cu @atom:cu @atom:ha
@angle:cv-cv-cy @atom:cv @atom:cv @atom:cy
@angle:cv-cv-ha @atom:cv @atom:cv @atom:ha
@angle:cx-cv-cx @atom:cx @atom:cv @atom:cx
@angle:cy-cv-ha @atom:cy @atom:cv @atom:ha
@angle:c1-cx-cx @atom:c1 @atom:cx @atom:cx
@angle:c2-cx-cx @atom:c2 @atom:cx @atom:cx
@angle:c2-cx-h1 @atom:c2 @atom:cx @atom:h1
@angle:c2-cx-hc @atom:c2 @atom:cx @atom:hc
@angle:c2-cx-os @atom:c2 @atom:cx @atom:os
@angle:c3-cx-c3 @atom:c3 @atom:cx @atom:c3
@angle:c3-cx-cx @atom:c3 @atom:cx @atom:cx
@angle:c3-cx-h1 @atom:c3 @atom:cx @atom:h1
@angle:c3-cx-hc @atom:c3 @atom:cx @atom:hc
@angle:c3-cx-n3 @atom:c3 @atom:cx @atom:n3
@angle:c3-cx-os @atom:c3 @atom:cx @atom:os
@angle:ca-cx-cx @atom:ca @atom:cx @atom:cx
@angle:ca-cx-h1 @atom:ca @atom:cx @atom:h1
@angle:ca-cx-hc @atom:ca @atom:cx @atom:hc
@angle:ca-cx-oh @atom:ca @atom:cx @atom:oh
@angle:ca-cx-os @atom:ca @atom:cx @atom:os
@angle:c-cx-c3 @atom:c @atom:cx @atom:c3
@angle:cc-cx-cx @atom:cc @atom:cx @atom:cx
@angle:cc-cx-hc @atom:cc @atom:cx @atom:hc
@angle:c-cx-cx @atom:c @atom:cx @atom:cx
@angle:cd-cx-cx @atom:cd @atom:cx @atom:cx
@angle:c-cx-h1 @atom:c @atom:cx @atom:h1
@angle:c-cx-hc @atom:c @atom:cx @atom:hc
@angle:cl-cx-cl @atom:cl @atom:cx @atom:cl
@angle:cl-cx-cx @atom:cl @atom:cx @atom:cx
@angle:cl-cx-h1 @atom:cl @atom:cx @atom:h1
@angle:cl-cx-hc @atom:cl @atom:cx @atom:hc
@angle:c-cx-os @atom:c @atom:cx @atom:os
@angle:cu-cx-cu @atom:cu @atom:cx @atom:cu
@angle:cu-cx-cx @atom:cu @atom:cx @atom:cx
@angle:cu-cx-hc @atom:cu @atom:cx @atom:hc
@angle:cx-cx-cx @atom:cx @atom:cx @atom:cx
@angle:cx-cx-cy @atom:cx @atom:cx @atom:cy
@angle:cx-cx-f @atom:cx @atom:cx @atom:f
@angle:cx-cx-h1 @atom:cx @atom:cx @atom:h1
@angle:cx-cx-hc @atom:cx @atom:cx @atom:hc
@angle:cx-cx-hx @atom:cx @atom:cx @atom:hx
@angle:cx-cx-n3 @atom:cx @atom:cx @atom:n3
@angle:cx-cx-na @atom:cx @atom:cx @atom:na
@angle:cx-cx-nh @atom:cx @atom:cx @atom:nh
@angle:cx-cx-os @atom:cx @atom:cx @atom:os
@angle:cy-cx-hc @atom:cy @atom:cx @atom:hc
@angle:f-cx-f @atom:f @atom:cx @atom:f
@angle:f-cx-h1 @atom:f @atom:cx @atom:h1
@angle:f-cx-hc @atom:f @atom:cx @atom:hc
@angle:h1-cx-h1 @atom:h1 @atom:cx @atom:h1
@angle:h1-cx-n3 @atom:h1 @atom:cx @atom:n3
@angle:h1-cx-n @atom:h1 @atom:cx @atom:n
@angle:h1-cx-na @atom:h1 @atom:cx @atom:na
@angle:h1-cx-nh @atom:h1 @atom:cx @atom:nh
@angle:h1-cx-os @atom:h1 @atom:cx @atom:os
@angle:h2-cx-h2 @atom:h2 @atom:cx @atom:h2
@angle:h2-cx-n2 @atom:h2 @atom:cx @atom:n2
@angle:hc-cx-hc @atom:hc @atom:cx @atom:hc
@angle:hc-cx-os @atom:hc @atom:cx @atom:os
@angle:hx-cx-n4 @atom:hx @atom:cx @atom:n4
@angle:n2-cx-n2 @atom:n2 @atom:cx @atom:n2
@angle:n-cx-oh @atom:n @atom:cx @atom:oh
@angle:n-cx-os @atom:n @atom:cx @atom:os
@angle:oh-cx-oh @atom:oh @atom:cx @atom:oh
@angle:oh-cx-os @atom:oh @atom:cx @atom:os
@angle:os-cx-os @atom:os @atom:cx @atom:os
@angle:c2-cy-cy @atom:c2 @atom:cy @atom:cy
@angle:c3-cy-c3 @atom:c3 @atom:cy @atom:c3
@angle:c3-cy-cy @atom:c3 @atom:cy @atom:cy
@angle:c3-cy-h1 @atom:c3 @atom:cy @atom:h1
@angle:c3-cy-hc @atom:c3 @atom:cy @atom:hc
@angle:c3-cy-n3 @atom:c3 @atom:cy @atom:n3
@angle:c3-cy-n @atom:c3 @atom:cy @atom:n
@angle:c3-cy-os @atom:c3 @atom:cy @atom:os
@angle:c-cy-c3 @atom:c @atom:cy @atom:c3
@angle:cc-cy-cy @atom:cc @atom:cy @atom:cy
@angle:c-cy-cy @atom:c @atom:cy @atom:cy
@angle:cd-cy-cy @atom:cd @atom:cy @atom:cy
@angle:ce-cy-h2 @atom:ce @atom:cy @atom:h2
@angle:ce-cy-n @atom:ce @atom:cy @atom:n
@angle:ce-cy-ss @atom:ce @atom:cy @atom:ss
@angle:c-cy-h1 @atom:c @atom:cy @atom:h1
@angle:c-cy-hc @atom:c @atom:cy @atom:hc
@angle:cl-cy-cy @atom:cl @atom:cy @atom:cy
@angle:cl-cy-h1 @atom:cl @atom:cy @atom:h1
@angle:cl-cy-hc @atom:cl @atom:cy @atom:hc
@angle:c-cy-n @atom:c @atom:cy @atom:n
@angle:c-cy-os @atom:c @atom:cy @atom:os
@angle:cv-cy-cy @atom:cv @atom:cy @atom:cy
@angle:cv-cy-hc @atom:cv @atom:cy @atom:hc
@angle:cx-cy-cy @atom:cx @atom:cy @atom:cy
@angle:cx-cy-hc @atom:cx @atom:cy @atom:hc
@angle:cy-cy-cy @atom:cy @atom:cy @atom:cy
@angle:cy-cy-f @atom:cy @atom:cy @atom:f
@angle:cy-cy-h1 @atom:cy @atom:cy @atom:h1
@angle:cy-cy-h2 @atom:cy @atom:cy @atom:h2
@angle:cy-cy-hc @atom:cy @atom:cy @atom:hc
@angle:cy-cy-n3 @atom:cy @atom:cy @atom:n3
@angle:cy-cy-n @atom:cy @atom:cy @atom:n
@angle:cy-cy-na @atom:cy @atom:cy @atom:na
@angle:cy-cy-oh @atom:cy @atom:cy @atom:oh
@angle:cy-cy-os @atom:cy @atom:cy @atom:os
@angle:cy-cy-s6 @atom:cy @atom:cy @atom:s6
@angle:cy-cy-ss @atom:cy @atom:cy @atom:ss
@angle:h1-cy-h1 @atom:h1 @atom:cy @atom:h1
@angle:h1-cy-n3 @atom:h1 @atom:cy @atom:n3
@angle:h1-cy-n @atom:h1 @atom:cy @atom:n
@angle:h1-cy-oh @atom:h1 @atom:cy @atom:oh
@angle:h1-cy-os @atom:h1 @atom:cy @atom:os
@angle:h1-cy-s6 @atom:h1 @atom:cy @atom:s6
@angle:h2-cy-n @atom:h2 @atom:cy @atom:n
@angle:h2-cy-os @atom:h2 @atom:cy @atom:os
@angle:h2-cy-s6 @atom:h2 @atom:cy @atom:s6
@angle:h2-cy-ss @atom:h2 @atom:cy @atom:ss
@angle:hc-cy-hc @atom:hc @atom:cy @atom:hc
@angle:n-cy-os @atom:n @atom:cy @atom:os
@angle:n-cy-s6 @atom:n @atom:cy @atom:s6
@angle:n-cy-ss @atom:n @atom:cy @atom:ss
@angle:nh-cz-nh @atom:nh @atom:cz @atom:nh
@angle:br-n1-c1 @atom:br @atom:n1 @atom:c1
@angle:c1-n1-c1 @atom:c1 @atom:n1 @atom:c1
@angle:c1-n1-c2 @atom:c1 @atom:n1 @atom:c2
@angle:c1-n1-c3 @atom:c1 @atom:n1 @atom:c3
@angle:c1-n1-ca @atom:c1 @atom:n1 @atom:ca
@angle:c1-n1-cl @atom:c1 @atom:n1 @atom:cl
@angle:c1-n1-f @atom:c1 @atom:n1 @atom:f
@angle:c1-n1-hn @atom:c1 @atom:n1 @atom:hn
@angle:c1-n1-i @atom:c1 @atom:n1 @atom:i
@angle:c1-n1-n1 @atom:c1 @atom:n1 @atom:n1
@angle:c1-n1-n2 @atom:c1 @atom:n1 @atom:n2
@angle:c1-n1-n3 @atom:c1 @atom:n1 @atom:n3
@angle:c1-n1-n4 @atom:c1 @atom:n1 @atom:n4
@angle:c1-n1-na @atom:c1 @atom:n1 @atom:na
@angle:c1-n1-nh @atom:c1 @atom:n1 @atom:nh
@angle:c1-n1-o @atom:c1 @atom:n1 @atom:o
@angle:c1-n1-oh @atom:c1 @atom:n1 @atom:oh
@angle:c1-n1-os @atom:c1 @atom:n1 @atom:os
@angle:c1-n1-p2 @atom:c1 @atom:n1 @atom:p2
@angle:c1-n1-p3 @atom:c1 @atom:n1 @atom:p3
@angle:c1-n1-p4 @atom:c1 @atom:n1 @atom:p4
@angle:c1-n1-p5 @atom:c1 @atom:n1 @atom:p5
@angle:c1-n1-s2 @atom:c1 @atom:n1 @atom:s2
@angle:c1-n1-s4 @atom:c1 @atom:n1 @atom:s4
@angle:c1-n1-s @atom:c1 @atom:n1 @atom:s
@angle:c1-n1-s6 @atom:c1 @atom:n1 @atom:s6
@angle:c1-n1-sh @atom:c1 @atom:n1 @atom:sh
@angle:c1-n1-ss @atom:c1 @atom:n1 @atom:ss
@angle:c2-n1-n1 @atom:c2 @atom:n1 @atom:n1
@angle:c2-n1-o @atom:c2 @atom:n1 @atom:o
@angle:c2-n1-s @atom:c2 @atom:n1 @atom:s
@angle:c3-n1-n1 @atom:c3 @atom:n1 @atom:n1
@angle:ca-n1-n1 @atom:ca @atom:n1 @atom:n1
@angle:ce-n1-o @atom:ce @atom:n1 @atom:o
@angle:ce-n1-s @atom:ce @atom:n1 @atom:s
@angle:cf-n1-o @atom:cf @atom:n1 @atom:o
@angle:cf-n1-s @atom:cf @atom:n1 @atom:s
@angle:cl-n1-n1 @atom:cl @atom:n1 @atom:n1
@angle:f-n1-n1 @atom:f @atom:n1 @atom:n1
@angle:hn-n1-n1 @atom:hn @atom:n1 @atom:n1
@angle:i-n1-n1 @atom:i @atom:n1 @atom:n1
@angle:n1-n1-n1 @atom:n1 @atom:n1 @atom:n1
@angle:n1-n1-n2 @atom:n1 @atom:n1 @atom:n2
@angle:n1-n1-n3 @atom:n1 @atom:n1 @atom:n3
@angle:n1-n1-n4 @atom:n1 @atom:n1 @atom:n4
@angle:n1-n1-na @atom:n1 @atom:n1 @atom:na
@angle:n1-n1-nh @atom:n1 @atom:n1 @atom:nh
@angle:n1-n1-o @atom:n1 @atom:n1 @atom:o
@angle:n1-n1-oh @atom:n1 @atom:n1 @atom:oh
@angle:n1-n1-os @atom:n1 @atom:n1 @atom:os
@angle:n1-n1-p2 @atom:n1 @atom:n1 @atom:p2
@angle:n1-n1-p3 @atom:n1 @atom:n1 @atom:p3
@angle:n1-n1-s @atom:n1 @atom:n1 @atom:s
@angle:n1-n1-sh @atom:n1 @atom:n1 @atom:sh
@angle:n1-n1-ss @atom:n1 @atom:n1 @atom:ss
@angle:o-n1-p2 @atom:o @atom:n1 @atom:p2
@angle:p2-n1-s @atom:p2 @atom:n1 @atom:s
@angle:br-n2-br @atom:br @atom:n2 @atom:br
@angle:br-n2-c2 @atom:br @atom:n2 @atom:c2
@angle:br-n2-n2 @atom:br @atom:n2 @atom:n2
@angle:br-n2-o @atom:br @atom:n2 @atom:o
@angle:br-n2-p2 @atom:br @atom:n2 @atom:p2
@angle:br-n2-s @atom:br @atom:n2 @atom:s
@angle:c1-n2-c1 @atom:c1 @atom:n2 @atom:c1
@angle:c1-n2-c3 @atom:c1 @atom:n2 @atom:c3
@angle:c1-n2-cl @atom:c1 @atom:n2 @atom:cl
@angle:c1-n2-hn @atom:c1 @atom:n2 @atom:hn
@angle:c1-n2-n2 @atom:c1 @atom:n2 @atom:n2
@angle:c1-n2-o @atom:c1 @atom:n2 @atom:o
@angle:c1-n2-p2 @atom:c1 @atom:n2 @atom:p2
@angle:c1-n2-s @atom:c1 @atom:n2 @atom:s
@angle:c2-n2-c2 @atom:c2 @atom:n2 @atom:c2
@angle:c2-n2-c3 @atom:c2 @atom:n2 @atom:c3
@angle:c2-n2-ca @atom:c2 @atom:n2 @atom:ca
@angle:c2-n2-cl @atom:c2 @atom:n2 @atom:cl
@angle:c2-n2-f @atom:c2 @atom:n2 @atom:f
@angle:c2-n2-hn @atom:c2 @atom:n2 @atom:hn
@angle:c2-n2-i @atom:c2 @atom:n2 @atom:i
@angle:c2-n2-n1 @atom:c2 @atom:n2 @atom:n1
@angle:c2-n2-n2 @atom:c2 @atom:n2 @atom:n2
@angle:c2-n2-n3 @atom:c2 @atom:n2 @atom:n3
@angle:c2-n2-n4 @atom:c2 @atom:n2 @atom:n4
@angle:c2-n2-n @atom:c2 @atom:n2 @atom:n
@angle:c2-n2-na @atom:c2 @atom:n2 @atom:na
@angle:c2-n2-nh @atom:c2 @atom:n2 @atom:nh
@angle:c2-n2-no @atom:c2 @atom:n2 @atom:no
@angle:c2-n2-o @atom:c2 @atom:n2 @atom:o
@angle:c2-n2-oh @atom:c2 @atom:n2 @atom:oh
@angle:c2-n2-os @atom:c2 @atom:n2 @atom:os
@angle:c2-n2-p2 @atom:c2 @atom:n2 @atom:p2
@angle:c2-n2-p3 @atom:c2 @atom:n2 @atom:p3
@angle:c2-n2-p4 @atom:c2 @atom:n2 @atom:p4
@angle:c2-n2-s4 @atom:c2 @atom:n2 @atom:s4
@angle:c2-n2-s6 @atom:c2 @atom:n2 @atom:s6
@angle:c2-n2-s @atom:c2 @atom:n2 @atom:s
@angle:c2-n2-sh @atom:c2 @atom:n2 @atom:sh
@angle:c2-n2-ss @atom:c2 @atom:n2 @atom:ss
@angle:c3-n2-c3 @atom:c3 @atom:n2 @atom:c3
@angle:c3-n2-ca @atom:c3 @atom:n2 @atom:ca
@angle:c3-n2-ce @atom:c3 @atom:n2 @atom:ce
@angle:c3-n2-cf @atom:c3 @atom:n2 @atom:cf
@angle:c3-n2-hn @atom:c3 @atom:n2 @atom:hn
@angle:c3-n2-n1 @atom:c3 @atom:n2 @atom:n1
@angle:c3-n2-n2 @atom:c3 @atom:n2 @atom:n2
@angle:c3-n2-nh @atom:c3 @atom:n2 @atom:nh
@angle:c3-n2-o @atom:c3 @atom:n2 @atom:o
@angle:c3-n2-p2 @atom:c3 @atom:n2 @atom:p2
@angle:c3-n2-s6 @atom:c3 @atom:n2 @atom:s6
@angle:c3-n2-s @atom:c3 @atom:n2 @atom:s
@angle:ca-n2-ca @atom:ca @atom:n2 @atom:ca
@angle:ca-n2-hn @atom:ca @atom:n2 @atom:hn
@angle:ca-n2-n2 @atom:ca @atom:n2 @atom:n2
@angle:ca-n2-o @atom:ca @atom:n2 @atom:o
@angle:ca-n2-p2 @atom:ca @atom:n2 @atom:p2
@angle:ca-n2-s @atom:ca @atom:n2 @atom:s
@angle:c-n2-c2 @atom:c @atom:n2 @atom:c2
@angle:c-n2-c @atom:c @atom:n2 @atom:c
@angle:c-n2-ca @atom:c @atom:n2 @atom:ca
@angle:cc-n2-cl @atom:cc @atom:n2 @atom:cl
@angle:cc-n2-hn @atom:cc @atom:n2 @atom:hn
@angle:cc-n2-na @atom:cc @atom:n2 @atom:na
@angle:cc-n2-nh @atom:cc @atom:n2 @atom:nh
@angle:cd-n2-cl @atom:cd @atom:n2 @atom:cl
@angle:cd-n2-hn @atom:cd @atom:n2 @atom:hn
@angle:ce-n2-hn @atom:ce @atom:n2 @atom:hn
@angle:ce-n2-n @atom:ce @atom:n2 @atom:n
@angle:ce-n2-nh @atom:ce @atom:n2 @atom:nh
@angle:ce-n2-o @atom:ce @atom:n2 @atom:o
@angle:ce-n2-oh @atom:ce @atom:n2 @atom:oh
@angle:ce-n2-os @atom:ce @atom:n2 @atom:os
@angle:ce-n2-s @atom:ce @atom:n2 @atom:s
@angle:cf-n2-hn @atom:cf @atom:n2 @atom:hn
@angle:cf-n2-n @atom:cf @atom:n2 @atom:n
@angle:cf-n2-nh @atom:cf @atom:n2 @atom:nh
@angle:cf-n2-o @atom:cf @atom:n2 @atom:o
@angle:cf-n2-oh @atom:cf @atom:n2 @atom:oh
@angle:cf-n2-os @atom:cf @atom:n2 @atom:os
@angle:cf-n2-s @atom:cf @atom:n2 @atom:s
@angle:cl-n2-n1 @atom:cl @atom:n2 @atom:n1
@angle:cl-n2-n2 @atom:cl @atom:n2 @atom:n2
@angle:cl-n2-o @atom:cl @atom:n2 @atom:o
@angle:cl-n2-p2 @atom:cl @atom:n2 @atom:p2
@angle:cl-n2-s @atom:cl @atom:n2 @atom:s
@angle:cx-n2-n2 @atom:cx @atom:n2 @atom:n2
@angle:f-n2-n2 @atom:f @atom:n2 @atom:n2
@angle:f-n2-o @atom:f @atom:n2 @atom:o
@angle:f-n2-p2 @atom:f @atom:n2 @atom:p2
@angle:f-n2-s @atom:f @atom:n2 @atom:s
@angle:hn-n2-hn @atom:hn @atom:n2 @atom:hn
@angle:hn-n2-n1 @atom:hn @atom:n2 @atom:n1
@angle:hn-n2-n2 @atom:hn @atom:n2 @atom:n2
@angle:hn-n2-ne @atom:hn @atom:n2 @atom:ne
@angle:hn-n2-nf @atom:hn @atom:n2 @atom:nf
@angle:hn-n2-o @atom:hn @atom:n2 @atom:o
@angle:hn-n2-p2 @atom:hn @atom:n2 @atom:p2
@angle:hn-n2-p4 @atom:hn @atom:n2 @atom:p4
@angle:hn-n2-p5 @atom:hn @atom:n2 @atom:p5
@angle:hn-n2-pe @atom:hn @atom:n2 @atom:pe
@angle:hn-n2-pf @atom:hn @atom:n2 @atom:pf
@angle:hn-n2-s2 @atom:hn @atom:n2 @atom:s2
@angle:hn-n2-s4 @atom:hn @atom:n2 @atom:s4
@angle:hn-n2-s @atom:hn @atom:n2 @atom:s
@angle:hn-n2-s6 @atom:hn @atom:n2 @atom:s6
@angle:i-n2-n2 @atom:i @atom:n2 @atom:n2
@angle:i-n2-o @atom:i @atom:n2 @atom:o
@angle:i-n2-p2 @atom:i @atom:n2 @atom:p2
@angle:i-n2-s @atom:i @atom:n2 @atom:s
@angle:n1-n2-n1 @atom:n1 @atom:n2 @atom:n1
@angle:n2-n2-n1 @atom:n2 @atom:n2 @atom:n1
@angle:n2-n2-n2 @atom:n2 @atom:n2 @atom:n2
@angle:n2-n2-n3 @atom:n2 @atom:n2 @atom:n3
@angle:n2-n2-n4 @atom:n2 @atom:n2 @atom:n4
@angle:n2-n2-na @atom:n2 @atom:n2 @atom:na
@angle:n2-n2-nh @atom:n2 @atom:n2 @atom:nh
@angle:n2-n2-no @atom:n2 @atom:n2 @atom:no
@angle:n2-n2-o @atom:n2 @atom:n2 @atom:o
@angle:n2-n2-oh @atom:n2 @atom:n2 @atom:oh
@angle:n2-n2-os @atom:n2 @atom:n2 @atom:os
@angle:n2-n2-p2 @atom:n2 @atom:n2 @atom:p2
@angle:n2-n2-p3 @atom:n2 @atom:n2 @atom:p3
@angle:n2-n2-p4 @atom:n2 @atom:n2 @atom:p4
@angle:n2-n2-p5 @atom:n2 @atom:n2 @atom:p5
@angle:n2-n2-s4 @atom:n2 @atom:n2 @atom:s4
@angle:n2-n2-s6 @atom:n2 @atom:n2 @atom:s6
@angle:n2-n2-s @atom:n2 @atom:n2 @atom:s
@angle:n2-n2-sh @atom:n2 @atom:n2 @atom:sh
@angle:n2-n2-ss @atom:n2 @atom:n2 @atom:ss
@angle:n3-n2-n3 @atom:n3 @atom:n2 @atom:n3
@angle:n3-n2-o @atom:n3 @atom:n2 @atom:o
@angle:n3-n2-p2 @atom:n3 @atom:n2 @atom:p2
@angle:n3-n2-s @atom:n3 @atom:n2 @atom:s
@angle:n4-n2-n4 @atom:n4 @atom:n2 @atom:n4
@angle:n4-n2-o @atom:n4 @atom:n2 @atom:o
@angle:n4-n2-p2 @atom:n4 @atom:n2 @atom:p2
@angle:n4-n2-s @atom:n4 @atom:n2 @atom:s
@angle:na-n2-na @atom:na @atom:n2 @atom:na
@angle:na-n2-o @atom:na @atom:n2 @atom:o
@angle:na-n2-p2 @atom:na @atom:n2 @atom:p2
@angle:na-n2-s @atom:na @atom:n2 @atom:s
@angle:ne-n2-nh @atom:ne @atom:n2 @atom:nh
@angle:ne-n2-o @atom:ne @atom:n2 @atom:o
@angle:ne-n2-s @atom:ne @atom:n2 @atom:s
@angle:nf-n2-nh @atom:nf @atom:n2 @atom:nh
@angle:nf-n2-o @atom:nf @atom:n2 @atom:o
@angle:nf-n2-s @atom:nf @atom:n2 @atom:s
@angle:nh-n2-nh @atom:nh @atom:n2 @atom:nh
@angle:nh-n2-o @atom:nh @atom:n2 @atom:o
@angle:nh-n2-p2 @atom:nh @atom:n2 @atom:p2
@angle:nh-n2-s @atom:nh @atom:n2 @atom:s
@angle:n-n2-n2 @atom:n @atom:n2 @atom:n2
@angle:n-n2-o @atom:n @atom:n2 @atom:o
@angle:no-n2-no @atom:no @atom:n2 @atom:no
@angle:no-n2-o @atom:no @atom:n2 @atom:o
@angle:no-n2-p2 @atom:no @atom:n2 @atom:p2
@angle:n-n2-p2 @atom:n @atom:n2 @atom:p2
@angle:n-n2-s @atom:n @atom:n2 @atom:s
@angle:oh-n2-oh @atom:oh @atom:n2 @atom:oh
@angle:oh-n2-p2 @atom:oh @atom:n2 @atom:p2
@angle:oh-n2-s @atom:oh @atom:n2 @atom:s
@angle:o-n2-o @atom:o @atom:n2 @atom:o
@angle:o-n2-oh @atom:o @atom:n2 @atom:oh
@angle:o-n2-os @atom:o @atom:n2 @atom:os
@angle:o-n2-p2 @atom:o @atom:n2 @atom:p2
@angle:o-n2-p3 @atom:o @atom:n2 @atom:p3
@angle:o-n2-p4 @atom:o @atom:n2 @atom:p4
@angle:o-n2-p5 @atom:o @atom:n2 @atom:p5
@angle:o-n2-pe @atom:o @atom:n2 @atom:pe
@angle:o-n2-pf @atom:o @atom:n2 @atom:pf
@angle:o-n2-s4 @atom:o @atom:n2 @atom:s4
@angle:o-n2-s6 @atom:o @atom:n2 @atom:s6
@angle:o-n2-s @atom:o @atom:n2 @atom:s
@angle:o-n2-sh @atom:o @atom:n2 @atom:sh
@angle:os-n2-os @atom:os @atom:n2 @atom:os
@angle:os-n2-p2 @atom:os @atom:n2 @atom:p2
@angle:o-n2-ss @atom:o @atom:n2 @atom:ss
@angle:os-n2-s @atom:os @atom:n2 @atom:s
@angle:p2-n2-p2 @atom:p2 @atom:n2 @atom:p2
@angle:p2-n2-p3 @atom:p2 @atom:n2 @atom:p3
@angle:p2-n2-p4 @atom:p2 @atom:n2 @atom:p4
@angle:p2-n2-p5 @atom:p2 @atom:n2 @atom:p5
@angle:p2-n2-s4 @atom:p2 @atom:n2 @atom:s4
@angle:p2-n2-s6 @atom:p2 @atom:n2 @atom:s6
@angle:p2-n2-s @atom:p2 @atom:n2 @atom:s
@angle:p2-n2-sh @atom:p2 @atom:n2 @atom:sh
@angle:p2-n2-ss @atom:p2 @atom:n2 @atom:ss
@angle:p3-n2-p3 @atom:p3 @atom:n2 @atom:p3
@angle:p3-n2-s @atom:p3 @atom:n2 @atom:s
@angle:p4-n2-s @atom:p4 @atom:n2 @atom:s
@angle:p5-n2-p5 @atom:p5 @atom:n2 @atom:p5
@angle:p5-n2-s @atom:p5 @atom:n2 @atom:s
@angle:pe-n2-s @atom:pe @atom:n2 @atom:s
@angle:pf-n2-s @atom:pf @atom:n2 @atom:s
@angle:s4-n2-s4 @atom:s4 @atom:n2 @atom:s4
@angle:s4-n2-s6 @atom:s4 @atom:n2 @atom:s6
@angle:s6-n2-s6 @atom:s6 @atom:n2 @atom:s6
@angle:sh-n2-sh @atom:sh @atom:n2 @atom:sh
@angle:sh-n2-ss @atom:sh @atom:n2 @atom:ss
@angle:s-n2-s @atom:s @atom:n2 @atom:s
@angle:s-n2-s4 @atom:s @atom:n2 @atom:s4
@angle:s-n2-s6 @atom:s @atom:n2 @atom:s6
@angle:s-n2-sh @atom:s @atom:n2 @atom:sh
@angle:s-n2-ss @atom:s @atom:n2 @atom:ss
@angle:ss-n2-ss @atom:ss @atom:n2 @atom:ss
@angle:br-n3-br @atom:br @atom:n3 @atom:br
@angle:br-n3-c3 @atom:br @atom:n3 @atom:c3
@angle:c1-n3-c1 @atom:c1 @atom:n3 @atom:c1
@angle:c1-n3-f @atom:c1 @atom:n3 @atom:f
@angle:c1-n3-hn @atom:c1 @atom:n3 @atom:hn
@angle:c1-n3-o @atom:c1 @atom:n3 @atom:o
@angle:c2-n3-c2 @atom:c2 @atom:n3 @atom:c2
@angle:c2-n3-hn @atom:c2 @atom:n3 @atom:hn
@angle:c3-n3-c3 @atom:c3 @atom:n3 @atom:c3
@angle:c3-n3-cl @atom:c3 @atom:n3 @atom:cl
@angle:c3-n3-cx @atom:c3 @atom:n3 @atom:cx
@angle:c3-n3-cy @atom:c3 @atom:n3 @atom:cy
@angle:c3-n3-f @atom:c3 @atom:n3 @atom:f
@angle:c3-n3-hn @atom:c3 @atom:n3 @atom:hn
@angle:c3-n3-i @atom:c3 @atom:n3 @atom:i
@angle:c3-n3-n2 @atom:c3 @atom:n3 @atom:n2
@angle:c3-n3-n3 @atom:c3 @atom:n3 @atom:n3
@angle:c3-n3-n4 @atom:c3 @atom:n3 @atom:n4
@angle:c3-n3-n @atom:c3 @atom:n3 @atom:n
@angle:c3-n3-nh @atom:c3 @atom:n3 @atom:nh
@angle:c3-n3-no @atom:c3 @atom:n3 @atom:no
@angle:c3-n3-o @atom:c3 @atom:n3 @atom:o
@angle:c3-n3-oh @atom:c3 @atom:n3 @atom:oh
@angle:c3-n3-os @atom:c3 @atom:n3 @atom:os
@angle:c3-n3-p3 @atom:c3 @atom:n3 @atom:p3
@angle:c3-n3-p5 @atom:c3 @atom:n3 @atom:p5
@angle:c3-n3-s4 @atom:c3 @atom:n3 @atom:s4
@angle:c3-n3-s6 @atom:c3 @atom:n3 @atom:s6
@angle:c3-n3-s @atom:c3 @atom:n3 @atom:s
@angle:c3-n3-sh @atom:c3 @atom:n3 @atom:sh
@angle:c3-n3-ss @atom:c3 @atom:n3 @atom:ss
@angle:c3-n3-sy @atom:c3 @atom:n3 @atom:sy
@angle:cl-n3-cl @atom:cl @atom:n3 @atom:cl
@angle:cl-n3-hn @atom:cl @atom:n3 @atom:hn
@angle:cl-n3-n3 @atom:cl @atom:n3 @atom:n3
@angle:cx-n3-cx @atom:cx @atom:n3 @atom:cx
@angle:cx-n3-hn @atom:cx @atom:n3 @atom:hn
@angle:cx-n3-p5 @atom:cx @atom:n3 @atom:p5
@angle:cx-n3-py @atom:cx @atom:n3 @atom:py
@angle:cy-n3-cy @atom:cy @atom:n3 @atom:cy
@angle:cy-n3-hn @atom:cy @atom:n3 @atom:hn
@angle:f-n3-f @atom:f @atom:n3 @atom:f
@angle:f-n3-hn @atom:f @atom:n3 @atom:hn
@angle:hn-n3-hn @atom:hn @atom:n3 @atom:hn
@angle:hn-n3-i @atom:hn @atom:n3 @atom:i
@angle:hn-n3-n1 @atom:hn @atom:n3 @atom:n1
@angle:hn-n3-n2 @atom:hn @atom:n3 @atom:n2
@angle:hn-n3-n3 @atom:hn @atom:n3 @atom:n3
@angle:hn-n3-n4 @atom:hn @atom:n3 @atom:n4
@angle:hn-n3-n @atom:hn @atom:n3 @atom:n
@angle:hn-n3-na @atom:hn @atom:n3 @atom:na
@angle:hn-n3-nh @atom:hn @atom:n3 @atom:nh
@angle:hn-n3-no @atom:hn @atom:n3 @atom:no
@angle:hn-n3-o @atom:hn @atom:n3 @atom:o
@angle:hn-n3-oh @atom:hn @atom:n3 @atom:oh
@angle:hn-n3-os @atom:hn @atom:n3 @atom:os
@angle:hn-n3-p2 @atom:hn @atom:n3 @atom:p2
@angle:hn-n3-p3 @atom:hn @atom:n3 @atom:p3
@angle:hn-n3-p4 @atom:hn @atom:n3 @atom:p4
@angle:hn-n3-p5 @atom:hn @atom:n3 @atom:p5
@angle:hn-n3-s4 @atom:hn @atom:n3 @atom:s4
@angle:hn-n3-s @atom:hn @atom:n3 @atom:s
@angle:hn-n3-s6 @atom:hn @atom:n3 @atom:s6
@angle:hn-n3-sh @atom:hn @atom:n3 @atom:sh
@angle:hn-n3-ss @atom:hn @atom:n3 @atom:ss
@angle:hn-n3-sy @atom:hn @atom:n3 @atom:sy
@angle:i-n3-i @atom:i @atom:n3 @atom:i
@angle:n1-n3-n1 @atom:n1 @atom:n3 @atom:n1
@angle:n2-n3-n2 @atom:n2 @atom:n3 @atom:n2
@angle:n2-n3-o @atom:n2 @atom:n3 @atom:o
@angle:n3-n3-n3 @atom:n3 @atom:n3 @atom:n3
@angle:n4-n3-n4 @atom:n4 @atom:n3 @atom:n4
@angle:n4-n3-nh @atom:n4 @atom:n3 @atom:nh
@angle:na-n3-na @atom:na @atom:n3 @atom:na
@angle:nh-n3-nh @atom:nh @atom:n3 @atom:nh
@angle:n-n3-n @atom:n @atom:n3 @atom:n
@angle:no-n3-no @atom:no @atom:n3 @atom:no
@angle:oh-n3-oh @atom:oh @atom:n3 @atom:oh
@angle:o-n3-o @atom:o @atom:n3 @atom:o
@angle:o-n3-p2 @atom:o @atom:n3 @atom:p2
@angle:o-n3-p4 @atom:o @atom:n3 @atom:p4
@angle:o-n3-s4 @atom:o @atom:n3 @atom:s4
@angle:o-n3-s6 @atom:o @atom:n3 @atom:s6
@angle:o-n3-s @atom:o @atom:n3 @atom:s
@angle:os-n3-os @atom:os @atom:n3 @atom:os
@angle:p2-n3-p2 @atom:p2 @atom:n3 @atom:p2
@angle:p3-n3-p3 @atom:p3 @atom:n3 @atom:p3
@angle:p4-n3-p4 @atom:p4 @atom:n3 @atom:p4
@angle:p5-n3-p5 @atom:p5 @atom:n3 @atom:p5
@angle:s4-n3-s4 @atom:s4 @atom:n3 @atom:s4
@angle:s4-n3-s6 @atom:s4 @atom:n3 @atom:s6
@angle:s6-n3-s6 @atom:s6 @atom:n3 @atom:s6
@angle:sh-n3-sh @atom:sh @atom:n3 @atom:sh
@angle:sh-n3-ss @atom:sh @atom:n3 @atom:ss
@angle:s-n3-s @atom:s @atom:n3 @atom:s
@angle:ss-n3-ss @atom:ss @atom:n3 @atom:ss
@angle:br-n4-br @atom:br @atom:n4 @atom:br
@angle:br-n4-hn @atom:br @atom:n4 @atom:hn
@angle:c1-n4-c1 @atom:c1 @atom:n4 @atom:c1
@angle:c1-n4-hn @atom:c1 @atom:n4 @atom:hn
@angle:c2-n4-c2 @atom:c2 @atom:n4 @atom:c2
@angle:c2-n4-c3 @atom:c2 @atom:n4 @atom:c3
@angle:c2-n4-hn @atom:c2 @atom:n4 @atom:hn
@angle:c3-n4-c3 @atom:c3 @atom:n4 @atom:c3
@angle:c3-n4-ca @atom:c3 @atom:n4 @atom:ca
@angle:c3-n4-cc @atom:c3 @atom:n4 @atom:cc
@angle:c3-n4-cl @atom:c3 @atom:n4 @atom:cl
@angle:c3-n4-hn @atom:c3 @atom:n4 @atom:hn
@angle:c3-n4-n3 @atom:c3 @atom:n4 @atom:n3
@angle:c3-n4-n4 @atom:c3 @atom:n4 @atom:n4
@angle:c3-n4-n @atom:c3 @atom:n4 @atom:n
@angle:c3-n4-nh @atom:c3 @atom:n4 @atom:nh
@angle:c3-n4-no @atom:c3 @atom:n4 @atom:no
@angle:c3-n4-o @atom:c3 @atom:n4 @atom:o
@angle:c3-n4-oh @atom:c3 @atom:n4 @atom:oh
@angle:c3-n4-os @atom:c3 @atom:n4 @atom:os
@angle:c3-n4-p2 @atom:c3 @atom:n4 @atom:p2
@angle:c3-n4-p3 @atom:c3 @atom:n4 @atom:p3
@angle:c3-n4-p5 @atom:c3 @atom:n4 @atom:p5
@angle:c3-n4-s4 @atom:c3 @atom:n4 @atom:s4
@angle:c3-n4-s6 @atom:c3 @atom:n4 @atom:s6
@angle:c3-n4-s @atom:c3 @atom:n4 @atom:s
@angle:c3-n4-sh @atom:c3 @atom:n4 @atom:sh
@angle:c3-n4-ss @atom:c3 @atom:n4 @atom:ss
@angle:ca-n4-ca @atom:ca @atom:n4 @atom:ca
@angle:ca-n4-hn @atom:ca @atom:n4 @atom:hn
@angle:c-n4-c @atom:c @atom:n4 @atom:c
@angle:c-n4-hn @atom:c @atom:n4 @atom:hn
@angle:cl-n4-cl @atom:cl @atom:n4 @atom:cl
@angle:cl-n4-hn @atom:cl @atom:n4 @atom:hn
@angle:f-n4-f @atom:f @atom:n4 @atom:f
@angle:f-n4-hn @atom:f @atom:n4 @atom:hn
@angle:hn-n4-hn @atom:hn @atom:n4 @atom:hn
@angle:hn-n4-i @atom:hn @atom:n4 @atom:i
@angle:hn-n4-n1 @atom:hn @atom:n4 @atom:n1
@angle:hn-n4-n2 @atom:hn @atom:n4 @atom:n2
@angle:hn-n4-n3 @atom:hn @atom:n4 @atom:n3
@angle:hn-n4-n4 @atom:hn @atom:n4 @atom:n4
@angle:hn-n4-n @atom:hn @atom:n4 @atom:n
@angle:hn-n4-na @atom:hn @atom:n4 @atom:na
@angle:hn-n4-nh @atom:hn @atom:n4 @atom:nh
@angle:hn-n4-no @atom:hn @atom:n4 @atom:no
@angle:hn-n4-o @atom:hn @atom:n4 @atom:o
@angle:hn-n4-oh @atom:hn @atom:n4 @atom:oh
@angle:hn-n4-os @atom:hn @atom:n4 @atom:os
@angle:hn-n4-p2 @atom:hn @atom:n4 @atom:p2
@angle:hn-n4-p3 @atom:hn @atom:n4 @atom:p3
@angle:hn-n4-p4 @atom:hn @atom:n4 @atom:p4
@angle:hn-n4-p5 @atom:hn @atom:n4 @atom:p5
@angle:hn-n4-py @atom:hn @atom:n4 @atom:py
@angle:hn-n4-s4 @atom:hn @atom:n4 @atom:s4
@angle:hn-n4-s @atom:hn @atom:n4 @atom:s
@angle:hn-n4-s6 @atom:hn @atom:n4 @atom:s6
@angle:hn-n4-sh @atom:hn @atom:n4 @atom:sh
@angle:hn-n4-ss @atom:hn @atom:n4 @atom:ss
@angle:i-n4-i @atom:i @atom:n4 @atom:i
@angle:n1-n4-n1 @atom:n1 @atom:n4 @atom:n1
@angle:n2-n4-n2 @atom:n2 @atom:n4 @atom:n2
@angle:n3-n4-n3 @atom:n3 @atom:n4 @atom:n3
@angle:n4-n4-n4 @atom:n4 @atom:n4 @atom:n4
@angle:na-n4-na @atom:na @atom:n4 @atom:na
@angle:nh-n4-nh @atom:nh @atom:n4 @atom:nh
@angle:n-n4-n @atom:n @atom:n4 @atom:n
@angle:oh-n4-oh @atom:oh @atom:n4 @atom:oh
@angle:o-n4-o @atom:o @atom:n4 @atom:o
@angle:os-n4-os @atom:os @atom:n4 @atom:os
@angle:p2-n4-p2 @atom:p2 @atom:n4 @atom:p2
@angle:p3-n4-p3 @atom:p3 @atom:n4 @atom:p3
@angle:p5-n4-p5 @atom:p5 @atom:n4 @atom:p5
@angle:py-n4-py @atom:py @atom:n4 @atom:py
@angle:s4-n4-s4 @atom:s4 @atom:n4 @atom:s4
@angle:s6-n4-s6 @atom:s6 @atom:n4 @atom:s6
@angle:sh-n4-sh @atom:sh @atom:n4 @atom:sh
@angle:s-n4-s @atom:s @atom:n4 @atom:s
@angle:ss-n4-ss @atom:ss @atom:n4 @atom:ss
@angle:br-na-br @atom:br @atom:na @atom:br
@angle:br-na-c2 @atom:br @atom:na @atom:c2
@angle:br-na-ca @atom:br @atom:na @atom:ca
@angle:br-na-cc @atom:br @atom:na @atom:cc
@angle:br-na-cd @atom:br @atom:na @atom:cd
@angle:br-na-nc @atom:br @atom:na @atom:nc
@angle:br-na-nd @atom:br @atom:na @atom:nd
@angle:br-na-os @atom:br @atom:na @atom:os
@angle:br-na-p2 @atom:br @atom:na @atom:p2
@angle:br-na-pc @atom:br @atom:na @atom:pc
@angle:br-na-pd @atom:br @atom:na @atom:pd
@angle:br-na-ss @atom:br @atom:na @atom:ss
@angle:c1-na-c1 @atom:c1 @atom:na @atom:c1
@angle:c1-na-c2 @atom:c1 @atom:na @atom:c2
@angle:c1-na-ca @atom:c1 @atom:na @atom:ca
@angle:c1-na-cc @atom:c1 @atom:na @atom:cc
@angle:c1-na-cd @atom:c1 @atom:na @atom:cd
@angle:c1-na-nc @atom:c1 @atom:na @atom:nc
@angle:c1-na-nd @atom:c1 @atom:na @atom:nd
@angle:c1-na-os @atom:c1 @atom:na @atom:os
@angle:c1-na-p2 @atom:c1 @atom:na @atom:p2
@angle:c1-na-pc @atom:c1 @atom:na @atom:pc
@angle:c1-na-pd @atom:c1 @atom:na @atom:pd
@angle:c1-na-ss @atom:c1 @atom:na @atom:ss
@angle:c2-na-c2 @atom:c2 @atom:na @atom:c2
@angle:c2-na-c3 @atom:c2 @atom:na @atom:c3
@angle:c2-na-ca @atom:c2 @atom:na @atom:ca
@angle:c2-na-cc @atom:c2 @atom:na @atom:cc
@angle:c2-na-cd @atom:c2 @atom:na @atom:cd
@angle:c2-na-cl @atom:c2 @atom:na @atom:cl
@angle:c2-na-f @atom:c2 @atom:na @atom:f
@angle:c2-na-hn @atom:c2 @atom:na @atom:hn
@angle:c2-na-i @atom:c2 @atom:na @atom:i
@angle:c2-na-n1 @atom:c2 @atom:na @atom:n1
@angle:c2-na-n2 @atom:c2 @atom:na @atom:n2
@angle:c2-na-n3 @atom:c2 @atom:na @atom:n3
@angle:c2-na-n4 @atom:c2 @atom:na @atom:n4
@angle:c2-na-n @atom:c2 @atom:na @atom:n
@angle:c2-na-na @atom:c2 @atom:na @atom:na
@angle:c2-na-nc @atom:c2 @atom:na @atom:nc
@angle:c2-na-nd @atom:c2 @atom:na @atom:nd
@angle:c2-na-nh @atom:c2 @atom:na @atom:nh
@angle:c2-na-no @atom:c2 @atom:na @atom:no
@angle:c2-na-o @atom:c2 @atom:na @atom:o
@angle:c2-na-oh @atom:c2 @atom:na @atom:oh
@angle:c2-na-os @atom:c2 @atom:na @atom:os
@angle:c2-na-p2 @atom:c2 @atom:na @atom:p2
@angle:c2-na-p3 @atom:c2 @atom:na @atom:p3
@angle:c2-na-p4 @atom:c2 @atom:na @atom:p4
@angle:c2-na-p5 @atom:c2 @atom:na @atom:p5
@angle:c2-na-pc @atom:c2 @atom:na @atom:pc
@angle:c2-na-pd @atom:c2 @atom:na @atom:pd
@angle:c2-na-s4 @atom:c2 @atom:na @atom:s4
@angle:c2-na-s6 @atom:c2 @atom:na @atom:s6
@angle:c2-na-s @atom:c2 @atom:na @atom:s
@angle:c2-na-sh @atom:c2 @atom:na @atom:sh
@angle:c2-na-ss @atom:c2 @atom:na @atom:ss
@angle:c3-na-c3 @atom:c3 @atom:na @atom:c3
@angle:c3-na-ca @atom:c3 @atom:na @atom:ca
@angle:c3-na-cc @atom:c3 @atom:na @atom:cc
@angle:c3-na-cd @atom:c3 @atom:na @atom:cd
@angle:c3-na-cp @atom:c3 @atom:na @atom:cp
@angle:c3-na-n2 @atom:c3 @atom:na @atom:n2
@angle:c3-na-n @atom:c3 @atom:na @atom:n
@angle:c3-na-nc @atom:c3 @atom:na @atom:nc
@angle:c3-na-nd @atom:c3 @atom:na @atom:nd
@angle:c3-na-os @atom:c3 @atom:na @atom:os
@angle:c3-na-p2 @atom:c3 @atom:na @atom:p2
@angle:c3-na-pc @atom:c3 @atom:na @atom:pc
@angle:c3-na-pd @atom:c3 @atom:na @atom:pd
@angle:c3-na-sh @atom:c3 @atom:na @atom:sh
@angle:c3-na-ss @atom:c3 @atom:na @atom:ss
@angle:ca-na-ca @atom:ca @atom:na @atom:ca
@angle:ca-na-cc @atom:ca @atom:na @atom:cc
@angle:ca-na-cd @atom:ca @atom:na @atom:cd
@angle:ca-na-cl @atom:ca @atom:na @atom:cl
@angle:ca-na-cp @atom:ca @atom:na @atom:cp
@angle:ca-na-cx @atom:ca @atom:na @atom:cx
@angle:ca-na-f @atom:ca @atom:na @atom:f
@angle:ca-na-hn @atom:ca @atom:na @atom:hn
@angle:ca-na-i @atom:ca @atom:na @atom:i
@angle:ca-na-n2 @atom:ca @atom:na @atom:n2
@angle:ca-na-n4 @atom:ca @atom:na @atom:n4
@angle:ca-na-n @atom:ca @atom:na @atom:n
@angle:ca-na-na @atom:ca @atom:na @atom:na
@angle:ca-na-nb @atom:ca @atom:na @atom:nb
@angle:ca-na-nc @atom:ca @atom:na @atom:nc
@angle:ca-na-nd @atom:ca @atom:na @atom:nd
@angle:ca-na-nh @atom:ca @atom:na @atom:nh
@angle:ca-na-o @atom:ca @atom:na @atom:o
@angle:ca-na-oh @atom:ca @atom:na @atom:oh
@angle:ca-na-os @atom:ca @atom:na @atom:os
@angle:ca-na-p2 @atom:ca @atom:na @atom:p2
@angle:ca-na-p3 @atom:ca @atom:na @atom:p3
@angle:ca-na-p4 @atom:ca @atom:na @atom:p4
@angle:ca-na-p5 @atom:ca @atom:na @atom:p5
@angle:ca-na-pc @atom:ca @atom:na @atom:pc
@angle:ca-na-pd @atom:ca @atom:na @atom:pd
@angle:ca-na-py @atom:ca @atom:na @atom:py
@angle:ca-na-s4 @atom:ca @atom:na @atom:s4
@angle:ca-na-s6 @atom:ca @atom:na @atom:s6
@angle:ca-na-s @atom:ca @atom:na @atom:s
@angle:ca-na-sh @atom:ca @atom:na @atom:sh
@angle:ca-na-ss @atom:ca @atom:na @atom:ss
@angle:cc-na-cc @atom:cc @atom:na @atom:cc
@angle:cc-na-cd @atom:cc @atom:na @atom:cd
@angle:cc-na-ce @atom:cc @atom:na @atom:ce
@angle:cc-na-cl @atom:cc @atom:na @atom:cl
@angle:cc-na-f @atom:cc @atom:na @atom:f
@angle:cc-na-hn @atom:cc @atom:na @atom:hn
@angle:cc-na-i @atom:cc @atom:na @atom:i
@angle:cc-na-n2 @atom:cc @atom:na @atom:n2
@angle:cc-na-n4 @atom:cc @atom:na @atom:n4
@angle:cc-na-n @atom:cc @atom:na @atom:n
@angle:cc-na-na @atom:cc @atom:na @atom:na
@angle:cc-na-nc @atom:cc @atom:na @atom:nc
@angle:cc-na-nd @atom:cc @atom:na @atom:nd
@angle:cc-na-nh @atom:cc @atom:na @atom:nh
@angle:cc-na-no @atom:cc @atom:na @atom:no
@angle:cc-na-o @atom:cc @atom:na @atom:o
@angle:cc-na-oh @atom:cc @atom:na @atom:oh
@angle:cc-na-os @atom:cc @atom:na @atom:os
@angle:cc-na-p2 @atom:cc @atom:na @atom:p2
@angle:cc-na-p3 @atom:cc @atom:na @atom:p3
@angle:cc-na-p4 @atom:cc @atom:na @atom:p4
@angle:cc-na-p5 @atom:cc @atom:na @atom:p5
@angle:cc-na-s4 @atom:cc @atom:na @atom:s4
@angle:cc-na-s6 @atom:cc @atom:na @atom:s6
@angle:cc-na-s @atom:cc @atom:na @atom:s
@angle:cc-na-sh @atom:cc @atom:na @atom:sh
@angle:cc-na-ss @atom:cc @atom:na @atom:ss
@angle:cd-na-cd @atom:cd @atom:na @atom:cd
@angle:cd-na-cl @atom:cd @atom:na @atom:cl
@angle:cd-na-f @atom:cd @atom:na @atom:f
@angle:cd-na-hn @atom:cd @atom:na @atom:hn
@angle:cd-na-i @atom:cd @atom:na @atom:i
@angle:cd-na-n2 @atom:cd @atom:na @atom:n2
@angle:cd-na-n4 @atom:cd @atom:na @atom:n4
@angle:cd-na-n @atom:cd @atom:na @atom:n
@angle:cd-na-na @atom:cd @atom:na @atom:na
@angle:cd-na-nc @atom:cd @atom:na @atom:nc
@angle:cd-na-nd @atom:cd @atom:na @atom:nd
@angle:cd-na-nh @atom:cd @atom:na @atom:nh
@angle:cd-na-no @atom:cd @atom:na @atom:no
@angle:cd-na-o @atom:cd @atom:na @atom:o
@angle:cd-na-oh @atom:cd @atom:na @atom:oh
@angle:cd-na-os @atom:cd @atom:na @atom:os
@angle:cd-na-p2 @atom:cd @atom:na @atom:p2
@angle:cd-na-p3 @atom:cd @atom:na @atom:p3
@angle:cd-na-p4 @atom:cd @atom:na @atom:p4
@angle:cd-na-p5 @atom:cd @atom:na @atom:p5
@angle:cd-na-s4 @atom:cd @atom:na @atom:s4
@angle:cd-na-s6 @atom:cd @atom:na @atom:s6
@angle:cd-na-s @atom:cd @atom:na @atom:s
@angle:cd-na-sh @atom:cd @atom:na @atom:sh
@angle:cd-na-ss @atom:cd @atom:na @atom:ss
@angle:cl-na-cl @atom:cl @atom:na @atom:cl
@angle:cl-na-nc @atom:cl @atom:na @atom:nc
@angle:cl-na-nd @atom:cl @atom:na @atom:nd
@angle:cl-na-os @atom:cl @atom:na @atom:os
@angle:cl-na-p2 @atom:cl @atom:na @atom:p2
@angle:cl-na-pc @atom:cl @atom:na @atom:pc
@angle:cl-na-pd @atom:cl @atom:na @atom:pd
@angle:cl-na-ss @atom:cl @atom:na @atom:ss
@angle:f-na-f @atom:f @atom:na @atom:f
@angle:f-na-nc @atom:f @atom:na @atom:nc
@angle:f-na-nd @atom:f @atom:na @atom:nd
@angle:f-na-os @atom:f @atom:na @atom:os
@angle:f-na-p2 @atom:f @atom:na @atom:p2
@angle:f-na-pc @atom:f @atom:na @atom:pc
@angle:f-na-pd @atom:f @atom:na @atom:pd
@angle:f-na-ss @atom:f @atom:na @atom:ss
@angle:hn-na-hn @atom:hn @atom:na @atom:hn
@angle:hn-na-n @atom:hn @atom:na @atom:n
@angle:hn-na-nc @atom:hn @atom:na @atom:nc
@angle:hn-na-nd @atom:hn @atom:na @atom:nd
@angle:hn-na-os @atom:hn @atom:na @atom:os
@angle:hn-na-p2 @atom:hn @atom:na @atom:p2
@angle:hn-na-pc @atom:hn @atom:na @atom:pc
@angle:hn-na-pd @atom:hn @atom:na @atom:pd
@angle:hn-na-ss @atom:hn @atom:na @atom:ss
@angle:i-na-i @atom:i @atom:na @atom:i
@angle:i-na-nc @atom:i @atom:na @atom:nc
@angle:i-na-nd @atom:i @atom:na @atom:nd
@angle:i-na-os @atom:i @atom:na @atom:os
@angle:i-na-p2 @atom:i @atom:na @atom:p2
@angle:i-na-pc @atom:i @atom:na @atom:pc
@angle:i-na-pd @atom:i @atom:na @atom:pd
@angle:i-na-ss @atom:i @atom:na @atom:ss
@angle:n2-na-n2 @atom:n2 @atom:na @atom:n2
@angle:n2-na-nc @atom:n2 @atom:na @atom:nc
@angle:n2-na-nd @atom:n2 @atom:na @atom:nd
@angle:n2-na-os @atom:n2 @atom:na @atom:os
@angle:n2-na-p2 @atom:n2 @atom:na @atom:p2
@angle:n2-na-pc @atom:n2 @atom:na @atom:pc
@angle:n2-na-pd @atom:n2 @atom:na @atom:pd
@angle:n2-na-ss @atom:n2 @atom:na @atom:ss
@angle:n3-na-n3 @atom:n3 @atom:na @atom:n3
@angle:n4-na-n4 @atom:n4 @atom:na @atom:n4
@angle:n4-na-nc @atom:n4 @atom:na @atom:nc
@angle:n4-na-nd @atom:n4 @atom:na @atom:nd
@angle:n4-na-os @atom:n4 @atom:na @atom:os
@angle:n4-na-p2 @atom:n4 @atom:na @atom:p2
@angle:n4-na-pc @atom:n4 @atom:na @atom:pc
@angle:n4-na-pd @atom:n4 @atom:na @atom:pd
@angle:na-na-na @atom:na @atom:na @atom:na
@angle:na-na-nc @atom:na @atom:na @atom:nc
@angle:na-na-nd @atom:na @atom:na @atom:nd
@angle:na-na-os @atom:na @atom:na @atom:os
@angle:na-na-p2 @atom:na @atom:na @atom:p2
@angle:na-na-pc @atom:na @atom:na @atom:pc
@angle:na-na-pd @atom:na @atom:na @atom:pd
@angle:na-na-ss @atom:na @atom:na @atom:ss
@angle:nc-na-nc @atom:nc @atom:na @atom:nc
@angle:nc-na-nd @atom:nc @atom:na @atom:nd
@angle:nc-na-nh @atom:nc @atom:na @atom:nh
@angle:nc-na-no @atom:nc @atom:na @atom:no
@angle:nc-na-o @atom:nc @atom:na @atom:o
@angle:nc-na-oh @atom:nc @atom:na @atom:oh
@angle:nc-na-os @atom:nc @atom:na @atom:os
@angle:nc-na-p2 @atom:nc @atom:na @atom:p2
@angle:nc-na-p3 @atom:nc @atom:na @atom:p3
@angle:nc-na-p4 @atom:nc @atom:na @atom:p4
@angle:nc-na-p5 @atom:nc @atom:na @atom:p5
@angle:nc-na-pc @atom:nc @atom:na @atom:pc
@angle:nc-na-s4 @atom:nc @atom:na @atom:s4
@angle:nc-na-s6 @atom:nc @atom:na @atom:s6
@angle:nc-na-s @atom:nc @atom:na @atom:s
@angle:nc-na-sh @atom:nc @atom:na @atom:sh
@angle:nc-na-ss @atom:nc @atom:na @atom:ss
@angle:nd-na-nd @atom:nd @atom:na @atom:nd
@angle:nd-na-nh @atom:nd @atom:na @atom:nh
@angle:nd-na-no @atom:nd @atom:na @atom:no
@angle:nd-na-o @atom:nd @atom:na @atom:o
@angle:nd-na-oh @atom:nd @atom:na @atom:oh
@angle:nd-na-os @atom:nd @atom:na @atom:os
@angle:nd-na-p2 @atom:nd @atom:na @atom:p2
@angle:nd-na-p3 @atom:nd @atom:na @atom:p3
@angle:nd-na-p4 @atom:nd @atom:na @atom:p4
@angle:nd-na-p5 @atom:nd @atom:na @atom:p5
@angle:nd-na-pd @atom:nd @atom:na @atom:pd
@angle:nd-na-s4 @atom:nd @atom:na @atom:s4
@angle:nd-na-s6 @atom:nd @atom:na @atom:s6
@angle:nd-na-s @atom:nd @atom:na @atom:s
@angle:nd-na-sh @atom:nd @atom:na @atom:sh
@angle:nd-na-ss @atom:nd @atom:na @atom:ss
@angle:nh-na-nh @atom:nh @atom:na @atom:nh
@angle:nh-na-os @atom:nh @atom:na @atom:os
@angle:nh-na-p2 @atom:nh @atom:na @atom:p2
@angle:nh-na-pc @atom:nh @atom:na @atom:pc
@angle:nh-na-pd @atom:nh @atom:na @atom:pd
@angle:nh-na-ss @atom:nh @atom:na @atom:ss
@angle:n-na-n @atom:n @atom:na @atom:n
@angle:n-na-nc @atom:n @atom:na @atom:nc
@angle:n-na-nd @atom:n @atom:na @atom:nd
@angle:no-na-no @atom:no @atom:na @atom:no
@angle:no-na-os @atom:no @atom:na @atom:os
@angle:no-na-pc @atom:no @atom:na @atom:pc
@angle:no-na-pd @atom:no @atom:na @atom:pd
@angle:n-na-os @atom:n @atom:na @atom:os
@angle:no-na-ss @atom:no @atom:na @atom:ss
@angle:n-na-p2 @atom:n @atom:na @atom:p2
@angle:n-na-pc @atom:n @atom:na @atom:pc
@angle:n-na-pd @atom:n @atom:na @atom:pd
@angle:n-na-ss @atom:n @atom:na @atom:ss
@angle:oh-na-oh @atom:oh @atom:na @atom:oh
@angle:oh-na-p2 @atom:oh @atom:na @atom:p2
@angle:oh-na-pc @atom:oh @atom:na @atom:pc
@angle:oh-na-pd @atom:oh @atom:na @atom:pd
@angle:oh-na-ss @atom:oh @atom:na @atom:ss
@angle:o-na-o @atom:o @atom:na @atom:o
@angle:o-na-os @atom:o @atom:na @atom:os
@angle:o-na-p2 @atom:o @atom:na @atom:p2
@angle:o-na-pc @atom:o @atom:na @atom:pc
@angle:o-na-pd @atom:o @atom:na @atom:pd
@angle:os-na-os @atom:os @atom:na @atom:os
@angle:os-na-p2 @atom:os @atom:na @atom:p2
@angle:os-na-p3 @atom:os @atom:na @atom:p3
@angle:os-na-p5 @atom:os @atom:na @atom:p5
@angle:os-na-pc @atom:os @atom:na @atom:pc
@angle:os-na-pd @atom:os @atom:na @atom:pd
@angle:os-na-s4 @atom:os @atom:na @atom:s4
@angle:os-na-s6 @atom:os @atom:na @atom:s6
@angle:os-na-ss @atom:os @atom:na @atom:ss
@angle:p2-na-p2 @atom:p2 @atom:na @atom:p2
@angle:p2-na-p3 @atom:p2 @atom:na @atom:p3
@angle:p2-na-p5 @atom:p2 @atom:na @atom:p5
@angle:p2-na-pc @atom:p2 @atom:na @atom:pc
@angle:p2-na-pd @atom:p2 @atom:na @atom:pd
@angle:p2-na-s4 @atom:p2 @atom:na @atom:s4
@angle:p2-na-s6 @atom:p2 @atom:na @atom:s6
@angle:p2-na-s @atom:p2 @atom:na @atom:s
@angle:p2-na-sh @atom:p2 @atom:na @atom:sh
@angle:p2-na-ss @atom:p2 @atom:na @atom:ss
@angle:p3-na-p3 @atom:p3 @atom:na @atom:p3
@angle:p3-na-pc @atom:p3 @atom:na @atom:pc
@angle:p3-na-pd @atom:p3 @atom:na @atom:pd
@angle:p5-na-p5 @atom:p5 @atom:na @atom:p5
@angle:p5-na-pc @atom:p5 @atom:na @atom:pc
@angle:p5-na-pd @atom:p5 @atom:na @atom:pd
@angle:p5-na-ss @atom:p5 @atom:na @atom:ss
@angle:pc-na-pc @atom:pc @atom:na @atom:pc
@angle:pc-na-s4 @atom:pc @atom:na @atom:s4
@angle:pc-na-s6 @atom:pc @atom:na @atom:s6
@angle:pc-na-s @atom:pc @atom:na @atom:s
@angle:pc-na-sh @atom:pc @atom:na @atom:sh
@angle:pc-na-ss @atom:pc @atom:na @atom:ss
@angle:pd-na-pd @atom:pd @atom:na @atom:pd
@angle:pd-na-s4 @atom:pd @atom:na @atom:s4
@angle:pd-na-s6 @atom:pd @atom:na @atom:s6
@angle:pd-na-s @atom:pd @atom:na @atom:s
@angle:pd-na-sh @atom:pd @atom:na @atom:sh
@angle:pd-na-ss @atom:pd @atom:na @atom:ss
@angle:py-na-py @atom:py @atom:na @atom:py
@angle:s4-na-s4 @atom:s4 @atom:na @atom:s4
@angle:s4-na-s6 @atom:s4 @atom:na @atom:s6
@angle:s4-na-ss @atom:s4 @atom:na @atom:ss
@angle:s6-na-s6 @atom:s6 @atom:na @atom:s6
@angle:s6-na-ss @atom:s6 @atom:na @atom:ss
@angle:sh-na-sh @atom:sh @atom:na @atom:sh
@angle:sh-na-ss @atom:sh @atom:na @atom:ss
@angle:s-na-s @atom:s @atom:na @atom:s
@angle:s-na-ss @atom:s @atom:na @atom:ss
@angle:ss-na-ss @atom:ss @atom:na @atom:ss
@angle:sy-na-sy @atom:sy @atom:na @atom:sy
@angle:ca-nb-ca @atom:ca @atom:nb @atom:ca
@angle:ca-nb-cp @atom:ca @atom:nb @atom:cp
@angle:ca-nb-cq @atom:ca @atom:nb @atom:cq
@angle:ca-nb-nb @atom:ca @atom:nb @atom:nb
@angle:cp-nb-nb @atom:cp @atom:nb @atom:nb
@angle:nb-nb-nb @atom:nb @atom:nb @atom:nb
@angle:br-n-br @atom:br @atom:n @atom:br
@angle:br-n-c @atom:br @atom:n @atom:c
@angle:br-n-ca @atom:br @atom:n @atom:ca
@angle:br-n-cc @atom:br @atom:n @atom:cc
@angle:br-n-cd @atom:br @atom:n @atom:cd
@angle:c1-n-c1 @atom:c1 @atom:n @atom:c1
@angle:c1-n-ca @atom:c1 @atom:n @atom:ca
@angle:c1-n-cc @atom:c1 @atom:n @atom:cc
@angle:c1-n-cd @atom:c1 @atom:n @atom:cd
@angle:c2-n-c2 @atom:c2 @atom:n @atom:c2
@angle:c2-n-c3 @atom:c2 @atom:n @atom:c3
@angle:c2-n-ca @atom:c2 @atom:n @atom:ca
@angle:c2-n-cc @atom:c2 @atom:n @atom:cc
@angle:c2-n-cd @atom:c2 @atom:n @atom:cd
@angle:c2-n-hn @atom:c2 @atom:n @atom:hn
@angle:c3-n-c3 @atom:c3 @atom:n @atom:c3
@angle:c3-n-ca @atom:c3 @atom:n @atom:ca
@angle:c3-n-cc @atom:c3 @atom:n @atom:cc
@angle:c3-n-cd @atom:c3 @atom:n @atom:cd
@angle:c3-n-cy @atom:c3 @atom:n @atom:cy
@angle:c3-n-hn @atom:c3 @atom:n @atom:hn
@angle:c3-n-n2 @atom:c3 @atom:n @atom:n2
@angle:c3-n-n @atom:c3 @atom:n @atom:n
@angle:c3-n-nc @atom:c3 @atom:n @atom:nc
@angle:c3-n-nd @atom:c3 @atom:n @atom:nd
@angle:c3-n-oh @atom:c3 @atom:n @atom:oh
@angle:c3-n-os @atom:c3 @atom:n @atom:os
@angle:c3-n-sy @atom:c3 @atom:n @atom:sy
@angle:ca-n-ca @atom:ca @atom:n @atom:ca
@angle:ca-n-cc @atom:ca @atom:n @atom:cc
@angle:ca-n-cd @atom:ca @atom:n @atom:cd
@angle:ca-n-cl @atom:ca @atom:n @atom:cl
@angle:ca-n-f @atom:ca @atom:n @atom:f
@angle:ca-n-hn @atom:ca @atom:n @atom:hn
@angle:ca-n-i @atom:ca @atom:n @atom:i
@angle:ca-n-n2 @atom:ca @atom:n @atom:n2
@angle:ca-n-n4 @atom:ca @atom:n @atom:n4
@angle:ca-n-n @atom:ca @atom:n @atom:n
@angle:ca-n-na @atom:ca @atom:n @atom:na
@angle:ca-n-nc @atom:ca @atom:n @atom:nc
@angle:ca-n-nd @atom:ca @atom:n @atom:nd
@angle:ca-n-nh @atom:ca @atom:n @atom:nh
@angle:ca-n-p2 @atom:ca @atom:n @atom:p2
@angle:ca-n-p3 @atom:ca @atom:n @atom:p3
@angle:ca-n-s4 @atom:ca @atom:n @atom:s4
@angle:ca-n-s6 @atom:ca @atom:n @atom:s6
@angle:ca-n-ss @atom:ca @atom:n @atom:ss
@angle:c-n-c1 @atom:c @atom:n @atom:c1
@angle:c-n-c2 @atom:c @atom:n @atom:c2
@angle:c-n-c3 @atom:c @atom:n @atom:c3
@angle:c3-nc-cd @atom:c3 @atom:nc @atom:cd
@angle:c-n-c @atom:c @atom:n @atom:c
@angle:c-n-ca @atom:c @atom:n @atom:ca
@angle:ca-nc-ca @atom:ca @atom:nc @atom:ca
@angle:ca-nc-cd @atom:ca @atom:nc @atom:cd
@angle:ca-nc-n @atom:ca @atom:nc @atom:n
@angle:ca-nc-na @atom:ca @atom:nc @atom:na
@angle:ca-nc-os @atom:ca @atom:nc @atom:os
@angle:ca-nc-ss @atom:ca @atom:nc @atom:ss
@angle:c-n-cc @atom:c @atom:n @atom:cc
@angle:c-nc-ca @atom:c @atom:nc @atom:ca
@angle:cc-n-cc @atom:cc @atom:n @atom:cc
@angle:cc-nc-cc @atom:cc @atom:nc @atom:cc
@angle:cc-nc-cd @atom:cc @atom:nc @atom:cd
@angle:c-nc-cd @atom:c @atom:nc @atom:cd
@angle:cc-n-cl @atom:cc @atom:n @atom:cl
@angle:cc-nc-na @atom:cc @atom:nc @atom:na
@angle:cc-nc-nd @atom:cc @atom:nc @atom:nd
@angle:c-n-cd @atom:c @atom:n @atom:cd
@angle:cd-nc-cd @atom:cd @atom:nc @atom:cd
@angle:cd-nc-n @atom:cd @atom:nc @atom:n
@angle:cd-nc-na @atom:cd @atom:nc @atom:na
@angle:cd-nc-nc @atom:cd @atom:nc @atom:nc
@angle:cd-nc-os @atom:cd @atom:nc @atom:os
@angle:cd-nc-ss @atom:cd @atom:nc @atom:ss
@angle:c-n-ce @atom:c @atom:n @atom:ce
@angle:cc-n-f @atom:cc @atom:n @atom:f
@angle:cc-n-hn @atom:cc @atom:n @atom:hn
@angle:cc-n-i @atom:cc @atom:n @atom:i
@angle:c-n-cl @atom:c @atom:n @atom:cl
@angle:cc-n-n2 @atom:cc @atom:n @atom:n2
@angle:cc-n-n @atom:cc @atom:n @atom:n
@angle:cc-n-na @atom:cc @atom:n @atom:na
@angle:cc-n-nc @atom:cc @atom:n @atom:nc
@angle:cc-n-nh @atom:cc @atom:n @atom:nh
@angle:cc-n-no @atom:cc @atom:n @atom:no
@angle:cc-n-o @atom:cc @atom:n @atom:o
@angle:cc-n-oh @atom:cc @atom:n @atom:oh
@angle:cc-n-os @atom:cc @atom:n @atom:os
@angle:cc-n-p2 @atom:cc @atom:n @atom:p2
@angle:cc-n-p3 @atom:cc @atom:n @atom:p3
@angle:cc-n-p5 @atom:cc @atom:n @atom:p5
@angle:cc-n-s4 @atom:cc @atom:n @atom:s4
@angle:cc-n-s6 @atom:cc @atom:n @atom:s6
@angle:cc-n-s @atom:cc @atom:n @atom:s
@angle:cc-n-sh @atom:cc @atom:n @atom:sh
@angle:cc-n-ss @atom:cc @atom:n @atom:ss
@angle:c-n-cx @atom:c @atom:n @atom:cx
@angle:c-n-cy @atom:c @atom:n @atom:cy
@angle:cd-n-cd @atom:cd @atom:n @atom:cd
@angle:cd-n-cl @atom:cd @atom:n @atom:cl
@angle:cd-n-f @atom:cd @atom:n @atom:f
@angle:cd-n-hn @atom:cd @atom:n @atom:hn
@angle:cd-n-i @atom:cd @atom:n @atom:i
@angle:cd-n-n2 @atom:cd @atom:n @atom:n2
@angle:cd-n-n @atom:cd @atom:n @atom:n
@angle:cd-n-na @atom:cd @atom:n @atom:na
@angle:cd-n-nd @atom:cd @atom:n @atom:nd
@angle:cd-n-nh @atom:cd @atom:n @atom:nh
@angle:cd-n-no @atom:cd @atom:n @atom:no
@angle:cd-n-o @atom:cd @atom:n @atom:o
@angle:cd-n-oh @atom:cd @atom:n @atom:oh
@angle:cd-n-os @atom:cd @atom:n @atom:os
@angle:cd-n-p2 @atom:cd @atom:n @atom:p2
@angle:cd-n-p3 @atom:cd @atom:n @atom:p3
@angle:cd-n-p5 @atom:cd @atom:n @atom:p5
@angle:cd-n-s4 @atom:cd @atom:n @atom:s4
@angle:cd-n-s6 @atom:cd @atom:n @atom:s6
@angle:cd-n-s @atom:cd @atom:n @atom:s
@angle:cd-n-sh @atom:cd @atom:n @atom:sh
@angle:cd-n-ss @atom:cd @atom:n @atom:ss
@angle:ce-n-cy @atom:ce @atom:n @atom:cy
@angle:c-n-f @atom:c @atom:n @atom:f
@angle:cf-n-cy @atom:cf @atom:n @atom:cy
@angle:c-n-hn @atom:c @atom:n @atom:hn
@angle:c-n-i @atom:c @atom:n @atom:i
@angle:cl-n-cl @atom:cl @atom:n @atom:cl
@angle:c-n-n2 @atom:c @atom:n @atom:n2
@angle:c-n-n3 @atom:c @atom:n @atom:n3
@angle:c-n-n4 @atom:c @atom:n @atom:n4
@angle:c-n-n @atom:c @atom:n @atom:n
@angle:c-n-na @atom:c @atom:n @atom:na
@angle:na-nc-nd @atom:na @atom:nc @atom:nd
@angle:c-n-nc @atom:c @atom:n @atom:nc
@angle:nc-nc-nd @atom:nc @atom:nc @atom:nd
@angle:c-n-nd @atom:c @atom:n @atom:nd
@angle:nd-nc-os @atom:nd @atom:nc @atom:os
@angle:c-n-nh @atom:c @atom:n @atom:nh
@angle:c-n-no @atom:c @atom:n @atom:no
@angle:c-n-o @atom:c @atom:n @atom:o
@angle:c-n-oh @atom:c @atom:n @atom:oh
@angle:c-n-os @atom:c @atom:n @atom:os
@angle:c-n-p2 @atom:c @atom:n @atom:p2
@angle:c-n-p3 @atom:c @atom:n @atom:p3
@angle:c-n-p4 @atom:c @atom:n @atom:p4
@angle:c-n-p5 @atom:c @atom:n @atom:p5
@angle:c-n-pc @atom:c @atom:n @atom:pc
@angle:c-n-pd @atom:c @atom:n @atom:pd
@angle:c-n-s4 @atom:c @atom:n @atom:s4
@angle:c-n-s6 @atom:c @atom:n @atom:s6
@angle:c-n-s @atom:c @atom:n @atom:s
@angle:c-n-sh @atom:c @atom:n @atom:sh
@angle:c-n-ss @atom:c @atom:n @atom:ss
@angle:c-n-sy @atom:c @atom:n @atom:sy
@angle:cx-n-hn @atom:cx @atom:n @atom:hn
@angle:cx-n-os @atom:cx @atom:n @atom:os
@angle:cy-n-hn @atom:cy @atom:n @atom:hn
@angle:c3-nd-cc @atom:c3 @atom:nd @atom:cc
@angle:ca-nd-ca @atom:ca @atom:nd @atom:ca
@angle:ca-nd-cc @atom:ca @atom:nd @atom:cc
@angle:ca-nd-n @atom:ca @atom:nd @atom:n
@angle:ca-nd-na @atom:ca @atom:nd @atom:na
@angle:ca-nd-nc @atom:ca @atom:nd @atom:nc
@angle:ca-nd-os @atom:ca @atom:nd @atom:os
@angle:ca-nd-ss @atom:ca @atom:nd @atom:ss
@angle:c-nd-ca @atom:c @atom:nd @atom:ca
@angle:c-nd-cc @atom:c @atom:nd @atom:cc
@angle:cc-nd-cc @atom:cc @atom:nd @atom:cc
@angle:cc-nd-cd @atom:cc @atom:nd @atom:cd
@angle:cc-nd-n @atom:cc @atom:nd @atom:n
@angle:cc-nd-na @atom:cc @atom:nd @atom:na
@angle:cc-nd-nd @atom:cc @atom:nd @atom:nd
@angle:cc-nd-os @atom:cc @atom:nd @atom:os
@angle:cc-nd-ss @atom:cc @atom:nd @atom:ss
@angle:cd-nd-cd @atom:cd @atom:nd @atom:cd
@angle:cd-nd-na @atom:cd @atom:nd @atom:na
@angle:cd-nd-nc @atom:cd @atom:nd @atom:nc
@angle:na-nd-nc @atom:na @atom:nd @atom:nc
@angle:nc-nd-nd @atom:nc @atom:nd @atom:nd
@angle:nc-nd-os @atom:nc @atom:nd @atom:os
@angle:c1-ne-ca @atom:c1 @atom:ne @atom:ca
@angle:c1-ne-cg @atom:c1 @atom:ne @atom:cg
@angle:c2-ne-ca @atom:c2 @atom:ne @atom:ca
@angle:c2-ne-ce @atom:c2 @atom:ne @atom:ce
@angle:c2-ne-cg @atom:c2 @atom:ne @atom:cg
@angle:c2-ne-n2 @atom:c2 @atom:ne @atom:n2
@angle:c2-ne-ne @atom:c2 @atom:ne @atom:ne
@angle:c2-ne-p2 @atom:c2 @atom:ne @atom:p2
@angle:c2-ne-pe @atom:c2 @atom:ne @atom:pe
@angle:c2-ne-px @atom:c2 @atom:ne @atom:px
@angle:c2-ne-py @atom:c2 @atom:ne @atom:py
@angle:c2-ne-sx @atom:c2 @atom:ne @atom:sx
@angle:c2-ne-sy @atom:c2 @atom:ne @atom:sy
@angle:ca-ne-cf @atom:ca @atom:ne @atom:cf
@angle:ca-ne-n2 @atom:ca @atom:ne @atom:n2
@angle:ca-ne-nf @atom:ca @atom:ne @atom:nf
@angle:ca-ne-o @atom:ca @atom:ne @atom:o
@angle:ca-ne-p2 @atom:ca @atom:ne @atom:p2
@angle:ca-ne-s @atom:ca @atom:ne @atom:s
@angle:c-ne-c2 @atom:c @atom:ne @atom:c2
@angle:ce-ne-n2 @atom:ce @atom:ne @atom:n2
@angle:ce-ne-o @atom:ce @atom:ne @atom:o
@angle:ce-ne-p2 @atom:ce @atom:ne @atom:p2
@angle:ce-ne-s @atom:ce @atom:ne @atom:s
@angle:cg-ne-n1 @atom:cg @atom:ne @atom:n1
@angle:cg-ne-n2 @atom:cg @atom:ne @atom:n2
@angle:cg-ne-o @atom:cg @atom:ne @atom:o
@angle:cg-ne-p2 @atom:cg @atom:ne @atom:p2
@angle:cg-ne-s @atom:cg @atom:ne @atom:s
@angle:c-ne-sy @atom:c @atom:ne @atom:sy
@angle:n2-ne-n2 @atom:n2 @atom:ne @atom:n2
@angle:n2-ne-ne @atom:n2 @atom:ne @atom:ne
@angle:n2-ne-o @atom:n2 @atom:ne @atom:o
@angle:n2-ne-p2 @atom:n2 @atom:ne @atom:p2
@angle:n2-ne-pe @atom:n2 @atom:ne @atom:pe
@angle:n2-ne-px @atom:n2 @atom:ne @atom:px
@angle:n2-ne-py @atom:n2 @atom:ne @atom:py
@angle:n2-ne-s @atom:n2 @atom:ne @atom:s
@angle:n2-ne-sx @atom:n2 @atom:ne @atom:sx
@angle:n2-ne-sy @atom:n2 @atom:ne @atom:sy
@angle:ne-ne-o @atom:ne @atom:ne @atom:o
@angle:ne-ne-p2 @atom:ne @atom:ne @atom:p2
@angle:ne-ne-s @atom:ne @atom:ne @atom:s
@angle:o-ne-o @atom:o @atom:ne @atom:o
@angle:o-ne-pe @atom:o @atom:ne @atom:pe
@angle:o-ne-px @atom:o @atom:ne @atom:px
@angle:o-ne-py @atom:o @atom:ne @atom:py
@angle:o-ne-s @atom:o @atom:ne @atom:s
@angle:o-ne-sx @atom:o @atom:ne @atom:sx
@angle:o-ne-sy @atom:o @atom:ne @atom:sy
@angle:p2-ne-pe @atom:p2 @atom:ne @atom:pe
@angle:p2-ne-px @atom:p2 @atom:ne @atom:px
@angle:p2-ne-py @atom:p2 @atom:ne @atom:py
@angle:p2-ne-sx @atom:p2 @atom:ne @atom:sx
@angle:p2-ne-sy @atom:p2 @atom:ne @atom:sy
@angle:pe-ne-s @atom:pe @atom:ne @atom:s
@angle:px-ne-s @atom:px @atom:ne @atom:s
@angle:py-ne-s @atom:py @atom:ne @atom:s
@angle:s-ne-s @atom:s @atom:ne @atom:s
@angle:s-ne-sx @atom:s @atom:ne @atom:sx
@angle:s-ne-sy @atom:s @atom:ne @atom:sy
@angle:c1-nf-ca @atom:c1 @atom:nf @atom:ca
@angle:c1-nf-ch @atom:c1 @atom:nf @atom:ch
@angle:c2-nf-ca @atom:c2 @atom:nf @atom:ca
@angle:c2-nf-cf @atom:c2 @atom:nf @atom:cf
@angle:c2-nf-n2 @atom:c2 @atom:nf @atom:n2
@angle:c2-nf-nf @atom:c2 @atom:nf @atom:nf
@angle:c2-nf-p2 @atom:c2 @atom:nf @atom:p2
@angle:c2-nf-pf @atom:c2 @atom:nf @atom:pf
@angle:c2-nf-px @atom:c2 @atom:nf @atom:px
@angle:c2-nf-py @atom:c2 @atom:nf @atom:py
@angle:c2-nf-sx @atom:c2 @atom:nf @atom:sx
@angle:c2-nf-sy @atom:c2 @atom:nf @atom:sy
@angle:ca-nf-ce @atom:ca @atom:nf @atom:ce
@angle:ca-nf-n2 @atom:ca @atom:nf @atom:n2
@angle:ca-nf-ne @atom:ca @atom:nf @atom:ne
@angle:ca-nf-o @atom:ca @atom:nf @atom:o
@angle:ca-nf-p2 @atom:ca @atom:nf @atom:p2
@angle:ca-nf-s @atom:ca @atom:nf @atom:s
@angle:c-nf-c2 @atom:c @atom:nf @atom:c2
@angle:cf-nf-n2 @atom:cf @atom:nf @atom:n2
@angle:cf-nf-o @atom:cf @atom:nf @atom:o
@angle:cf-nf-p2 @atom:cf @atom:nf @atom:p2
@angle:cf-nf-s @atom:cf @atom:nf @atom:s
@angle:ch-nf-n1 @atom:ch @atom:nf @atom:n1
@angle:ch-nf-n2 @atom:ch @atom:nf @atom:n2
@angle:ch-nf-o @atom:ch @atom:nf @atom:o
@angle:ch-nf-p2 @atom:ch @atom:nf @atom:p2
@angle:ch-nf-s @atom:ch @atom:nf @atom:s
@angle:f-n-f @atom:f @atom:n @atom:f
@angle:n2-nf-n2 @atom:n2 @atom:nf @atom:n2
@angle:n2-nf-nf @atom:n2 @atom:nf @atom:nf
@angle:n2-nf-o @atom:n2 @atom:nf @atom:o
@angle:n2-nf-p2 @atom:n2 @atom:nf @atom:p2
@angle:n2-nf-pf @atom:n2 @atom:nf @atom:pf
@angle:n2-nf-px @atom:n2 @atom:nf @atom:px
@angle:n2-nf-py @atom:n2 @atom:nf @atom:py
@angle:n2-nf-s @atom:n2 @atom:nf @atom:s
@angle:n2-nf-sx @atom:n2 @atom:nf @atom:sx
@angle:n2-nf-sy @atom:n2 @atom:nf @atom:sy
@angle:nf-nf-o @atom:nf @atom:nf @atom:o
@angle:nf-nf-p2 @atom:nf @atom:nf @atom:p2
@angle:nf-nf-s @atom:nf @atom:nf @atom:s
@angle:o-nf-o @atom:o @atom:nf @atom:o
@angle:o-nf-pf @atom:o @atom:nf @atom:pf
@angle:o-nf-px @atom:o @atom:nf @atom:px
@angle:o-nf-py @atom:o @atom:nf @atom:py
@angle:o-nf-s @atom:o @atom:nf @atom:s
@angle:o-nf-sx @atom:o @atom:nf @atom:sx
@angle:o-nf-sy @atom:o @atom:nf @atom:sy
@angle:p2-nf-pf @atom:p2 @atom:nf @atom:pf
@angle:p2-nf-px @atom:p2 @atom:nf @atom:px
@angle:p2-nf-py @atom:p2 @atom:nf @atom:py
@angle:p2-nf-sx @atom:p2 @atom:nf @atom:sx
@angle:p2-nf-sy @atom:p2 @atom:nf @atom:sy
@angle:pf-nf-s @atom:pf @atom:nf @atom:s
@angle:px-nf-s @atom:px @atom:nf @atom:s
@angle:py-nf-s @atom:py @atom:nf @atom:s
@angle:s-nf-s @atom:s @atom:nf @atom:s
@angle:s-nf-sx @atom:s @atom:nf @atom:sx
@angle:s-nf-sy @atom:s @atom:nf @atom:sy
@angle:br-nh-br @atom:br @atom:nh @atom:br
@angle:br-nh-ca @atom:br @atom:nh @atom:ca
@angle:br-nh-hn @atom:br @atom:nh @atom:hn
@angle:c1-nh-c1 @atom:c1 @atom:nh @atom:c1
@angle:c1-nh-c2 @atom:c1 @atom:nh @atom:c2
@angle:c1-nh-ca @atom:c1 @atom:nh @atom:ca
@angle:c1-nh-hn @atom:c1 @atom:nh @atom:hn
@angle:c2-nh-c2 @atom:c2 @atom:nh @atom:c2
@angle:c2-nh-c3 @atom:c2 @atom:nh @atom:c3
@angle:c2-nh-ca @atom:c2 @atom:nh @atom:ca
@angle:c2-nh-cc @atom:c2 @atom:nh @atom:cc
@angle:c2-nh-cd @atom:c2 @atom:nh @atom:cd
@angle:c2-nh-cx @atom:c2 @atom:nh @atom:cx
@angle:c2-nh-hn @atom:c2 @atom:nh @atom:hn
@angle:c2-nh-n2 @atom:c2 @atom:nh @atom:n2
@angle:c2-nh-n3 @atom:c2 @atom:nh @atom:n3
@angle:c2-nh-no @atom:c2 @atom:nh @atom:no
@angle:c2-nh-oh @atom:c2 @atom:nh @atom:oh
@angle:c2-nh-os @atom:c2 @atom:nh @atom:os
@angle:c2-nh-sy @atom:c2 @atom:nh @atom:sy
@angle:c3-nh-c3 @atom:c3 @atom:nh @atom:c3
@angle:c3-nh-ca @atom:c3 @atom:nh @atom:ca
@angle:c3-nh-cc @atom:c3 @atom:nh @atom:cc
@angle:c3-nh-cd @atom:c3 @atom:nh @atom:cd
@angle:c3-nh-cf @atom:c3 @atom:nh @atom:cf
@angle:c3-nh-cz @atom:c3 @atom:nh @atom:cz
@angle:c3-nh-hn @atom:c3 @atom:nh @atom:hn
@angle:c3-nh-n2 @atom:c3 @atom:nh @atom:n2
@angle:c3-nh-n @atom:c3 @atom:nh @atom:n
@angle:c3-nh-na @atom:c3 @atom:nh @atom:na
@angle:c3-nh-p2 @atom:c3 @atom:nh @atom:p2
@angle:c3-nh-sy @atom:c3 @atom:nh @atom:sy
@angle:ca-nh-ca @atom:ca @atom:nh @atom:ca
@angle:ca-nh-cc @atom:ca @atom:nh @atom:cc
@angle:ca-nh-cd @atom:ca @atom:nh @atom:cd
@angle:ca-nh-cl @atom:ca @atom:nh @atom:cl
@angle:ca-nh-cx @atom:ca @atom:nh @atom:cx
@angle:ca-nh-f @atom:ca @atom:nh @atom:f
@angle:ca-nh-hn @atom:ca @atom:nh @atom:hn
@angle:ca-nh-i @atom:ca @atom:nh @atom:i
@angle:ca-nh-n1 @atom:ca @atom:nh @atom:n1
@angle:ca-nh-n2 @atom:ca @atom:nh @atom:n2
@angle:ca-nh-n3 @atom:ca @atom:nh @atom:n3
@angle:ca-nh-n4 @atom:ca @atom:nh @atom:n4
@angle:ca-nh-n @atom:ca @atom:nh @atom:n
@angle:ca-nh-na @atom:ca @atom:nh @atom:na
@angle:ca-nh-nh @atom:ca @atom:nh @atom:nh
@angle:ca-nh-no @atom:ca @atom:nh @atom:no
@angle:ca-nh-o @atom:ca @atom:nh @atom:o
@angle:ca-nh-oh @atom:ca @atom:nh @atom:oh
@angle:ca-nh-os @atom:ca @atom:nh @atom:os
@angle:ca-nh-p2 @atom:ca @atom:nh @atom:p2
@angle:ca-nh-p3 @atom:ca @atom:nh @atom:p3
@angle:ca-nh-p4 @atom:ca @atom:nh @atom:p4
@angle:ca-nh-p5 @atom:ca @atom:nh @atom:p5
@angle:ca-nh-s4 @atom:ca @atom:nh @atom:s4
@angle:ca-nh-s6 @atom:ca @atom:nh @atom:s6
@angle:ca-nh-s @atom:ca @atom:nh @atom:s
@angle:ca-nh-sh @atom:ca @atom:nh @atom:sh
@angle:ca-nh-ss @atom:ca @atom:nh @atom:ss
@angle:ca-nh-sy @atom:ca @atom:nh @atom:sy
@angle:cc-nh-cx @atom:cc @atom:nh @atom:cx
@angle:cc-nh-hn @atom:cc @atom:nh @atom:hn
@angle:cc-nh-n2 @atom:cc @atom:nh @atom:n2
@angle:cc-nh-sy @atom:cc @atom:nh @atom:sy
@angle:cd-nh-cx @atom:cd @atom:nh @atom:cx
@angle:cd-nh-hn @atom:cd @atom:nh @atom:hn
@angle:ce-nh-hn @atom:ce @atom:nh @atom:hn
@angle:ce-nh-o @atom:ce @atom:nh @atom:o
@angle:ce-nh-sy @atom:ce @atom:nh @atom:sy
@angle:cf-nh-hn @atom:cf @atom:nh @atom:hn
@angle:cf-nh-o @atom:cf @atom:nh @atom:o
@angle:cl-nh-cl @atom:cl @atom:nh @atom:cl
@angle:cl-nh-hn @atom:cl @atom:nh @atom:hn
@angle:cx-nh-cx @atom:cx @atom:nh @atom:cx
@angle:cx-nh-hn @atom:cx @atom:nh @atom:hn
@angle:cz-nh-hn @atom:cz @atom:nh @atom:hn
@angle:f-nh-f @atom:f @atom:nh @atom:f
@angle:f-nh-hn @atom:f @atom:nh @atom:hn
@angle:hn-nh-hn @atom:hn @atom:nh @atom:hn
@angle:hn-nh-i @atom:hn @atom:nh @atom:i
@angle:hn-nh-n1 @atom:hn @atom:nh @atom:n1
@angle:hn-nh-n2 @atom:hn @atom:nh @atom:n2
@angle:hn-nh-n3 @atom:hn @atom:nh @atom:n3
@angle:hn-nh-n4 @atom:hn @atom:nh @atom:n4
@angle:hn-nh-n @atom:hn @atom:nh @atom:n
@angle:hn-nh-na @atom:hn @atom:nh @atom:na
@angle:hn-nh-nh @atom:hn @atom:nh @atom:nh
@angle:hn-nh-no @atom:hn @atom:nh @atom:no
@angle:hn-nh-o @atom:hn @atom:nh @atom:o
@angle:hn-nh-oh @atom:hn @atom:nh @atom:oh
@angle:hn-nh-os @atom:hn @atom:nh @atom:os
@angle:hn-nh-p2 @atom:hn @atom:nh @atom:p2
@angle:hn-nh-p3 @atom:hn @atom:nh @atom:p3
@angle:hn-nh-p4 @atom:hn @atom:nh @atom:p4
@angle:hn-nh-p5 @atom:hn @atom:nh @atom:p5
@angle:hn-nh-s4 @atom:hn @atom:nh @atom:s4
@angle:hn-nh-s @atom:hn @atom:nh @atom:s
@angle:hn-nh-s6 @atom:hn @atom:nh @atom:s6
@angle:hn-nh-sh @atom:hn @atom:nh @atom:sh
@angle:hn-nh-ss @atom:hn @atom:nh @atom:ss
@angle:hn-nh-sy @atom:hn @atom:nh @atom:sy
@angle:i-nh-i @atom:i @atom:nh @atom:i
@angle:n1-nh-n1 @atom:n1 @atom:nh @atom:n1
@angle:n2-nh-n2 @atom:n2 @atom:nh @atom:n2
@angle:n2-nh-n3 @atom:n2 @atom:nh @atom:n3
@angle:n2-nh-o @atom:n2 @atom:nh @atom:o
@angle:n3-nh-n3 @atom:n3 @atom:nh @atom:n3
@angle:n4-nh-n4 @atom:n4 @atom:nh @atom:n4
@angle:na-nh-na @atom:na @atom:nh @atom:na
@angle:hn-n-hn @atom:hn @atom:n @atom:hn
@angle:nh-nh-nh @atom:nh @atom:nh @atom:nh
@angle:hn-n-i @atom:hn @atom:n @atom:i
@angle:hn-n-n2 @atom:hn @atom:n @atom:n2
@angle:hn-n-n3 @atom:hn @atom:n @atom:n3
@angle:hn-n-n4 @atom:hn @atom:n @atom:n4
@angle:hn-n-n @atom:hn @atom:n @atom:n
@angle:hn-n-na @atom:hn @atom:n @atom:na
@angle:hn-n-nc @atom:hn @atom:n @atom:nc
@angle:hn-n-nh @atom:hn @atom:n @atom:nh
@angle:hn-n-no @atom:hn @atom:n @atom:no
@angle:hn-n-o @atom:hn @atom:n @atom:o
@angle:n-nh-o @atom:n @atom:nh @atom:o
@angle:hn-n-oh @atom:hn @atom:n @atom:oh
@angle:no-nh-no @atom:no @atom:nh @atom:no
@angle:hn-n-os @atom:hn @atom:n @atom:os
@angle:hn-n-p2 @atom:hn @atom:n @atom:p2
@angle:hn-n-p3 @atom:hn @atom:n @atom:p3
@angle:hn-n-p4 @atom:hn @atom:n @atom:p4
@angle:hn-n-p5 @atom:hn @atom:n @atom:p5
@angle:hn-n-s4 @atom:hn @atom:n @atom:s4
@angle:hn-n-s @atom:hn @atom:n @atom:s
@angle:hn-n-s6 @atom:hn @atom:n @atom:s6
@angle:hn-n-sh @atom:hn @atom:n @atom:sh
@angle:hn-n-ss @atom:hn @atom:n @atom:ss
@angle:hn-n-sy @atom:hn @atom:n @atom:sy
@angle:oh-nh-oh @atom:oh @atom:nh @atom:oh
@angle:o-nh-o @atom:o @atom:nh @atom:o
@angle:os-nh-os @atom:os @atom:nh @atom:os
@angle:p2-nh-p2 @atom:p2 @atom:nh @atom:p2
@angle:p3-nh-p3 @atom:p3 @atom:nh @atom:p3
@angle:p5-nh-p5 @atom:p5 @atom:nh @atom:p5
@angle:s4-nh-s4 @atom:s4 @atom:nh @atom:s4
@angle:s6-nh-s6 @atom:s6 @atom:nh @atom:s6
@angle:sh-nh-sh @atom:sh @atom:nh @atom:sh
@angle:s-nh-s @atom:s @atom:nh @atom:s
@angle:ss-nh-ss @atom:ss @atom:nh @atom:ss
@angle:i-n-i @atom:i @atom:n @atom:i
@angle:n2-n-n2 @atom:n2 @atom:n @atom:n2
@angle:n3-n-n3 @atom:n3 @atom:n @atom:n3
@angle:n4-n-n4 @atom:n4 @atom:n @atom:n4
@angle:na-n-na @atom:na @atom:n @atom:na
@angle:nc-n-nc @atom:nc @atom:n @atom:nc
@angle:nc-n-p2 @atom:nc @atom:n @atom:p2
@angle:nc-n-pc @atom:nc @atom:n @atom:pc
@angle:nd-n-nd @atom:nd @atom:n @atom:nd
@angle:nd-n-p2 @atom:nd @atom:n @atom:p2
@angle:nd-n-pd @atom:nd @atom:n @atom:pd
@angle:nh-n-nh @atom:nh @atom:n @atom:nh
@angle:n-n-n @atom:n @atom:n @atom:n
@angle:no-n-no @atom:no @atom:n @atom:no
@angle:br-no-o @atom:br @atom:no @atom:o
@angle:c1-no-o @atom:c1 @atom:no @atom:o
@angle:c2-no-o @atom:c2 @atom:no @atom:o
@angle:c3-no-o @atom:c3 @atom:no @atom:o
@angle:ca-no-o @atom:ca @atom:no @atom:o
@angle:cc-no-o @atom:cc @atom:no @atom:o
@angle:cl-no-o @atom:cl @atom:no @atom:o
@angle:c-no-o @atom:c @atom:no @atom:o
@angle:hn-no-o @atom:hn @atom:no @atom:o
@angle:oh-n-oh @atom:oh @atom:n @atom:oh
@angle:i-no-o @atom:i @atom:no @atom:o
@angle:n1-no-o @atom:n1 @atom:no @atom:o
@angle:n2-no-o @atom:n2 @atom:no @atom:o
@angle:n3-no-o @atom:n3 @atom:no @atom:o
@angle:n4-no-o @atom:n4 @atom:no @atom:o
@angle:na-no-o @atom:na @atom:no @atom:o
@angle:nh-no-o @atom:nh @atom:no @atom:o
@angle:n-no-o @atom:n @atom:no @atom:o
@angle:no-no-o @atom:no @atom:no @atom:o
@angle:o-n-o @atom:o @atom:n @atom:o
@angle:o-no-o @atom:o @atom:no @atom:o
@angle:o-no-oh @atom:o @atom:no @atom:oh
@angle:o-no-os @atom:o @atom:no @atom:os
@angle:o-no-p2 @atom:o @atom:no @atom:p2
@angle:o-no-p3 @atom:o @atom:no @atom:p3
@angle:o-no-p4 @atom:o @atom:no @atom:p4
@angle:o-no-p5 @atom:o @atom:no @atom:p5
@angle:o-no-s4 @atom:o @atom:no @atom:s4
@angle:o-no-s6 @atom:o @atom:no @atom:s6
@angle:o-no-s @atom:o @atom:no @atom:s
@angle:o-no-sh @atom:o @atom:no @atom:sh
@angle:o-no-ss @atom:o @atom:no @atom:ss
@angle:os-n-os @atom:os @atom:n @atom:os
@angle:p2-n-p2 @atom:p2 @atom:n @atom:p2
@angle:p3-n-p3 @atom:p3 @atom:n @atom:p3
@angle:p4-n-p4 @atom:p4 @atom:n @atom:p4
@angle:p5-n-p5 @atom:p5 @atom:n @atom:p5
@angle:pc-n-pc @atom:pc @atom:n @atom:pc
@angle:pd-n-pd @atom:pd @atom:n @atom:pd
@angle:s4-n-s4 @atom:s4 @atom:n @atom:s4
@angle:s6-n-s6 @atom:s6 @atom:n @atom:s6
@angle:sh-n-sh @atom:sh @atom:n @atom:sh
@angle:s-n-s @atom:s @atom:n @atom:s
@angle:ss-n-ss @atom:ss @atom:n @atom:ss
@angle:br-oh-ho @atom:br @atom:oh @atom:ho
@angle:c1-oh-ho @atom:c1 @atom:oh @atom:ho
@angle:c2-oh-ho @atom:c2 @atom:oh @atom:ho
@angle:c3-oh-ho @atom:c3 @atom:oh @atom:ho
@angle:ca-oh-ho @atom:ca @atom:oh @atom:ho
@angle:cc-oh-ho @atom:cc @atom:oh @atom:ho
@angle:cd-oh-ho @atom:cd @atom:oh @atom:ho
@angle:ce-oh-ho @atom:ce @atom:oh @atom:ho
@angle:cf-oh-ho @atom:cf @atom:oh @atom:ho
@angle:c-oh-ho @atom:c @atom:oh @atom:ho
@angle:cl-oh-ho @atom:cl @atom:oh @atom:ho
@angle:cx-oh-ho @atom:cx @atom:oh @atom:ho
@angle:cy-oh-ho @atom:cy @atom:oh @atom:ho
@angle:f-oh-ho @atom:f @atom:oh @atom:ho
@angle:ho-oh-ho @atom:ho @atom:oh @atom:ho
@angle:ho-oh-i @atom:ho @atom:oh @atom:i
@angle:ho-oh-n1 @atom:ho @atom:oh @atom:n1
@angle:ho-oh-n2 @atom:ho @atom:oh @atom:n2
@angle:ho-oh-n3 @atom:ho @atom:oh @atom:n3
@angle:ho-oh-n4 @atom:ho @atom:oh @atom:n4
@angle:ho-oh-n @atom:ho @atom:oh @atom:n
@angle:ho-oh-na @atom:ho @atom:oh @atom:na
@angle:ho-oh-nh @atom:ho @atom:oh @atom:nh
@angle:ho-oh-no @atom:ho @atom:oh @atom:no
@angle:ho-oh-o @atom:ho @atom:oh @atom:o
@angle:ho-oh-oh @atom:ho @atom:oh @atom:oh
@angle:ho-oh-os @atom:ho @atom:oh @atom:os
@angle:ho-oh-p2 @atom:ho @atom:oh @atom:p2
@angle:ho-oh-p3 @atom:ho @atom:oh @atom:p3
@angle:ho-oh-p4 @atom:ho @atom:oh @atom:p4
@angle:ho-oh-p5 @atom:ho @atom:oh @atom:p5
@angle:ho-oh-py @atom:ho @atom:oh @atom:py
@angle:ho-oh-s4 @atom:ho @atom:oh @atom:s4
@angle:ho-oh-s @atom:ho @atom:oh @atom:s
@angle:ho-oh-s6 @atom:ho @atom:oh @atom:s6
@angle:ho-oh-sh @atom:ho @atom:oh @atom:sh
@angle:ho-oh-ss @atom:ho @atom:oh @atom:ss
@angle:ho-oh-sy @atom:ho @atom:oh @atom:sy
@angle:br-os-br @atom:br @atom:os @atom:br
@angle:c1-os-c1 @atom:c1 @atom:os @atom:c1
@angle:c1-os-c3 @atom:c1 @atom:os @atom:c3
@angle:c2-os-c2 @atom:c2 @atom:os @atom:c2
@angle:c2-os-c3 @atom:c2 @atom:os @atom:c3
@angle:c2-os-ca @atom:c2 @atom:os @atom:ca
@angle:c2-os-n2 @atom:c2 @atom:os @atom:n2
@angle:c2-os-na @atom:c2 @atom:os @atom:na
@angle:c2-os-os @atom:c2 @atom:os @atom:os
@angle:c2-os-p5 @atom:c2 @atom:os @atom:p5
@angle:c2-os-ss @atom:c2 @atom:os @atom:ss
@angle:c3-os-c3 @atom:c3 @atom:os @atom:c3
@angle:c3-os-ca @atom:c3 @atom:os @atom:ca
@angle:c3-os-cc @atom:c3 @atom:os @atom:cc
@angle:c3-os-cd @atom:c3 @atom:os @atom:cd
@angle:c3-os-ce @atom:c3 @atom:os @atom:ce
@angle:c3-os-cf @atom:c3 @atom:os @atom:cf
@angle:c3-os-cl @atom:c3 @atom:os @atom:cl
@angle:c3-os-cy @atom:c3 @atom:os @atom:cy
@angle:c3-os-i @atom:c3 @atom:os @atom:i
@angle:c3-os-n1 @atom:c3 @atom:os @atom:n1
@angle:c3-os-n2 @atom:c3 @atom:os @atom:n2
@angle:c3-os-n3 @atom:c3 @atom:os @atom:n3
@angle:c3-os-n4 @atom:c3 @atom:os @atom:n4
@angle:c3-os-n @atom:c3 @atom:os @atom:n
@angle:c3-os-na @atom:c3 @atom:os @atom:na
@angle:c3-os-nc @atom:c3 @atom:os @atom:nc
@angle:c3-os-nd @atom:c3 @atom:os @atom:nd
@angle:c3-os-nh @atom:c3 @atom:os @atom:nh
@angle:c3-os-no @atom:c3 @atom:os @atom:no
@angle:c3-os-o @atom:c3 @atom:os @atom:o
@angle:c3-os-oh @atom:c3 @atom:os @atom:oh
@angle:c3-os-os @atom:c3 @atom:os @atom:os
@angle:c3-os-p2 @atom:c3 @atom:os @atom:p2
@angle:c3-os-p3 @atom:c3 @atom:os @atom:p3
@angle:c3-os-p4 @atom:c3 @atom:os @atom:p4
@angle:c3-os-p5 @atom:c3 @atom:os @atom:p5
@angle:c3-os-py @atom:c3 @atom:os @atom:py
@angle:c3-os-s4 @atom:c3 @atom:os @atom:s4
@angle:c3-os-s6 @atom:c3 @atom:os @atom:s6
@angle:c3-os-s @atom:c3 @atom:os @atom:s
@angle:c3-os-sh @atom:c3 @atom:os @atom:sh
@angle:c3-os-ss @atom:c3 @atom:os @atom:ss
@angle:ca-os-ca @atom:ca @atom:os @atom:ca
@angle:ca-os-cc @atom:ca @atom:os @atom:cc
@angle:ca-os-cd @atom:ca @atom:os @atom:cd
@angle:ca-os-n3 @atom:ca @atom:os @atom:n3
@angle:ca-os-na @atom:ca @atom:os @atom:na
@angle:ca-os-nc @atom:ca @atom:os @atom:nc
@angle:ca-os-nd @atom:ca @atom:os @atom:nd
@angle:ca-os-p5 @atom:ca @atom:os @atom:p5
@angle:ca-os-s6 @atom:ca @atom:os @atom:s6
@angle:c-os-c2 @atom:c @atom:os @atom:c2
@angle:c-os-c3 @atom:c @atom:os @atom:c3
@angle:c-os-c @atom:c @atom:os @atom:c
@angle:c-os-ca @atom:c @atom:os @atom:ca
@angle:c-os-cc @atom:c @atom:os @atom:cc
@angle:cc-os-cc @atom:cc @atom:os @atom:cc
@angle:cc-os-cd @atom:cc @atom:os @atom:cd
@angle:c-os-cd @atom:c @atom:os @atom:cd
@angle:cc-os-na @atom:cc @atom:os @atom:na
@angle:cc-os-nc @atom:cc @atom:os @atom:nc
@angle:cc-os-os @atom:cc @atom:os @atom:os
@angle:cc-os-ss @atom:cc @atom:os @atom:ss
@angle:c-os-cy @atom:c @atom:os @atom:cy
@angle:cd-os-cd @atom:cd @atom:os @atom:cd
@angle:cd-os-na @atom:cd @atom:os @atom:na
@angle:cd-os-nd @atom:cd @atom:os @atom:nd
@angle:cd-os-os @atom:cd @atom:os @atom:os
@angle:cd-os-ss @atom:cd @atom:os @atom:ss
@angle:cl-os-cl @atom:cl @atom:os @atom:cl
@angle:c-os-n2 @atom:c @atom:os @atom:n2
@angle:c-os-n @atom:c @atom:os @atom:n
@angle:c-os-oh @atom:c @atom:os @atom:oh
@angle:c-os-os @atom:c @atom:os @atom:os
@angle:c-os-p5 @atom:c @atom:os @atom:p5
@angle:c-os-sy @atom:c @atom:os @atom:sy
@angle:cx-os-cx @atom:cx @atom:os @atom:cx
@angle:cx-os-n @atom:cx @atom:os @atom:n
@angle:cx-os-os @atom:cx @atom:os @atom:os
@angle:cy-os-cy @atom:cy @atom:os @atom:cy
@angle:f-os-f @atom:f @atom:os @atom:f
@angle:f-os-os @atom:f @atom:os @atom:os
@angle:i-os-i @atom:i @atom:os @atom:i
@angle:n1-os-n1 @atom:n1 @atom:os @atom:n1
@angle:n2-os-n2 @atom:n2 @atom:os @atom:n2
@angle:n2-os-s6 @atom:n2 @atom:os @atom:s6
@angle:n3-os-n3 @atom:n3 @atom:os @atom:n3
@angle:n4-os-n4 @atom:n4 @atom:os @atom:n4
@angle:na-os-na @atom:na @atom:os @atom:na
@angle:na-os-ss @atom:na @atom:os @atom:ss
@angle:nc-os-nc @atom:nc @atom:os @atom:nc
@angle:nc-os-ss @atom:nc @atom:os @atom:ss
@angle:nd-os-nd @atom:nd @atom:os @atom:nd
@angle:nd-os-ss @atom:nd @atom:os @atom:ss
@angle:nh-os-nh @atom:nh @atom:os @atom:nh
@angle:n-os-n @atom:n @atom:os @atom:n
@angle:no-os-no @atom:no @atom:os @atom:no
@angle:n-os-s6 @atom:n @atom:os @atom:s6
@angle:o-os-o @atom:o @atom:os @atom:o
@angle:p2-os-p2 @atom:p2 @atom:os @atom:p2
@angle:p2-os-p5 @atom:p2 @atom:os @atom:p5
@angle:p3-os-p3 @atom:p3 @atom:os @atom:p3
@angle:p3-os-py @atom:p3 @atom:os @atom:py
@angle:p5-os-p5 @atom:p5 @atom:os @atom:p5
@angle:s4-os-s4 @atom:s4 @atom:os @atom:s4
@angle:s6-os-s6 @atom:s6 @atom:os @atom:s6
@angle:sh-os-sh @atom:sh @atom:os @atom:sh
@angle:s-os-s @atom:s @atom:os @atom:s
@angle:ss-os-ss @atom:ss @atom:os @atom:ss
@angle:br-p2-br @atom:br @atom:p2 @atom:br
@angle:br-p2-c2 @atom:br @atom:p2 @atom:c2
@angle:br-p2-n2 @atom:br @atom:p2 @atom:n2
@angle:br-p2-o @atom:br @atom:p2 @atom:o
@angle:br-p2-p2 @atom:br @atom:p2 @atom:p2
@angle:br-p2-s @atom:br @atom:p2 @atom:s
@angle:c1-p2-c1 @atom:c1 @atom:p2 @atom:c1
@angle:c1-p2-c2 @atom:c1 @atom:p2 @atom:c2
@angle:c1-p2-n2 @atom:c1 @atom:p2 @atom:n2
@angle:c1-p2-o @atom:c1 @atom:p2 @atom:o
@angle:c1-p2-p2 @atom:c1 @atom:p2 @atom:p2
@angle:c1-p2-s @atom:c1 @atom:p2 @atom:s
@angle:c2-p2-c2 @atom:c2 @atom:p2 @atom:c2
@angle:c2-p2-c3 @atom:c2 @atom:p2 @atom:c3
@angle:c2-p2-ca @atom:c2 @atom:p2 @atom:ca
@angle:c2-p2-cl @atom:c2 @atom:p2 @atom:cl
@angle:c2-p2-f @atom:c2 @atom:p2 @atom:f
@angle:c2-p2-hp @atom:c2 @atom:p2 @atom:hp
@angle:c2-p2-i @atom:c2 @atom:p2 @atom:i
@angle:c2-p2-n2 @atom:c2 @atom:p2 @atom:n2
@angle:c2-p2-n3 @atom:c2 @atom:p2 @atom:n3
@angle:c2-p2-n4 @atom:c2 @atom:p2 @atom:n4
@angle:c2-p2-n @atom:c2 @atom:p2 @atom:n
@angle:c2-p2-na @atom:c2 @atom:p2 @atom:na
@angle:c2-p2-nh @atom:c2 @atom:p2 @atom:nh
@angle:c2-p2-no @atom:c2 @atom:p2 @atom:no
@angle:c2-p2-o @atom:c2 @atom:p2 @atom:o
@angle:c2-p2-oh @atom:c2 @atom:p2 @atom:oh
@angle:c2-p2-os @atom:c2 @atom:p2 @atom:os
@angle:c2-p2-p2 @atom:c2 @atom:p2 @atom:p2
@angle:c2-p2-p3 @atom:c2 @atom:p2 @atom:p3
@angle:c2-p2-p4 @atom:c2 @atom:p2 @atom:p4
@angle:c2-p2-p5 @atom:c2 @atom:p2 @atom:p5
@angle:c2-p2-s4 @atom:c2 @atom:p2 @atom:s4
@angle:c2-p2-s6 @atom:c2 @atom:p2 @atom:s6
@angle:c2-p2-s @atom:c2 @atom:p2 @atom:s
@angle:c2-p2-sh @atom:c2 @atom:p2 @atom:sh
@angle:c2-p2-ss @atom:c2 @atom:p2 @atom:ss
@angle:c3-p2-c3 @atom:c3 @atom:p2 @atom:c3
@angle:c3-p2-n2 @atom:c3 @atom:p2 @atom:n2
@angle:c3-p2-o @atom:c3 @atom:p2 @atom:o
@angle:c3-p2-os @atom:c3 @atom:p2 @atom:os
@angle:c3-p2-p2 @atom:c3 @atom:p2 @atom:p2
@angle:c3-p2-s @atom:c3 @atom:p2 @atom:s
@angle:ca-p2-ca @atom:ca @atom:p2 @atom:ca
@angle:ca-p2-n2 @atom:ca @atom:p2 @atom:n2
@angle:ca-p2-n @atom:ca @atom:p2 @atom:n
@angle:ca-p2-na @atom:ca @atom:p2 @atom:na
@angle:ca-p2-o @atom:ca @atom:p2 @atom:o
@angle:ca-p2-s @atom:ca @atom:p2 @atom:s
@angle:c-p2-c2 @atom:c @atom:p2 @atom:c2
@angle:c-p2-c @atom:c @atom:p2 @atom:c
@angle:ce-p2-o @atom:ce @atom:p2 @atom:o
@angle:ce-p2-s @atom:ce @atom:p2 @atom:s
@angle:cf-p2-o @atom:cf @atom:p2 @atom:o
@angle:cf-p2-s @atom:cf @atom:p2 @atom:s
@angle:cl-p2-cl @atom:cl @atom:p2 @atom:cl
@angle:cl-p2-n2 @atom:cl @atom:p2 @atom:n2
@angle:cl-p2-o @atom:cl @atom:p2 @atom:o
@angle:cl-p2-p2 @atom:cl @atom:p2 @atom:p2
@angle:cl-p2-s @atom:cl @atom:p2 @atom:s
@angle:f-p2-f @atom:f @atom:p2 @atom:f
@angle:f-p2-n2 @atom:f @atom:p2 @atom:n2
@angle:f-p2-o @atom:f @atom:p2 @atom:o
@angle:f-p2-p2 @atom:f @atom:p2 @atom:p2
@angle:f-p2-s @atom:f @atom:p2 @atom:s
@angle:hp-p2-hp @atom:hp @atom:p2 @atom:hp
@angle:hp-p2-n1 @atom:hp @atom:p2 @atom:n1
@angle:hp-p2-n2 @atom:hp @atom:p2 @atom:n2
@angle:hp-p2-ne @atom:hp @atom:p2 @atom:ne
@angle:hp-p2-nf @atom:hp @atom:p2 @atom:nf
@angle:hp-p2-o @atom:hp @atom:p2 @atom:o
@angle:hp-p2-p2 @atom:hp @atom:p2 @atom:p2
@angle:hp-p2-p4 @atom:hp @atom:p2 @atom:p4
@angle:hp-p2-p5 @atom:hp @atom:p2 @atom:p5
@angle:hp-p2-pe @atom:hp @atom:p2 @atom:pe
@angle:hp-p2-pf @atom:hp @atom:p2 @atom:pf
@angle:hp-p2-s4 @atom:hp @atom:p2 @atom:s4
@angle:hp-p2-s @atom:hp @atom:p2 @atom:s
@angle:hp-p2-s6 @atom:hp @atom:p2 @atom:s6
@angle:i-p2-i @atom:i @atom:p2 @atom:i
@angle:i-p2-n2 @atom:i @atom:p2 @atom:n2
@angle:i-p2-o @atom:i @atom:p2 @atom:o
@angle:i-p2-p2 @atom:i @atom:p2 @atom:p2
@angle:i-p2-s @atom:i @atom:p2 @atom:s
@angle:n1-p2-n1 @atom:n1 @atom:p2 @atom:n1
@angle:n2-p2-n2 @atom:n2 @atom:p2 @atom:n2
@angle:n2-p2-n3 @atom:n2 @atom:p2 @atom:n3
@angle:n2-p2-n4 @atom:n2 @atom:p2 @atom:n4
@angle:n2-p2-na @atom:n2 @atom:p2 @atom:na
@angle:n2-p2-nh @atom:n2 @atom:p2 @atom:nh
@angle:n2-p2-no @atom:n2 @atom:p2 @atom:no
@angle:n2-p2-o @atom:n2 @atom:p2 @atom:o
@angle:n2-p2-oh @atom:n2 @atom:p2 @atom:oh
@angle:n2-p2-os @atom:n2 @atom:p2 @atom:os
@angle:n2-p2-p3 @atom:n2 @atom:p2 @atom:p3
@angle:n2-p2-p4 @atom:n2 @atom:p2 @atom:p4
@angle:n2-p2-p5 @atom:n2 @atom:p2 @atom:p5
@angle:n2-p2-s4 @atom:n2 @atom:p2 @atom:s4
@angle:n2-p2-s6 @atom:n2 @atom:p2 @atom:s6
@angle:n2-p2-s @atom:n2 @atom:p2 @atom:s
@angle:n2-p2-sh @atom:n2 @atom:p2 @atom:sh
@angle:n2-p2-ss @atom:n2 @atom:p2 @atom:ss
@angle:n3-p2-n3 @atom:n3 @atom:p2 @atom:n3
@angle:n3-p2-o @atom:n3 @atom:p2 @atom:o
@angle:n3-p2-p2 @atom:n3 @atom:p2 @atom:p2
@angle:n3-p2-s @atom:n3 @atom:p2 @atom:s
@angle:n4-p2-n4 @atom:n4 @atom:p2 @atom:n4
@angle:n4-p2-o @atom:n4 @atom:p2 @atom:o
@angle:n4-p2-p2 @atom:n4 @atom:p2 @atom:p2
@angle:n4-p2-s @atom:n4 @atom:p2 @atom:s
@angle:na-p2-na @atom:na @atom:p2 @atom:na
@angle:na-p2-o @atom:na @atom:p2 @atom:o
@angle:na-p2-s @atom:na @atom:p2 @atom:s
@angle:ne-p2-o @atom:ne @atom:p2 @atom:o
@angle:ne-p2-s @atom:ne @atom:p2 @atom:s
@angle:nf-p2-o @atom:nf @atom:p2 @atom:o
@angle:nf-p2-s @atom:nf @atom:p2 @atom:s
@angle:nh-p2-nh @atom:nh @atom:p2 @atom:nh
@angle:nh-p2-o @atom:nh @atom:p2 @atom:o
@angle:nh-p2-p2 @atom:nh @atom:p2 @atom:p2
@angle:nh-p2-s @atom:nh @atom:p2 @atom:s
@angle:n-p2-n2 @atom:n @atom:p2 @atom:n2
@angle:n-p2-o @atom:n @atom:p2 @atom:o
@angle:no-p2-no @atom:no @atom:p2 @atom:no
@angle:no-p2-o @atom:no @atom:p2 @atom:o
@angle:no-p2-p2 @atom:no @atom:p2 @atom:p2
@angle:no-p2-s @atom:no @atom:p2 @atom:s
@angle:n-p2-p2 @atom:n @atom:p2 @atom:p2
@angle:n-p2-s @atom:n @atom:p2 @atom:s
@angle:oh-p2-oh @atom:oh @atom:p2 @atom:oh
@angle:oh-p2-p2 @atom:oh @atom:p2 @atom:p2
@angle:oh-p2-s @atom:oh @atom:p2 @atom:s
@angle:o-p2-o @atom:o @atom:p2 @atom:o
@angle:o-p2-oh @atom:o @atom:p2 @atom:oh
@angle:o-p2-os @atom:o @atom:p2 @atom:os
@angle:o-p2-p2 @atom:o @atom:p2 @atom:p2
@angle:o-p2-p3 @atom:o @atom:p2 @atom:p3
@angle:o-p2-p4 @atom:o @atom:p2 @atom:p4
@angle:o-p2-p5 @atom:o @atom:p2 @atom:p5
@angle:o-p2-pe @atom:o @atom:p2 @atom:pe
@angle:o-p2-pf @atom:o @atom:p2 @atom:pf
@angle:o-p2-s4 @atom:o @atom:p2 @atom:s4
@angle:o-p2-s6 @atom:o @atom:p2 @atom:s6
@angle:o-p2-s @atom:o @atom:p2 @atom:s
@angle:o-p2-sh @atom:o @atom:p2 @atom:sh
@angle:os-p2-os @atom:os @atom:p2 @atom:os
@angle:os-p2-p2 @atom:os @atom:p2 @atom:p2
@angle:o-p2-ss @atom:o @atom:p2 @atom:ss
@angle:os-p2-s @atom:os @atom:p2 @atom:s
@angle:p2-p2-n2 @atom:p2 @atom:p2 @atom:n2
@angle:p2-p2-p3 @atom:p2 @atom:p2 @atom:p3
@angle:p2-p2-p4 @atom:p2 @atom:p2 @atom:p4
@angle:p2-p2-p5 @atom:p2 @atom:p2 @atom:p5
@angle:p2-p2-s4 @atom:p2 @atom:p2 @atom:s4
@angle:p2-p2-s6 @atom:p2 @atom:p2 @atom:s6
@angle:p2-p2-s @atom:p2 @atom:p2 @atom:s
@angle:p2-p2-sh @atom:p2 @atom:p2 @atom:sh
@angle:p3-p2-p3 @atom:p3 @atom:p2 @atom:p3
@angle:p3-p2-s @atom:p3 @atom:p2 @atom:s
@angle:p4-p2-s @atom:p4 @atom:p2 @atom:s
@angle:p5-p2-p5 @atom:p5 @atom:p2 @atom:p5
@angle:p5-p2-s @atom:p5 @atom:p2 @atom:s
@angle:pe-p2-s @atom:pe @atom:p2 @atom:s
@angle:pf-p2-s @atom:pf @atom:p2 @atom:s
@angle:s4-p2-s4 @atom:s4 @atom:p2 @atom:s4
@angle:s6-p2-s6 @atom:s6 @atom:p2 @atom:s6
@angle:sh-p2-sh @atom:sh @atom:p2 @atom:sh
@angle:s-p2-s @atom:s @atom:p2 @atom:s
@angle:s-p2-s4 @atom:s @atom:p2 @atom:s4
@angle:s-p2-s6 @atom:s @atom:p2 @atom:s6
@angle:s-p2-sh @atom:s @atom:p2 @atom:sh
@angle:s-p2-ss @atom:s @atom:p2 @atom:ss
@angle:ss-p2-ss @atom:ss @atom:p2 @atom:ss
@angle:br-p3-br @atom:br @atom:p3 @atom:br
@angle:br-p3-hp @atom:br @atom:p3 @atom:hp
@angle:c1-p3-c1 @atom:c1 @atom:p3 @atom:c1
@angle:c1-p3-f @atom:c1 @atom:p3 @atom:f
@angle:c1-p3-hp @atom:c1 @atom:p3 @atom:hp
@angle:c2-p3-c2 @atom:c2 @atom:p3 @atom:c2
@angle:c2-p3-hp @atom:c2 @atom:p3 @atom:hp
@angle:c3-p3-c3 @atom:c3 @atom:p3 @atom:c3
@angle:c3-p3-ca @atom:c3 @atom:p3 @atom:ca
@angle:c3-p3-cl @atom:c3 @atom:p3 @atom:cl
@angle:c3-p3-f @atom:c3 @atom:p3 @atom:f
@angle:c3-p3-hp @atom:c3 @atom:p3 @atom:hp
@angle:c3-p3-n2 @atom:c3 @atom:p3 @atom:n2
@angle:c3-p3-n3 @atom:c3 @atom:p3 @atom:n3
@angle:c3-p3-n4 @atom:c3 @atom:p3 @atom:n4
@angle:c3-p3-n @atom:c3 @atom:p3 @atom:n
@angle:c3-p3-na @atom:c3 @atom:p3 @atom:na
@angle:c3-p3-nh @atom:c3 @atom:p3 @atom:nh
@angle:c3-p3-no @atom:c3 @atom:p3 @atom:no
@angle:c3-p3-o @atom:c3 @atom:p3 @atom:o
@angle:c3-p3-oh @atom:c3 @atom:p3 @atom:oh
@angle:c3-p3-os @atom:c3 @atom:p3 @atom:os
@angle:c3-p3-p3 @atom:c3 @atom:p3 @atom:p3
@angle:c3-p3-p5 @atom:c3 @atom:p3 @atom:p5
@angle:c3-p3-s4 @atom:c3 @atom:p3 @atom:s4
@angle:c3-p3-s6 @atom:c3 @atom:p3 @atom:s6
@angle:c3-p3-sh @atom:c3 @atom:p3 @atom:sh
@angle:c3-p3-ss @atom:c3 @atom:p3 @atom:ss
@angle:ca-p3-ca @atom:ca @atom:p3 @atom:ca
@angle:ca-p3-hp @atom:ca @atom:p3 @atom:hp
@angle:c-p3-c3 @atom:c @atom:p3 @atom:c3
@angle:c-p3-c @atom:c @atom:p3 @atom:c
@angle:c-p3-hp @atom:c @atom:p3 @atom:hp
@angle:cl-p3-cl @atom:cl @atom:p3 @atom:cl
@angle:cl-p3-f @atom:cl @atom:p3 @atom:f
@angle:cl-p3-hp @atom:cl @atom:p3 @atom:hp
@angle:c-p3-os @atom:c @atom:p3 @atom:os
@angle:cx-p3-hp @atom:cx @atom:p3 @atom:hp
@angle:f-p3-f @atom:f @atom:p3 @atom:f
@angle:f-p3-hp @atom:f @atom:p3 @atom:hp
@angle:f-p3-n3 @atom:f @atom:p3 @atom:n3
@angle:f-p3-os @atom:f @atom:p3 @atom:os
@angle:f-p3-p3 @atom:f @atom:p3 @atom:p3
@angle:hp-p3-hp @atom:hp @atom:p3 @atom:hp
@angle:hp-p3-i @atom:hp @atom:p3 @atom:i
@angle:hp-p3-n1 @atom:hp @atom:p3 @atom:n1
@angle:hp-p3-n2 @atom:hp @atom:p3 @atom:n2
@angle:hp-p3-n3 @atom:hp @atom:p3 @atom:n3
@angle:hp-p3-n4 @atom:hp @atom:p3 @atom:n4
@angle:hp-p3-n @atom:hp @atom:p3 @atom:n
@angle:hp-p3-na @atom:hp @atom:p3 @atom:na
@angle:hp-p3-nh @atom:hp @atom:p3 @atom:nh
@angle:hp-p3-no @atom:hp @atom:p3 @atom:no
@angle:hp-p3-o @atom:hp @atom:p3 @atom:o
@angle:hp-p3-oh @atom:hp @atom:p3 @atom:oh
@angle:hp-p3-os @atom:hp @atom:p3 @atom:os
@angle:hp-p3-p2 @atom:hp @atom:p3 @atom:p2
@angle:hp-p3-p3 @atom:hp @atom:p3 @atom:p3
@angle:hp-p3-p4 @atom:hp @atom:p3 @atom:p4
@angle:hp-p3-p5 @atom:hp @atom:p3 @atom:p5
@angle:hp-p3-s4 @atom:hp @atom:p3 @atom:s4
@angle:hp-p3-s6 @atom:hp @atom:p3 @atom:s6
@angle:hp-p3-sh @atom:hp @atom:p3 @atom:sh
@angle:hp-p3-ss @atom:hp @atom:p3 @atom:ss
@angle:i-p3-i @atom:i @atom:p3 @atom:i
@angle:n1-p3-n1 @atom:n1 @atom:p3 @atom:n1
@angle:n2-p3-n2 @atom:n2 @atom:p3 @atom:n2
@angle:n3-p3-n3 @atom:n3 @atom:p3 @atom:n3
@angle:n3-p3-o @atom:n3 @atom:p3 @atom:o
@angle:n3-p3-oh @atom:n3 @atom:p3 @atom:oh
@angle:n4-p3-n4 @atom:n4 @atom:p3 @atom:n4
@angle:na-p3-na @atom:na @atom:p3 @atom:na
@angle:nh-p3-nh @atom:nh @atom:p3 @atom:nh
@angle:n-p3-n @atom:n @atom:p3 @atom:n
@angle:n-p3-o @atom:n @atom:p3 @atom:o
@angle:no-p3-no @atom:no @atom:p3 @atom:no
@angle:oh-p3-oh @atom:oh @atom:p3 @atom:oh
@angle:o-p3-o @atom:o @atom:p3 @atom:o
@angle:o-p3-p3 @atom:o @atom:p3 @atom:p3
@angle:o-p3-p5 @atom:o @atom:p3 @atom:p5
@angle:o-p3-s4 @atom:o @atom:p3 @atom:s4
@angle:o-p3-s6 @atom:o @atom:p3 @atom:s6
@angle:os-p3-os @atom:os @atom:p3 @atom:os
@angle:p2-p3-p2 @atom:p2 @atom:p3 @atom:p2
@angle:p3-p3-p3 @atom:p3 @atom:p3 @atom:p3
@angle:p4-p3-p4 @atom:p4 @atom:p3 @atom:p4
@angle:p5-p3-p5 @atom:p5 @atom:p3 @atom:p5
@angle:s4-p3-s4 @atom:s4 @atom:p3 @atom:s4
@angle:s6-p3-s6 @atom:s6 @atom:p3 @atom:s6
@angle:sh-p3-sh @atom:sh @atom:p3 @atom:sh
@angle:s-p3-s @atom:s @atom:p3 @atom:s
@angle:ss-p3-ss @atom:ss @atom:p3 @atom:ss
@angle:br-p4-br @atom:br @atom:p4 @atom:br
@angle:br-p4-o @atom:br @atom:p4 @atom:o
@angle:c2-p4-c2 @atom:c2 @atom:p4 @atom:c2
@angle:c2-p4-hp @atom:c2 @atom:p4 @atom:hp
@angle:c2-p4-o @atom:c2 @atom:p4 @atom:o
@angle:c3-p4-c3 @atom:c3 @atom:p4 @atom:c3
@angle:c3-p4-n2 @atom:c3 @atom:p4 @atom:n2
@angle:c3-p4-n3 @atom:c3 @atom:p4 @atom:n3
@angle:c3-p4-n4 @atom:c3 @atom:p4 @atom:n4
@angle:c3-p4-n @atom:c3 @atom:p4 @atom:n
@angle:c3-p4-na @atom:c3 @atom:p4 @atom:na
@angle:c3-p4-nh @atom:c3 @atom:p4 @atom:nh
@angle:c3-p4-no @atom:c3 @atom:p4 @atom:no
@angle:c3-p4-o @atom:c3 @atom:p4 @atom:o
@angle:c3-p4-oh @atom:c3 @atom:p4 @atom:oh
@angle:c3-p4-os @atom:c3 @atom:p4 @atom:os
@angle:c3-p4-p2 @atom:c3 @atom:p4 @atom:p2
@angle:c3-p4-p3 @atom:c3 @atom:p4 @atom:p3
@angle:c3-p4-p4 @atom:c3 @atom:p4 @atom:p4
@angle:c3-p4-p5 @atom:c3 @atom:p4 @atom:p5
@angle:c3-p4-sh @atom:c3 @atom:p4 @atom:sh
@angle:c3-p4-ss @atom:c3 @atom:p4 @atom:ss
@angle:ca-p4-ca @atom:ca @atom:p4 @atom:ca
@angle:ca-p4-o @atom:ca @atom:p4 @atom:o
@angle:cl-p4-cl @atom:cl @atom:p4 @atom:cl
@angle:cl-p4-o @atom:cl @atom:p4 @atom:o
@angle:hp-p4-hp @atom:hp @atom:p4 @atom:hp
@angle:hp-p4-n1 @atom:hp @atom:p4 @atom:n1
@angle:hp-p4-o @atom:hp @atom:p4 @atom:o
@angle:hp-p4-p3 @atom:hp @atom:p4 @atom:p3
@angle:hp-p4-s @atom:hp @atom:p4 @atom:s
@angle:i-p4-i @atom:i @atom:p4 @atom:i
@angle:i-p4-o @atom:i @atom:p4 @atom:o
@angle:n1-p4-n1 @atom:n1 @atom:p4 @atom:n1
@angle:n1-p4-o @atom:n1 @atom:p4 @atom:o
@angle:n2-p4-n2 @atom:n2 @atom:p4 @atom:n2
@angle:n2-p4-o @atom:n2 @atom:p4 @atom:o
@angle:n3-p4-o @atom:n3 @atom:p4 @atom:o
@angle:n4-p4-o @atom:n4 @atom:p4 @atom:o
@angle:na-p4-o @atom:na @atom:p4 @atom:o
@angle:nh-p4-nh @atom:nh @atom:p4 @atom:nh
@angle:nh-p4-o @atom:nh @atom:p4 @atom:o
@angle:n-p4-o @atom:n @atom:p4 @atom:o
@angle:no-p4-o @atom:no @atom:p4 @atom:o
@angle:oh-p4-oh @atom:oh @atom:p4 @atom:oh
@angle:o-p4-o @atom:o @atom:p4 @atom:o
@angle:o-p4-oh @atom:o @atom:p4 @atom:oh
@angle:o-p4-os @atom:o @atom:p4 @atom:os
@angle:o-p4-p2 @atom:o @atom:p4 @atom:p2
@angle:o-p4-p3 @atom:o @atom:p4 @atom:p3
@angle:o-p4-p4 @atom:o @atom:p4 @atom:p4
@angle:o-p4-p5 @atom:o @atom:p4 @atom:p5
@angle:o-p4-s4 @atom:o @atom:p4 @atom:s4
@angle:o-p4-s6 @atom:o @atom:p4 @atom:s6
@angle:o-p4-s @atom:o @atom:p4 @atom:s
@angle:o-p4-sh @atom:o @atom:p4 @atom:sh
@angle:os-p4-os @atom:os @atom:p4 @atom:os
@angle:o-p4-ss @atom:o @atom:p4 @atom:ss
@angle:p2-p4-p2 @atom:p2 @atom:p4 @atom:p2
@angle:p3-p4-p3 @atom:p3 @atom:p4 @atom:p3
@angle:p4-p4-p4 @atom:p4 @atom:p4 @atom:p4
@angle:p5-p4-p5 @atom:p5 @atom:p4 @atom:p5
@angle:s4-p4-s4 @atom:s4 @atom:p4 @atom:s4
@angle:s6-p4-s6 @atom:s6 @atom:p4 @atom:s6
@angle:sh-p4-sh @atom:sh @atom:p4 @atom:sh
@angle:s-p4-s @atom:s @atom:p4 @atom:s
@angle:ss-p4-ss @atom:ss @atom:p4 @atom:ss
@angle:br-p5-br @atom:br @atom:p5 @atom:br
@angle:br-p5-o @atom:br @atom:p5 @atom:o
@angle:br-p5-oh @atom:br @atom:p5 @atom:oh
@angle:c1-p5-c1 @atom:c1 @atom:p5 @atom:c1
@angle:c1-p5-o @atom:c1 @atom:p5 @atom:o
@angle:c1-p5-oh @atom:c1 @atom:p5 @atom:oh
@angle:c2-p5-c2 @atom:c2 @atom:p5 @atom:c2
@angle:c2-p5-o @atom:c2 @atom:p5 @atom:o
@angle:c2-p5-oh @atom:c2 @atom:p5 @atom:oh
@angle:c2-p5-os @atom:c2 @atom:p5 @atom:os
@angle:c3-p5-c3 @atom:c3 @atom:p5 @atom:c3
@angle:c3-p5-hp @atom:c3 @atom:p5 @atom:hp
@angle:c3-p5-n3 @atom:c3 @atom:p5 @atom:n3
@angle:c3-p5-o @atom:c3 @atom:p5 @atom:o
@angle:c3-p5-oh @atom:c3 @atom:p5 @atom:oh
@angle:c3-p5-os @atom:c3 @atom:p5 @atom:os
@angle:c3-p5-p4 @atom:c3 @atom:p5 @atom:p4
@angle:c3-p5-s @atom:c3 @atom:p5 @atom:s
@angle:c3-p5-ss @atom:c3 @atom:p5 @atom:ss
@angle:ca-p5-ca @atom:ca @atom:p5 @atom:ca
@angle:ca-p5-o @atom:ca @atom:p5 @atom:o
@angle:ca-p5-oh @atom:ca @atom:p5 @atom:oh
@angle:ca-p5-os @atom:ca @atom:p5 @atom:os
@angle:c-p5-c @atom:c @atom:p5 @atom:c
@angle:cl-p5-cl @atom:cl @atom:p5 @atom:cl
@angle:cl-p5-o @atom:cl @atom:p5 @atom:o
@angle:cl-p5-oh @atom:cl @atom:p5 @atom:oh
@angle:c-p5-o @atom:c @atom:p5 @atom:o
@angle:c-p5-oh @atom:c @atom:p5 @atom:oh
@angle:f-p5-f @atom:f @atom:p5 @atom:f
@angle:f-p5-o @atom:f @atom:p5 @atom:o
@angle:f-p5-oh @atom:f @atom:p5 @atom:oh
@angle:f-p5-os @atom:f @atom:p5 @atom:os
@angle:f-p5-s @atom:f @atom:p5 @atom:s
@angle:hp-p5-hp @atom:hp @atom:p5 @atom:hp
@angle:hp-p5-n1 @atom:hp @atom:p5 @atom:n1
@angle:hp-p5-o @atom:hp @atom:p5 @atom:o
@angle:hp-p5-oh @atom:hp @atom:p5 @atom:oh
@angle:hp-p5-s @atom:hp @atom:p5 @atom:s
@angle:i-p5-i @atom:i @atom:p5 @atom:i
@angle:i-p5-o @atom:i @atom:p5 @atom:o
@angle:i-p5-oh @atom:i @atom:p5 @atom:oh
@angle:n1-p5-n1 @atom:n1 @atom:p5 @atom:n1
@angle:n1-p5-o @atom:n1 @atom:p5 @atom:o
@angle:n2-p5-n2 @atom:n2 @atom:p5 @atom:n2
@angle:n2-p5-o @atom:n2 @atom:p5 @atom:o
@angle:n2-p5-oh @atom:n2 @atom:p5 @atom:oh
@angle:n3-p5-n3 @atom:n3 @atom:p5 @atom:n3
@angle:n3-p5-nh @atom:n3 @atom:p5 @atom:nh
@angle:n3-p5-o @atom:n3 @atom:p5 @atom:o
@angle:n3-p5-oh @atom:n3 @atom:p5 @atom:oh
@angle:n3-p5-os @atom:n3 @atom:p5 @atom:os
@angle:n3-p5-s @atom:n3 @atom:p5 @atom:s
@angle:n4-p5-n4 @atom:n4 @atom:p5 @atom:n4
@angle:n4-p5-o @atom:n4 @atom:p5 @atom:o
@angle:n4-p5-oh @atom:n4 @atom:p5 @atom:oh
@angle:n4-p5-os @atom:n4 @atom:p5 @atom:os
@angle:na-p5-na @atom:na @atom:p5 @atom:na
@angle:na-p5-o @atom:na @atom:p5 @atom:o
@angle:na-p5-oh @atom:na @atom:p5 @atom:oh
@angle:na-p5-os @atom:na @atom:p5 @atom:os
@angle:nh-p5-nh @atom:nh @atom:p5 @atom:nh
@angle:nh-p5-o @atom:nh @atom:p5 @atom:o
@angle:nh-p5-oh @atom:nh @atom:p5 @atom:oh
@angle:nh-p5-os @atom:nh @atom:p5 @atom:os
@angle:n-p5-n3 @atom:n @atom:p5 @atom:n3
@angle:n-p5-n @atom:n @atom:p5 @atom:n
@angle:n-p5-o @atom:n @atom:p5 @atom:o
@angle:n-p5-oh @atom:n @atom:p5 @atom:oh
@angle:no-p5-no @atom:no @atom:p5 @atom:no
@angle:no-p5-o @atom:no @atom:p5 @atom:o
@angle:no-p5-oh @atom:no @atom:p5 @atom:oh
@angle:no-p5-os @atom:no @atom:p5 @atom:os
@angle:n-p5-os @atom:n @atom:p5 @atom:os
@angle:oh-p5-oh @atom:oh @atom:p5 @atom:oh
@angle:oh-p5-os @atom:oh @atom:p5 @atom:os
@angle:oh-p5-p2 @atom:oh @atom:p5 @atom:p2
@angle:oh-p5-p3 @atom:oh @atom:p5 @atom:p3
@angle:oh-p5-p4 @atom:oh @atom:p5 @atom:p4
@angle:oh-p5-p5 @atom:oh @atom:p5 @atom:p5
@angle:oh-p5-s4 @atom:oh @atom:p5 @atom:s4
@angle:oh-p5-s6 @atom:oh @atom:p5 @atom:s6
@angle:oh-p5-s @atom:oh @atom:p5 @atom:s
@angle:oh-p5-sh @atom:oh @atom:p5 @atom:sh
@angle:oh-p5-ss @atom:oh @atom:p5 @atom:ss
@angle:o-p5-o @atom:o @atom:p5 @atom:o
@angle:o-p5-oh @atom:o @atom:p5 @atom:oh
@angle:o-p5-os @atom:o @atom:p5 @atom:os
@angle:o-p5-p2 @atom:o @atom:p5 @atom:p2
@angle:o-p5-p3 @atom:o @atom:p5 @atom:p3
@angle:o-p5-p4 @atom:o @atom:p5 @atom:p4
@angle:o-p5-p5 @atom:o @atom:p5 @atom:p5
@angle:o-p5-s4 @atom:o @atom:p5 @atom:s4
@angle:o-p5-s6 @atom:o @atom:p5 @atom:s6
@angle:o-p5-s @atom:o @atom:p5 @atom:s
@angle:o-p5-sh @atom:o @atom:p5 @atom:sh
@angle:os-p5-os @atom:os @atom:p5 @atom:os
@angle:os-p5-p3 @atom:os @atom:p5 @atom:p3
@angle:os-p5-p5 @atom:os @atom:p5 @atom:p5
@angle:os-p5-s4 @atom:os @atom:p5 @atom:s4
@angle:os-p5-s6 @atom:os @atom:p5 @atom:s6
@angle:o-p5-ss @atom:o @atom:p5 @atom:ss
@angle:os-p5-s @atom:os @atom:p5 @atom:s
@angle:os-p5-sh @atom:os @atom:p5 @atom:sh
@angle:os-p5-ss @atom:os @atom:p5 @atom:ss
@angle:p2-p5-p2 @atom:p2 @atom:p5 @atom:p2
@angle:p3-p5-p3 @atom:p3 @atom:p5 @atom:p3
@angle:p4-p5-p4 @atom:p4 @atom:p5 @atom:p4
@angle:p5-p5-p5 @atom:p5 @atom:p5 @atom:p5
@angle:s6-p5-s6 @atom:s6 @atom:p5 @atom:s6
@angle:sh-p5-sh @atom:sh @atom:p5 @atom:sh
@angle:sh-p5-ss @atom:sh @atom:p5 @atom:ss
@angle:s-p5-s @atom:s @atom:p5 @atom:s
@angle:ss-p5-ss @atom:ss @atom:p5 @atom:ss
@angle:cd-pc-n @atom:cd @atom:pc @atom:n
@angle:cd-pc-na @atom:cd @atom:pc @atom:na
@angle:cc-pd-n @atom:cc @atom:pd @atom:n
@angle:cc-pd-na @atom:cc @atom:pd @atom:na
@angle:c2-pe-ca @atom:c2 @atom:pe @atom:ca
@angle:c2-pe-ce @atom:c2 @atom:pe @atom:ce
@angle:c2-pe-cg @atom:c2 @atom:pe @atom:cg
@angle:c2-pe-n2 @atom:c2 @atom:pe @atom:n2
@angle:c2-pe-ne @atom:c2 @atom:pe @atom:ne
@angle:c2-pe-o @atom:c2 @atom:pe @atom:o
@angle:c2-pe-p2 @atom:c2 @atom:pe @atom:p2
@angle:c2-pe-pe @atom:c2 @atom:pe @atom:pe
@angle:c2-pe-px @atom:c2 @atom:pe @atom:px
@angle:c2-pe-py @atom:c2 @atom:pe @atom:py
@angle:c2-pe-s @atom:c2 @atom:pe @atom:s
@angle:c2-pe-sx @atom:c2 @atom:pe @atom:sx
@angle:c2-pe-sy @atom:c2 @atom:pe @atom:sy
@angle:ca-pe-n2 @atom:ca @atom:pe @atom:n2
@angle:ca-pe-o @atom:ca @atom:pe @atom:o
@angle:ca-pe-p2 @atom:ca @atom:pe @atom:p2
@angle:ca-pe-pf @atom:ca @atom:pe @atom:pf
@angle:ca-pe-s @atom:ca @atom:pe @atom:s
@angle:c-pe-c2 @atom:c @atom:pe @atom:c2
@angle:ce-pe-n2 @atom:ce @atom:pe @atom:n2
@angle:ce-pe-o @atom:ce @atom:pe @atom:o
@angle:ce-pe-p2 @atom:ce @atom:pe @atom:p2
@angle:ce-pe-s @atom:ce @atom:pe @atom:s
@angle:cg-pe-n2 @atom:cg @atom:pe @atom:n2
@angle:cg-pe-o @atom:cg @atom:pe @atom:o
@angle:cg-pe-p2 @atom:cg @atom:pe @atom:p2
@angle:cg-pe-s @atom:cg @atom:pe @atom:s
@angle:n2-pe-n2 @atom:n2 @atom:pe @atom:n2
@angle:n2-pe-ne @atom:n2 @atom:pe @atom:ne
@angle:n2-pe-o @atom:n2 @atom:pe @atom:o
@angle:n2-pe-p2 @atom:n2 @atom:pe @atom:p2
@angle:n2-pe-pe @atom:n2 @atom:pe @atom:pe
@angle:n2-pe-px @atom:n2 @atom:pe @atom:px
@angle:n2-pe-py @atom:n2 @atom:pe @atom:py
@angle:n2-pe-s @atom:n2 @atom:pe @atom:s
@angle:n2-pe-sx @atom:n2 @atom:pe @atom:sx
@angle:n2-pe-sy @atom:n2 @atom:pe @atom:sy
@angle:ne-pe-o @atom:ne @atom:pe @atom:o
@angle:ne-pe-p2 @atom:ne @atom:pe @atom:p2
@angle:ne-pe-s @atom:ne @atom:pe @atom:s
@angle:o-pe-o @atom:o @atom:pe @atom:o
@angle:o-pe-p2 @atom:o @atom:pe @atom:p2
@angle:o-pe-pe @atom:o @atom:pe @atom:pe
@angle:o-pe-px @atom:o @atom:pe @atom:px
@angle:o-pe-py @atom:o @atom:pe @atom:py
@angle:o-pe-s @atom:o @atom:pe @atom:s
@angle:o-pe-sx @atom:o @atom:pe @atom:sx
@angle:o-pe-sy @atom:o @atom:pe @atom:sy
@angle:p2-pe-pe @atom:p2 @atom:pe @atom:pe
@angle:p2-pe-px @atom:p2 @atom:pe @atom:px
@angle:p2-pe-py @atom:p2 @atom:pe @atom:py
@angle:p2-pe-s @atom:p2 @atom:pe @atom:s
@angle:p2-pe-sx @atom:p2 @atom:pe @atom:sx
@angle:p2-pe-sy @atom:p2 @atom:pe @atom:sy
@angle:pe-pe-s @atom:pe @atom:pe @atom:s
@angle:px-pe-s @atom:px @atom:pe @atom:s
@angle:py-pe-s @atom:py @atom:pe @atom:s
@angle:s-pe-s @atom:s @atom:pe @atom:s
@angle:s-pe-sx @atom:s @atom:pe @atom:sx
@angle:s-pe-sy @atom:s @atom:pe @atom:sy
@angle:c2-pf-ca @atom:c2 @atom:pf @atom:ca
@angle:c2-pf-cf @atom:c2 @atom:pf @atom:cf
@angle:c2-pf-ch @atom:c2 @atom:pf @atom:ch
@angle:c2-pf-n2 @atom:c2 @atom:pf @atom:n2
@angle:c2-pf-nf @atom:c2 @atom:pf @atom:nf
@angle:c2-pf-o @atom:c2 @atom:pf @atom:o
@angle:c2-pf-p2 @atom:c2 @atom:pf @atom:p2
@angle:c2-pf-pf @atom:c2 @atom:pf @atom:pf
@angle:c2-pf-px @atom:c2 @atom:pf @atom:px
@angle:c2-pf-py @atom:c2 @atom:pf @atom:py
@angle:c2-pf-s @atom:c2 @atom:pf @atom:s
@angle:c2-pf-sx @atom:c2 @atom:pf @atom:sx
@angle:c2-pf-sy @atom:c2 @atom:pf @atom:sy
@angle:ca-pf-n2 @atom:ca @atom:pf @atom:n2
@angle:ca-pf-o @atom:ca @atom:pf @atom:o
@angle:ca-pf-p2 @atom:ca @atom:pf @atom:p2
@angle:ca-pf-pe @atom:ca @atom:pf @atom:pe
@angle:ca-pf-s @atom:ca @atom:pf @atom:s
@angle:c-pf-c2 @atom:c @atom:pf @atom:c2
@angle:cf-pf-n2 @atom:cf @atom:pf @atom:n2
@angle:cf-pf-o @atom:cf @atom:pf @atom:o
@angle:cf-pf-p2 @atom:cf @atom:pf @atom:p2
@angle:cf-pf-s @atom:cf @atom:pf @atom:s
@angle:ch-pf-n2 @atom:ch @atom:pf @atom:n2
@angle:ch-pf-o @atom:ch @atom:pf @atom:o
@angle:ch-pf-p2 @atom:ch @atom:pf @atom:p2
@angle:ch-pf-s @atom:ch @atom:pf @atom:s
@angle:n2-pf-n2 @atom:n2 @atom:pf @atom:n2
@angle:n2-pf-nf @atom:n2 @atom:pf @atom:nf
@angle:n2-pf-o @atom:n2 @atom:pf @atom:o
@angle:n2-pf-p2 @atom:n2 @atom:pf @atom:p2
@angle:n2-pf-pf @atom:n2 @atom:pf @atom:pf
@angle:n2-pf-px @atom:n2 @atom:pf @atom:px
@angle:n2-pf-py @atom:n2 @atom:pf @atom:py
@angle:n2-pf-s @atom:n2 @atom:pf @atom:s
@angle:n2-pf-sx @atom:n2 @atom:pf @atom:sx
@angle:n2-pf-sy @atom:n2 @atom:pf @atom:sy
@angle:nf-pf-o @atom:nf @atom:pf @atom:o
@angle:nf-pf-p2 @atom:nf @atom:pf @atom:p2
@angle:nf-pf-s @atom:nf @atom:pf @atom:s
@angle:o-pf-o @atom:o @atom:pf @atom:o
@angle:o-pf-p2 @atom:o @atom:pf @atom:p2
@angle:o-pf-pf @atom:o @atom:pf @atom:pf
@angle:o-pf-px @atom:o @atom:pf @atom:px
@angle:o-pf-py @atom:o @atom:pf @atom:py
@angle:o-pf-s @atom:o @atom:pf @atom:s
@angle:o-pf-sx @atom:o @atom:pf @atom:sx
@angle:o-pf-sy @atom:o @atom:pf @atom:sy
@angle:p2-pf-pf @atom:p2 @atom:pf @atom:pf
@angle:p2-pf-px @atom:p2 @atom:pf @atom:px
@angle:p2-pf-py @atom:p2 @atom:pf @atom:py
@angle:p2-pf-s @atom:p2 @atom:pf @atom:s
@angle:p2-pf-sx @atom:p2 @atom:pf @atom:sx
@angle:p2-pf-sy @atom:p2 @atom:pf @atom:sy
@angle:pf-pf-s @atom:pf @atom:pf @atom:s
@angle:px-pf-s @atom:px @atom:pf @atom:s
@angle:py-pf-s @atom:py @atom:pf @atom:s
@angle:s-pf-s @atom:s @atom:pf @atom:s
@angle:s-pf-sx @atom:s @atom:pf @atom:sx
@angle:s-pf-sy @atom:s @atom:pf @atom:sy
@angle:c3-px-ca @atom:c3 @atom:px @atom:ca
@angle:c3-px-ce @atom:c3 @atom:px @atom:ce
@angle:c3-px-cf @atom:c3 @atom:px @atom:cf
@angle:c3-px-ne @atom:c3 @atom:px @atom:ne
@angle:c3-px-nf @atom:c3 @atom:px @atom:nf
@angle:c3-px-o @atom:c3 @atom:px @atom:o
@angle:c3-px-pe @atom:c3 @atom:px @atom:pe
@angle:c3-px-pf @atom:c3 @atom:px @atom:pf
@angle:c3-px-py @atom:c3 @atom:px @atom:py
@angle:c3-px-sx @atom:c3 @atom:px @atom:sx
@angle:c3-px-sy @atom:c3 @atom:px @atom:sy
@angle:ca-px-ca @atom:ca @atom:px @atom:ca
@angle:ca-px-o @atom:ca @atom:px @atom:o
@angle:c-px-c3 @atom:c @atom:px @atom:c3
@angle:ce-px-ce @atom:ce @atom:px @atom:ce
@angle:ce-px-o @atom:ce @atom:px @atom:o
@angle:cf-px-cf @atom:cf @atom:px @atom:cf
@angle:cf-px-o @atom:cf @atom:px @atom:o
@angle:c-px-o @atom:c @atom:px @atom:o
@angle:ne-px-ne @atom:ne @atom:px @atom:ne
@angle:ne-px-o @atom:ne @atom:px @atom:o
@angle:nf-px-nf @atom:nf @atom:px @atom:nf
@angle:nf-px-o @atom:nf @atom:px @atom:o
@angle:o-px-pe @atom:o @atom:px @atom:pe
@angle:o-px-pf @atom:o @atom:px @atom:pf
@angle:o-px-py @atom:o @atom:px @atom:py
@angle:o-px-sx @atom:o @atom:px @atom:sx
@angle:o-px-sy @atom:o @atom:px @atom:sy
@angle:pe-px-pe @atom:pe @atom:px @atom:pe
@angle:pf-px-pf @atom:pf @atom:px @atom:pf
@angle:py-px-py @atom:py @atom:px @atom:py
@angle:sx-px-sx @atom:sx @atom:px @atom:sx
@angle:sy-px-sy @atom:sy @atom:px @atom:sy
@angle:c3-py-n4 @atom:c3 @atom:py @atom:n4
@angle:c3-py-na @atom:c3 @atom:py @atom:na
@angle:c3-py-o @atom:c3 @atom:py @atom:o
@angle:c3-py-oh @atom:c3 @atom:py @atom:oh
@angle:c3-py-os @atom:c3 @atom:py @atom:os
@angle:c3-py-px @atom:c3 @atom:py @atom:px
@angle:c3-py-py @atom:c3 @atom:py @atom:py
@angle:c3-py-sx @atom:c3 @atom:py @atom:sx
@angle:ca-py-ca @atom:ca @atom:py @atom:ca
@angle:ca-py-o @atom:ca @atom:py @atom:o
@angle:ca-py-oh @atom:ca @atom:py @atom:oh
@angle:ca-py-os @atom:ca @atom:py @atom:os
@angle:c-py-c3 @atom:c @atom:py @atom:c3
@angle:c-py-c @atom:c @atom:py @atom:c
@angle:ce-py-ce @atom:ce @atom:py @atom:ce
@angle:ce-py-o @atom:ce @atom:py @atom:o
@angle:ce-py-oh @atom:ce @atom:py @atom:oh
@angle:ce-py-os @atom:ce @atom:py @atom:os
@angle:cf-py-cf @atom:cf @atom:py @atom:cf
@angle:cf-py-o @atom:cf @atom:py @atom:o
@angle:cf-py-oh @atom:cf @atom:py @atom:oh
@angle:cf-py-os @atom:cf @atom:py @atom:os
@angle:c-py-o @atom:c @atom:py @atom:o
@angle:c-py-oh @atom:c @atom:py @atom:oh
@angle:c-py-os @atom:c @atom:py @atom:os
@angle:n3-py-ne @atom:n3 @atom:py @atom:ne
@angle:n4-py-o @atom:n4 @atom:py @atom:o
@angle:n4-py-py @atom:n4 @atom:py @atom:py
@angle:na-py-o @atom:na @atom:py @atom:o
@angle:na-py-py @atom:na @atom:py @atom:py
@angle:ne-py-ne @atom:ne @atom:py @atom:ne
@angle:ne-py-o @atom:ne @atom:py @atom:o
@angle:ne-py-oh @atom:ne @atom:py @atom:oh
@angle:ne-py-os @atom:ne @atom:py @atom:os
@angle:nf-py-nf @atom:nf @atom:py @atom:nf
@angle:nf-py-o @atom:nf @atom:py @atom:o
@angle:nf-py-oh @atom:nf @atom:py @atom:oh
@angle:nf-py-os @atom:nf @atom:py @atom:os
@angle:oh-py-oh @atom:oh @atom:py @atom:oh
@angle:oh-py-pe @atom:oh @atom:py @atom:pe
@angle:oh-py-pf @atom:oh @atom:py @atom:pf
@angle:oh-py-px @atom:oh @atom:py @atom:px
@angle:oh-py-py @atom:oh @atom:py @atom:py
@angle:oh-py-sx @atom:oh @atom:py @atom:sx
@angle:oh-py-sy @atom:oh @atom:py @atom:sy
@angle:o-py-oh @atom:o @atom:py @atom:oh
@angle:o-py-os @atom:o @atom:py @atom:os
@angle:o-py-pe @atom:o @atom:py @atom:pe
@angle:o-py-pf @atom:o @atom:py @atom:pf
@angle:o-py-px @atom:o @atom:py @atom:px
@angle:o-py-py @atom:o @atom:py @atom:py
@angle:os-py-os @atom:os @atom:py @atom:os
@angle:os-py-py @atom:os @atom:py @atom:py
@angle:os-py-sx @atom:os @atom:py @atom:sx
@angle:os-py-sy @atom:os @atom:py @atom:sy
@angle:o-py-sx @atom:o @atom:py @atom:sx
@angle:o-py-sy @atom:o @atom:py @atom:sy
@angle:pe-py-pe @atom:pe @atom:py @atom:pe
@angle:pf-py-pf @atom:pf @atom:py @atom:pf
@angle:py-py-py @atom:py @atom:py @atom:py
@angle:py-py-sx @atom:py @atom:py @atom:sx
@angle:sy-py-sy @atom:sy @atom:py @atom:sy
@angle:c1-s2-o @atom:c1 @atom:s2 @atom:o
@angle:c2-s2-n2 @atom:c2 @atom:s2 @atom:n2
@angle:c2-s2-o @atom:c2 @atom:s2 @atom:o
@angle:cl-s2-n1 @atom:cl @atom:s2 @atom:n1
@angle:f-s2-n1 @atom:f @atom:s2 @atom:n1
@angle:n1-s2-o @atom:n1 @atom:s2 @atom:o
@angle:n2-s2-o @atom:n2 @atom:s2 @atom:o
@angle:o-s2-o @atom:o @atom:s2 @atom:o
@angle:o-s2-s @atom:o @atom:s2 @atom:s
@angle:s-s2-s @atom:s @atom:s2 @atom:s
@angle:br-s4-br @atom:br @atom:s4 @atom:br
@angle:br-s4-c3 @atom:br @atom:s4 @atom:c3
@angle:br-s4-o @atom:br @atom:s4 @atom:o
@angle:c1-s4-c1 @atom:c1 @atom:s4 @atom:c1
@angle:c1-s4-o @atom:c1 @atom:s4 @atom:o
@angle:c2-s4-c2 @atom:c2 @atom:s4 @atom:c2
@angle:c2-s4-c3 @atom:c2 @atom:s4 @atom:c3
@angle:c2-s4-o @atom:c2 @atom:s4 @atom:o
@angle:c3-s4-c3 @atom:c3 @atom:s4 @atom:c3
@angle:c3-s4-ca @atom:c3 @atom:s4 @atom:ca
@angle:c3-s4-f @atom:c3 @atom:s4 @atom:f
@angle:c3-s4-hs @atom:c3 @atom:s4 @atom:hs
@angle:c3-s4-i @atom:c3 @atom:s4 @atom:i
@angle:c3-s4-n2 @atom:c3 @atom:s4 @atom:n2
@angle:c3-s4-n3 @atom:c3 @atom:s4 @atom:n3
@angle:c3-s4-n @atom:c3 @atom:s4 @atom:n
@angle:c3-s4-n4 @atom:c3 @atom:s4 @atom:n4
@angle:c3-s4-na @atom:c3 @atom:s4 @atom:na
@angle:c3-s4-nh @atom:c3 @atom:s4 @atom:nh
@angle:c3-s4-no @atom:c3 @atom:s4 @atom:no
@angle:c3-s4-o @atom:c3 @atom:s4 @atom:o
@angle:c3-s4-oh @atom:c3 @atom:s4 @atom:oh
@angle:c3-s4-os @atom:c3 @atom:s4 @atom:os
@angle:c3-s4-p2 @atom:c3 @atom:s4 @atom:p2
@angle:c3-s4-p3 @atom:c3 @atom:s4 @atom:p3
@angle:c3-s4-p4 @atom:c3 @atom:s4 @atom:p4
@angle:c3-s4-p5 @atom:c3 @atom:s4 @atom:p5
@angle:c3-s4-s4 @atom:c3 @atom:s4 @atom:s4
@angle:c3-s4-s @atom:c3 @atom:s4 @atom:s
@angle:c3-s4-s6 @atom:c3 @atom:s4 @atom:s6
@angle:c3-s4-sh @atom:c3 @atom:s4 @atom:sh
@angle:c3-s4-ss @atom:c3 @atom:s4 @atom:ss
@angle:ca-s4-ca @atom:ca @atom:s4 @atom:ca
@angle:ca-s4-o @atom:ca @atom:s4 @atom:o
@angle:c-s4-c3 @atom:c @atom:s4 @atom:c3
@angle:c-s4-c @atom:c @atom:s4 @atom:c
@angle:cl-s4-cl @atom:cl @atom:s4 @atom:cl
@angle:cl-s4-o @atom:cl @atom:s4 @atom:o
@angle:c-s4-o @atom:c @atom:s4 @atom:o
@angle:cx-s4-cx @atom:cx @atom:s4 @atom:cx
@angle:cx-s4-o @atom:cx @atom:s4 @atom:o
@angle:f-s4-f @atom:f @atom:s4 @atom:f
@angle:f-s4-o @atom:f @atom:s4 @atom:o
@angle:f-s4-s @atom:f @atom:s4 @atom:s
@angle:hs-s4-hs @atom:hs @atom:s4 @atom:hs
@angle:hs-s4-n1 @atom:hs @atom:s4 @atom:n1
@angle:hs-s4-o @atom:hs @atom:s4 @atom:o
@angle:i-s4-i @atom:i @atom:s4 @atom:i
@angle:i-s4-o @atom:i @atom:s4 @atom:o
@angle:n1-s4-n1 @atom:n1 @atom:s4 @atom:n1
@angle:n1-s4-o @atom:n1 @atom:s4 @atom:o
@angle:n2-s4-n2 @atom:n2 @atom:s4 @atom:n2
@angle:n2-s4-o @atom:n2 @atom:s4 @atom:o
@angle:n3-s4-n3 @atom:n3 @atom:s4 @atom:n3
@angle:n3-s4-o @atom:n3 @atom:s4 @atom:o
@angle:n4-s4-n4 @atom:n4 @atom:s4 @atom:n4
@angle:n4-s4-o @atom:n4 @atom:s4 @atom:o
@angle:na-s4-na @atom:na @atom:s4 @atom:na
@angle:na-s4-o @atom:na @atom:s4 @atom:o
@angle:nh-s4-nh @atom:nh @atom:s4 @atom:nh
@angle:nh-s4-o @atom:nh @atom:s4 @atom:o
@angle:n-s4-n @atom:n @atom:s4 @atom:n
@angle:n-s4-o @atom:n @atom:s4 @atom:o
@angle:no-s4-no @atom:no @atom:s4 @atom:no
@angle:no-s4-o @atom:no @atom:s4 @atom:o
@angle:oh-s4-oh @atom:oh @atom:s4 @atom:oh
@angle:o-s4-o @atom:o @atom:s4 @atom:o
@angle:o-s4-oh @atom:o @atom:s4 @atom:oh
@angle:o-s4-os @atom:o @atom:s4 @atom:os
@angle:o-s4-p2 @atom:o @atom:s4 @atom:p2
@angle:o-s4-p3 @atom:o @atom:s4 @atom:p3
@angle:o-s4-p4 @atom:o @atom:s4 @atom:p4
@angle:o-s4-p5 @atom:o @atom:s4 @atom:p5
@angle:o-s4-s4 @atom:o @atom:s4 @atom:s4
@angle:o-s4-s @atom:o @atom:s4 @atom:s
@angle:o-s4-s6 @atom:o @atom:s4 @atom:s6
@angle:o-s4-sh @atom:o @atom:s4 @atom:sh
@angle:os-s4-os @atom:os @atom:s4 @atom:os
@angle:o-s4-ss @atom:o @atom:s4 @atom:ss
@angle:p2-s4-p2 @atom:p2 @atom:s4 @atom:p2
@angle:p3-s4-p3 @atom:p3 @atom:s4 @atom:p3
@angle:p5-s4-p5 @atom:p5 @atom:s4 @atom:p5
@angle:s4-s4-s4 @atom:s4 @atom:s4 @atom:s4
@angle:s4-s4-s6 @atom:s4 @atom:s4 @atom:s6
@angle:s6-s4-s6 @atom:s6 @atom:s4 @atom:s6
@angle:sh-s4-sh @atom:sh @atom:s4 @atom:sh
@angle:sh-s4-ss @atom:sh @atom:s4 @atom:ss
@angle:s-s4-s @atom:s @atom:s4 @atom:s
@angle:ss-s4-ss @atom:ss @atom:s4 @atom:ss
@angle:br-s6-br @atom:br @atom:s6 @atom:br
@angle:br-s6-c3 @atom:br @atom:s6 @atom:c3
@angle:br-s6-f @atom:br @atom:s6 @atom:f
@angle:br-s6-o @atom:br @atom:s6 @atom:o
@angle:c1-s6-c1 @atom:c1 @atom:s6 @atom:c1
@angle:c1-s6-o @atom:c1 @atom:s6 @atom:o
@angle:c2-s6-c2 @atom:c2 @atom:s6 @atom:c2
@angle:c2-s6-c3 @atom:c2 @atom:s6 @atom:c3
@angle:c2-s6-o @atom:c2 @atom:s6 @atom:o
@angle:c3-s6-c3 @atom:c3 @atom:s6 @atom:c3
@angle:c3-s6-ca @atom:c3 @atom:s6 @atom:ca
@angle:c3-s6-cy @atom:c3 @atom:s6 @atom:cy
@angle:c3-s6-f @atom:c3 @atom:s6 @atom:f
@angle:c3-s6-hs @atom:c3 @atom:s6 @atom:hs
@angle:c3-s6-i @atom:c3 @atom:s6 @atom:i
@angle:c3-s6-n2 @atom:c3 @atom:s6 @atom:n2
@angle:c3-s6-n3 @atom:c3 @atom:s6 @atom:n3
@angle:c3-s6-n @atom:c3 @atom:s6 @atom:n
@angle:c3-s6-n4 @atom:c3 @atom:s6 @atom:n4
@angle:c3-s6-na @atom:c3 @atom:s6 @atom:na
@angle:c3-s6-nh @atom:c3 @atom:s6 @atom:nh
@angle:c3-s6-no @atom:c3 @atom:s6 @atom:no
@angle:c3-s6-o @atom:c3 @atom:s6 @atom:o
@angle:c3-s6-oh @atom:c3 @atom:s6 @atom:oh
@angle:c3-s6-os @atom:c3 @atom:s6 @atom:os
@angle:c3-s6-p2 @atom:c3 @atom:s6 @atom:p2
@angle:c3-s6-p3 @atom:c3 @atom:s6 @atom:p3
@angle:c3-s6-p4 @atom:c3 @atom:s6 @atom:p4
@angle:c3-s6-p5 @atom:c3 @atom:s6 @atom:p5
@angle:c3-s6-s4 @atom:c3 @atom:s6 @atom:s4
@angle:c3-s6-s @atom:c3 @atom:s6 @atom:s
@angle:c3-s6-s6 @atom:c3 @atom:s6 @atom:s6
@angle:c3-s6-sh @atom:c3 @atom:s6 @atom:sh
@angle:c3-s6-ss @atom:c3 @atom:s6 @atom:ss
@angle:ca-s6-ca @atom:ca @atom:s6 @atom:ca
@angle:ca-s6-o @atom:ca @atom:s6 @atom:o
@angle:c-s6-c3 @atom:c @atom:s6 @atom:c3
@angle:c-s6-c @atom:c @atom:s6 @atom:c
@angle:cc-s6-o @atom:cc @atom:s6 @atom:o
@angle:cl-s6-cl @atom:cl @atom:s6 @atom:cl
@angle:cl-s6-f @atom:cl @atom:s6 @atom:f
@angle:cl-s6-o @atom:cl @atom:s6 @atom:o
@angle:c-s6-o @atom:c @atom:s6 @atom:o
@angle:c-s6-os @atom:c @atom:s6 @atom:os
@angle:cx-s6-cx @atom:cx @atom:s6 @atom:cx
@angle:cy-s6-o @atom:cy @atom:s6 @atom:o
@angle:f-s6-f @atom:f @atom:s6 @atom:f
@angle:f-s6-o @atom:f @atom:s6 @atom:o
@angle:hs-s6-hs @atom:hs @atom:s6 @atom:hs
@angle:hs-s6-n1 @atom:hs @atom:s6 @atom:n1
@angle:hs-s6-o @atom:hs @atom:s6 @atom:o
@angle:i-s6-i @atom:i @atom:s6 @atom:i
@angle:i-s6-o @atom:i @atom:s6 @atom:o
@angle:n1-s6-n1 @atom:n1 @atom:s6 @atom:n1
@angle:n1-s6-o @atom:n1 @atom:s6 @atom:o
@angle:n2-s6-n2 @atom:n2 @atom:s6 @atom:n2
@angle:n2-s6-o @atom:n2 @atom:s6 @atom:o
@angle:n2-s6-oh @atom:n2 @atom:s6 @atom:oh
@angle:n2-s6-os @atom:n2 @atom:s6 @atom:os
@angle:n3-s6-n3 @atom:n3 @atom:s6 @atom:n3
@angle:n3-s6-o @atom:n3 @atom:s6 @atom:o
@angle:n3-s6-os @atom:n3 @atom:s6 @atom:os
@angle:n4-s6-n4 @atom:n4 @atom:s6 @atom:n4
@angle:n4-s6-o @atom:n4 @atom:s6 @atom:o
@angle:na-s6-na @atom:na @atom:s6 @atom:na
@angle:na-s6-o @atom:na @atom:s6 @atom:o
@angle:nh-s6-nh @atom:nh @atom:s6 @atom:nh
@angle:nh-s6-o @atom:nh @atom:s6 @atom:o
@angle:n-s6-n @atom:n @atom:s6 @atom:n
@angle:n-s6-o @atom:n @atom:s6 @atom:o
@angle:no-s6-no @atom:no @atom:s6 @atom:no
@angle:no-s6-o @atom:no @atom:s6 @atom:o
@angle:n-s6-os @atom:n @atom:s6 @atom:os
@angle:oh-s6-oh @atom:oh @atom:s6 @atom:oh
@angle:oh-s6-os @atom:oh @atom:s6 @atom:os
@angle:oh-s6-p2 @atom:oh @atom:s6 @atom:p2
@angle:o-s6-o @atom:o @atom:s6 @atom:o
@angle:o-s6-oh @atom:o @atom:s6 @atom:oh
@angle:o-s6-os @atom:o @atom:s6 @atom:os
@angle:o-s6-p2 @atom:o @atom:s6 @atom:p2
@angle:o-s6-p3 @atom:o @atom:s6 @atom:p3
@angle:o-s6-p4 @atom:o @atom:s6 @atom:p4
@angle:o-s6-p5 @atom:o @atom:s6 @atom:p5
@angle:o-s6-s4 @atom:o @atom:s6 @atom:s4
@angle:o-s6-s @atom:o @atom:s6 @atom:s
@angle:o-s6-s6 @atom:o @atom:s6 @atom:s6
@angle:o-s6-sh @atom:o @atom:s6 @atom:sh
@angle:os-s6-os @atom:os @atom:s6 @atom:os
@angle:o-s6-ss @atom:o @atom:s6 @atom:ss
@angle:p3-s6-p3 @atom:p3 @atom:s6 @atom:p3
@angle:p5-s6-p5 @atom:p5 @atom:s6 @atom:p5
@angle:s4-s6-s4 @atom:s4 @atom:s6 @atom:s4
@angle:s4-s6-s6 @atom:s4 @atom:s6 @atom:s6
@angle:s6-s6-s6 @atom:s6 @atom:s6 @atom:s6
@angle:sh-s6-sh @atom:sh @atom:s6 @atom:sh
@angle:sh-s6-ss @atom:sh @atom:s6 @atom:ss
@angle:s-s6-s @atom:s @atom:s6 @atom:s
@angle:ss-s6-ss @atom:ss @atom:s6 @atom:ss
@angle:br-sh-hs @atom:br @atom:sh @atom:hs
@angle:c1-sh-hs @atom:c1 @atom:sh @atom:hs
@angle:c2-sh-hs @atom:c2 @atom:sh @atom:hs
@angle:c3-sh-hs @atom:c3 @atom:sh @atom:hs
@angle:ca-sh-hs @atom:ca @atom:sh @atom:hs
@angle:cc-sh-hs @atom:cc @atom:sh @atom:hs
@angle:c-sh-hs @atom:c @atom:sh @atom:hs
@angle:f-sh-hs @atom:f @atom:sh @atom:hs
@angle:hs-sh-hs @atom:hs @atom:sh @atom:hs
@angle:hs-sh-i @atom:hs @atom:sh @atom:i
@angle:hs-sh-n1 @atom:hs @atom:sh @atom:n1
@angle:hs-sh-n2 @atom:hs @atom:sh @atom:n2
@angle:hs-sh-n @atom:hs @atom:sh @atom:n
@angle:hs-sh-n3 @atom:hs @atom:sh @atom:n3
@angle:hs-sh-n4 @atom:hs @atom:sh @atom:n4
@angle:hs-sh-na @atom:hs @atom:sh @atom:na
@angle:hs-sh-nh @atom:hs @atom:sh @atom:nh
@angle:hs-sh-no @atom:hs @atom:sh @atom:no
@angle:hs-sh-o @atom:hs @atom:sh @atom:o
@angle:hs-sh-oh @atom:hs @atom:sh @atom:oh
@angle:hs-sh-os @atom:hs @atom:sh @atom:os
@angle:hs-sh-p2 @atom:hs @atom:sh @atom:p2
@angle:hs-sh-p3 @atom:hs @atom:sh @atom:p3
@angle:hs-sh-p4 @atom:hs @atom:sh @atom:p4
@angle:hs-sh-p5 @atom:hs @atom:sh @atom:p5
@angle:hs-sh-s @atom:hs @atom:sh @atom:s
@angle:hs-sh-s4 @atom:hs @atom:sh @atom:s4
@angle:hs-sh-s6 @atom:hs @atom:sh @atom:s6
@angle:hs-sh-sh @atom:hs @atom:sh @atom:sh
@angle:hs-sh-ss @atom:hs @atom:sh @atom:ss
@angle:br-ss-br @atom:br @atom:ss @atom:br
@angle:br-ss-c3 @atom:br @atom:ss @atom:c3
@angle:c1-ss-c1 @atom:c1 @atom:ss @atom:c1
@angle:c1-ss-c3 @atom:c1 @atom:ss @atom:c3
@angle:c2-ss-c2 @atom:c2 @atom:ss @atom:c2
@angle:c2-ss-c3 @atom:c2 @atom:ss @atom:c3
@angle:c2-ss-cy @atom:c2 @atom:ss @atom:cy
@angle:c2-ss-n2 @atom:c2 @atom:ss @atom:n2
@angle:c2-ss-na @atom:c2 @atom:ss @atom:na
@angle:c2-ss-os @atom:c2 @atom:ss @atom:os
@angle:c2-ss-ss @atom:c2 @atom:ss @atom:ss
@angle:c3-ss-c3 @atom:c3 @atom:ss @atom:c3
@angle:c3-ss-ca @atom:c3 @atom:ss @atom:ca
@angle:c3-ss-cc @atom:c3 @atom:ss @atom:cc
@angle:c3-ss-cd @atom:c3 @atom:ss @atom:cd
@angle:c3-ss-cl @atom:c3 @atom:ss @atom:cl
@angle:c3-ss-cy @atom:c3 @atom:ss @atom:cy
@angle:c3-ss-f @atom:c3 @atom:ss @atom:f
@angle:c3-ss-i @atom:c3 @atom:ss @atom:i
@angle:c3-ss-n1 @atom:c3 @atom:ss @atom:n1
@angle:c3-ss-n2 @atom:c3 @atom:ss @atom:n2
@angle:c3-ss-n3 @atom:c3 @atom:ss @atom:n3
@angle:c3-ss-n @atom:c3 @atom:ss @atom:n
@angle:c3-ss-n4 @atom:c3 @atom:ss @atom:n4
@angle:c3-ss-na @atom:c3 @atom:ss @atom:na
@angle:c3-ss-nh @atom:c3 @atom:ss @atom:nh
@angle:c3-ss-no @atom:c3 @atom:ss @atom:no
@angle:c3-ss-o @atom:c3 @atom:ss @atom:o
@angle:c3-ss-oh @atom:c3 @atom:ss @atom:oh
@angle:c3-ss-os @atom:c3 @atom:ss @atom:os
@angle:c3-ss-p2 @atom:c3 @atom:ss @atom:p2
@angle:c3-ss-p3 @atom:c3 @atom:ss @atom:p3
@angle:c3-ss-p4 @atom:c3 @atom:ss @atom:p4
@angle:c3-ss-p5 @atom:c3 @atom:ss @atom:p5
@angle:c3-ss-s4 @atom:c3 @atom:ss @atom:s4
@angle:c3-ss-s @atom:c3 @atom:ss @atom:s
@angle:c3-ss-s6 @atom:c3 @atom:ss @atom:s6
@angle:c3-ss-sh @atom:c3 @atom:ss @atom:sh
@angle:c3-ss-ss @atom:c3 @atom:ss @atom:ss
@angle:ca-ss-ca @atom:ca @atom:ss @atom:ca
@angle:ca-ss-cc @atom:ca @atom:ss @atom:cc
@angle:ca-ss-cd @atom:ca @atom:ss @atom:cd
@angle:ca-ss-cl @atom:ca @atom:ss @atom:cl
@angle:ca-ss-n @atom:ca @atom:ss @atom:n
@angle:ca-ss-na @atom:ca @atom:ss @atom:na
@angle:ca-ss-nc @atom:ca @atom:ss @atom:nc
@angle:ca-ss-nd @atom:ca @atom:ss @atom:nd
@angle:ca-ss-ss @atom:ca @atom:ss @atom:ss
@angle:c-ss-c2 @atom:c @atom:ss @atom:c2
@angle:c-ss-c3 @atom:c @atom:ss @atom:c3
@angle:c-ss-c @atom:c @atom:ss @atom:c
@angle:c-ss-cc @atom:c @atom:ss @atom:cc
@angle:cc-ss-cc @atom:cc @atom:ss @atom:cc
@angle:cc-ss-cd @atom:cc @atom:ss @atom:cd
@angle:cc-ss-n @atom:cc @atom:ss @atom:n
@angle:cc-ss-na @atom:cc @atom:ss @atom:na
@angle:cc-ss-nc @atom:cc @atom:ss @atom:nc
@angle:cc-ss-os @atom:cc @atom:ss @atom:os
@angle:cc-ss-ss @atom:cc @atom:ss @atom:ss
@angle:cd-ss-cd @atom:cd @atom:ss @atom:cd
@angle:cd-ss-n @atom:cd @atom:ss @atom:n
@angle:cd-ss-na @atom:cd @atom:ss @atom:na
@angle:cd-ss-nd @atom:cd @atom:ss @atom:nd
@angle:cd-ss-os @atom:cd @atom:ss @atom:os
@angle:cd-ss-ss @atom:cd @atom:ss @atom:ss
@angle:cl-ss-cl @atom:cl @atom:ss @atom:cl
@angle:cx-ss-cx @atom:cx @atom:ss @atom:cx
@angle:f-ss-f @atom:f @atom:ss @atom:f
@angle:f-ss-ss @atom:f @atom:ss @atom:ss
@angle:i-ss-i @atom:i @atom:ss @atom:i
@angle:n1-ss-n1 @atom:n1 @atom:ss @atom:n1
@angle:n2-ss-n2 @atom:n2 @atom:ss @atom:n2
@angle:n3-ss-n3 @atom:n3 @atom:ss @atom:n3
@angle:n4-ss-n4 @atom:n4 @atom:ss @atom:n4
@angle:na-ss-na @atom:na @atom:ss @atom:na
@angle:nc-ss-nc @atom:nc @atom:ss @atom:nc
@angle:nd-ss-nd @atom:nd @atom:ss @atom:nd
@angle:nh-ss-nh @atom:nh @atom:ss @atom:nh
@angle:n-ss-n @atom:n @atom:ss @atom:n
@angle:no-ss-no @atom:no @atom:ss @atom:no
@angle:oh-ss-oh @atom:oh @atom:ss @atom:oh
@angle:o-ss-o @atom:o @atom:ss @atom:o
@angle:o-ss-p5 @atom:o @atom:ss @atom:p5
@angle:o-ss-s6 @atom:o @atom:ss @atom:s6
@angle:os-ss-os @atom:os @atom:ss @atom:os
@angle:o-ss-ss @atom:o @atom:ss @atom:ss
@angle:p2-ss-p2 @atom:p2 @atom:ss @atom:p2
@angle:p3-ss-p3 @atom:p3 @atom:ss @atom:p3
@angle:p5-ss-p5 @atom:p5 @atom:ss @atom:p5
@angle:s4-ss-s4 @atom:s4 @atom:ss @atom:s4
@angle:s4-ss-s6 @atom:s4 @atom:ss @atom:s6
@angle:s6-ss-s6 @atom:s6 @atom:ss @atom:s6
@angle:sh-ss-sh @atom:sh @atom:ss @atom:sh
@angle:sh-ss-ss @atom:sh @atom:ss @atom:ss
@angle:s-ss-s @atom:s @atom:ss @atom:s
@angle:ss-ss-ss @atom:ss @atom:ss @atom:ss
@angle:c3-sx-ca @atom:c3 @atom:sx @atom:ca
@angle:c3-sx-cc @atom:c3 @atom:sx @atom:cc
@angle:c3-sx-ce @atom:c3 @atom:sx @atom:ce
@angle:c3-sx-cf @atom:c3 @atom:sx @atom:cf
@angle:c3-sx-ne @atom:c3 @atom:sx @atom:ne
@angle:c3-sx-nf @atom:c3 @atom:sx @atom:nf
@angle:c3-sx-o @atom:c3 @atom:sx @atom:o
@angle:c3-sx-pe @atom:c3 @atom:sx @atom:pe
@angle:c3-sx-pf @atom:c3 @atom:sx @atom:pf
@angle:c3-sx-px @atom:c3 @atom:sx @atom:px
@angle:c3-sx-py @atom:c3 @atom:sx @atom:py
@angle:c3-sx-sx @atom:c3 @atom:sx @atom:sx
@angle:c3-sx-sy @atom:c3 @atom:sx @atom:sy
@angle:ca-sx-ca @atom:ca @atom:sx @atom:ca
@angle:ca-sx-o @atom:ca @atom:sx @atom:o
@angle:c-sx-c3 @atom:c @atom:sx @atom:c3
@angle:c-sx-c @atom:c @atom:sx @atom:c
@angle:cc-sx-o @atom:cc @atom:sx @atom:o
@angle:ce-sx-ce @atom:ce @atom:sx @atom:ce
@angle:ce-sx-o @atom:ce @atom:sx @atom:o
@angle:cf-sx-cf @atom:cf @atom:sx @atom:cf
@angle:cf-sx-o @atom:cf @atom:sx @atom:o
@angle:c-sx-o @atom:c @atom:sx @atom:o
@angle:ne-sx-ne @atom:ne @atom:sx @atom:ne
@angle:ne-sx-o @atom:ne @atom:sx @atom:o
@angle:nf-sx-nf @atom:nf @atom:sx @atom:nf
@angle:nf-sx-o @atom:nf @atom:sx @atom:o
@angle:o-sx-pe @atom:o @atom:sx @atom:pe
@angle:o-sx-pf @atom:o @atom:sx @atom:pf
@angle:o-sx-px @atom:o @atom:sx @atom:px
@angle:o-sx-py @atom:o @atom:sx @atom:py
@angle:o-sx-sx @atom:o @atom:sx @atom:sx
@angle:o-sx-sy @atom:o @atom:sx @atom:sy
@angle:pe-sx-pe @atom:pe @atom:sx @atom:pe
@angle:pf-sx-pf @atom:pf @atom:sx @atom:pf
@angle:py-sx-py @atom:py @atom:sx @atom:py
@angle:sx-sx-sx @atom:sx @atom:sx @atom:sx
@angle:sy-sx-sy @atom:sy @atom:sx @atom:sy
@angle:c3-sy-ca @atom:c3 @atom:sy @atom:ca
@angle:c3-sy-cc @atom:c3 @atom:sy @atom:cc
@angle:c3-sy-ce @atom:c3 @atom:sy @atom:ce
@angle:c3-sy-cf @atom:c3 @atom:sy @atom:cf
@angle:c3-sy-ne @atom:c3 @atom:sy @atom:ne
@angle:c3-sy-nf @atom:c3 @atom:sy @atom:nf
@angle:c3-sy-o @atom:c3 @atom:sy @atom:o
@angle:c3-sy-pe @atom:c3 @atom:sy @atom:pe
@angle:c3-sy-pf @atom:c3 @atom:sy @atom:pf
@angle:c3-sy-px @atom:c3 @atom:sy @atom:px
@angle:c3-sy-py @atom:c3 @atom:sy @atom:py
@angle:c3-sy-sx @atom:c3 @atom:sy @atom:sx
@angle:c3-sy-sy @atom:c3 @atom:sy @atom:sy
@angle:ca-sy-ca @atom:ca @atom:sy @atom:ca
@angle:ca-sy-cc @atom:ca @atom:sy @atom:cc
@angle:ca-sy-n3 @atom:ca @atom:sy @atom:n3
@angle:ca-sy-n @atom:ca @atom:sy @atom:n
@angle:ca-sy-ne @atom:ca @atom:sy @atom:ne
@angle:ca-sy-nh @atom:ca @atom:sy @atom:nh
@angle:ca-sy-o @atom:ca @atom:sy @atom:o
@angle:ca-sy-oh @atom:ca @atom:sy @atom:oh
@angle:ca-sy-os @atom:ca @atom:sy @atom:os
@angle:c-sy-c3 @atom:c @atom:sy @atom:c3
@angle:c-sy-c @atom:c @atom:sy @atom:c
@angle:cc-sy-n3 @atom:cc @atom:sy @atom:n3
@angle:cc-sy-o @atom:cc @atom:sy @atom:o
@angle:cd-sy-n3 @atom:cd @atom:sy @atom:n3
@angle:cd-sy-nh @atom:cd @atom:sy @atom:nh
@angle:cd-sy-o @atom:cd @atom:sy @atom:o
@angle:ce-sy-ce @atom:ce @atom:sy @atom:ce
@angle:ce-sy-o @atom:ce @atom:sy @atom:o
@angle:cf-sy-cf @atom:cf @atom:sy @atom:cf
@angle:cf-sy-o @atom:cf @atom:sy @atom:o
@angle:c-sy-o @atom:c @atom:sy @atom:o
@angle:f-sy-o @atom:f @atom:sy @atom:o
@angle:n2-sy-o @atom:n2 @atom:sy @atom:o
@angle:n3-sy-ne @atom:n3 @atom:sy @atom:ne
@angle:n3-sy-o @atom:n3 @atom:sy @atom:o
@angle:na-sy-na @atom:na @atom:sy @atom:na
@angle:nc-sy-nc @atom:nc @atom:sy @atom:nc
@angle:nd-sy-nd @atom:nd @atom:sy @atom:nd
@angle:ne-sy-ne @atom:ne @atom:sy @atom:ne
@angle:ne-sy-o @atom:ne @atom:sy @atom:o
@angle:nf-sy-nf @atom:nf @atom:sy @atom:nf
@angle:nf-sy-o @atom:nf @atom:sy @atom:o
@angle:nh-sy-o @atom:nh @atom:sy @atom:o
@angle:n-sy-o @atom:n @atom:sy @atom:o
@angle:o-sy-o @atom:o @atom:sy @atom:o
@angle:o-sy-oh @atom:o @atom:sy @atom:oh
@angle:o-sy-os @atom:o @atom:sy @atom:os
@angle:o-sy-pe @atom:o @atom:sy @atom:pe
@angle:o-sy-pf @atom:o @atom:sy @atom:pf
@angle:o-sy-px @atom:o @atom:sy @atom:px
@angle:o-sy-py @atom:o @atom:sy @atom:py
@angle:o-sy-sx @atom:o @atom:sy @atom:sx
@angle:o-sy-sy @atom:o @atom:sy @atom:sy
@angle:py-sy-py @atom:py @atom:sy @atom:py
@angle:sx-sy-sx @atom:sx @atom:sy @atom:sx
@angle:sy-sy-sy @atom:sy @atom:sy @atom:sy
@angle:c2-c1-cf @atom:c2 @atom:c1 @atom:cf
@angle:c3-c1-ch @atom:c3 @atom:c1 @atom:ch
@angle:nf-c1-s @atom:nf @atom:c1 @atom:s
@angle:br-c2-cf @atom:br @atom:c2 @atom:cf
@angle:cd-c2-h4 @atom:cd @atom:c2 @atom:h4
@angle:cd-c2-nh @atom:cd @atom:c2 @atom:nh
@angle:cd-c2-o @atom:cd @atom:c2 @atom:o
@angle:cf-c2-cl @atom:cf @atom:c2 @atom:cl
@angle:cf-c2-h4 @atom:cf @atom:c2 @atom:h4
@angle:cf-c2-na @atom:cf @atom:c2 @atom:na
@angle:cf-c2-nh @atom:cf @atom:c2 @atom:nh
@angle:cf-c2-no @atom:cf @atom:c2 @atom:no
@angle:cf-c2-o @atom:cf @atom:c2 @atom:o
@angle:cf-c2-oh @atom:cf @atom:c2 @atom:oh
@angle:cf-c2-os @atom:cf @atom:c2 @atom:os
@angle:h4-c2-nf @atom:h4 @atom:c2 @atom:nf
@angle:h5-c2-nf @atom:h5 @atom:c2 @atom:nf
@angle:nf-c2-os @atom:nf @atom:c2 @atom:os
@angle:nf-c2-ss @atom:nf @atom:c2 @atom:ss
@angle:n-c2-nf @atom:n @atom:c2 @atom:nf
@angle:ca-c3-cf @atom:ca @atom:c3 @atom:cf
@angle:cd-c3-cx @atom:cd @atom:c3 @atom:cx
@angle:c-c3-cf @atom:c @atom:c3 @atom:cf
@angle:cd-c3-hx @atom:cd @atom:c3 @atom:hx
@angle:cd-c3-n2 @atom:cd @atom:c3 @atom:n2
@angle:cd-c3-n4 @atom:cd @atom:c3 @atom:n4
@angle:cd-c3-na @atom:cd @atom:c3 @atom:na
@angle:cd-c3-p5 @atom:cd @atom:c3 @atom:p5
@angle:cf-c3-cf @atom:cf @atom:c3 @atom:cf
@angle:cf-c3-n @atom:cf @atom:c3 @atom:n
@angle:cf-c3-oh @atom:cf @atom:c3 @atom:oh
@angle:cf-c3-os @atom:cf @atom:c3 @atom:os
@angle:cf-c3-ss @atom:cf @atom:c3 @atom:ss
@angle:cd-ca-cq @atom:cd @atom:ca @atom:cq
@angle:cf-ca-na @atom:cf @atom:ca @atom:na
@angle:ch-ca-cq @atom:ch @atom:ca @atom:cq
@angle:cl-ca-cq @atom:cl @atom:ca @atom:cq
@angle:cq-ca-f @atom:cq @atom:ca @atom:f
@angle:cq-ca-h4 @atom:cq @atom:ca @atom:h4
@angle:cq-ca-na @atom:cq @atom:ca @atom:na
@angle:cq-ca-nb @atom:cq @atom:ca @atom:nb
@angle:cq-ca-nh @atom:cq @atom:ca @atom:nh
@angle:cq-ca-oh @atom:cq @atom:ca @atom:oh
@angle:cq-ca-ss @atom:cq @atom:ca @atom:ss
@angle:ca-c-nf @atom:ca @atom:c @atom:nf
@angle:br-cd-c @atom:br @atom:cd @atom:c
@angle:br-cd-cd @atom:br @atom:cd @atom:cd
@angle:br-cd-cc @atom:br @atom:cd @atom:cc
@angle:br-cd-na @atom:br @atom:cd @atom:na
@angle:ca-cd-cf @atom:ca @atom:cd @atom:cf
@angle:ca-cd-nh @atom:ca @atom:cd @atom:nh
@angle:cd-c-cf @atom:cd @atom:c @atom:cf
@angle:cd-cd-f @atom:cd @atom:cd @atom:f
@angle:c-cd-ch @atom:c @atom:cd @atom:ch
@angle:cd-cd-sy @atom:cd @atom:cd @atom:sy
@angle:cc-cd-f @atom:cc @atom:cd @atom:f
@angle:cc-cd-no @atom:cc @atom:cd @atom:no
@angle:c-cd-f @atom:c @atom:cd @atom:f
@angle:ch-cd-na @atom:ch @atom:cd @atom:na
@angle:ch-cd-ss @atom:ch @atom:cd @atom:ss
@angle:cd-c-h4 @atom:cd @atom:c @atom:h4
@angle:cl-cd-na @atom:cl @atom:cd @atom:na
@angle:cl-cd-ss @atom:cl @atom:cd @atom:ss
@angle:c-cd-nf @atom:c @atom:cd @atom:nf
@angle:cd-c-s @atom:cd @atom:c @atom:s
@angle:cd-c-ss @atom:cd @atom:c @atom:ss
@angle:cx-cd-nc @atom:cx @atom:cd @atom:nc
@angle:cx-cd-os @atom:cx @atom:cd @atom:os
@angle:cc-c-cx @atom:cc @atom:c @atom:cx
@angle:cc-c-nc @atom:cc @atom:c @atom:nc
@angle:cf-c-cx @atom:cf @atom:c @atom:cx
@angle:cf-c-h4 @atom:cf @atom:c @atom:h4
@angle:cf-c-ss @atom:cf @atom:c @atom:ss
@angle:na-cd-no @atom:na @atom:cd @atom:no
@angle:na-cd-oh @atom:na @atom:cd @atom:oh
@angle:na-cd-sx @atom:na @atom:cd @atom:sx
@angle:na-cd-sy @atom:na @atom:cd @atom:sy
@angle:nd-cd-no @atom:nd @atom:cd @atom:no
@angle:nc-cd-nc @atom:nc @atom:cd @atom:nc
@angle:nc-cd-nf @atom:nc @atom:cd @atom:nf
@angle:nc-cd-no @atom:nc @atom:cd @atom:no
@angle:nc-cd-sh @atom:nc @atom:cd @atom:sh
@angle:nc-cd-sx @atom:nc @atom:cd @atom:sx
@angle:nc-cd-sy @atom:nc @atom:cd @atom:sy
@angle:nf-cd-ss @atom:nf @atom:cd @atom:ss
@angle:n-cd-n2 @atom:n @atom:cd @atom:n2
@angle:no-cd-os @atom:no @atom:cd @atom:os
@angle:no-cd-ss @atom:no @atom:cd @atom:ss
@angle:ca-cc-cf @atom:ca @atom:cc @atom:cf
@angle:ca-cc-na @atom:ca @atom:cc @atom:na
@angle:cd-cc-cg @atom:cd @atom:cc @atom:cg
@angle:cd-cc-cy @atom:cd @atom:cc @atom:cy
@angle:cd-cc-nd @atom:cd @atom:cc @atom:nd
@angle:cc-cc-cy @atom:cc @atom:cc @atom:cy
@angle:cf-cc-nc @atom:cf @atom:cc @atom:nc
@angle:c-cc-h4 @atom:c @atom:cc @atom:h4
@angle:na-cc-nh @atom:na @atom:cc @atom:nh
@angle:na-cc-ss @atom:na @atom:cc @atom:ss
@angle:nc-cc-nc @atom:nc @atom:cc @atom:nc
@angle:oh-cc-os @atom:oh @atom:cc @atom:os
@angle:c2-cf-cl @atom:c2 @atom:cf @atom:cl
@angle:c2-cf-h4 @atom:c2 @atom:cf @atom:h4
@angle:c2-cf-n1 @atom:c2 @atom:cf @atom:n1
@angle:c2-cf-na @atom:c2 @atom:cf @atom:na
@angle:c2-cf-oh @atom:c2 @atom:cf @atom:oh
@angle:c3-cf-ch @atom:c3 @atom:cf @atom:ch
@angle:c3-cf-ne @atom:c3 @atom:cf @atom:ne
@angle:c3-cf-nh @atom:c3 @atom:cf @atom:nh
@angle:ca-cf-cf @atom:ca @atom:cf @atom:cf
@angle:ca-cf-cl @atom:ca @atom:cf @atom:cl
@angle:ca-cf-h4 @atom:ca @atom:cf @atom:h4
@angle:ca-cf-nh @atom:ca @atom:cf @atom:nh
@angle:ca-cf-os @atom:ca @atom:cf @atom:os
@angle:ca-cf-ss @atom:ca @atom:cf @atom:ss
@angle:c-cf-ca @atom:c @atom:cf @atom:ca
@angle:cd-cf-cc @atom:cd @atom:cf @atom:cc
@angle:c-cf-cf @atom:c @atom:cf @atom:cf
@angle:c-cf-ch @atom:c @atom:cf @atom:ch
@angle:cd-cf-h4 @atom:cd @atom:cf @atom:h4
@angle:c-cf-cl @atom:c @atom:cf @atom:cl
@angle:cd-cf-nh @atom:cd @atom:cf @atom:nh
@angle:c-cf-cy @atom:c @atom:cf @atom:cy
@angle:cf-cf-cl @atom:cf @atom:cf @atom:cl
@angle:cf-cf-oh @atom:cf @atom:cf @atom:oh
@angle:ce-cf-cy @atom:ce @atom:cf @atom:cy
@angle:ce-cf-h4 @atom:ce @atom:cf @atom:h4
@angle:ce-cf-n1 @atom:ce @atom:cf @atom:n1
@angle:ce-cf-nh @atom:ce @atom:cf @atom:nh
@angle:ch-cf-n2 @atom:ch @atom:cf @atom:n2
@angle:c-cf-oh @atom:c @atom:cf @atom:oh
@angle:c-cf-os @atom:c @atom:cf @atom:os
@angle:h4-cf-n1 @atom:h4 @atom:cf @atom:n1
@angle:h4-cf-nf @atom:h4 @atom:cf @atom:nf
@angle:n2-cf-os @atom:n2 @atom:cf @atom:os
@angle:n2-cf-ss @atom:n2 @atom:cf @atom:ss
@angle:nf-cf-nh @atom:nf @atom:cf @atom:nh
@angle:ne-cf-nh @atom:ne @atom:cf @atom:nh
@angle:ca-ce-cd @atom:ca @atom:ce @atom:cd
@angle:c-ce-cc @atom:c @atom:ce @atom:cc
@angle:c-ce-n2 @atom:c @atom:ce @atom:n2
@angle:h4-ce-nf @atom:h4 @atom:ce @atom:nf
@angle:c1-ch-cd @atom:c1 @atom:ch @atom:cd
@angle:ch-cg-cg @atom:ch @atom:cg @atom:cg
@angle:n-c-nf @atom:n @atom:c @atom:nf
@angle:ca-cq-na @atom:ca @atom:cq @atom:na
@angle:nb-cq-nb @atom:nb @atom:cq @atom:nb
@angle:cd-cx-hc @atom:cd @atom:cx @atom:hc
@angle:cf-cy-h2 @atom:cf @atom:cy @atom:h2
@angle:cf-cy-n @atom:cf @atom:cy @atom:n
@angle:cf-cy-ss @atom:cf @atom:cy @atom:ss
@angle:cd-n2-na @atom:cd @atom:n2 @atom:na
@angle:cd-n2-nh @atom:cd @atom:n2 @atom:nh
@angle:c3-n4-cd @atom:c3 @atom:n4 @atom:cd
@angle:c3-na-cq @atom:c3 @atom:na @atom:cq
@angle:ca-na-cq @atom:ca @atom:na @atom:cq
@angle:cd-na-cf @atom:cd @atom:na @atom:cf
@angle:cq-nb-nb @atom:cq @atom:nb @atom:nb
@angle:c-n-cf @atom:c @atom:n @atom:cf
@angle:ca-nc-nd @atom:ca @atom:nc @atom:nd
@angle:c2-nf-ch @atom:c2 @atom:nf @atom:ch
@angle:c-nf-sy @atom:c @atom:nf @atom:sy
@angle:c3-nh-ce @atom:c3 @atom:nh @atom:ce
@angle:cd-nh-n2 @atom:cd @atom:nh @atom:n2
@angle:cd-nh-sy @atom:cd @atom:nh @atom:sy
@angle:cf-nh-sy @atom:cf @atom:nh @atom:sy
@angle:hn-n-nd @atom:hn @atom:n @atom:nd
@angle:cd-no-o @atom:cd @atom:no @atom:o
@angle:n3-py-nf @atom:n3 @atom:py @atom:nf
@angle:cd-s6-o @atom:cd @atom:s6 @atom:o
@angle:cd-sh-hs @atom:cd @atom:sh @atom:hs
@angle:c-ss-cd @atom:c @atom:ss @atom:cd
@angle:c3-sx-cd @atom:c3 @atom:sx @atom:cd
@angle:cd-sx-o @atom:cd @atom:sx @atom:o
@angle:c3-sy-cd @atom:c3 @atom:sy @atom:cd
@angle:ca-sy-cd @atom:ca @atom:sy @atom:cd
@angle:ca-sy-nf @atom:ca @atom:sy @atom:nf
@angle:cc-sy-nh @atom:cc @atom:sy @atom:nh
@angle:n3-sy-nf @atom:n3 @atom:sy @atom:nf
} # (end of Angles By Type)
write_once("In Settings") {
dihedral_coeff @dihedral:X-c-c-X fourier 1 0.3 2 180.0 #
dihedral_coeff @dihedral:X-c-c1-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c-cg-X fourier 1 0.0 2 180.0 # same as X-c-c1-X
dihedral_coeff @dihedral:X-c-ch-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c-c2-X fourier 1 2.175 2 180.0 # intrpol.bsd.on C6H6
dihedral_coeff @dihedral:X-c-cu-X fourier 1 2.175 2 180.0 # intrpol.bsd.on C6H6
dihedral_coeff @dihedral:X-c-cv-X fourier 1 2.175 2 180.0 # intrpol.bsd.on C6H6
dihedral_coeff @dihedral:X-c-ce-X fourier 1 2.175 2 180.0 # intrpol.bsd.on C6H6
dihedral_coeff @dihedral:X-c-cf-X fourier 1 2.175 2 180.0 # intrpol.bsd.on C6H6
dihedral_coeff @dihedral:X-c-c3-X fourier 1 0.0 2 180.0 # JCC, 7, (1986), 230
dihedral_coeff @dihedral:X-c-cx-X fourier 1 0.0 2 180.0 # JCC, 7, (1986), 230
dihedral_coeff @dihedral:X-c-cy-X fourier 1 0.0 2 180.0 # JCC, 7, (1986), 230
dihedral_coeff @dihedral:X-c-ca-X fourier 1 1.0 2 180.0 # optimized by Junmei Wang, Jan-2013
dihedral_coeff @dihedral:X-c-cc-X fourier 1 2.875 2 180.0 # statistic value
dihedral_coeff @dihedral:X-c-cd-X fourier 1 2.875 2 180.0 # statistic value
dihedral_coeff @dihedral:X-c-n-X fourier 1 2.5 2 180.0 # AA,NMA (no c-n3, c-n4, c-nh)
dihedral_coeff @dihedral:X-c-n2-X fourier 1 4.15 2 180.0 # double bond, same as X-c2-n2-X
dihedral_coeff @dihedral:X-c-nc-X fourier 1 4.0 2 180.0 # same as X-C-NC-X
dihedral_coeff @dihedral:X-c-nd-X fourier 1 4.0 2 180.0 # same as X-C-NC-X
dihedral_coeff @dihedral:X-c-ne-X fourier 1 0.2 2 180.0 # single bond
dihedral_coeff @dihedral:X-c-nf-X fourier 1 0.2 2 180.0 # single bond
dihedral_coeff @dihedral:X-c-na-X fourier 2 1.45 2 180.0 0.35 4 180.0 #
dihedral_coeff @dihedral:X-c-no-X fourier 1 0.45 2 180.0 #
dihedral_coeff @dihedral:X-c-oh-X fourier 1 2.3 2 180.0 # Junmei et al, 1999
dihedral_coeff @dihedral:X-c-os-X fourier 1 2.7 2 180.0 # Junmei et al, 1999
dihedral_coeff @dihedral:X-c-p2-X fourier 1 6.65 2 180.0 # double bond, same as X-c2-p2-X
dihedral_coeff @dihedral:X-c-pc-X fourier 1 2.0 2 180.0 # estimated
dihedral_coeff @dihedral:X-c-pd-X fourier 1 2.0 2 180.0 # estimated
dihedral_coeff @dihedral:X-c-pe-X fourier 1 0.0 2 180.0 # single bond
dihedral_coeff @dihedral:X-c-pf-X fourier 1 0.0 2 180.0 # single bond
dihedral_coeff @dihedral:X-c-p3-X fourier 1 1.55 2 180.0 #
dihedral_coeff @dihedral:X-c-p4-X fourier 1 1.35 2 180.0 #
dihedral_coeff @dihedral:X-c-px-X fourier 1 1.35 2 180.0 #
dihedral_coeff @dihedral:X-c-p5-X fourier 1 1.0 2 0.0 #
dihedral_coeff @dihedral:X-c-py-X fourier 1 1.0 2 0.0 #
dihedral_coeff @dihedral:X-c-sh-X fourier 1 2.25 2 180.0 #
dihedral_coeff @dihedral:X-c-ss-X fourier 1 3.1 2 180.0 #
dihedral_coeff @dihedral:X-c-s4-X fourier 1 0.2 2 180.0 #
dihedral_coeff @dihedral:X-c-sx-X fourier 1 0.2 2 180.0 #
dihedral_coeff @dihedral:X-c-s6-X fourier 1 0.5 2 0.0 #
dihedral_coeff @dihedral:X-c-sy-X fourier 1 0.5 2 0.0 #
dihedral_coeff @dihedral:X-c1-c1-X fourier 1 0.0 2 180.0 # for both triple and single bonds
dihedral_coeff @dihedral:X-c1-cg-X fourier 1 0.0 2 180.0 # for both triple and single bonds
dihedral_coeff @dihedral:X-c1-ch-X fourier 1 0.0 2 180.0 # for both triple and single bonds
dihedral_coeff @dihedral:X-cg-cg-X fourier 1 0.0 2 180.0 # for both triple and single bonds
dihedral_coeff @dihedral:X-ch-ch-X fourier 1 0.0 2 180.0 # for both triple and single bonds
dihedral_coeff @dihedral:X-cg-ch-X fourier 1 0.0 2 180.0 # for both triple and single bonds
dihedral_coeff @dihedral:X-c1-c2-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-c3-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-ca-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-cc-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-cd-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-ce-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-cf-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-cu-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-cv-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-cx-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-cy-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-n-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-n2-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-n3-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-n4-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-na-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-nb-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-nc-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-nd-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-ne-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-nf-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-nh-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-no-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-oh-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-os-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-p2-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-pb-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-pc-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-pd-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-pe-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-pf-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-p3-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-p4-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-px-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-p5-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-py-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-s2-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-sh-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-ss-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-s4-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-sx-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-s6-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c1-sy-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-c2-c2-X fourier 1 6.65 2 180.0 # c2=c2 double bond, intrpol.bsd.on C6H6
dihedral_coeff @dihedral:X-c2-ce-X fourier 1 6.65 2 180.0 # c2=c2 double bond, intrpol.bsd.on C6H6
dihedral_coeff @dihedral:X-c2-cf-X fourier 1 6.65 2 180.0 # c2=c2 double bond, intrpol.bsd.on C6H6
dihedral_coeff @dihedral:X-ce-cf-X fourier 1 6.65 2 180.0 # c2=c2 double bond, intrpol.bsd.on C6H6
dihedral_coeff @dihedral:X-ce-ce-X fourier 1 1.0 2 180.0 # c2-c2 single bond, parm99
dihedral_coeff @dihedral:X-cf-cf-X fourier 1 1.0 2 180.0 # c2-c2 single bond, parm99
dihedral_coeff @dihedral:X-cc-cd-X fourier 1 4.0 2 180.0 # statistic value of parm94
dihedral_coeff @dihedral:X-cc-cc-X fourier 1 4.0 2 180.0 # statistic value of parm94
dihedral_coeff @dihedral:X-cd-cd-X fourier 1 4.0 2 180.0 # statistic value of parm94
dihedral_coeff @dihedral:X-c2-c3-X fourier 1 0.0 2 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:X-c2-ca-X fourier 1 0.7 2 180.0 # optimized by Junmei Wang, March 2013
dihedral_coeff @dihedral:X-c2-n-X fourier 1 0.65 2 180.0 #
dihedral_coeff @dihedral:X-c2-n2-X fourier 1 4.15 2 180.0 # double bond, parm99
dihedral_coeff @dihedral:X-c2-ne-X fourier 1 4.15 2 180.0 # double bond, parm99
dihedral_coeff @dihedral:X-c2-nf-X fourier 1 4.15 2 180.0 # double bond, parm99
dihedral_coeff @dihedral:X-ce-ne-X fourier 1 0.8 2 180.0 # single bond
dihedral_coeff @dihedral:X-cf-nf-X fourier 1 0.8 2 180.0 # single bond
dihedral_coeff @dihedral:X-c2-nc-X fourier 1 4.75 2 180.0 # statistic value from parm94
dihedral_coeff @dihedral:X-c2-nd-X fourier 1 4.75 2 180.0 # statistic value from parm94
dihedral_coeff @dihedral:X-cc-nd-X fourier 1 4.75 2 180.0 # statistic value from parm94
dihedral_coeff @dihedral:X-cd-nc-X fourier 1 4.75 2 180.0 # statistiv value from parm94
dihedral_coeff @dihedral:X-cc-nc-X fourier 1 4.75 2 180.0 # statistic value from parm94
dihedral_coeff @dihedral:X-cd-nd-X fourier 1 4.75 2 180.0 # statistiv value from parm94
dihedral_coeff @dihedral:X-c2-n3-X fourier 1 0.3 2 180.0 # intrpol.
dihedral_coeff @dihedral:X-c2-n4-X fourier 1 0.0 3 180.0 # intrpol.
dihedral_coeff @dihedral:X-c2-na-X fourier 1 0.625 2 180.0 #
dihedral_coeff @dihedral:X-cc-na-X fourier 1 1.7 2 180.0 # statistic value from parm94
dihedral_coeff @dihedral:X-cd-na-X fourier 1 1.7 2 180.0 # statistic value from parm94
dihedral_coeff @dihedral:X-c2-nh-X fourier 1 0.675 2 180.0 #
dihedral_coeff @dihedral:X-c2-no-X fourier 1 0.75 2 180.0 #
dihedral_coeff @dihedral:X-c2-oh-X fourier 1 1.05 2 180.0 # parm99
dihedral_coeff @dihedral:X-c2-os-X fourier 1 1.05 2 180.0 # parm99
dihedral_coeff @dihedral:X-c2-p2-X fourier 1 6.65 2 180.0 # double bond
dihedral_coeff @dihedral:X-c2-pe-X fourier 1 6.65 2 180.0 # double bond
dihedral_coeff @dihedral:X-c2-pf-X fourier 1 6.65 2 180.0 # double bond
dihedral_coeff @dihedral:X-ce-pf-X fourier 1 6.65 2 180.0 # double bond
dihedral_coeff @dihedral:X-ce-pe-X fourier 1 0.95 2 180.0 # single bond
dihedral_coeff @dihedral:X-cf-pf-X fourier 1 0.95 2 180.0 # single bond
dihedral_coeff @dihedral:X-c2-pc-X fourier 1 4.75 2 180.0 # estimated
dihedral_coeff @dihedral:X-c2-pd-X fourier 1 4.75 2 180.0 # estimated
dihedral_coeff @dihedral:X-cc-pc-X fourier 1 4.75 2 180.0 # estimated
dihedral_coeff @dihedral:X-cc-pd-X fourier 1 4.75 2 180.0 # estimated
dihedral_coeff @dihedral:X-cd-pc-X fourier 1 4.75 2 180.0 # estimated
dihedral_coeff @dihedral:X-cd-pd-X fourier 1 4.75 2 180.0 # estimated
dihedral_coeff @dihedral:X-c2-p3-X fourier 1 0.45 2 180.0 #
dihedral_coeff @dihedral:X-c2-p4-X fourier 1 6.65 2 180.0 # c2=p4 double bond !!!
dihedral_coeff @dihedral:X-ce-p4-X fourier 1 6.65 2 180.0 # c2=p4 double bond !!!
dihedral_coeff @dihedral:X-cf-p4-X fourier 1 6.65 2 180.0 # c2=p4 double bond !!!
dihedral_coeff @dihedral:X-c2-px-X fourier 1 0.325 2 0.0 #
dihedral_coeff @dihedral:X-ce-px-X fourier 1 0.325 2 0.0 #
dihedral_coeff @dihedral:X-cf-px-X fourier 1 0.325 2 0.0 #
dihedral_coeff @dihedral:X-c2-p5-X fourier 1 6.65 2 180.0 # c2=p5 double bond !!!
dihedral_coeff @dihedral:X-ce-p5-X fourier 1 6.65 2 180.0 # c2=p5 double bond !!!
dihedral_coeff @dihedral:X-cf-p5-X fourier 1 6.65 2 180.0 # c2=p5 double bond !!!
dihedral_coeff @dihedral:X-c2-py-X fourier 1 1.43333333333 2 180.0 #
dihedral_coeff @dihedral:X-ce-py-X fourier 1 1.43333333333 2 180.0 #
dihedral_coeff @dihedral:X-cf-py-X fourier 1 1.43333333333 2 180.0 #
dihedral_coeff @dihedral:X-c2-sh-X fourier 1 0.5 2 180.0 #
dihedral_coeff @dihedral:X-c2-ss-X fourier 1 1.1 2 180.0 #
dihedral_coeff @dihedral:X-c2-s4-X fourier 1 6.65 2 180.0 # c2=s4 double bond !!!
dihedral_coeff @dihedral:X-ce-s4-X fourier 1 6.65 2 180.0 # c2=s4 double bond !!!
dihedral_coeff @dihedral:X-cf-s4-X fourier 1 6.65 2 180.0 # c2=s4 double bond !!!
dihedral_coeff @dihedral:X-c2-sx-X fourier 1 0.6 2 0.0 #
dihedral_coeff @dihedral:X-ce-sx-X fourier 1 0.6 2 0.0 #
dihedral_coeff @dihedral:X-cf-sx-X fourier 1 0.6 2 0.0 #
dihedral_coeff @dihedral:X-c2-s6-X fourier 1 6.65 2 180.0 # c2=s6 double bond !!!
dihedral_coeff @dihedral:X-ce-s6-X fourier 1 6.65 2 180.0 # c2=s6 double bond !!!
dihedral_coeff @dihedral:X-cf-s6-X fourier 1 6.65 2 180.0 # c2=s6 double bond !!!
dihedral_coeff @dihedral:X-c2-sy-X fourier 1 1.26666666667 2 180.0 #
dihedral_coeff @dihedral:X-ce-sy-X fourier 1 1.26666666667 2 180.0 #
dihedral_coeff @dihedral:X-cf-sy-X fourier 1 1.26666666667 2 180.0 #
dihedral_coeff @dihedral:X-c3-c3-X fourier 1 0.155555555556 3 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:X-cx-cx-X fourier 1 0.155555555556 3 0.0 # same as X-c3-c3-X
dihedral_coeff @dihedral:X-cy-cy-X fourier 1 0.155555555556 3 0.0 # same as X-c3-c3-X
dihedral_coeff @dihedral:X-c3-ca-X fourier 1 0.0 2 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:X-c3-n-X fourier 1 0.0 2 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:X-cx-n-X fourier 1 0.0 2 0.0 # same as X-c3-n-X
dihedral_coeff @dihedral:X-cy-n-X fourier 1 0.0 2 0.0 # same as X-c3-n-X
dihedral_coeff @dihedral:X-c3-n2-X fourier 1 0.0 3 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:X-c3-ne-X fourier 1 0.0 3 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:X-c3-nf-X fourier 1 0.0 3 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:X-c3-n3-X fourier 1 0.3 3 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:X-c3-n4-X fourier 1 0.155555555556 3 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:X-c3-na-X fourier 1 0.0 2 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:X-c3-nh-X fourier 1 0.0 2 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:X-c3-no-X fourier 1 0.0 2 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:X-c3-oh-X fourier 1 0.166666666667 3 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:X-c3-os-X fourier 1 0.383333333333 3 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:X-c3-p2-X fourier 1 0.266666666667 2 180.0 #
dihedral_coeff @dihedral:X-c3-pe-X fourier 1 0.266666666667 2 180.0 #
dihedral_coeff @dihedral:X-c3-pf-X fourier 1 0.266666666667 2 180.0 #
dihedral_coeff @dihedral:X-c3-p3-X fourier 1 0.133333333333 3 0.0 #
dihedral_coeff @dihedral:X-c3-p4-X fourier 1 0.133333333333 3 0.0 #
dihedral_coeff @dihedral:X-c3-px-X fourier 1 0.133333333333 3 0.0 #
dihedral_coeff @dihedral:X-c3-p5-X fourier 1 0.0222222222222 3 0.0 #
dihedral_coeff @dihedral:X-c3-py-X fourier 1 0.0222222222222 3 0.0 #
dihedral_coeff @dihedral:X-c3-sh-X fourier 1 0.25 3 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:X-c3-ss-X fourier 1 0.333333333333 3 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:X-c3-s4-X fourier 1 0.2 3 0.0 #
dihedral_coeff @dihedral:X-c3-sx-X fourier 1 0.2 3 0.0 #
dihedral_coeff @dihedral:X-c3-s6-X fourier 1 0.144444444444 3 0.0 #
dihedral_coeff @dihedral:X-c3-sy-X fourier 1 0.144444444444 3 0.0 #
dihedral_coeff @dihedral:X-c3-cc-X fourier 1 0.0 3 0.0 # same as X-c3-ca-X
dihedral_coeff @dihedral:X-c3-cd-X fourier 1 0.0 3 0.0 # same as X-c3-ca-X
dihedral_coeff @dihedral:X-ca-ca-X fourier 1 3.625 2 180.0 # intrpol.bsd.on C6H6
dihedral_coeff @dihedral:X-ca-cp-X fourier 1 3.625 2 180.0 # intrpol.bsd.on C6H6
dihedral_coeff @dihedral:X-ca-cq-X fourier 1 3.625 2 180.0 # intrpol.bsd.on C6H6
dihedral_coeff @dihedral:X-cp-cp-X fourier 1 1.0 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-cq-cq-X fourier 1 1.0 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-ca-n-X fourier 1 0.45 2 180.0 #
dihedral_coeff @dihedral:X-ca-n2-X fourier 1 0.0 3 180.0 #
dihedral_coeff @dihedral:X-ca-ne-X fourier 1 0.0 3 180.0 #
dihedral_coeff @dihedral:X-ca-nf-X fourier 1 0.0 3 180.0 #
dihedral_coeff @dihedral:X-ca-n4-X fourier 1 1.75 2 0.0 #
dihedral_coeff @dihedral:X-ca-na-X fourier 1 0.3 2 180.0 #
dihedral_coeff @dihedral:X-ca-nb-X fourier 1 4.8 2 180.0 # same as X-CA-NC-X
dihedral_coeff @dihedral:X-ca-nc-X fourier 1 4.8 2 180.0 # same as X-CA-NC-X
dihedral_coeff @dihedral:X-ca-nd-X fourier 1 4.8 2 180.0 # same as X-CA-NC-X
dihedral_coeff @dihedral:X-ca-nh-X fourier 1 1.05 2 180.0 #
dihedral_coeff @dihedral:X-cc-nh-X fourier 1 1.05 2 180.0 # same as X-ca-nh-X
dihedral_coeff @dihedral:X-cd-nh-X fourier 1 1.05 2 180.0 # same as X-ca-nh-X
dihedral_coeff @dihedral:X-ca-no-X fourier 1 0.6 2 180.0 #
dihedral_coeff @dihedral:X-ca-oh-X fourier 1 0.9 2 180.0 # Junmei et al, 99
dihedral_coeff @dihedral:X-ca-os-X fourier 1 0.9 2 180.0 # same as X-ca-oh-X
dihedral_coeff @dihedral:X-ca-p2-X fourier 1 0.6 2 180.0 #
dihedral_coeff @dihedral:X-ca-pe-X fourier 1 0.6 2 180.0 # same as X-ca-p2-X
dihedral_coeff @dihedral:X-ca-pf-X fourier 1 0.6 2 180.0 # same as X-ca-p2-X
dihedral_coeff @dihedral:X-ca-pc-X fourier 1 4.8 2 180.0 # estimated, intrpol
dihedral_coeff @dihedral:X-ca-pd-X fourier 1 4.8 2 180.0 # estimated, intrpol
dihedral_coeff @dihedral:X-ca-p3-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-ca-p4-X fourier 1 0.525 2 180.0 #
dihedral_coeff @dihedral:X-ca-px-X fourier 1 0.525 2 180.0 # estimated, same as X-ca-p4-X
dihedral_coeff @dihedral:X-ca-p5-X fourier 1 1.46666666667 2 180.0 #
dihedral_coeff @dihedral:X-ca-py-X fourier 1 1.46666666667 2 180.0 # estimated, same as X-ca-p5-X
dihedral_coeff @dihedral:X-ca-sh-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-ca-ss-X fourier 1 0.4 2 180.0 #
dihedral_coeff @dihedral:X-ca-s4-X fourier 1 0.3 2 0.0 #
dihedral_coeff @dihedral:X-ca-sx-X fourier 1 0.3 2 0.0 # estimated, same as X-ca-s4-X
dihedral_coeff @dihedral:X-ca-s6-X fourier 1 1.3 2 180.0 #
dihedral_coeff @dihedral:X-ca-sy-X fourier 1 1.3 2 180.0 # estimated, same as X-ca-s6-X
dihedral_coeff @dihedral:X-n-cc-X fourier 1 1.65 2 180.0 # statistic value from parm94
dihedral_coeff @dihedral:X-n-cd-X fourier 1 1.65 2 180.0 # statistic value from parm94
dihedral_coeff @dihedral:X-n-n-X fourier 1 1.15 2 0.0 #
dihedral_coeff @dihedral:X-n-n2-X fourier 1 0.4 2 0.0 #
dihedral_coeff @dihedral:X-n-ne-X fourier 1 0.4 2 0.0 #
dihedral_coeff @dihedral:X-n-nf-X fourier 1 0.4 2 0.0 #
dihedral_coeff @dihedral:X-n-n3-X fourier 1 1.075 2 0.0 #
dihedral_coeff @dihedral:X-n-n4-X fourier 1 0.95 2 0.0 #
dihedral_coeff @dihedral:X-n-na-X fourier 1 0.7 2 0.0 #
dihedral_coeff @dihedral:X-n-nc-X fourier 1 4.8 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-n-nd-X fourier 1 4.8 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-n-nh-X fourier 1 1.1 2 0.0 #
dihedral_coeff @dihedral:X-n-no-X fourier 1 1.375 2 180.0 #
dihedral_coeff @dihedral:X-n-oh-X fourier 1 1.5 2 0.0 #
dihedral_coeff @dihedral:X-n-os-X fourier 1 1.1 2 0.0 #
dihedral_coeff @dihedral:X-n-p2-X fourier 1 1.0 2 180.0 #
dihedral_coeff @dihedral:X-n-pe-X fourier 1 1.0 2 180.0 #
dihedral_coeff @dihedral:X-n-pf-X fourier 1 1.0 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-n-pc-X fourier 1 4.8 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-n-pd-X fourier 1 4.8 2 180.0 #
dihedral_coeff @dihedral:X-n-p3-X fourier 1 2.25 2 0.0 #
dihedral_coeff @dihedral:X-n-p4-X fourier 1 0.325 2 0.0 #
dihedral_coeff @dihedral:X-n-px-X fourier 1 0.325 2 0.0 #
dihedral_coeff @dihedral:X-n-p5-X fourier 1 2.2 2 180.0 #
dihedral_coeff @dihedral:X-n-py-X fourier 1 2.2 2 180.0 #
dihedral_coeff @dihedral:X-n-sh-X fourier 1 1.1 2 0.0 #
dihedral_coeff @dihedral:X-n-ss-X fourier 1 1.5 2 0.0 #
dihedral_coeff @dihedral:X-n-s4-X fourier 1 1.5 3 0.0 #
dihedral_coeff @dihedral:X-n-sx-X fourier 1 1.5 3 0.0 #
dihedral_coeff @dihedral:X-n-s6-X fourier 1 1.1 2 180.0 #
dihedral_coeff @dihedral:X-n-sy-X fourier 1 1.1 2 180.0 #
dihedral_coeff @dihedral:X-n1-c2-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-c3-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-ca-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-cc-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-cd-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-ce-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-cf-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-cu-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-cv-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-cx-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-cy-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-n-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-n1-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-n2-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-n3-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-n4-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-na-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-nb-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-nc-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-nd-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-ne-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-nf-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-nh-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-no-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-oh-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-os-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-p2-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-pb-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-pc-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-pd-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-pe-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-pf-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-p3-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-p4-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-px-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-p5-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-py-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-s2-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-sh-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-ss-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-s4-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-sx-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-s6-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n1-sy-X fourier 1 0.0 2 180.0 #
dihedral_coeff @dihedral:X-n2-n2-X fourier 2 3.0 2 180.0 2.8 1 0.0 # double bond
dihedral_coeff @dihedral:X-n2-ne-X fourier 2 3.0 2 180.0 2.8 1 0.0 # double bond
dihedral_coeff @dihedral:X-n2-nf-X fourier 2 3.0 2 180.0 2.8 1 0.0 # double bond
dihedral_coeff @dihedral:X-ne-nf-X fourier 2 3.0 2 180.0 2.8 1 0.0 # double bond
dihedral_coeff @dihedral:X-ne-ne-X fourier 1 1.2 2 180.0 # single bond, intrpol
dihedral_coeff @dihedral:X-nf-nf-X fourier 1 1.2 2 180.0 # single bond, intrpol
dihedral_coeff @dihedral:X-nc-nc-X fourier 1 4.0 2 180.0 # estimated, intrpol
dihedral_coeff @dihedral:X-nd-nd-X fourier 1 4.0 2 180.0 # estimated, intrpol
dihedral_coeff @dihedral:X-nc-nd-X fourier 1 4.0 2 180.0 # estimated, intrpol
dihedral_coeff @dihedral:X-n2-nc-X fourier 2 3.0 2 180.0 2.8 1 0.0 # same as X-n2-n2-X
dihedral_coeff @dihedral:X-n2-nd-X fourier 2 3.0 2 180.0 2.8 1 0.0 # same as X-n2-n2-X
dihedral_coeff @dihedral:X-n2-n3-X fourier 1 6.1 2 180.0 #
dihedral_coeff @dihedral:X-ne-n3-X fourier 1 6.1 2 180.0 #
dihedral_coeff @dihedral:X-nf-n3-X fourier 1 6.1 2 180.0 #
dihedral_coeff @dihedral:X-n2-n4-X fourier 1 8.0 2 180.0 #
dihedral_coeff @dihedral:X-ne-n4-X fourier 1 8.0 2 180.0 #
dihedral_coeff @dihedral:X-nf-n4-X fourier 1 8.0 2 180.0 #
dihedral_coeff @dihedral:X-n2-na-X fourier 1 1.7 2 180.0 #
dihedral_coeff @dihedral:X-ne-na-X fourier 1 1.7 2 180.0 #
dihedral_coeff @dihedral:X-nf-na-X fourier 1 1.7 2 180.0 #
dihedral_coeff @dihedral:X-na-nc-X fourier 1 4.8 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-na-nd-X fourier 1 4.8 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-n2-nh-X fourier 1 2.8 2 180.0 #
dihedral_coeff @dihedral:X-ne-nh-X fourier 1 2.8 2 180.0 #
dihedral_coeff @dihedral:X-nf-nh-X fourier 1 2.8 2 180.0 #
dihedral_coeff @dihedral:X-n2-no-X fourier 1 0.75 2 180.0 #
dihedral_coeff @dihedral:X-ne-no-X fourier 1 0.75 2 180.0 #
dihedral_coeff @dihedral:X-nf-no-X fourier 1 0.75 2 180.0 #
dihedral_coeff @dihedral:X-n2-oh-X fourier 1 3.2 2 180.0 #
dihedral_coeff @dihedral:X-ne-oh-X fourier 1 3.2 2 180.0 #
dihedral_coeff @dihedral:X-nf-oh-X fourier 1 3.2 2 180.0 #
dihedral_coeff @dihedral:X-n2-os-X fourier 1 3.0 2 180.0 #
dihedral_coeff @dihedral:X-ne-os-X fourier 1 3.0 2 180.0 #
dihedral_coeff @dihedral:X-nf-os-X fourier 1 3.0 2 180.0 #
dihedral_coeff @dihedral:X-nc-os-X fourier 1 4.8 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-nc-ss-X fourier 1 4.8 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-n2-p2-X fourier 1 5.4 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-n2-pe-X fourier 1 5.4 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-n2-pf-X fourier 1 5.4 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-ne-pf-X fourier 1 5.4 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-n2-pc-X fourier 1 5.4 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-n2-pd-X fourier 1 5.4 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-nc-p2-X fourier 1 5.4 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-nd-p2-X fourier 1 5.4 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-nc-pc-X fourier 1 6.6 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-nd-pd-X fourier 1 6.6 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-nd-pc-X fourier 1 6.6 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-nc-pd-X fourier 1 6.6 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-ne-pe-X fourier 1 0.6 1 0.0 # single bond
dihedral_coeff @dihedral:X-nf-pf-X fourier 1 0.6 1 0.0 # single bond
dihedral_coeff @dihedral:X-n2-p3-X fourier 1 2.1 2 180.0 #
dihedral_coeff @dihedral:X-n2-p4-X fourier 1 6.65 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-ne-p4-X fourier 1 6.65 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-nf-p4-X fourier 1 6.65 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-n2-p5-X fourier 1 6.66666666667 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-ne-p5-X fourier 1 1.0 3 180.0 #
dihedral_coeff @dihedral:X-nf-p5-X fourier 1 1.0 3 180.0 #
dihedral_coeff @dihedral:X-ne-px-X fourier 1 1.0 3 180.0 #
dihedral_coeff @dihedral:X-nf-px-X fourier 1 1.0 3 180.0 #
dihedral_coeff @dihedral:X-n2-sh-X fourier 1 2.1 2 180.0 #
dihedral_coeff @dihedral:X-ne-sh-X fourier 1 2.1 2 180.0 #
dihedral_coeff @dihedral:X-nf-sh-X fourier 1 2.1 2 180.0 #
dihedral_coeff @dihedral:X-n2-ss-X fourier 2 2.8 2 180.0 1.3 1 180.0 #
dihedral_coeff @dihedral:X-ne-ss-X fourier 2 2.8 2 180.0 1.3 1 180.0 #
dihedral_coeff @dihedral:X-nf-ss-X fourier 2 2.8 2 180.0 1.3 1 180.0 #
dihedral_coeff @dihedral:X-n2-s4-X fourier 1 6.65 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-ne-sx-X fourier 1 1.5 3 180.0 #
dihedral_coeff @dihedral:X-nf-sx-X fourier 1 1.5 3 180.0 #
dihedral_coeff @dihedral:X-n2-s6-X fourier 1 6.66666666667 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-ne-sy-X fourier 2 0.5 3 180.0 6.8 1 180.0 #
dihedral_coeff @dihedral:X-nf-sy-X fourier 2 0.5 3 180.0 6.8 1 180.0 #
dihedral_coeff @dihedral:X-n3-n3-X fourier 1 2.25 2 0.0 #
dihedral_coeff @dihedral:X-n3-n4-X fourier 1 0.25 3 0.0 #
dihedral_coeff @dihedral:X-n3-na-X fourier 1 1.6 2 0.0 #
dihedral_coeff @dihedral:X-n3-nh-X fourier 1 1.9 2 0.0 #
dihedral_coeff @dihedral:X-n3-no-X fourier 1 4.0 2 180.0 #
dihedral_coeff @dihedral:X-n3-oh-X fourier 1 2.2 2 0.0 #
dihedral_coeff @dihedral:X-n3-os-X fourier 1 1.8 2 0.0 #
dihedral_coeff @dihedral:X-n3-p2-X fourier 1 3.2 2 180.0 #
dihedral_coeff @dihedral:X-n3-pe-X fourier 1 3.2 2 180.0 #
dihedral_coeff @dihedral:X-n3-pf-X fourier 1 3.2 2 180.0 #
dihedral_coeff @dihedral:X-n3-p3-X fourier 1 2.35 2 0.0 #
dihedral_coeff @dihedral:X-n3-p4-X fourier 1 2.1 2 180.0 #
dihedral_coeff @dihedral:X-n3-px-X fourier 1 2.1 2 180.0 #
dihedral_coeff @dihedral:X-n3-p5-X fourier 1 3.0 2 180.0 #
dihedral_coeff @dihedral:X-n3-py-X fourier 1 3.0 2 180.0 #
dihedral_coeff @dihedral:X-n3-sh-X fourier 1 3.1 2 0.0 #
dihedral_coeff @dihedral:X-n3-ss-X fourier 1 2.6 2 0.0 #
dihedral_coeff @dihedral:X-n3-s4-X fourier 1 3.75 2 0.0 #
dihedral_coeff @dihedral:X-n3-sx-X fourier 1 3.75 2 0.0 #
dihedral_coeff @dihedral:X-n3-s6-X fourier 1 3.13333333333 2 0.0 #
dihedral_coeff @dihedral:X-n3-sy-X fourier 1 3.13333333333 2 0.0 #
dihedral_coeff @dihedral:X-n4-n4-X fourier 1 0.188888888889 3 0.0 #
dihedral_coeff @dihedral:X-n4-na-X fourier 1 0.233333333333 3 0.0 #
dihedral_coeff @dihedral:X-n4-nh-X fourier 1 0.183333333333 3 0.0 #
dihedral_coeff @dihedral:X-n4-no-X fourier 1 0.0833333333333 3 180.0 #
dihedral_coeff @dihedral:X-n4-oh-X fourier 1 0.333333333333 3 0.0 #
dihedral_coeff @dihedral:X-n4-os-X fourier 1 0.566666666667 3 0.0 #
dihedral_coeff @dihedral:X-n4-p2-X fourier 1 0.166666666667 3 180.0 #
dihedral_coeff @dihedral:X-n4-pe-X fourier 1 0.166666666667 3 180.0 #
dihedral_coeff @dihedral:X-n4-pf-X fourier 1 0.166666666667 3 180.0 #
dihedral_coeff @dihedral:X-n4-p3-X fourier 1 0.15 3 0.0 #
dihedral_coeff @dihedral:X-n4-p4-X fourier 1 0.05 3 0.0 #
dihedral_coeff @dihedral:X-n4-px-X fourier 1 0.05 3 0.0 #
dihedral_coeff @dihedral:X-n4-p5-X fourier 1 0.0888888888889 3 0.0 #
dihedral_coeff @dihedral:X-n4-py-X fourier 1 0.0888888888889 3 0.0 #
dihedral_coeff @dihedral:X-n4-sh-X fourier 1 0.666666666667 3 0.0 #
dihedral_coeff @dihedral:X-n4-ss-X fourier 1 0.333333333333 3 0.0 #
dihedral_coeff @dihedral:X-n4-s4-X fourier 1 0.283333333333 3 0.0 #
dihedral_coeff @dihedral:X-n4-sx-X fourier 1 0.283333333333 3 0.0 #
dihedral_coeff @dihedral:X-n4-s6-X fourier 1 0.133333333333 3 0.0 #
dihedral_coeff @dihedral:X-n4-sy-X fourier 1 0.133333333333 3 0.0 #
dihedral_coeff @dihedral:X-na-na-X fourier 1 0.9 2 0.0 #
dihedral_coeff @dihedral:X-na-nh-X fourier 1 1.2 2 0.0 #
dihedral_coeff @dihedral:X-na-no-X fourier 1 6.0 2 180.0 #
dihedral_coeff @dihedral:X-na-oh-X fourier 1 1.0 2 0.0 #
dihedral_coeff @dihedral:X-na-os-X fourier 1 0.65 2 0.0 #
dihedral_coeff @dihedral:X-na-p2-X fourier 1 1.0 2 180.0 #
dihedral_coeff @dihedral:X-na-pe-X fourier 1 1.0 2 180.0 #
dihedral_coeff @dihedral:X-na-pf-X fourier 1 1.0 2 180.0 #
dihedral_coeff @dihedral:X-na-p3-X fourier 1 1.45 2 0.0 #
dihedral_coeff @dihedral:X-na-p4-X fourier 1 1.1 3 0.0 #
dihedral_coeff @dihedral:X-na-px-X fourier 1 1.1 3 0.0 #
dihedral_coeff @dihedral:X-na-p5-X fourier 1 0.833333333333 2 180.0 #
dihedral_coeff @dihedral:X-na-py-X fourier 1 0.833333333333 2 180.0 #
dihedral_coeff @dihedral:X-na-sh-X fourier 1 1.8 2 0.0 #
dihedral_coeff @dihedral:X-na-ss-X fourier 1 7.8 2 0.0 #
dihedral_coeff @dihedral:X-na-s4-X fourier 1 1.05 2 0.0 #
dihedral_coeff @dihedral:X-na-sx-X fourier 1 1.05 2 0.0 #
dihedral_coeff @dihedral:X-na-s6-X fourier 1 3.66666666667 2 180.0 #
dihedral_coeff @dihedral:X-na-sy-X fourier 1 3.66666666667 2 180.0 #
dihedral_coeff @dihedral:X-nh-nh-X fourier 1 1.8 3 180.0 #
dihedral_coeff @dihedral:X-nh-no-X fourier 1 2.55 2 180.0 #
dihedral_coeff @dihedral:X-nh-oh-X fourier 1 1.5 2 0.0 #
dihedral_coeff @dihedral:X-nh-os-X fourier 1 1.5 1 0.0 #
dihedral_coeff @dihedral:X-nh-p2-X fourier 1 1.4 2 180.0 #
dihedral_coeff @dihedral:X-nh-pe-X fourier 1 1.4 2 180.0 #
dihedral_coeff @dihedral:X-nh-pf-X fourier 1 1.4 2 180.0 #
dihedral_coeff @dihedral:X-nh-p3-X fourier 1 2.35 2 0.0 #
dihedral_coeff @dihedral:X-nh-p4-X fourier 1 1.175 3 0.0 #
dihedral_coeff @dihedral:X-nh-px-X fourier 1 1.175 3 0.0 #
dihedral_coeff @dihedral:X-nh-p5-X fourier 1 0.8 2 0.0 #
dihedral_coeff @dihedral:X-nh-py-X fourier 1 0.8 2 0.0 #
dihedral_coeff @dihedral:X-nh-sh-X fourier 1 1.6 2 0.0 #
dihedral_coeff @dihedral:X-nh-ss-X fourier 1 2.1 2 0.0 #
dihedral_coeff @dihedral:X-nh-s4-X fourier 2 0.75 2 0.0 0.1 3 180.0 #
dihedral_coeff @dihedral:X-nh-sx-X fourier 2 0.75 2 0.0 0.1 3 180.0 #
dihedral_coeff @dihedral:X-nh-s6-X fourier 1 0.1 2 180.0 #
dihedral_coeff @dihedral:X-nh-sy-X fourier 1 0.1 2 180.0 #
dihedral_coeff @dihedral:X-no-no-X fourier 2 0.4 4 180.0 1.8 2 180.0 #
dihedral_coeff @dihedral:X-no-oh-X fourier 1 3.9 2 180.0 #
dihedral_coeff @dihedral:X-no-os-X fourier 1 3.0 2 180.0 #
dihedral_coeff @dihedral:X-no-p2-X fourier 1 0.3 2 180.0 #
dihedral_coeff @dihedral:X-no-pe-X fourier 1 0.3 2 180.0 #
dihedral_coeff @dihedral:X-no-pf-X fourier 1 0.3 2 180.0 #
dihedral_coeff @dihedral:X-no-p3-X fourier 1 1.9 2 180.0 #
dihedral_coeff @dihedral:X-no-p4-X fourier 1 0.575 2 180.0 #
dihedral_coeff @dihedral:X-no-px-X fourier 1 0.575 2 180.0 #
dihedral_coeff @dihedral:X-no-p5-X fourier 2 2.4 2 0.0 0.4 3 0.0 #
dihedral_coeff @dihedral:X-no-py-X fourier 2 2.4 2 0.0 0.4 3 0.0 #
dihedral_coeff @dihedral:X-no-sh-X fourier 1 2.3 2 180.0 #
dihedral_coeff @dihedral:X-no-ss-X fourier 1 2.7 2 180.0 #
dihedral_coeff @dihedral:X-no-s4-X fourier 1 2.6 2 180.0 #
dihedral_coeff @dihedral:X-no-sx-X fourier 1 2.6 2 180.0 #
dihedral_coeff @dihedral:X-no-s6-X fourier 1 0.333333333333 2 0.0 #
dihedral_coeff @dihedral:X-no-sy-X fourier 1 0.333333333333 2 0.0 #
dihedral_coeff @dihedral:X-oh-oh-X fourier 1 1.6 2 0.0 #
dihedral_coeff @dihedral:X-oh-os-X fourier 1 1.6 2 0.0 #
dihedral_coeff @dihedral:X-oh-p2-X fourier 1 1.5 2 180.0 #
dihedral_coeff @dihedral:X-oh-pe-X fourier 1 1.5 2 180.0 #
dihedral_coeff @dihedral:X-oh-pf-X fourier 1 1.5 2 180.0 #
dihedral_coeff @dihedral:X-oh-p3-X fourier 1 0.4 3 180.0 #
dihedral_coeff @dihedral:X-oh-p4-X fourier 1 0.7 1 0.0 #
dihedral_coeff @dihedral:X-oh-px-X fourier 1 0.7 1 0.0 #
dihedral_coeff @dihedral:X-oh-p5-X fourier 1 0.533333333333 3 0.0 #
dihedral_coeff @dihedral:X-oh-py-X fourier 1 0.533333333333 3 0.0 #
dihedral_coeff @dihedral:X-oh-sh-X fourier 1 2.4 2 0.0 #
dihedral_coeff @dihedral:X-oh-ss-X fourier 1 2.4 2 0.0 #
dihedral_coeff @dihedral:X-oh-s4-X fourier 1 5.0 1 0.0 #
dihedral_coeff @dihedral:X-oh-sx-X fourier 1 5.0 1 0.0 #
dihedral_coeff @dihedral:X-oh-s6-X fourier 1 9.5 1 180.0 #
dihedral_coeff @dihedral:X-oh-sy-X fourier 1 9.5 1 180.0 #
dihedral_coeff @dihedral:X-os-os-X fourier 1 1.0 1 0.0 #
dihedral_coeff @dihedral:X-os-ss-X fourier 1 2.2 2 0.0 #
dihedral_coeff @dihedral:X-os-sh-X fourier 1 1.8 2 0.0 #
dihedral_coeff @dihedral:X-os-s4-X fourier 1 1.65 3 0.0 #
dihedral_coeff @dihedral:X-os-sx-X fourier 1 1.65 3 0.0 #
dihedral_coeff @dihedral:X-os-s6-X fourier 1 1.2 2 180.0 #
dihedral_coeff @dihedral:X-os-sy-X fourier 1 1.2 2 180.0 #
dihedral_coeff @dihedral:X-os-p2-X fourier 2 3.0 2 180.0 2.0 1 180.0 #
dihedral_coeff @dihedral:X-os-pe-X fourier 2 3.0 2 180.0 2.0 1 180.0 #
dihedral_coeff @dihedral:X-os-pf-X fourier 2 3.0 2 180.0 2.0 1 180.0 #
dihedral_coeff @dihedral:X-os-p3-X fourier 1 2.2 2 0.0 #
dihedral_coeff @dihedral:X-os-p4-X fourier 1 1.05 2 180.0 #
dihedral_coeff @dihedral:X-os-px-X fourier 1 1.05 2 180.0 #
dihedral_coeff @dihedral:X-os-p5-X fourier 1 0.8 2 0.0 #
dihedral_coeff @dihedral:X-os-py-X fourier 1 0.8 2 0.0 #
dihedral_coeff @dihedral:X-p2-p2-X fourier 1 6.6 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-p2-pe-X fourier 1 6.6 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-p2-pf-X fourier 1 6.6 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-p2-pc-X fourier 1 6.6 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-p2-pd-X fourier 1 6.6 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-pe-pe-X fourier 1 1.2 2 180.0 # single bond
dihedral_coeff @dihedral:X-pf-pf-X fourier 1 1.2 2 180.0 # single bond
dihedral_coeff @dihedral:X-pc-pc-X fourier 1 7.2 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-pd-pd-X fourier 1 7.2 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-pc-pd-X fourier 1 7.2 2 180.0 # estimated, intrpol.
dihedral_coeff @dihedral:X-p2-p3-X fourier 1 1.2 1 0.0 #
dihedral_coeff @dihedral:X-pe-p3-X fourier 1 1.2 1 0.0 #
dihedral_coeff @dihedral:X-pf-p3-X fourier 1 1.2 1 0.0 #
dihedral_coeff @dihedral:X-p2-p4-X fourier 1 6.65 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-pe-px-X fourier 1 2.45 2 0.0 #
dihedral_coeff @dihedral:X-pf-px-X fourier 1 2.45 2 0.0 #
dihedral_coeff @dihedral:X-p2-p5-X fourier 1 6.66666666667 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-pe-py-X fourier 1 1.9 1 0.0 #
dihedral_coeff @dihedral:X-pf-py-X fourier 1 1.9 1 0.0 #
dihedral_coeff @dihedral:X-p2-sh-X fourier 1 1.4 2 180.0 #
dihedral_coeff @dihedral:X-pe-sh-X fourier 1 1.4 2 180.0 #
dihedral_coeff @dihedral:X-pf-sh-X fourier 1 1.4 2 180.0 #
dihedral_coeff @dihedral:X-p2-ss-X fourier 1 1.4 2 180.0 #
dihedral_coeff @dihedral:X-pe-ss-X fourier 1 1.4 2 180.0 #
dihedral_coeff @dihedral:X-pf-ss-X fourier 1 1.4 2 180.0 #
dihedral_coeff @dihedral:X-p2-s4-X fourier 1 6.65 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-pe-sx-X fourier 1 1.5 2 0.0 #
dihedral_coeff @dihedral:X-pf-sx-X fourier 1 1.5 2 0.0 #
dihedral_coeff @dihedral:X-p2-s6-X fourier 1 6.66666666667 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-pe-sy-X fourier 1 0.4 3 180.0 #
dihedral_coeff @dihedral:X-pf-sy-X fourier 1 0.4 3 180.0 #
dihedral_coeff @dihedral:X-p3-p3-X fourier 1 0.5 3 0.0 #
dihedral_coeff @dihedral:X-p3-p4-X fourier 1 0.9 1 0.0 #
dihedral_coeff @dihedral:X-p3-px-X fourier 1 0.9 1 0.0 #
dihedral_coeff @dihedral:X-p3-p5-X fourier 1 1.83333333333 2 180.0 #
dihedral_coeff @dihedral:X-p3-py-X fourier 1 1.83333333333 2 180.0 #
dihedral_coeff @dihedral:X-p3-sh-X fourier 1 4.6 2 0.0 #
dihedral_coeff @dihedral:X-p3-ss-X fourier 1 1.15 3 0.0 #
dihedral_coeff @dihedral:X-p3-s4-X fourier 1 3.85 2 0.0 #
dihedral_coeff @dihedral:X-p3-sx-X fourier 1 3.85 2 0.0 #
dihedral_coeff @dihedral:X-p3-s6-X fourier 1 0.266666666667 3 0.0 #
dihedral_coeff @dihedral:X-p3-sy-X fourier 1 0.266666666667 3 0.0 #
dihedral_coeff @dihedral:X-p4-p4-X fourier 1 6.65 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-px-px-X fourier 1 1.45 2 180.0 #
dihedral_coeff @dihedral:X-p4-p5-X fourier 1 6.65 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-px-py-X fourier 1 0.316666666667 2 180.0 #
dihedral_coeff @dihedral:X-p4-s4-X fourier 1 6.65 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-px-sx-X fourier 1 0.85 1 0.0 #
dihedral_coeff @dihedral:X-p4-s6-X fourier 1 6.65 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-px-sy-X fourier 1 0.116666666667 3 0.0 #
dihedral_coeff @dihedral:X-p4-sh-X fourier 1 0.25 1 180.0 #
dihedral_coeff @dihedral:X-px-sh-X fourier 1 0.25 1 180.0 #
dihedral_coeff @dihedral:X-p4-ss-X fourier 1 0.6 2 180.0 #
dihedral_coeff @dihedral:X-px-ss-X fourier 1 0.6 2 180.0 #
dihedral_coeff @dihedral:X-p5-p5-X fourier 1 6.66666666667 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-py-py-X fourier 1 0.6 2 0.0 #
dihedral_coeff @dihedral:X-p5-sh-X fourier 1 0.3 3 0.0 #
dihedral_coeff @dihedral:X-py-sh-X fourier 1 0.3 3 0.0 #
dihedral_coeff @dihedral:X-p5-ss-X fourier 1 3.8 2 180.0 #
dihedral_coeff @dihedral:X-py-ss-X fourier 1 3.8 2 180.0 #
dihedral_coeff @dihedral:X-p5-s4-X fourier 1 6.66666666667 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-py-sx-X fourier 1 0.266666666667 3 0.0 #
dihedral_coeff @dihedral:X-p5-s6-X fourier 1 6.66666666667 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-py-sy-X fourier 1 0.277777777778 3 0.0 #
dihedral_coeff @dihedral:X-sh-sh-X fourier 1 5.6 3 0.0 #
dihedral_coeff @dihedral:X-sh-ss-X fourier 1 5.3 3 0.0 #
dihedral_coeff @dihedral:X-sh-s4-X fourier 1 0.7 3 0.0 #
dihedral_coeff @dihedral:X-sh-sx-X fourier 1 0.7 3 0.0 #
dihedral_coeff @dihedral:X-sh-s6-X fourier 1 4.66666666667 2 180.0 #
dihedral_coeff @dihedral:X-sh-sy-X fourier 1 4.66666666667 2 180.0 #
dihedral_coeff @dihedral:X-ss-ss-X fourier 1 0.0 3 0.0 #
dihedral_coeff @dihedral:X-ss-s4-X fourier 1 0.3 3 0.0 #
dihedral_coeff @dihedral:X-ss-sx-X fourier 1 0.3 3 0.0 #
dihedral_coeff @dihedral:X-ss-s6-X fourier 1 3.06666666667 2 180.0 #
dihedral_coeff @dihedral:X-ss-sy-X fourier 1 3.06666666667 2 180.0 #
dihedral_coeff @dihedral:X-s4-s4-X fourier 1 6.65 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-sx-sx-X fourier 1 0.625 3 0.0 #
dihedral_coeff @dihedral:X-s4-s6-X fourier 1 6.66666666667 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-sx-sy-X fourier 1 4.33333333333 2 180.0 #
dihedral_coeff @dihedral:X-s6-s6-X fourier 1 6.66666666667 2 180.0 # estimated !!!
dihedral_coeff @dihedral:X-sy-sy-X fourier 1 0.155555555556 2 180.0 #
dihedral_coeff @dihedral:X-cf-pe-X fourier 1 6.65 2 180.0 # NEW
dihedral_coeff @dihedral:X-nd-os-X fourier 1 4.8 2 180.0 # NEW
dihedral_coeff @dihedral:X-nd-ss-X fourier 1 4.8 2 180.0 # NEW
dihedral_coeff @dihedral:X-nf-pe-X fourier 1 5.4 2 180.0 # NEW
dihedral_coeff @dihedral:c3-c-sh-hs fourier 2 2.25 2 180.0 1.3 1 180.0 #
dihedral_coeff @dihedral:c2-c2-ss-c3 fourier 2 1.1 2 180.0 0.7 3 180.0 #
dihedral_coeff @dihedral:c2-c2-n-c fourier 2 0.65 2 180.0 1.2 1 180.0 #
dihedral_coeff @dihedral:c-n-p2-c2 fourier 2 1.0 2 180.0 1.9 1 180.0 #
dihedral_coeff @dihedral:n-c3-c-n fourier 2 1.7 1 180.0 2.0 2 180.0 #
dihedral_coeff @dihedral:c-n-c3-c fourier 2 0.85 2 180.0 0.8 1 0.0 #
dihedral_coeff @dihedral:c3-c3-n-c fourier 3 0.5 4 180.0 0.15 3 180.0 0.53 1 0.0 # phi,psi,parm94
dihedral_coeff @dihedral:c3-c3-c-n fourier 2 0.1 4 0.0 0.07 2 0.0 # phi,psi,parm94
dihedral_coeff @dihedral:c2-ne-p5-o fourier 2 0.0 3 0.0 2.3 1 0.0 #
dihedral_coeff @dihedral:c2-nf-p5-o fourier 2 0.0 3 0.0 2.3 1 0.0 #
dihedral_coeff @dihedral:ce-ne-p5-o fourier 2 0.0 3 0.0 2.3 1 0.0 #
dihedral_coeff @dihedral:ce-nf-p5-o fourier 2 0.0 3 0.0 2.3 1 0.0 #
dihedral_coeff @dihedral:cf-ne-p5-o fourier 2 0.0 3 0.0 2.3 1 0.0 #
dihedral_coeff @dihedral:cf-nf-p5-o fourier 2 0.0 3 0.0 2.3 1 0.0 #
dihedral_coeff @dihedral:hn-n-c-o fourier 2 2.5 2 180.0 2.0 1 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:c3-ss-ss-c3 fourier 2 3.5 2 0.0 0.6 3 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:c3-n3-nh-ca fourier 2 1.9 2 0.0 1.9 3 0.0 #
dihedral_coeff @dihedral:c3-n3-p5-o fourier 2 3.0 2 180.0 2.3 3 0.0 #
dihedral_coeff @dihedral:ca-nh-oh-ho fourier 2 1.2 1 0.0 1.5 2 0.0 #
dihedral_coeff @dihedral:oh-p5-os-c3 fourier 2 0.25 3 0.0 1.2 2 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:os-p5-os-c3 fourier 2 0.25 3 0.0 1.2 2 0.0 # JCC,7,(1986),230
dihedral_coeff @dihedral:h1-c3-c-o fourier 2 0.8 1 0.0 0.08 3 180.0 # Junmei et al, 1999
dihedral_coeff @dihedral:hc-c3-c-o fourier 2 0.8 1 0.0 0.08 3 180.0 # Junmei et al, 1999
dihedral_coeff @dihedral:hc-c3-c3-hc fourier 1 0.15 3 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:hc-c3-c3-c3 fourier 1 0.16 3 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:hc-c3-c2-c2 fourier 2 0.38 3 180.0 1.15 1 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:ho-oh-c3-c3 fourier 2 0.16 3 0.0 0.25 1 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:ho-oh-c-o fourier 2 2.3 2 180.0 1.9 1 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:c2-c2-c-o fourier 2 2.175 2 180.0 0.3 3 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:c3-c2-c2-c3 fourier 2 6.65 2 180.0 1.9 1 180.0 # Junmei et al, 1999
dihedral_coeff @dihedral:c3-c3-c3-c3 fourier 3 0.18 3 0.0 0.25 2 180.0 0.2 1 180.0 # Junmei et al, 1999
dihedral_coeff @dihedral:c3-c3-n3-c3 fourier 2 0.3 3 0.0 0.48 2 180.0 # Junmei et al, 1999
dihedral_coeff @dihedral:c3-c3-os-c3 fourier 2 0.383 3 0.0 0.1 2 180.0 #
dihedral_coeff @dihedral:c3-c3-os-c fourier 2 0.383 3 0.0 0.8 1 180.0 # Junmei et al, 1999
dihedral_coeff @dihedral:c3-os-c3-os fourier 3 0.1 3 0.0 0.85 2 180.0 1.35 1 180.0 # Junmei et al, 1999
dihedral_coeff @dihedral:c3-os-c3-na fourier 2 0.383 3 0.0 0.65 2 0.0 # parm98.dat, TC,PC,PAK
dihedral_coeff @dihedral:o-c-os-c3 fourier 2 2.7 2 180.0 1.4 1 180.0 # Junmei et al, 1999
dihedral_coeff @dihedral:os-c3-na-c2 fourier 2 0.0 2 0.0 2.5 1 0.0 # parm98, TC,PC,PAK
dihedral_coeff @dihedral:os-c3-c3-os fourier 2 0.144 3 0.0 1.175 2 0.0 # parm98, TC,PC,PAK
dihedral_coeff @dihedral:os-c3-c3-oh fourier 2 0.144 3 0.0 1.175 2 0.0 # parm98, TC,PC,PAK
dihedral_coeff @dihedral:oh-c3-c3-oh fourier 2 0.144 3 0.0 1.175 2 0.0 # parm98, TC,PC,PAK
dihedral_coeff @dihedral:f-c3-c3-f fourier 2 0.0 3 0.0 1.2 1 180.0 # Junmei et al, 1999
dihedral_coeff @dihedral:cl-c3-c3-cl fourier 2 0.0 3 0.0 0.45 1 180.0 # Junmei et al, 1999
dihedral_coeff @dihedral:br-c3-c3-br fourier 2 0.0 3 0.0 0.0 1 180.0 # Junmei et al, 1999
dihedral_coeff @dihedral:h1-c3-c3-os fourier 2 0.0 3 0.0 0.25 1 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:h1-c3-c3-oh fourier 2 0.0 3 0.0 0.25 1 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:h1-c3-c3-f fourier 2 0.0 3 0.0 0.19 1 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:h1-c3-c3-cl fourier 2 0.0 3 0.0 0.25 1 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:h1-c3-c3-br fourier 2 0.0 3 0.0 0.55 1 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:hc-c3-c3-os fourier 2 0.0 3 0.0 0.25 1 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:hc-c3-c3-oh fourier 2 0.0 3 0.0 0.25 1 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:hc-c3-c3-f fourier 2 0.0 3 0.0 0.19 1 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:hc-c3-c3-cl fourier 2 0.0 3 0.0 0.25 1 0.0 # Junmei et al, 1999
dihedral_coeff @dihedral:hc-c3-c3-br fourier 2 0.0 3 0.0 0.55 1 0.0 # Junmei et al, 1999
} # (end of dihedral_coeffs)
write_once("Data Dihedrals By Type") {
@dihedral:X-c-c-X @atom:* @atom:c @atom:c @atom:*
@dihedral:X-c-c1-X @atom:* @atom:c @atom:c1 @atom:*
@dihedral:X-c-cg-X @atom:* @atom:c @atom:cg @atom:*
@dihedral:X-c-ch-X @atom:* @atom:c @atom:ch @atom:*
@dihedral:X-c-c2-X @atom:* @atom:c @atom:c2 @atom:*
@dihedral:X-c-cu-X @atom:* @atom:c @atom:cu @atom:*
@dihedral:X-c-cv-X @atom:* @atom:c @atom:cv @atom:*
@dihedral:X-c-ce-X @atom:* @atom:c @atom:ce @atom:*
@dihedral:X-c-cf-X @atom:* @atom:c @atom:cf @atom:*
@dihedral:X-c-c3-X @atom:* @atom:c @atom:c3 @atom:*
@dihedral:X-c-cx-X @atom:* @atom:c @atom:cx @atom:*
@dihedral:X-c-cy-X @atom:* @atom:c @atom:cy @atom:*
@dihedral:X-c-ca-X @atom:* @atom:c @atom:ca @atom:*
@dihedral:X-c-cc-X @atom:* @atom:c @atom:cc @atom:*
@dihedral:X-c-cd-X @atom:* @atom:c @atom:cd @atom:*
@dihedral:X-c-n-X @atom:* @atom:c @atom:n @atom:*
@dihedral:X-c-n2-X @atom:* @atom:c @atom:n2 @atom:*
@dihedral:X-c-nc-X @atom:* @atom:c @atom:nc @atom:*
@dihedral:X-c-nd-X @atom:* @atom:c @atom:nd @atom:*
@dihedral:X-c-ne-X @atom:* @atom:c @atom:ne @atom:*
@dihedral:X-c-nf-X @atom:* @atom:c @atom:nf @atom:*
@dihedral:X-c-na-X @atom:* @atom:c @atom:na @atom:*
@dihedral:X-c-na-X @atom:* @atom:c @atom:na @atom:*
@dihedral:X-c-no-X @atom:* @atom:c @atom:no @atom:*
@dihedral:X-c-oh-X @atom:* @atom:c @atom:oh @atom:*
@dihedral:X-c-os-X @atom:* @atom:c @atom:os @atom:*
@dihedral:X-c-p2-X @atom:* @atom:c @atom:p2 @atom:*
@dihedral:X-c-pc-X @atom:* @atom:c @atom:pc @atom:*
@dihedral:X-c-pd-X @atom:* @atom:c @atom:pd @atom:*
@dihedral:X-c-pe-X @atom:* @atom:c @atom:pe @atom:*
@dihedral:X-c-pf-X @atom:* @atom:c @atom:pf @atom:*
@dihedral:X-c-p3-X @atom:* @atom:c @atom:p3 @atom:*
@dihedral:X-c-p4-X @atom:* @atom:c @atom:p4 @atom:*
@dihedral:X-c-px-X @atom:* @atom:c @atom:px @atom:*
@dihedral:X-c-p5-X @atom:* @atom:c @atom:p5 @atom:*
@dihedral:X-c-py-X @atom:* @atom:c @atom:py @atom:*
@dihedral:X-c-sh-X @atom:* @atom:c @atom:sh @atom:*
@dihedral:X-c-ss-X @atom:* @atom:c @atom:ss @atom:*
@dihedral:X-c-s4-X @atom:* @atom:c @atom:s4 @atom:*
@dihedral:X-c-sx-X @atom:* @atom:c @atom:sx @atom:*
@dihedral:X-c-s6-X @atom:* @atom:c @atom:s6 @atom:*
@dihedral:X-c-sy-X @atom:* @atom:c @atom:sy @atom:*
@dihedral:X-c1-c1-X @atom:* @atom:c1 @atom:c1 @atom:*
@dihedral:X-c1-cg-X @atom:* @atom:c1 @atom:cg @atom:*
@dihedral:X-c1-ch-X @atom:* @atom:c1 @atom:ch @atom:*
@dihedral:X-cg-cg-X @atom:* @atom:cg @atom:cg @atom:*
@dihedral:X-ch-ch-X @atom:* @atom:ch @atom:ch @atom:*
@dihedral:X-cg-ch-X @atom:* @atom:cg @atom:ch @atom:*
@dihedral:X-c1-c2-X @atom:* @atom:c1 @atom:c2 @atom:*
@dihedral:X-c1-c3-X @atom:* @atom:c1 @atom:c3 @atom:*
@dihedral:X-c1-ca-X @atom:* @atom:c1 @atom:ca @atom:*
@dihedral:X-c1-cc-X @atom:* @atom:c1 @atom:cc @atom:*
@dihedral:X-c1-cd-X @atom:* @atom:c1 @atom:cd @atom:*
@dihedral:X-c1-ce-X @atom:* @atom:c1 @atom:ce @atom:*
@dihedral:X-c1-cf-X @atom:* @atom:c1 @atom:cf @atom:*
@dihedral:X-c1-cu-X @atom:* @atom:c1 @atom:cu @atom:*
@dihedral:X-c1-cv-X @atom:* @atom:c1 @atom:cv @atom:*
@dihedral:X-c1-cx-X @atom:* @atom:c1 @atom:cx @atom:*
@dihedral:X-c1-cy-X @atom:* @atom:c1 @atom:cy @atom:*
@dihedral:X-c1-n-X @atom:* @atom:c1 @atom:n @atom:*
@dihedral:X-c1-n2-X @atom:* @atom:c1 @atom:n2 @atom:*
@dihedral:X-c1-n3-X @atom:* @atom:c1 @atom:n3 @atom:*
@dihedral:X-c1-n4-X @atom:* @atom:c1 @atom:n4 @atom:*
@dihedral:X-c1-na-X @atom:* @atom:c1 @atom:na @atom:*
@dihedral:X-c1-nb-X @atom:* @atom:c1 @atom:nb @atom:*
@dihedral:X-c1-nc-X @atom:* @atom:c1 @atom:nc @atom:*
@dihedral:X-c1-nd-X @atom:* @atom:c1 @atom:nd @atom:*
@dihedral:X-c1-ne-X @atom:* @atom:c1 @atom:ne @atom:*
@dihedral:X-c1-nf-X @atom:* @atom:c1 @atom:nf @atom:*
@dihedral:X-c1-nh-X @atom:* @atom:c1 @atom:nh @atom:*
@dihedral:X-c1-no-X @atom:* @atom:c1 @atom:no @atom:*
@dihedral:X-c1-oh-X @atom:* @atom:c1 @atom:oh @atom:*
@dihedral:X-c1-os-X @atom:* @atom:c1 @atom:os @atom:*
@dihedral:X-c1-p2-X @atom:* @atom:c1 @atom:p2 @atom:*
@dihedral:X-c1-pb-X @atom:* @atom:c1 @atom:pb @atom:*
@dihedral:X-c1-pc-X @atom:* @atom:c1 @atom:pc @atom:*
@dihedral:X-c1-pd-X @atom:* @atom:c1 @atom:pd @atom:*
@dihedral:X-c1-pe-X @atom:* @atom:c1 @atom:pe @atom:*
@dihedral:X-c1-pf-X @atom:* @atom:c1 @atom:pf @atom:*
@dihedral:X-c1-p3-X @atom:* @atom:c1 @atom:p3 @atom:*
@dihedral:X-c1-p4-X @atom:* @atom:c1 @atom:p4 @atom:*
@dihedral:X-c1-px-X @atom:* @atom:c1 @atom:px @atom:*
@dihedral:X-c1-p5-X @atom:* @atom:c1 @atom:p5 @atom:*
@dihedral:X-c1-py-X @atom:* @atom:c1 @atom:py @atom:*
@dihedral:X-c1-s2-X @atom:* @atom:c1 @atom:s2 @atom:*
@dihedral:X-c1-sh-X @atom:* @atom:c1 @atom:sh @atom:*
@dihedral:X-c1-ss-X @atom:* @atom:c1 @atom:ss @atom:*
@dihedral:X-c1-s4-X @atom:* @atom:c1 @atom:s4 @atom:*
@dihedral:X-c1-sx-X @atom:* @atom:c1 @atom:sx @atom:*
@dihedral:X-c1-s6-X @atom:* @atom:c1 @atom:s6 @atom:*
@dihedral:X-c1-sy-X @atom:* @atom:c1 @atom:sy @atom:*
@dihedral:X-c2-c2-X @atom:* @atom:c2 @atom:c2 @atom:*
@dihedral:X-c2-ce-X @atom:* @atom:c2 @atom:ce @atom:*
@dihedral:X-c2-cf-X @atom:* @atom:c2 @atom:cf @atom:*
@dihedral:X-ce-cf-X @atom:* @atom:ce @atom:cf @atom:*
@dihedral:X-ce-ce-X @atom:* @atom:ce @atom:ce @atom:*
@dihedral:X-cf-cf-X @atom:* @atom:cf @atom:cf @atom:*
@dihedral:X-cc-cd-X @atom:* @atom:cc @atom:cd @atom:*
@dihedral:X-cc-cc-X @atom:* @atom:cc @atom:cc @atom:*
@dihedral:X-cd-cd-X @atom:* @atom:cd @atom:cd @atom:*
@dihedral:X-c2-c3-X @atom:* @atom:c2 @atom:c3 @atom:*
@dihedral:X-c2-ca-X @atom:* @atom:c2 @atom:ca @atom:*
@dihedral:X-c2-n-X @atom:* @atom:c2 @atom:n @atom:*
@dihedral:X-c2-n2-X @atom:* @atom:c2 @atom:n2 @atom:*
@dihedral:X-c2-ne-X @atom:* @atom:c2 @atom:ne @atom:*
@dihedral:X-c2-nf-X @atom:* @atom:c2 @atom:nf @atom:*
@dihedral:X-ce-ne-X @atom:* @atom:ce @atom:ne @atom:*
@dihedral:X-cf-nf-X @atom:* @atom:cf @atom:nf @atom:*
@dihedral:X-c2-nc-X @atom:* @atom:c2 @atom:nc @atom:*
@dihedral:X-c2-nd-X @atom:* @atom:c2 @atom:nd @atom:*
@dihedral:X-cc-nd-X @atom:* @atom:cc @atom:nd @atom:*
@dihedral:X-cd-nc-X @atom:* @atom:cd @atom:nc @atom:*
@dihedral:X-cc-nc-X @atom:* @atom:cc @atom:nc @atom:*
@dihedral:X-cd-nd-X @atom:* @atom:cd @atom:nd @atom:*
@dihedral:X-c2-n3-X @atom:* @atom:c2 @atom:n3 @atom:*
@dihedral:X-c2-n4-X @atom:* @atom:c2 @atom:n4 @atom:*
@dihedral:X-c2-na-X @atom:* @atom:c2 @atom:na @atom:*
@dihedral:X-cc-na-X @atom:* @atom:cc @atom:na @atom:*
@dihedral:X-cd-na-X @atom:* @atom:cd @atom:na @atom:*
@dihedral:X-c2-nh-X @atom:* @atom:c2 @atom:nh @atom:*
@dihedral:X-c2-no-X @atom:* @atom:c2 @atom:no @atom:*
@dihedral:X-c2-oh-X @atom:* @atom:c2 @atom:oh @atom:*
@dihedral:X-c2-os-X @atom:* @atom:c2 @atom:os @atom:*
@dihedral:X-c2-p2-X @atom:* @atom:c2 @atom:p2 @atom:*
@dihedral:X-c2-pe-X @atom:* @atom:c2 @atom:pe @atom:*
@dihedral:X-c2-pf-X @atom:* @atom:c2 @atom:pf @atom:*
@dihedral:X-ce-pf-X @atom:* @atom:ce @atom:pf @atom:*
@dihedral:X-ce-pe-X @atom:* @atom:ce @atom:pe @atom:*
@dihedral:X-cf-pf-X @atom:* @atom:cf @atom:pf @atom:*
@dihedral:X-c2-pc-X @atom:* @atom:c2 @atom:pc @atom:*
@dihedral:X-c2-pd-X @atom:* @atom:c2 @atom:pd @atom:*
@dihedral:X-cc-pc-X @atom:* @atom:cc @atom:pc @atom:*
@dihedral:X-cc-pd-X @atom:* @atom:cc @atom:pd @atom:*
@dihedral:X-cd-pc-X @atom:* @atom:cd @atom:pc @atom:*
@dihedral:X-cd-pd-X @atom:* @atom:cd @atom:pd @atom:*
@dihedral:X-c2-p3-X @atom:* @atom:c2 @atom:p3 @atom:*
@dihedral:X-c2-p4-X @atom:* @atom:c2 @atom:p4 @atom:*
@dihedral:X-ce-p4-X @atom:* @atom:ce @atom:p4 @atom:*
@dihedral:X-cf-p4-X @atom:* @atom:cf @atom:p4 @atom:*
@dihedral:X-c2-px-X @atom:* @atom:c2 @atom:px @atom:*
@dihedral:X-ce-px-X @atom:* @atom:ce @atom:px @atom:*
@dihedral:X-cf-px-X @atom:* @atom:cf @atom:px @atom:*
@dihedral:X-c2-p5-X @atom:* @atom:c2 @atom:p5 @atom:*
@dihedral:X-ce-p5-X @atom:* @atom:ce @atom:p5 @atom:*
@dihedral:X-cf-p5-X @atom:* @atom:cf @atom:p5 @atom:*
@dihedral:X-c2-py-X @atom:* @atom:c2 @atom:py @atom:*
@dihedral:X-ce-py-X @atom:* @atom:ce @atom:py @atom:*
@dihedral:X-cf-py-X @atom:* @atom:cf @atom:py @atom:*
@dihedral:X-c2-sh-X @atom:* @atom:c2 @atom:sh @atom:*
@dihedral:X-c2-ss-X @atom:* @atom:c2 @atom:ss @atom:*
@dihedral:X-c2-s4-X @atom:* @atom:c2 @atom:s4 @atom:*
@dihedral:X-ce-s4-X @atom:* @atom:ce @atom:s4 @atom:*
@dihedral:X-cf-s4-X @atom:* @atom:cf @atom:s4 @atom:*
@dihedral:X-c2-sx-X @atom:* @atom:c2 @atom:sx @atom:*
@dihedral:X-ce-sx-X @atom:* @atom:ce @atom:sx @atom:*
@dihedral:X-cf-sx-X @atom:* @atom:cf @atom:sx @atom:*
@dihedral:X-c2-s6-X @atom:* @atom:c2 @atom:s6 @atom:*
@dihedral:X-ce-s6-X @atom:* @atom:ce @atom:s6 @atom:*
@dihedral:X-cf-s6-X @atom:* @atom:cf @atom:s6 @atom:*
@dihedral:X-c2-sy-X @atom:* @atom:c2 @atom:sy @atom:*
@dihedral:X-ce-sy-X @atom:* @atom:ce @atom:sy @atom:*
@dihedral:X-cf-sy-X @atom:* @atom:cf @atom:sy @atom:*
@dihedral:X-c3-c3-X @atom:* @atom:c3 @atom:c3 @atom:*
@dihedral:X-cx-cx-X @atom:* @atom:cx @atom:cx @atom:*
@dihedral:X-cy-cy-X @atom:* @atom:cy @atom:cy @atom:*
@dihedral:X-c3-ca-X @atom:* @atom:c3 @atom:ca @atom:*
@dihedral:X-c3-n-X @atom:* @atom:c3 @atom:n @atom:*
@dihedral:X-cx-n-X @atom:* @atom:cx @atom:n @atom:*
@dihedral:X-cy-n-X @atom:* @atom:cy @atom:n @atom:*
@dihedral:X-c3-n2-X @atom:* @atom:c3 @atom:n2 @atom:*
@dihedral:X-c3-ne-X @atom:* @atom:c3 @atom:ne @atom:*
@dihedral:X-c3-nf-X @atom:* @atom:c3 @atom:nf @atom:*
@dihedral:X-c3-n3-X @atom:* @atom:c3 @atom:n3 @atom:*
@dihedral:X-c3-n4-X @atom:* @atom:c3 @atom:n4 @atom:*
@dihedral:X-c3-na-X @atom:* @atom:c3 @atom:na @atom:*
@dihedral:X-c3-nh-X @atom:* @atom:c3 @atom:nh @atom:*
@dihedral:X-c3-no-X @atom:* @atom:c3 @atom:no @atom:*
@dihedral:X-c3-oh-X @atom:* @atom:c3 @atom:oh @atom:*
@dihedral:X-c3-os-X @atom:* @atom:c3 @atom:os @atom:*
@dihedral:X-c3-p2-X @atom:* @atom:c3 @atom:p2 @atom:*
@dihedral:X-c3-pe-X @atom:* @atom:c3 @atom:pe @atom:*
@dihedral:X-c3-pf-X @atom:* @atom:c3 @atom:pf @atom:*
@dihedral:X-c3-p3-X @atom:* @atom:c3 @atom:p3 @atom:*
@dihedral:X-c3-p4-X @atom:* @atom:c3 @atom:p4 @atom:*
@dihedral:X-c3-px-X @atom:* @atom:c3 @atom:px @atom:*
@dihedral:X-c3-p5-X @atom:* @atom:c3 @atom:p5 @atom:*
@dihedral:X-c3-py-X @atom:* @atom:c3 @atom:py @atom:*
@dihedral:X-c3-sh-X @atom:* @atom:c3 @atom:sh @atom:*
@dihedral:X-c3-ss-X @atom:* @atom:c3 @atom:ss @atom:*
@dihedral:X-c3-s4-X @atom:* @atom:c3 @atom:s4 @atom:*
@dihedral:X-c3-sx-X @atom:* @atom:c3 @atom:sx @atom:*
@dihedral:X-c3-s6-X @atom:* @atom:c3 @atom:s6 @atom:*
@dihedral:X-c3-sy-X @atom:* @atom:c3 @atom:sy @atom:*
@dihedral:X-c3-cc-X @atom:* @atom:c3 @atom:cc @atom:*
@dihedral:X-c3-cd-X @atom:* @atom:c3 @atom:cd @atom:*
@dihedral:X-ca-ca-X @atom:* @atom:ca @atom:ca @atom:*
@dihedral:X-ca-cp-X @atom:* @atom:ca @atom:cp @atom:*
@dihedral:X-ca-cq-X @atom:* @atom:ca @atom:cq @atom:*
@dihedral:X-cp-cp-X @atom:* @atom:cp @atom:cp @atom:*
@dihedral:X-cq-cq-X @atom:* @atom:cq @atom:cq @atom:*
@dihedral:X-ca-n-X @atom:* @atom:ca @atom:n @atom:*
@dihedral:X-ca-n2-X @atom:* @atom:ca @atom:n2 @atom:*
@dihedral:X-ca-ne-X @atom:* @atom:ca @atom:ne @atom:*
@dihedral:X-ca-nf-X @atom:* @atom:ca @atom:nf @atom:*
@dihedral:X-ca-n4-X @atom:* @atom:ca @atom:n4 @atom:*
@dihedral:X-ca-na-X @atom:* @atom:ca @atom:na @atom:*
@dihedral:X-ca-nb-X @atom:* @atom:ca @atom:nb @atom:*
@dihedral:X-ca-nc-X @atom:* @atom:ca @atom:nc @atom:*
@dihedral:X-ca-nd-X @atom:* @atom:ca @atom:nd @atom:*
@dihedral:X-ca-nh-X @atom:* @atom:ca @atom:nh @atom:*
@dihedral:X-cc-nh-X @atom:* @atom:cc @atom:nh @atom:*
@dihedral:X-cd-nh-X @atom:* @atom:cd @atom:nh @atom:*
@dihedral:X-ca-no-X @atom:* @atom:ca @atom:no @atom:*
@dihedral:X-ca-oh-X @atom:* @atom:ca @atom:oh @atom:*
@dihedral:X-ca-os-X @atom:* @atom:ca @atom:os @atom:*
@dihedral:X-ca-p2-X @atom:* @atom:ca @atom:p2 @atom:*
@dihedral:X-ca-pe-X @atom:* @atom:ca @atom:pe @atom:*
@dihedral:X-ca-pf-X @atom:* @atom:ca @atom:pf @atom:*
@dihedral:X-ca-pc-X @atom:* @atom:ca @atom:pc @atom:*
@dihedral:X-ca-pd-X @atom:* @atom:ca @atom:pd @atom:*
@dihedral:X-ca-p3-X @atom:* @atom:ca @atom:p3 @atom:*
@dihedral:X-ca-p4-X @atom:* @atom:ca @atom:p4 @atom:*
@dihedral:X-ca-px-X @atom:* @atom:ca @atom:px @atom:*
@dihedral:X-ca-p5-X @atom:* @atom:ca @atom:p5 @atom:*
@dihedral:X-ca-py-X @atom:* @atom:ca @atom:py @atom:*
@dihedral:X-ca-sh-X @atom:* @atom:ca @atom:sh @atom:*
@dihedral:X-ca-ss-X @atom:* @atom:ca @atom:ss @atom:*
@dihedral:X-ca-s4-X @atom:* @atom:ca @atom:s4 @atom:*
@dihedral:X-ca-sx-X @atom:* @atom:ca @atom:sx @atom:*
@dihedral:X-ca-s6-X @atom:* @atom:ca @atom:s6 @atom:*
@dihedral:X-ca-sy-X @atom:* @atom:ca @atom:sy @atom:*
@dihedral:X-n-cc-X @atom:* @atom:n @atom:cc @atom:*
@dihedral:X-n-cd-X @atom:* @atom:n @atom:cd @atom:*
@dihedral:X-n-n-X @atom:* @atom:n @atom:n @atom:*
@dihedral:X-n-n2-X @atom:* @atom:n @atom:n2 @atom:*
@dihedral:X-n-ne-X @atom:* @atom:n @atom:ne @atom:*
@dihedral:X-n-nf-X @atom:* @atom:n @atom:nf @atom:*
@dihedral:X-n-n3-X @atom:* @atom:n @atom:n3 @atom:*
@dihedral:X-n-n4-X @atom:* @atom:n @atom:n4 @atom:*
@dihedral:X-n-na-X @atom:* @atom:n @atom:na @atom:*
@dihedral:X-n-nc-X @atom:* @atom:n @atom:nc @atom:*
@dihedral:X-n-nd-X @atom:* @atom:n @atom:nd @atom:*
@dihedral:X-n-nh-X @atom:* @atom:n @atom:nh @atom:*
@dihedral:X-n-no-X @atom:* @atom:n @atom:no @atom:*
@dihedral:X-n-oh-X @atom:* @atom:n @atom:oh @atom:*
@dihedral:X-n-os-X @atom:* @atom:n @atom:os @atom:*
@dihedral:X-n-p2-X @atom:* @atom:n @atom:p2 @atom:*
@dihedral:X-n-pe-X @atom:* @atom:n @atom:pe @atom:*
@dihedral:X-n-pf-X @atom:* @atom:n @atom:pf @atom:*
@dihedral:X-n-pc-X @atom:* @atom:n @atom:pc @atom:*
@dihedral:X-n-pd-X @atom:* @atom:n @atom:pd @atom:*
@dihedral:X-n-p3-X @atom:* @atom:n @atom:p3 @atom:*
@dihedral:X-n-p4-X @atom:* @atom:n @atom:p4 @atom:*
@dihedral:X-n-px-X @atom:* @atom:n @atom:px @atom:*
@dihedral:X-n-p5-X @atom:* @atom:n @atom:p5 @atom:*
@dihedral:X-n-py-X @atom:* @atom:n @atom:py @atom:*
@dihedral:X-n-sh-X @atom:* @atom:n @atom:sh @atom:*
@dihedral:X-n-ss-X @atom:* @atom:n @atom:ss @atom:*
@dihedral:X-n-s4-X @atom:* @atom:n @atom:s4 @atom:*
@dihedral:X-n-sx-X @atom:* @atom:n @atom:sx @atom:*
@dihedral:X-n-s6-X @atom:* @atom:n @atom:s6 @atom:*
@dihedral:X-n-sy-X @atom:* @atom:n @atom:sy @atom:*
@dihedral:X-n1-c2-X @atom:* @atom:n1 @atom:c2 @atom:*
@dihedral:X-n1-c3-X @atom:* @atom:n1 @atom:c3 @atom:*
@dihedral:X-n1-ca-X @atom:* @atom:n1 @atom:ca @atom:*
@dihedral:X-n1-cc-X @atom:* @atom:n1 @atom:cc @atom:*
@dihedral:X-n1-cd-X @atom:* @atom:n1 @atom:cd @atom:*
@dihedral:X-n1-ce-X @atom:* @atom:n1 @atom:ce @atom:*
@dihedral:X-n1-cf-X @atom:* @atom:n1 @atom:cf @atom:*
@dihedral:X-n1-cu-X @atom:* @atom:n1 @atom:cu @atom:*
@dihedral:X-n1-cv-X @atom:* @atom:n1 @atom:cv @atom:*
@dihedral:X-n1-cx-X @atom:* @atom:n1 @atom:cx @atom:*
@dihedral:X-n1-cy-X @atom:* @atom:n1 @atom:cy @atom:*
@dihedral:X-n1-n-X @atom:* @atom:n1 @atom:n @atom:*
@dihedral:X-n1-n1-X @atom:* @atom:n1 @atom:n1 @atom:*
@dihedral:X-n1-n2-X @atom:* @atom:n1 @atom:n2 @atom:*
@dihedral:X-n1-n3-X @atom:* @atom:n1 @atom:n3 @atom:*
@dihedral:X-n1-n4-X @atom:* @atom:n1 @atom:n4 @atom:*
@dihedral:X-n1-na-X @atom:* @atom:n1 @atom:na @atom:*
@dihedral:X-n1-nb-X @atom:* @atom:n1 @atom:nb @atom:*
@dihedral:X-n1-nc-X @atom:* @atom:n1 @atom:nc @atom:*
@dihedral:X-n1-nd-X @atom:* @atom:n1 @atom:nd @atom:*
@dihedral:X-n1-ne-X @atom:* @atom:n1 @atom:ne @atom:*
@dihedral:X-n1-nf-X @atom:* @atom:n1 @atom:nf @atom:*
@dihedral:X-n1-nh-X @atom:* @atom:n1 @atom:nh @atom:*
@dihedral:X-n1-no-X @atom:* @atom:n1 @atom:no @atom:*
@dihedral:X-n1-oh-X @atom:* @atom:n1 @atom:oh @atom:*
@dihedral:X-n1-os-X @atom:* @atom:n1 @atom:os @atom:*
@dihedral:X-n1-p2-X @atom:* @atom:n1 @atom:p2 @atom:*
@dihedral:X-n1-pb-X @atom:* @atom:n1 @atom:pb @atom:*
@dihedral:X-n1-pc-X @atom:* @atom:n1 @atom:pc @atom:*
@dihedral:X-n1-pd-X @atom:* @atom:n1 @atom:pd @atom:*
@dihedral:X-n1-pe-X @atom:* @atom:n1 @atom:pe @atom:*
@dihedral:X-n1-pf-X @atom:* @atom:n1 @atom:pf @atom:*
@dihedral:X-n1-p3-X @atom:* @atom:n1 @atom:p3 @atom:*
@dihedral:X-n1-p4-X @atom:* @atom:n1 @atom:p4 @atom:*
@dihedral:X-n1-px-X @atom:* @atom:n1 @atom:px @atom:*
@dihedral:X-n1-p5-X @atom:* @atom:n1 @atom:p5 @atom:*
@dihedral:X-n1-py-X @atom:* @atom:n1 @atom:py @atom:*
@dihedral:X-n1-s2-X @atom:* @atom:n1 @atom:s2 @atom:*
@dihedral:X-n1-sh-X @atom:* @atom:n1 @atom:sh @atom:*
@dihedral:X-n1-ss-X @atom:* @atom:n1 @atom:ss @atom:*
@dihedral:X-n1-s4-X @atom:* @atom:n1 @atom:s4 @atom:*
@dihedral:X-n1-sx-X @atom:* @atom:n1 @atom:sx @atom:*
@dihedral:X-n1-s6-X @atom:* @atom:n1 @atom:s6 @atom:*
@dihedral:X-n1-sy-X @atom:* @atom:n1 @atom:sy @atom:*
@dihedral:X-n2-n2-X @atom:* @atom:n2 @atom:n2 @atom:*
@dihedral:X-n2-n2-X @atom:* @atom:n2 @atom:n2 @atom:*
@dihedral:X-n2-ne-X @atom:* @atom:n2 @atom:ne @atom:*
@dihedral:X-n2-ne-X @atom:* @atom:n2 @atom:ne @atom:*
@dihedral:X-n2-nf-X @atom:* @atom:n2 @atom:nf @atom:*
@dihedral:X-n2-nf-X @atom:* @atom:n2 @atom:nf @atom:*
@dihedral:X-ne-nf-X @atom:* @atom:ne @atom:nf @atom:*
@dihedral:X-ne-nf-X @atom:* @atom:ne @atom:nf @atom:*
@dihedral:X-ne-ne-X @atom:* @atom:ne @atom:ne @atom:*
@dihedral:X-nf-nf-X @atom:* @atom:nf @atom:nf @atom:*
@dihedral:X-nc-nc-X @atom:* @atom:nc @atom:nc @atom:*
@dihedral:X-nd-nd-X @atom:* @atom:nd @atom:nd @atom:*
@dihedral:X-nc-nd-X @atom:* @atom:nc @atom:nd @atom:*
@dihedral:X-n2-nc-X @atom:* @atom:n2 @atom:nc @atom:*
@dihedral:X-n2-nc-X @atom:* @atom:n2 @atom:nc @atom:*
@dihedral:X-n2-nd-X @atom:* @atom:n2 @atom:nd @atom:*
@dihedral:X-n2-nd-X @atom:* @atom:n2 @atom:nd @atom:*
@dihedral:X-n2-n3-X @atom:* @atom:n2 @atom:n3 @atom:*
@dihedral:X-ne-n3-X @atom:* @atom:ne @atom:n3 @atom:*
@dihedral:X-nf-n3-X @atom:* @atom:nf @atom:n3 @atom:*
@dihedral:X-n2-n4-X @atom:* @atom:n2 @atom:n4 @atom:*
@dihedral:X-ne-n4-X @atom:* @atom:ne @atom:n4 @atom:*
@dihedral:X-nf-n4-X @atom:* @atom:nf @atom:n4 @atom:*
@dihedral:X-n2-na-X @atom:* @atom:n2 @atom:na @atom:*
@dihedral:X-ne-na-X @atom:* @atom:ne @atom:na @atom:*
@dihedral:X-nf-na-X @atom:* @atom:nf @atom:na @atom:*
@dihedral:X-na-nc-X @atom:* @atom:na @atom:nc @atom:*
@dihedral:X-na-nd-X @atom:* @atom:na @atom:nd @atom:*
@dihedral:X-n2-nh-X @atom:* @atom:n2 @atom:nh @atom:*
@dihedral:X-ne-nh-X @atom:* @atom:ne @atom:nh @atom:*
@dihedral:X-nf-nh-X @atom:* @atom:nf @atom:nh @atom:*
@dihedral:X-n2-no-X @atom:* @atom:n2 @atom:no @atom:*
@dihedral:X-ne-no-X @atom:* @atom:ne @atom:no @atom:*
@dihedral:X-nf-no-X @atom:* @atom:nf @atom:no @atom:*
@dihedral:X-n2-oh-X @atom:* @atom:n2 @atom:oh @atom:*
@dihedral:X-ne-oh-X @atom:* @atom:ne @atom:oh @atom:*
@dihedral:X-nf-oh-X @atom:* @atom:nf @atom:oh @atom:*
@dihedral:X-n2-os-X @atom:* @atom:n2 @atom:os @atom:*
@dihedral:X-ne-os-X @atom:* @atom:ne @atom:os @atom:*
@dihedral:X-nf-os-X @atom:* @atom:nf @atom:os @atom:*
@dihedral:X-nc-os-X @atom:* @atom:nc @atom:os @atom:*
@dihedral:X-nc-ss-X @atom:* @atom:nc @atom:ss @atom:*
@dihedral:X-n2-p2-X @atom:* @atom:n2 @atom:p2 @atom:*
@dihedral:X-n2-pe-X @atom:* @atom:n2 @atom:pe @atom:*
@dihedral:X-n2-pf-X @atom:* @atom:n2 @atom:pf @atom:*
@dihedral:X-ne-pf-X @atom:* @atom:ne @atom:pf @atom:*
@dihedral:X-n2-pc-X @atom:* @atom:n2 @atom:pc @atom:*
@dihedral:X-n2-pd-X @atom:* @atom:n2 @atom:pd @atom:*
@dihedral:X-nc-p2-X @atom:* @atom:nc @atom:p2 @atom:*
@dihedral:X-nd-p2-X @atom:* @atom:nd @atom:p2 @atom:*
@dihedral:X-nc-pc-X @atom:* @atom:nc @atom:pc @atom:*
@dihedral:X-nd-pd-X @atom:* @atom:nd @atom:pd @atom:*
@dihedral:X-nd-pc-X @atom:* @atom:nd @atom:pc @atom:*
@dihedral:X-nc-pd-X @atom:* @atom:nc @atom:pd @atom:*
@dihedral:X-ne-pe-X @atom:* @atom:ne @atom:pe @atom:*
@dihedral:X-nf-pf-X @atom:* @atom:nf @atom:pf @atom:*
@dihedral:X-n2-p3-X @atom:* @atom:n2 @atom:p3 @atom:*
@dihedral:X-n2-p4-X @atom:* @atom:n2 @atom:p4 @atom:*
@dihedral:X-ne-p4-X @atom:* @atom:ne @atom:p4 @atom:*
@dihedral:X-nf-p4-X @atom:* @atom:nf @atom:p4 @atom:*
@dihedral:X-n2-p5-X @atom:* @atom:n2 @atom:p5 @atom:*
@dihedral:X-ne-p5-X @atom:* @atom:ne @atom:p5 @atom:*
@dihedral:X-nf-p5-X @atom:* @atom:nf @atom:p5 @atom:*
@dihedral:X-ne-px-X @atom:* @atom:ne @atom:px @atom:*
@dihedral:X-nf-px-X @atom:* @atom:nf @atom:px @atom:*
@dihedral:X-n2-sh-X @atom:* @atom:n2 @atom:sh @atom:*
@dihedral:X-ne-sh-X @atom:* @atom:ne @atom:sh @atom:*
@dihedral:X-nf-sh-X @atom:* @atom:nf @atom:sh @atom:*
@dihedral:X-n2-ss-X @atom:* @atom:n2 @atom:ss @atom:*
@dihedral:X-n2-ss-X @atom:* @atom:n2 @atom:ss @atom:*
@dihedral:X-ne-ss-X @atom:* @atom:ne @atom:ss @atom:*
@dihedral:X-ne-ss-X @atom:* @atom:ne @atom:ss @atom:*
@dihedral:X-nf-ss-X @atom:* @atom:nf @atom:ss @atom:*
@dihedral:X-nf-ss-X @atom:* @atom:nf @atom:ss @atom:*
@dihedral:X-n2-s4-X @atom:* @atom:n2 @atom:s4 @atom:*
@dihedral:X-ne-sx-X @atom:* @atom:ne @atom:sx @atom:*
@dihedral:X-nf-sx-X @atom:* @atom:nf @atom:sx @atom:*
@dihedral:X-n2-s6-X @atom:* @atom:n2 @atom:s6 @atom:*
@dihedral:X-ne-sy-X @atom:* @atom:ne @atom:sy @atom:*
@dihedral:X-ne-sy-X @atom:* @atom:ne @atom:sy @atom:*
@dihedral:X-nf-sy-X @atom:* @atom:nf @atom:sy @atom:*
@dihedral:X-nf-sy-X @atom:* @atom:nf @atom:sy @atom:*
@dihedral:X-n3-n3-X @atom:* @atom:n3 @atom:n3 @atom:*
@dihedral:X-n3-n4-X @atom:* @atom:n3 @atom:n4 @atom:*
@dihedral:X-n3-na-X @atom:* @atom:n3 @atom:na @atom:*
@dihedral:X-n3-nh-X @atom:* @atom:n3 @atom:nh @atom:*
@dihedral:X-n3-no-X @atom:* @atom:n3 @atom:no @atom:*
@dihedral:X-n3-oh-X @atom:* @atom:n3 @atom:oh @atom:*
@dihedral:X-n3-os-X @atom:* @atom:n3 @atom:os @atom:*
@dihedral:X-n3-p2-X @atom:* @atom:n3 @atom:p2 @atom:*
@dihedral:X-n3-pe-X @atom:* @atom:n3 @atom:pe @atom:*
@dihedral:X-n3-pf-X @atom:* @atom:n3 @atom:pf @atom:*
@dihedral:X-n3-p3-X @atom:* @atom:n3 @atom:p3 @atom:*
@dihedral:X-n3-p4-X @atom:* @atom:n3 @atom:p4 @atom:*
@dihedral:X-n3-px-X @atom:* @atom:n3 @atom:px @atom:*
@dihedral:X-n3-p5-X @atom:* @atom:n3 @atom:p5 @atom:*
@dihedral:X-n3-py-X @atom:* @atom:n3 @atom:py @atom:*
@dihedral:X-n3-sh-X @atom:* @atom:n3 @atom:sh @atom:*
@dihedral:X-n3-ss-X @atom:* @atom:n3 @atom:ss @atom:*
@dihedral:X-n3-s4-X @atom:* @atom:n3 @atom:s4 @atom:*
@dihedral:X-n3-sx-X @atom:* @atom:n3 @atom:sx @atom:*
@dihedral:X-n3-s6-X @atom:* @atom:n3 @atom:s6 @atom:*
@dihedral:X-n3-sy-X @atom:* @atom:n3 @atom:sy @atom:*
@dihedral:X-n4-n4-X @atom:* @atom:n4 @atom:n4 @atom:*
@dihedral:X-n4-na-X @atom:* @atom:n4 @atom:na @atom:*
@dihedral:X-n4-nh-X @atom:* @atom:n4 @atom:nh @atom:*
@dihedral:X-n4-no-X @atom:* @atom:n4 @atom:no @atom:*
@dihedral:X-n4-oh-X @atom:* @atom:n4 @atom:oh @atom:*
@dihedral:X-n4-os-X @atom:* @atom:n4 @atom:os @atom:*
@dihedral:X-n4-p2-X @atom:* @atom:n4 @atom:p2 @atom:*
@dihedral:X-n4-pe-X @atom:* @atom:n4 @atom:pe @atom:*
@dihedral:X-n4-pf-X @atom:* @atom:n4 @atom:pf @atom:*
@dihedral:X-n4-p3-X @atom:* @atom:n4 @atom:p3 @atom:*
@dihedral:X-n4-p4-X @atom:* @atom:n4 @atom:p4 @atom:*
@dihedral:X-n4-px-X @atom:* @atom:n4 @atom:px @atom:*
@dihedral:X-n4-p5-X @atom:* @atom:n4 @atom:p5 @atom:*
@dihedral:X-n4-py-X @atom:* @atom:n4 @atom:py @atom:*
@dihedral:X-n4-sh-X @atom:* @atom:n4 @atom:sh @atom:*
@dihedral:X-n4-ss-X @atom:* @atom:n4 @atom:ss @atom:*
@dihedral:X-n4-s4-X @atom:* @atom:n4 @atom:s4 @atom:*
@dihedral:X-n4-sx-X @atom:* @atom:n4 @atom:sx @atom:*
@dihedral:X-n4-s6-X @atom:* @atom:n4 @atom:s6 @atom:*
@dihedral:X-n4-sy-X @atom:* @atom:n4 @atom:sy @atom:*
@dihedral:X-na-na-X @atom:* @atom:na @atom:na @atom:*
@dihedral:X-na-nh-X @atom:* @atom:na @atom:nh @atom:*
@dihedral:X-na-no-X @atom:* @atom:na @atom:no @atom:*
@dihedral:X-na-oh-X @atom:* @atom:na @atom:oh @atom:*
@dihedral:X-na-os-X @atom:* @atom:na @atom:os @atom:*
@dihedral:X-na-p2-X @atom:* @atom:na @atom:p2 @atom:*
@dihedral:X-na-pe-X @atom:* @atom:na @atom:pe @atom:*
@dihedral:X-na-pf-X @atom:* @atom:na @atom:pf @atom:*
@dihedral:X-na-p3-X @atom:* @atom:na @atom:p3 @atom:*
@dihedral:X-na-p4-X @atom:* @atom:na @atom:p4 @atom:*
@dihedral:X-na-px-X @atom:* @atom:na @atom:px @atom:*
@dihedral:X-na-p5-X @atom:* @atom:na @atom:p5 @atom:*
@dihedral:X-na-py-X @atom:* @atom:na @atom:py @atom:*
@dihedral:X-na-sh-X @atom:* @atom:na @atom:sh @atom:*
@dihedral:X-na-ss-X @atom:* @atom:na @atom:ss @atom:*
@dihedral:X-na-s4-X @atom:* @atom:na @atom:s4 @atom:*
@dihedral:X-na-sx-X @atom:* @atom:na @atom:sx @atom:*
@dihedral:X-na-s6-X @atom:* @atom:na @atom:s6 @atom:*
@dihedral:X-na-sy-X @atom:* @atom:na @atom:sy @atom:*
@dihedral:X-nh-nh-X @atom:* @atom:nh @atom:nh @atom:*
@dihedral:X-nh-no-X @atom:* @atom:nh @atom:no @atom:*
@dihedral:X-nh-oh-X @atom:* @atom:nh @atom:oh @atom:*
@dihedral:X-nh-os-X @atom:* @atom:nh @atom:os @atom:*
@dihedral:X-nh-p2-X @atom:* @atom:nh @atom:p2 @atom:*
@dihedral:X-nh-pe-X @atom:* @atom:nh @atom:pe @atom:*
@dihedral:X-nh-pf-X @atom:* @atom:nh @atom:pf @atom:*
@dihedral:X-nh-p3-X @atom:* @atom:nh @atom:p3 @atom:*
@dihedral:X-nh-p4-X @atom:* @atom:nh @atom:p4 @atom:*
@dihedral:X-nh-px-X @atom:* @atom:nh @atom:px @atom:*
@dihedral:X-nh-p5-X @atom:* @atom:nh @atom:p5 @atom:*
@dihedral:X-nh-py-X @atom:* @atom:nh @atom:py @atom:*
@dihedral:X-nh-sh-X @atom:* @atom:nh @atom:sh @atom:*
@dihedral:X-nh-ss-X @atom:* @atom:nh @atom:ss @atom:*
@dihedral:X-nh-s4-X @atom:* @atom:nh @atom:s4 @atom:*
@dihedral:X-nh-s4-X @atom:* @atom:nh @atom:s4 @atom:*
@dihedral:X-nh-sx-X @atom:* @atom:nh @atom:sx @atom:*
@dihedral:X-nh-sx-X @atom:* @atom:nh @atom:sx @atom:*
@dihedral:X-nh-s6-X @atom:* @atom:nh @atom:s6 @atom:*
@dihedral:X-nh-sy-X @atom:* @atom:nh @atom:sy @atom:*
@dihedral:X-no-no-X @atom:* @atom:no @atom:no @atom:*
@dihedral:X-no-no-X @atom:* @atom:no @atom:no @atom:*
@dihedral:X-no-oh-X @atom:* @atom:no @atom:oh @atom:*
@dihedral:X-no-os-X @atom:* @atom:no @atom:os @atom:*
@dihedral:X-no-p2-X @atom:* @atom:no @atom:p2 @atom:*
@dihedral:X-no-pe-X @atom:* @atom:no @atom:pe @atom:*
@dihedral:X-no-pf-X @atom:* @atom:no @atom:pf @atom:*
@dihedral:X-no-p3-X @atom:* @atom:no @atom:p3 @atom:*
@dihedral:X-no-p4-X @atom:* @atom:no @atom:p4 @atom:*
@dihedral:X-no-px-X @atom:* @atom:no @atom:px @atom:*
@dihedral:X-no-p5-X @atom:* @atom:no @atom:p5 @atom:*
@dihedral:X-no-p5-X @atom:* @atom:no @atom:p5 @atom:*
@dihedral:X-no-py-X @atom:* @atom:no @atom:py @atom:*
@dihedral:X-no-py-X @atom:* @atom:no @atom:py @atom:*
@dihedral:X-no-sh-X @atom:* @atom:no @atom:sh @atom:*
@dihedral:X-no-ss-X @atom:* @atom:no @atom:ss @atom:*
@dihedral:X-no-s4-X @atom:* @atom:no @atom:s4 @atom:*
@dihedral:X-no-sx-X @atom:* @atom:no @atom:sx @atom:*
@dihedral:X-no-s6-X @atom:* @atom:no @atom:s6 @atom:*
@dihedral:X-no-sy-X @atom:* @atom:no @atom:sy @atom:*
@dihedral:X-oh-oh-X @atom:* @atom:oh @atom:oh @atom:*
@dihedral:X-oh-os-X @atom:* @atom:oh @atom:os @atom:*
@dihedral:X-oh-p2-X @atom:* @atom:oh @atom:p2 @atom:*
@dihedral:X-oh-pe-X @atom:* @atom:oh @atom:pe @atom:*
@dihedral:X-oh-pf-X @atom:* @atom:oh @atom:pf @atom:*
@dihedral:X-oh-p3-X @atom:* @atom:oh @atom:p3 @atom:*
@dihedral:X-oh-p4-X @atom:* @atom:oh @atom:p4 @atom:*
@dihedral:X-oh-px-X @atom:* @atom:oh @atom:px @atom:*
@dihedral:X-oh-p5-X @atom:* @atom:oh @atom:p5 @atom:*
@dihedral:X-oh-py-X @atom:* @atom:oh @atom:py @atom:*
@dihedral:X-oh-sh-X @atom:* @atom:oh @atom:sh @atom:*
@dihedral:X-oh-ss-X @atom:* @atom:oh @atom:ss @atom:*
@dihedral:X-oh-s4-X @atom:* @atom:oh @atom:s4 @atom:*
@dihedral:X-oh-sx-X @atom:* @atom:oh @atom:sx @atom:*
@dihedral:X-oh-s6-X @atom:* @atom:oh @atom:s6 @atom:*
@dihedral:X-oh-sy-X @atom:* @atom:oh @atom:sy @atom:*
@dihedral:X-os-os-X @atom:* @atom:os @atom:os @atom:*
@dihedral:X-os-ss-X @atom:* @atom:os @atom:ss @atom:*
@dihedral:X-os-sh-X @atom:* @atom:os @atom:sh @atom:*
@dihedral:X-os-s4-X @atom:* @atom:os @atom:s4 @atom:*
@dihedral:X-os-sx-X @atom:* @atom:os @atom:sx @atom:*
@dihedral:X-os-s6-X @atom:* @atom:os @atom:s6 @atom:*
@dihedral:X-os-sy-X @atom:* @atom:os @atom:sy @atom:*
@dihedral:X-os-p2-X @atom:* @atom:os @atom:p2 @atom:*
@dihedral:X-os-p2-X @atom:* @atom:os @atom:p2 @atom:*
@dihedral:X-os-pe-X @atom:* @atom:os @atom:pe @atom:*
@dihedral:X-os-pe-X @atom:* @atom:os @atom:pe @atom:*
@dihedral:X-os-pf-X @atom:* @atom:os @atom:pf @atom:*
@dihedral:X-os-pf-X @atom:* @atom:os @atom:pf @atom:*
@dihedral:X-os-p3-X @atom:* @atom:os @atom:p3 @atom:*
@dihedral:X-os-p4-X @atom:* @atom:os @atom:p4 @atom:*
@dihedral:X-os-px-X @atom:* @atom:os @atom:px @atom:*
@dihedral:X-os-p5-X @atom:* @atom:os @atom:p5 @atom:*
@dihedral:X-os-py-X @atom:* @atom:os @atom:py @atom:*
@dihedral:X-p2-p2-X @atom:* @atom:p2 @atom:p2 @atom:*
@dihedral:X-p2-pe-X @atom:* @atom:p2 @atom:pe @atom:*
@dihedral:X-p2-pf-X @atom:* @atom:p2 @atom:pf @atom:*
@dihedral:X-p2-pc-X @atom:* @atom:p2 @atom:pc @atom:*
@dihedral:X-p2-pd-X @atom:* @atom:p2 @atom:pd @atom:*
@dihedral:X-pe-pe-X @atom:* @atom:pe @atom:pe @atom:*
@dihedral:X-pf-pf-X @atom:* @atom:pf @atom:pf @atom:*
@dihedral:X-pc-pc-X @atom:* @atom:pc @atom:pc @atom:*
@dihedral:X-pd-pd-X @atom:* @atom:pd @atom:pd @atom:*
@dihedral:X-pc-pd-X @atom:* @atom:pc @atom:pd @atom:*
@dihedral:X-p2-p3-X @atom:* @atom:p2 @atom:p3 @atom:*
@dihedral:X-pe-p3-X @atom:* @atom:pe @atom:p3 @atom:*
@dihedral:X-pf-p3-X @atom:* @atom:pf @atom:p3 @atom:*
@dihedral:X-p2-p4-X @atom:* @atom:p2 @atom:p4 @atom:*
@dihedral:X-pe-px-X @atom:* @atom:pe @atom:px @atom:*
@dihedral:X-pf-px-X @atom:* @atom:pf @atom:px @atom:*
@dihedral:X-p2-p5-X @atom:* @atom:p2 @atom:p5 @atom:*
@dihedral:X-pe-py-X @atom:* @atom:pe @atom:py @atom:*
@dihedral:X-pf-py-X @atom:* @atom:pf @atom:py @atom:*
@dihedral:X-p2-sh-X @atom:* @atom:p2 @atom:sh @atom:*
@dihedral:X-pe-sh-X @atom:* @atom:pe @atom:sh @atom:*
@dihedral:X-pf-sh-X @atom:* @atom:pf @atom:sh @atom:*
@dihedral:X-p2-ss-X @atom:* @atom:p2 @atom:ss @atom:*
@dihedral:X-pe-ss-X @atom:* @atom:pe @atom:ss @atom:*
@dihedral:X-pf-ss-X @atom:* @atom:pf @atom:ss @atom:*
@dihedral:X-p2-s4-X @atom:* @atom:p2 @atom:s4 @atom:*
@dihedral:X-pe-sx-X @atom:* @atom:pe @atom:sx @atom:*
@dihedral:X-pf-sx-X @atom:* @atom:pf @atom:sx @atom:*
@dihedral:X-p2-s6-X @atom:* @atom:p2 @atom:s6 @atom:*
@dihedral:X-pe-sy-X @atom:* @atom:pe @atom:sy @atom:*
@dihedral:X-pf-sy-X @atom:* @atom:pf @atom:sy @atom:*
@dihedral:X-p3-p3-X @atom:* @atom:p3 @atom:p3 @atom:*
@dihedral:X-p3-p4-X @atom:* @atom:p3 @atom:p4 @atom:*
@dihedral:X-p3-px-X @atom:* @atom:p3 @atom:px @atom:*
@dihedral:X-p3-p5-X @atom:* @atom:p3 @atom:p5 @atom:*
@dihedral:X-p3-py-X @atom:* @atom:p3 @atom:py @atom:*
@dihedral:X-p3-sh-X @atom:* @atom:p3 @atom:sh @atom:*
@dihedral:X-p3-ss-X @atom:* @atom:p3 @atom:ss @atom:*
@dihedral:X-p3-s4-X @atom:* @atom:p3 @atom:s4 @atom:*
@dihedral:X-p3-sx-X @atom:* @atom:p3 @atom:sx @atom:*
@dihedral:X-p3-s6-X @atom:* @atom:p3 @atom:s6 @atom:*
@dihedral:X-p3-sy-X @atom:* @atom:p3 @atom:sy @atom:*
@dihedral:X-p4-p4-X @atom:* @atom:p4 @atom:p4 @atom:*
@dihedral:X-px-px-X @atom:* @atom:px @atom:px @atom:*
@dihedral:X-p4-p5-X @atom:* @atom:p4 @atom:p5 @atom:*
@dihedral:X-px-py-X @atom:* @atom:px @atom:py @atom:*
@dihedral:X-p4-s4-X @atom:* @atom:p4 @atom:s4 @atom:*
@dihedral:X-px-sx-X @atom:* @atom:px @atom:sx @atom:*
@dihedral:X-p4-s6-X @atom:* @atom:p4 @atom:s6 @atom:*
@dihedral:X-px-sy-X @atom:* @atom:px @atom:sy @atom:*
@dihedral:X-p4-sh-X @atom:* @atom:p4 @atom:sh @atom:*
@dihedral:X-px-sh-X @atom:* @atom:px @atom:sh @atom:*
@dihedral:X-p4-ss-X @atom:* @atom:p4 @atom:ss @atom:*
@dihedral:X-px-ss-X @atom:* @atom:px @atom:ss @atom:*
@dihedral:X-p5-p5-X @atom:* @atom:p5 @atom:p5 @atom:*
@dihedral:X-py-py-X @atom:* @atom:py @atom:py @atom:*
@dihedral:X-p5-sh-X @atom:* @atom:p5 @atom:sh @atom:*
@dihedral:X-py-sh-X @atom:* @atom:py @atom:sh @atom:*
@dihedral:X-p5-ss-X @atom:* @atom:p5 @atom:ss @atom:*
@dihedral:X-py-ss-X @atom:* @atom:py @atom:ss @atom:*
@dihedral:X-p5-s4-X @atom:* @atom:p5 @atom:s4 @atom:*
@dihedral:X-py-sx-X @atom:* @atom:py @atom:sx @atom:*
@dihedral:X-p5-s6-X @atom:* @atom:p5 @atom:s6 @atom:*
@dihedral:X-py-sy-X @atom:* @atom:py @atom:sy @atom:*
@dihedral:X-sh-sh-X @atom:* @atom:sh @atom:sh @atom:*
@dihedral:X-sh-ss-X @atom:* @atom:sh @atom:ss @atom:*
@dihedral:X-sh-s4-X @atom:* @atom:sh @atom:s4 @atom:*
@dihedral:X-sh-sx-X @atom:* @atom:sh @atom:sx @atom:*
@dihedral:X-sh-s6-X @atom:* @atom:sh @atom:s6 @atom:*
@dihedral:X-sh-sy-X @atom:* @atom:sh @atom:sy @atom:*
@dihedral:X-ss-ss-X @atom:* @atom:ss @atom:ss @atom:*
@dihedral:X-ss-s4-X @atom:* @atom:ss @atom:s4 @atom:*
@dihedral:X-ss-sx-X @atom:* @atom:ss @atom:sx @atom:*
@dihedral:X-ss-s6-X @atom:* @atom:ss @atom:s6 @atom:*
@dihedral:X-ss-sy-X @atom:* @atom:ss @atom:sy @atom:*
@dihedral:X-s4-s4-X @atom:* @atom:s4 @atom:s4 @atom:*
@dihedral:X-sx-sx-X @atom:* @atom:sx @atom:sx @atom:*
@dihedral:X-s4-s6-X @atom:* @atom:s4 @atom:s6 @atom:*
@dihedral:X-sx-sy-X @atom:* @atom:sx @atom:sy @atom:*
@dihedral:X-s6-s6-X @atom:* @atom:s6 @atom:s6 @atom:*
@dihedral:X-sy-sy-X @atom:* @atom:sy @atom:sy @atom:*
@dihedral:X-cf-pe-X @atom:* @atom:cf @atom:pe @atom:*
@dihedral:X-nd-os-X @atom:* @atom:nd @atom:os @atom:*
@dihedral:X-nd-ss-X @atom:* @atom:nd @atom:ss @atom:*
@dihedral:X-nf-pe-X @atom:* @atom:nf @atom:pe @atom:*
@dihedral:c3-c-sh-hs @atom:c3 @atom:c @atom:sh @atom:hs
@dihedral:c3-c-sh-hs @atom:c3 @atom:c @atom:sh @atom:hs
@dihedral:c2-c2-ss-c3 @atom:c2 @atom:c2 @atom:ss @atom:c3
@dihedral:c2-c2-ss-c3 @atom:c2 @atom:c2 @atom:ss @atom:c3
@dihedral:c2-c2-n-c @atom:c2 @atom:c2 @atom:n @atom:c
@dihedral:c2-c2-n-c @atom:c2 @atom:c2 @atom:n @atom:c
@dihedral:c-n-p2-c2 @atom:c @atom:n @atom:p2 @atom:c2
@dihedral:c-n-p2-c2 @atom:c @atom:n @atom:p2 @atom:c2
@dihedral:n-c3-c-n @atom:n @atom:c3 @atom:c @atom:n
@dihedral:n-c3-c-n @atom:n @atom:c3 @atom:c @atom:n
@dihedral:c-n-c3-c @atom:c @atom:n @atom:c3 @atom:c
@dihedral:c-n-c3-c @atom:c @atom:n @atom:c3 @atom:c
@dihedral:c3-c3-n-c @atom:c3 @atom:c3 @atom:n @atom:c
@dihedral:c3-c3-n-c @atom:c3 @atom:c3 @atom:n @atom:c
@dihedral:c3-c3-n-c @atom:c3 @atom:c3 @atom:n @atom:c
@dihedral:c3-c3-c-n @atom:c3 @atom:c3 @atom:c @atom:n
@dihedral:c3-c3-c-n @atom:c3 @atom:c3 @atom:c @atom:n
@dihedral:c2-ne-p5-o @atom:c2 @atom:ne @atom:p5 @atom:o
@dihedral:c2-ne-p5-o @atom:c2 @atom:ne @atom:p5 @atom:o
@dihedral:c2-nf-p5-o @atom:c2 @atom:nf @atom:p5 @atom:o
@dihedral:c2-nf-p5-o @atom:c2 @atom:nf @atom:p5 @atom:o
@dihedral:ce-ne-p5-o @atom:ce @atom:ne @atom:p5 @atom:o
@dihedral:ce-ne-p5-o @atom:ce @atom:ne @atom:p5 @atom:o
@dihedral:ce-nf-p5-o @atom:ce @atom:nf @atom:p5 @atom:o
@dihedral:ce-nf-p5-o @atom:ce @atom:nf @atom:p5 @atom:o
@dihedral:cf-ne-p5-o @atom:cf @atom:ne @atom:p5 @atom:o
@dihedral:cf-ne-p5-o @atom:cf @atom:ne @atom:p5 @atom:o
@dihedral:cf-nf-p5-o @atom:cf @atom:nf @atom:p5 @atom:o
@dihedral:cf-nf-p5-o @atom:cf @atom:nf @atom:p5 @atom:o
@dihedral:hn-n-c-o @atom:hn @atom:n @atom:c @atom:o
@dihedral:hn-n-c-o @atom:hn @atom:n @atom:c @atom:o
@dihedral:c3-ss-ss-c3 @atom:c3 @atom:ss @atom:ss @atom:c3
@dihedral:c3-ss-ss-c3 @atom:c3 @atom:ss @atom:ss @atom:c3
@dihedral:c3-n3-nh-ca @atom:c3 @atom:n3 @atom:nh @atom:ca
@dihedral:c3-n3-nh-ca @atom:c3 @atom:n3 @atom:nh @atom:ca
@dihedral:c3-n3-p5-o @atom:c3 @atom:n3 @atom:p5 @atom:o
@dihedral:c3-n3-p5-o @atom:c3 @atom:n3 @atom:p5 @atom:o
@dihedral:ca-nh-oh-ho @atom:ca @atom:nh @atom:oh @atom:ho
@dihedral:ca-nh-oh-ho @atom:ca @atom:nh @atom:oh @atom:ho
@dihedral:oh-p5-os-c3 @atom:oh @atom:p5 @atom:os @atom:c3
@dihedral:oh-p5-os-c3 @atom:oh @atom:p5 @atom:os @atom:c3
@dihedral:os-p5-os-c3 @atom:os @atom:p5 @atom:os @atom:c3
@dihedral:os-p5-os-c3 @atom:os @atom:p5 @atom:os @atom:c3
@dihedral:h1-c3-c-o @atom:h1 @atom:c3 @atom:c @atom:o
@dihedral:h1-c3-c-o @atom:h1 @atom:c3 @atom:c @atom:o
@dihedral:hc-c3-c-o @atom:hc @atom:c3 @atom:c @atom:o
@dihedral:hc-c3-c-o @atom:hc @atom:c3 @atom:c @atom:o
@dihedral:hc-c3-c3-hc @atom:hc @atom:c3 @atom:c3 @atom:hc
@dihedral:hc-c3-c3-c3 @atom:hc @atom:c3 @atom:c3 @atom:c3
@dihedral:hc-c3-c2-c2 @atom:hc @atom:c3 @atom:c2 @atom:c2
@dihedral:hc-c3-c2-c2 @atom:hc @atom:c3 @atom:c2 @atom:c2
@dihedral:ho-oh-c3-c3 @atom:ho @atom:oh @atom:c3 @atom:c3
@dihedral:ho-oh-c3-c3 @atom:ho @atom:oh @atom:c3 @atom:c3
@dihedral:ho-oh-c-o @atom:ho @atom:oh @atom:c @atom:o
@dihedral:ho-oh-c-o @atom:ho @atom:oh @atom:c @atom:o
@dihedral:c2-c2-c-o @atom:c2 @atom:c2 @atom:c @atom:o
@dihedral:c2-c2-c-o @atom:c2 @atom:c2 @atom:c @atom:o
@dihedral:c3-c2-c2-c3 @atom:c3 @atom:c2 @atom:c2 @atom:c3
@dihedral:c3-c2-c2-c3 @atom:c3 @atom:c2 @atom:c2 @atom:c3
@dihedral:c3-c3-c3-c3 @atom:c3 @atom:c3 @atom:c3 @atom:c3
@dihedral:c3-c3-c3-c3 @atom:c3 @atom:c3 @atom:c3 @atom:c3
@dihedral:c3-c3-c3-c3 @atom:c3 @atom:c3 @atom:c3 @atom:c3
@dihedral:c3-c3-n3-c3 @atom:c3 @atom:c3 @atom:n3 @atom:c3
@dihedral:c3-c3-n3-c3 @atom:c3 @atom:c3 @atom:n3 @atom:c3
@dihedral:c3-c3-os-c3 @atom:c3 @atom:c3 @atom:os @atom:c3
@dihedral:c3-c3-os-c3 @atom:c3 @atom:c3 @atom:os @atom:c3
@dihedral:c3-c3-os-c @atom:c3 @atom:c3 @atom:os @atom:c
@dihedral:c3-c3-os-c @atom:c3 @atom:c3 @atom:os @atom:c
@dihedral:c3-os-c3-os @atom:c3 @atom:os @atom:c3 @atom:os
@dihedral:c3-os-c3-os @atom:c3 @atom:os @atom:c3 @atom:os
@dihedral:c3-os-c3-os @atom:c3 @atom:os @atom:c3 @atom:os
@dihedral:c3-os-c3-na @atom:c3 @atom:os @atom:c3 @atom:na
@dihedral:c3-os-c3-na @atom:c3 @atom:os @atom:c3 @atom:na
@dihedral:o-c-os-c3 @atom:o @atom:c @atom:os @atom:c3
@dihedral:o-c-os-c3 @atom:o @atom:c @atom:os @atom:c3
@dihedral:os-c3-na-c2 @atom:os @atom:c3 @atom:na @atom:c2
@dihedral:os-c3-na-c2 @atom:os @atom:c3 @atom:na @atom:c2
@dihedral:os-c3-c3-os @atom:os @atom:c3 @atom:c3 @atom:os
@dihedral:os-c3-c3-os @atom:os @atom:c3 @atom:c3 @atom:os
@dihedral:os-c3-c3-oh @atom:os @atom:c3 @atom:c3 @atom:oh
@dihedral:os-c3-c3-oh @atom:os @atom:c3 @atom:c3 @atom:oh
@dihedral:oh-c3-c3-oh @atom:oh @atom:c3 @atom:c3 @atom:oh
@dihedral:oh-c3-c3-oh @atom:oh @atom:c3 @atom:c3 @atom:oh
@dihedral:f-c3-c3-f @atom:f @atom:c3 @atom:c3 @atom:f
@dihedral:f-c3-c3-f @atom:f @atom:c3 @atom:c3 @atom:f
@dihedral:cl-c3-c3-cl @atom:cl @atom:c3 @atom:c3 @atom:cl
@dihedral:cl-c3-c3-cl @atom:cl @atom:c3 @atom:c3 @atom:cl
@dihedral:br-c3-c3-br @atom:br @atom:c3 @atom:c3 @atom:br
@dihedral:br-c3-c3-br @atom:br @atom:c3 @atom:c3 @atom:br
@dihedral:h1-c3-c3-os @atom:h1 @atom:c3 @atom:c3 @atom:os
@dihedral:h1-c3-c3-os @atom:h1 @atom:c3 @atom:c3 @atom:os
@dihedral:h1-c3-c3-oh @atom:h1 @atom:c3 @atom:c3 @atom:oh
@dihedral:h1-c3-c3-oh @atom:h1 @atom:c3 @atom:c3 @atom:oh
@dihedral:h1-c3-c3-f @atom:h1 @atom:c3 @atom:c3 @atom:f
@dihedral:h1-c3-c3-f @atom:h1 @atom:c3 @atom:c3 @atom:f
@dihedral:h1-c3-c3-cl @atom:h1 @atom:c3 @atom:c3 @atom:cl
@dihedral:h1-c3-c3-cl @atom:h1 @atom:c3 @atom:c3 @atom:cl
@dihedral:h1-c3-c3-br @atom:h1 @atom:c3 @atom:c3 @atom:br
@dihedral:h1-c3-c3-br @atom:h1 @atom:c3 @atom:c3 @atom:br
@dihedral:hc-c3-c3-os @atom:hc @atom:c3 @atom:c3 @atom:os
@dihedral:hc-c3-c3-os @atom:hc @atom:c3 @atom:c3 @atom:os
@dihedral:hc-c3-c3-oh @atom:hc @atom:c3 @atom:c3 @atom:oh
@dihedral:hc-c3-c3-oh @atom:hc @atom:c3 @atom:c3 @atom:oh
@dihedral:hc-c3-c3-f @atom:hc @atom:c3 @atom:c3 @atom:f
@dihedral:hc-c3-c3-f @atom:hc @atom:c3 @atom:c3 @atom:f
@dihedral:hc-c3-c3-cl @atom:hc @atom:c3 @atom:c3 @atom:cl
@dihedral:hc-c3-c3-cl @atom:hc @atom:c3 @atom:c3 @atom:cl
@dihedral:hc-c3-c3-br @atom:hc @atom:c3 @atom:c3 @atom:br
@dihedral:hc-c3-c3-br @atom:hc @atom:c3 @atom:c3 @atom:br
} # (end of Dihedrals By Type)
write_once("In Settings") {
improper_coeff @improper:X-o-c-o cvff 1.1 -1 2 # JCC,7,(1986),230
improper_coeff @improper:X-X-c-o cvff 10.5 -1 2 # JCC,7,(1986),230
improper_coeff @improper:X-X-ca-ha cvff 1.1 -1 2 # bsd.on C6H6 nmodes
improper_coeff @improper:X-X-n-hn cvff 1.1 -1 2 # JCC,7,(1986),230
improper_coeff @improper:X-X-n2-hn cvff 1.1 -1 2 # JCC,7,(1986),230
improper_coeff @improper:X-X-na-hn cvff 1.1 -1 2 # JCC,7,(1986),230
improper_coeff @improper:X-c3-n-c3 cvff 1.1 -1 2 # JCC,7,(1986),230
improper_coeff @improper:X-n2-ca-n2 cvff 10.5 -1 2 # JCC,7,(1986),230
improper_coeff @improper:c-c2-c2-c3 cvff 1.1 -1 2 # dac guess, 9/94
improper_coeff @improper:c-ca-ca-c3 cvff 1.1 -1 2 # dac guess, 9/94
improper_coeff @improper:c-c3-n-hn cvff 1.1 -1 2 # Junmei et al.1999
improper_coeff @improper:c-c3-n-o cvff 1.1 -1 2 # Junmei et al.1999
improper_coeff @improper:c2-c2-na-c3 cvff 1.1 -1 2 #
improper_coeff @improper:c2-c-c2-c3 cvff 1.1 -1 2 #
improper_coeff @improper:c2-c3-c2-hc cvff 1.1 -1 2 # Junmei et al.1999
improper_coeff @improper:c2-c3-ca-hc cvff 1.1 -1 2 # Junmei et al.1999
improper_coeff @improper:c2-hc-c-o cvff 1.1 -1 2 # Junmei et al.1999
improper_coeff @improper:c3-o-c-oh cvff 1.1 -1 2 #
improper_coeff @improper:c3-c2-c2-n2 cvff 1.1 -1 2 #
improper_coeff @improper:c3-c2-c2-na cvff 1.1 -1 2 #
improper_coeff @improper:c3-ca-ca-n2 cvff 1.1 -1 2 #
improper_coeff @improper:c3-ca-ca-na cvff 1.1 -1 2 #
improper_coeff @improper:ca-ca-ca-c2 cvff 1.1 -1 2 #
improper_coeff @improper:ca-ca-ca-c3 cvff 1.1 -1 2 #
improper_coeff @improper:ca-ca-ca-f cvff 1.1 -1 2 # Junmei et al.1999
improper_coeff @improper:ca-ca-ca-cl cvff 1.1 -1 2 # Junmei et al.1999
improper_coeff @improper:ca-ca-ca-br cvff 1.1 -1 2 # Junmei et al.1999
improper_coeff @improper:ca-ca-ca-i cvff 1.1 -1 2 # Junmei et al.1999
improper_coeff @improper:ca-ca-c-oh cvff 1.1 -1 2 # (not used in tyr!)
improper_coeff @improper:ca-ca-na-c3 cvff 1.1 -1 2 #
improper_coeff @improper:ca-c-ca-c3 cvff 1.1 -1 2 #
improper_coeff @improper:ca-hc-c-o cvff 1.1 -1 2 # Junmei et al.1999
improper_coeff @improper:ca-n2-ca-n2 cvff 1.1 -1 2 # dac, 10/94
improper_coeff @improper:hc-o-c-oh cvff 1.1 -1 2 # Junmei et al.1999
improper_coeff @improper:hc-o-c-os cvff 1.1 -1 2 #
improper_coeff @improper:n2-c2-ca-n2 cvff 1.1 -1 2 # dac guess, 9/94
improper_coeff @improper:n2-ca-ca-n2 cvff 1.1 -1 2 # dac guess, 9/94
improper_coeff @improper:na-n2-ca-n2 cvff 1.1 -1 2 # dac, 10/94
} # (end of improper_coeffs)
write_once("Data Impropers By Type (gaff_imp.py)") {
@improper:X-o-c-o @atom:* @atom:o @atom:c @atom:o
@improper:X-X-c-o @atom:* @atom:* @atom:c @atom:o
@improper:X-X-ca-ha @atom:* @atom:* @atom:ca @atom:ha
@improper:X-X-n-hn @atom:* @atom:* @atom:n @atom:hn
@improper:X-X-n2-hn @atom:* @atom:* @atom:n2 @atom:hn
@improper:X-X-na-hn @atom:* @atom:* @atom:na @atom:hn
@improper:X-c3-n-c3 @atom:* @atom:c3 @atom:n @atom:c3
@improper:X-n2-ca-n2 @atom:* @atom:n2 @atom:ca @atom:n2
@improper:c-c2-c2-c3 @atom:c @atom:c2 @atom:c2 @atom:c3
@improper:c-ca-ca-c3 @atom:c @atom:ca @atom:ca @atom:c3
@improper:c-c3-n-hn @atom:c @atom:c3 @atom:n @atom:hn
@improper:c-c3-n-o @atom:c @atom:c3 @atom:n @atom:o
@improper:c2-c2-na-c3 @atom:c2 @atom:c2 @atom:na @atom:c3
@improper:c2-c-c2-c3 @atom:c2 @atom:c @atom:c2 @atom:c3
@improper:c2-c3-c2-hc @atom:c2 @atom:c3 @atom:c2 @atom:hc
@improper:c2-c3-ca-hc @atom:c2 @atom:c3 @atom:ca @atom:hc
@improper:c2-hc-c-o @atom:c2 @atom:hc @atom:c @atom:o
@improper:c3-o-c-oh @atom:c3 @atom:o @atom:c @atom:oh
@improper:c3-c2-c2-n2 @atom:c3 @atom:c2 @atom:c2 @atom:n2
@improper:c3-c2-c2-na @atom:c3 @atom:c2 @atom:c2 @atom:na
@improper:c3-ca-ca-n2 @atom:c3 @atom:ca @atom:ca @atom:n2
@improper:c3-ca-ca-na @atom:c3 @atom:ca @atom:ca @atom:na
@improper:ca-ca-ca-c2 @atom:ca @atom:ca @atom:ca @atom:c2
@improper:ca-ca-ca-c3 @atom:ca @atom:ca @atom:ca @atom:c3
@improper:ca-ca-ca-f @atom:ca @atom:ca @atom:ca @atom:f
@improper:ca-ca-ca-cl @atom:ca @atom:ca @atom:ca @atom:cl
@improper:ca-ca-ca-br @atom:ca @atom:ca @atom:ca @atom:br
@improper:ca-ca-ca-i @atom:ca @atom:ca @atom:ca @atom:i
@improper:ca-ca-c-oh @atom:ca @atom:ca @atom:c @atom:oh
@improper:ca-ca-na-c3 @atom:ca @atom:ca @atom:na @atom:c3
@improper:ca-c-ca-c3 @atom:ca @atom:c @atom:ca @atom:c3
@improper:ca-hc-c-o @atom:ca @atom:hc @atom:c @atom:o
@improper:ca-n2-ca-n2 @atom:ca @atom:n2 @atom:ca @atom:n2
@improper:hc-o-c-oh @atom:hc @atom:o @atom:c @atom:oh
@improper:hc-o-c-os @atom:hc @atom:o @atom:c @atom:os
@improper:n2-c2-ca-n2 @atom:n2 @atom:c2 @atom:ca @atom:n2
@improper:n2-ca-ca-n2 @atom:n2 @atom:ca @atom:ca @atom:n2
@improper:na-n2-ca-n2 @atom:na @atom:n2 @atom:ca @atom:n2
} # (end of Impropers By Type)
write_once("In Init") {
# Default styles and settings for AMBER based force-fields:
units real
atom_style full
bond_style hybrid harmonic
angle_style hybrid harmonic
dihedral_style hybrid fourier
improper_style hybrid cvff
pair_style hybrid lj/charmm/coul/long 9.0 10.0 10.0
kspace_style pppm 0.0001
# NOTE: If you do not want to use long-range coulombic forces,
# comment out the two lines above and uncomment this line:
# pair_style hybrid lj/charmm/coul/charmm 9.0 10.0
pair_modify mix arithmetic
special_bonds amber
}
}
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/graphene.lt b/tools/moltemplate/src/moltemplate_force_fields/graphene.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/graphene.lt
rename to tools/moltemplate/src/moltemplate_force_fields/graphene.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/graphite.lt b/tools/moltemplate/src/moltemplate_force_fields/graphite.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/moltemplate_files/graphite.lt
rename to tools/moltemplate/src/moltemplate_force_fields/graphite.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/images/graphene_unit_cell.jpg b/tools/moltemplate/src/moltemplate_force_fields/images/graphene_unit_cell.jpg
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/nanotube+water/images/graphene_unit_cell.jpg
rename to tools/moltemplate/src/moltemplate_force_fields/images/graphene_unit_cell.jpg
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/images/ice_rect8_unitcell.png b/tools/moltemplate/src/moltemplate_force_fields/images/ice_rect8_unitcell.png
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/images/ice_rect8_unitcell.png
rename to tools/moltemplate/src/moltemplate_force_fields/images/ice_rect8_unitcell.png
diff --git a/tools/moltemplate/common/images/spce_ball_and_stick.jpg b/tools/moltemplate/src/moltemplate_force_fields/images/spce_ball_and_stick.jpg
similarity index 100%
rename from tools/moltemplate/common/images/spce_ball_and_stick.jpg
rename to tools/moltemplate/src/moltemplate_force_fields/images/spce_ball_and_stick.jpg
diff --git a/tools/moltemplate/src/moltemplate_force_fields/loplsaa.lt b/tools/moltemplate/src/moltemplate_force_fields/loplsaa.lt
new file mode 100644
index 000000000..7901021e1
--- /dev/null
+++ b/tools/moltemplate/src/moltemplate_force_fields/loplsaa.lt
@@ -0,0 +1,153 @@
+###########################################################################
+## 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)
+
+
+ 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)
+
+
+ # ------- 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)
+
+ # 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)
+
+ 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/src/moltemplate_force_fields/oplsaa.lt b/tools/moltemplate/src/moltemplate_force_fields/oplsaa.lt
new file mode 100644
index 000000000..48d6f9ec6
--- /dev/null
+++ b/tools/moltemplate/src/moltemplate_force_fields/oplsaa.lt
@@ -0,0 +1,8934 @@
+# This file contains OPLSAA parameters and rules for creating
+# angle, dihedral, and improper interactions according to OPLSAA conventions.
+#
+# USAGE: You can create molecules using this force-field this way:
+#
+# MyMolecule inherits OPLSAA {
+# # atom-id mol-id atom-type charge X Y Z
+# write('Data Atoms') {
+# $atom:C1 $mol @atom:88 0.00 -0.6695 0.000000 0.000000
+# $atom:H11 $mol @atom:89 0.00 -1.234217 -0.854458 0.000000
+# : : : : : :
+# }
+# }
+#
+# Responsibility for choosing the atom types (eg "@atom:88", "@atom:89") falls
+# on the user. You must select the type of each atom in the molecule carefully
+# by looking at the description in the "In Charges" section of this file
+# (see below), and looking for a reasonable match. If your simulation is
+# non-neutral, or moltemplate complains that you have missing bond, angle, or
+# dihedral types, this means at least one of your atom types is incorrect.
+
+
+OPLSAA {
+
+ 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)"
+ set type @atom:3 charge 0.55 # "Acetic Acid -COOH (UA)"
+ set type @atom:4 charge -0.5 # "Acetic Acid >C=O (UA)"
+ set type @atom:5 charge -0.58 # "Acetic Acid -OH (UA)"
+ set type @atom:6 charge 0.08 # "Acetic Acid CH3- (UA)"
+ set type @atom:7 charge 0.45 # "Acetic Acid -OH (UA)"
+ set type @atom:8 charge 0.0 # "Methane CH4 (UA)"
+ set type @atom:9 charge 0.0 # "Ethane CH3- (UA)"
+ set type @atom:10 charge 0.0 # "N-Alkane CH3- (UA)"
+ set type @atom:11 charge 0.0 # "Isobutane CH3- (UA)"
+ set type @atom:12 charge 0.0 # "Neopentane CH3- (UA)"
+ set type @atom:13 charge 0.0 # "Alkanes -CH2- (UA)"
+ set type @atom:14 charge 0.0 # "1-Alkene CH2= (UA)"
+ set type @atom:15 charge 0.0 # "Isobutane CH (UA)"
+ set type @atom:16 charge 0.0 # "2-Alkene -CH= (UA)"
+ set type @atom:17 charge 0.0 # "Aromatic CH (UA)"
+ set type @atom:18 charge 0.0 # "Neopentane C (UA)"
+ set type @atom:19 charge 0.0 # "Isobutene >C= (UA)"
+ set type @atom:20 charge -0.7 # "Alcohol OH (UA)"
+ set type @atom:21 charge 0.435 # "Alcohol OH (UA)"
+ set type @atom:22 charge 0.265 # "Methanol CH3- (UA)"
+ set type @atom:23 charge 0.265 # "Ethanol -CH2OH (UA)"
+ set type @atom:24 charge -0.47 # "Hydrogen Sulfide H2S"
+ set type @atom:25 charge -0.45 # "Alkyl Sulfide RSH (UA)"
+ set type @atom:26 charge -0.47 # "Thioether RSR (UA)"
+ set type @atom:27 charge -0.3 # "Disulfide RSSR (UA)"
+ set type @atom:28 charge 0.235 # "Hydrogen Sulfide H2S"
+ set type @atom:29 charge 0.27 # "Alkyl Sulfide RSH (UA)"
+ set type @atom:30 charge 0.18 # "Methyl Sulfide CH3 (UA)"
+ set type @atom:31 charge 0.18 # "Alkyl Sulfide CH2 (UA)"
+ set type @atom:32 charge 0.235 # "Thioether CH3 (UA)"
+ set type @atom:33 charge 0.235 # "Thioether CH2 (UA)"
+ set type @atom:34 charge 0.3 # "Disulfide CH3 (UA)"
+ set type @atom:35 charge 0.3 # "Disulfide CH2 (UA)"
+ set type @atom:36 charge -0.43 # "Acetonitrile -CN (UA)"
+ set type @atom:37 charge 0.28 # "Acetonitrile -CN (UA)"
+ set type @atom:38 charge 0.15 # "Acetonitrile CH3 (UA)"
+ set type @atom:39 charge 0.265 # "Isopropanol >CHOH (UA)"
+ set type @atom:40 charge 0.265 # "t-Butanol COH (UA)"
+ set type @atom:41 charge -0.5 # "Ether ROR (UA)"
+ set type @atom:42 charge 0.25 # "Ether CH3-OR (UA)"
+ set type @atom:43 charge 0.25 # "Ether -CH2-OR (UA)"
+ set type @atom:44 charge 0.5 # "Methylene Chloride (UA)"
+ set type @atom:45 charge -0.25 # "Methylene Chloride (UA)"
+ set type @atom:46 charge 0.42 # "Chloroform CHCl3 (UA)"
+ set type @atom:47 charge -0.14 # "Chloroform CHCl3 (UA)"
+ set type @atom:48 charge 0.248 # "Carbon Tetrachloride"
+ set type @atom:49 charge -0.062 # "Carbon Tetrachloride"
+ set type @atom:50 charge 0.139 # "DMSO >S=O (UA)"
+ set type @atom:51 charge -0.459 # "DMSO >S=O (UA)"
+ set type @atom:52 charge 0.16 # "DMSO CH3- (UA)"
+ set type @atom:53 charge -0.5 # "DMF C=O (UA)"
+ set type @atom:54 charge -0.57 # "DMF CON< (UA)"
+ set type @atom:55 charge 0.5 # "DMF C=O (UA)"
+ set type @atom:56 charge 0.285 # "DMF CH3- (UA)"
+ set type @atom:57 charge 0.0 # "Dummy Atom"
+ set type @atom:58 charge 0.0 # "Helium Atom"
+ set type @atom:59 charge 0.0 # "Neon Atom"
+ set type @atom:60 charge 0.0 # "Argon Atom"
+ set type @atom:61 charge 0.0 # "Krypton Atom"
+ set type @atom:62 charge 0.0 # "Xenon Atom"
+ set type @atom:63 charge -0.834 # "TIP3P Water O"
+ set type @atom:64 charge 0.417 # "TIP3P Water H"
+ set type @atom:65 charge 0.0 # "TIP4P Water O"
+ set type @atom:66 charge 0.52 # "TIP4P Water H"
+ set type @atom:67 charge -1.04 # "TIP4P Water M"
+ set type @atom:68 charge -0.822 # "TIP3F Water O"
+ set type @atom:69 charge 0.411 # "TIP3F Water H"
+ set type @atom:70 charge 0.0 # "TIP4F Water O"
+ set type @atom:71 charge 0.511 # "TIP4F Water H"
+ set type @atom:72 charge -1.022 # "TIP4F Water M"
+ set type @atom:73 charge 0.0 # "TIP5P Water O"
+ set type @atom:74 charge 0.241 # "TIP5P Water H"
+ set type @atom:75 charge -0.241 # "TIP5P Water LP"
+ set type @atom:76 charge -0.82 # "SPC Water O"
+ set type @atom:77 charge 0.41 # "SPC Water H"
+ set type @atom:78 charge -1.02 # "Ammonia NH3"
+ set type @atom:79 charge 0.34 # "Ammonia NH3"
+ set type @atom:80 charge -0.18 # "Alkane CH3-"
+ set type @atom:81 charge -0.12 # "Alkane -CH2-"
+ set type @atom:82 charge -0.06 # "Alkane >CH-"
+ set type @atom:83 charge -0.24 # "Methane CH4"
+ set type @atom:84 charge 0.0 # "Alkane >C<"
+ set type @atom:85 charge 0.06 # "Alkane H-C"
+ set type @atom:86 charge 0.0 # "Alkene R2-C="
+ set type @atom:87 charge -0.115 # "Alkene RH-C="
+ set type @atom:88 charge -0.23 # "Alkene H2-C="
+ set type @atom:89 charge 0.115 # "Alkene H-C="
+ set type @atom:90 charge -0.115 # "Aromatic C"
+ set type @atom:91 charge 0.115 # "Aromatic H-C"
+ set type @atom:92 charge 0.0 # "Naphthalene Fusion C"
+ set type @atom:93 charge -0.065 # "Ethyl Benzene CH3-"
+ set type @atom:94 charge -0.005 # "Ethyl Benzene -CH2-"
+ set type @atom:95 charge -0.115 # "Diene =CH-CH="
+ set type @atom:96 charge -0.683 # "Alcohol -OH"
+ set type @atom:97 charge 0.418 # "Alcohol -OH"
+ set type @atom:98 charge 0.04 # "Methanol CH3-"
+ set type @atom:99 charge 0.145 # "Alcohol CH3OH & RCH2OH"
+ set type @atom:100 charge 0.205 # "Alcohol R2CHOH"
+ set type @atom:101 charge 0.265 # "Alcohol R3COH"
+ set type @atom:102 charge 0.1263 # "Trifluoroethanol -CH2-"
+ set type @atom:103 charge 0.5323 # "Trifluoroethanol CF3-"
+ set type @atom:104 charge -0.6351 # "Trifluoroethanol -OH"
+ set type @atom:105 charge 0.4286 # "Trifluoroethanol -OH"
+ set type @atom:106 charge -0.2057 # "Trifluoroethanol F"
+ set type @atom:107 charge 0.0825 # "Trifluoroethanol -CH2-"
+ set type @atom:108 charge 0.15 # "Phenol C-OH"
+ set type @atom:109 charge -0.585 # "Phenol -OH"
+ set type @atom:110 charge 0.435 # "Phenol -OH"
+ set type @atom:111 charge -0.7 # "Diol -OH"
+ set type @atom:112 charge 0.435 # "Diol -OH"
+ set type @atom:113 charge -0.73 # "Triol -OH"
+ set type @atom:114 charge 0.465 # "Triol -OH"
+ set type @atom:115 charge 0.145 # "Diol & Triol -CH2OH"
+ set type @atom:116 charge 0.205 # "Diol & Triol -CHROH"
+ set type @atom:117 charge 0.265 # "Diol & Triol -CR2OH"
+ set type @atom:118 charge 0.06 # "Diol & Triol H-COH"
+ set type @atom:119 charge -0.17 # "Diphenyl Ether"
+ set type @atom:120 charge 0.0 # "Diene =CR-CR="
+ set type @atom:121 charge -0.285 # "Anisole -OCH3"
+ set type @atom:122 charge -0.4 # "Dialkyl Ether -O-"
+ set type @atom:123 charge 0.11 # "Methyl Ether CH3OR"
+ set type @atom:124 charge 0.14 # "Ethyl Ether -CH2OR"
+ set type @atom:125 charge 0.17 # "Isopropyl Ether >CHOR"
+ set type @atom:126 charge 0.2 # "t-Butyl Ether COR"
+ set type @atom:127 charge 0.03 # "Alkyl Ether H-COR"
+ set type @atom:128 charge -0.4 # "Acetal RO-CR2OX"
+ set type @atom:129 charge -0.7 # "Hemiacetal -OH"
+ set type @atom:130 charge 0.435 # "Hemiacetal -OH"
+ set type @atom:131 charge 0.2 # "Acetal RO-CH2-OR"
+ set type @atom:132 charge 0.1 # "Acetal RO-CH2-OR"
+ set type @atom:133 charge 0.265 # "Hemiacetal RO-CH2-OH"
+ set type @atom:134 charge 0.1 # "Hemiacetal RO-CH2-OH"
+ set type @atom:135 charge 0.3 # "Acetal RO-CHR-OR"
+ set type @atom:136 charge 0.1 # "Acetal RO-CHR-OR"
+ set type @atom:137 charge 0.365 # "Hemiacetal RO-CHR-OH"
+ set type @atom:138 charge 0.1 # "Hemiacetal RO-CHR-OH"
+ set type @atom:139 charge 0.4 # "Acetal RO-CR2-OR"
+ set type @atom:140 charge 0.465 # "Hemiacetal RO-CR2-OH"
+ set type @atom:141 charge 0.085 # "Anisole C-OCH3"
+ set type @atom:142 charge -0.335 # "Thiol -SH"
+ set type @atom:143 charge -0.47 # "Hydrogen Sulfide H2S"
+ set type @atom:144 charge -0.435 # "Sulfide -S-"
+ set type @atom:145 charge -0.2175 # "Disulfide -S-S-"
+ set type @atom:146 charge 0.155 # "Thiol -SH"
+ set type @atom:147 charge 0.235 # "Hydrogen Sulfide H2S"
+ set type @atom:148 charge 0.06 # "Thiol -CH2-SH"
+ set type @atom:149 charge 0.12 # "Thiol >CH-SH"
+ set type @atom:150 charge 0.18 # "Thiol C-SH"
+ set type @atom:151 charge 0.0375 # "Methyl Sulfide CH3-SR"
+ set type @atom:152 charge 0.0975 # "Sulfide RCH2-SR"
+ set type @atom:153 charge 0.1575 # "Sulfide R2CH-SR"
+ set type @atom:154 charge 0.2175 # "Sulfide R3C-SR"
+ set type @atom:155 charge 0.0375 # "Disulfide CH3-S-SR"
+ set type @atom:156 charge 0.0975 # "Disulfide RCH2-S-SR"
+ set type @atom:157 charge 0.1575 # "Disulfide R2CH-S-SR"
+ set type @atom:158 charge 0.2175 # "Disulfide R3C-S-SR"
+ set type @atom:159 charge 0.0 # "Methanethiol CH3-SH"
+ set type @atom:160 charge 0.2 # "Benzyl Alcohol -CH2OH"
+ set type @atom:161 charge 0.26 # "Benzyl Alcohol -CHROH"
+ set type @atom:162 charge 0.32 # "Benzyl Alcohol -CR2OH"
+ set type @atom:163 charge -0.055 # "Benzyl Alcohol/Nitrile"
+ set type @atom:164 charge -0.32 # "Thioanisole -SCH3"
+ set type @atom:165 charge 0.08 # "RCH2-NH2 & GLY CA"
+ set type @atom:166 charge 0.14 # "RCHR-NH2 & ALA CA"
+ set type @atom:167 charge 0.2 # "R3C-NH2 & AIB CA"
+ set type @atom:168 charge -0.12 # "Chloroalkene Cl-CH="
+ set type @atom:169 charge 0.005 # "Chloroalkene Cl-CH="
+ set type @atom:170 charge 0.1025 # "Thioanisole C-SCH3"
+ set type @atom:171 charge 0.14 # "Amide -NH-CHR2"
+ set type @atom:172 charge 0.2 # "Amide -NH-CR3"
+ set type @atom:173 charge 0.7 # "Benzophenone C=O"
+ set type @atom:174 charge 0.565 # "Benzaldehyde C=O"
+ set type @atom:175 charge 0.585 # "Acetophenone C=O"
+ set type @atom:176 charge 0.615 # "Benzamide C=O"
+ set type @atom:177 charge 0.5 # "Amide C=O"
+ set type @atom:178 charge -0.5 # "Amide C=O"
+ set type @atom:179 charge -0.76 # "Amide -CO-NH2"
+ set type @atom:180 charge -0.5 # "Amide -CO-NHR"
+ set type @atom:181 charge -0.14 # "Amide -CO-NR2"
+ set type @atom:182 charge 0.38 # "Amide -CO-NH2"
+ set type @atom:183 charge 0.3 # "Amide -CO-NHR"
+ set type @atom:184 charge 0.02 # "Amide -NH-CH3"
+ set type @atom:185 charge -0.11 # "Amide -NR-CH3"
+ set type @atom:186 charge 0.08 # "Amide -NH-CH2R"
+ set type @atom:187 charge -0.05 # "Amide -NR-CH2R & PRO CD"
+ set type @atom:188 charge 0.01 # "Amide -NR-CHR2 & PRO CA"
+ set type @atom:189 charge 0.142 # "Urea C=O"
+ set type @atom:190 charge -0.39 # "Urea C=O"
+ set type @atom:191 charge -0.542 # "Urea -NH2"
+ set type @atom:192 charge 0.333 # "Urea -NH2"
+ set type @atom:193 charge -0.49 # "Imide -NH-"
+ set type @atom:194 charge 0.42 # "Imide C=O"
+ set type @atom:195 charge -0.42 # "Imide C=O"
+ set type @atom:196 charge 0.37 # "Imide -NH-"
+ set type @atom:197 charge 0.06 # "Formimide H-C=O"
+ set type @atom:198 charge -0.12 # "Imide CH3-CONHCO-"
+ set type @atom:199 charge -0.06 # "Imide -CH2-CONHCO-"
+ set type @atom:200 charge 0.0 # "Imide >CH-CONHCO-"
+ set type @atom:201 charge 0.06 # "Imide C-CONHCO-"
+ set type @atom:202 charge 0.035 # "Benzonitrile C-CN"
+ set type @atom:203 charge 0.395 # "Benzonitrile -CN"
+ set type @atom:204 charge -0.43 # "Benzonitrile -CN"
+ set type @atom:205 charge 0.18 # "Chlorobenzene C-Cl"
+ set type @atom:206 charge -0.18 # "Chlorobenzene C-Cl"
+ set type @atom:207 charge -0.385 # "N-Phenylacetamide N"
+ set type @atom:208 charge 0.085 # "N-Phenylacetamide N-CA"
+ set type @atom:209 charge 0.52 # "Carboxylic Acid -COOH"
+ set type @atom:210 charge -0.44 # "Carboxylic Acid C=O"
+ set type @atom:211 charge -0.53 # "Carboxylic Acid -OH"
+ set type @atom:212 charge 0.45 # "Carboxylic Acid -COOH"
+ set type @atom:213 charge 0.7 # "Carboxylate COO-"
+ set type @atom:214 charge -0.8 # "Carboxylate COO-"
+ set type @atom:215 charge -0.28 # "Carboxylate CH3-COO-"
+ set type @atom:216 charge -0.22 # "Carboxylate RCH2-COO-"
+ set type @atom:217 charge -0.16 # "Carboxylate R2CH-COO-"
+ set type @atom:218 charge -0.1 # "Carboxylate R3C-COO-"
+ set type @atom:219 charge 0.45 # "Aldehyde/Acyl Halide C=O"
+ set type @atom:220 charge -0.45 # "Aldehyde/Acyl Halide C=O"
+ set type @atom:221 charge 0.0 # "Aldehyde/Formamide H-C=O"
+ set type @atom:222 charge 0.47 # "Ketone C=O"
+ set type @atom:223 charge -0.47 # "Ketone C=O"
+ set type @atom:224 charge 0.06 # "Acyl H-C-COX"
+ set type @atom:225 charge 0.04 # "C-Terminal ALA CA"
+ set type @atom:226 charge -0.02 # "C-Terminal GLY CA"
+ set type @atom:227 charge 0.1 # "C-Terminal AIB CA"
+ set type @atom:228 charge -0.09 # "C-Terminal PRO CA"
+ set type @atom:229 charge -0.4 # "Ammonium NH4+"
+ set type @atom:230 charge -0.3 # "Ammonium RNH3+"
+ set type @atom:231 charge 0.0 # "Ammonium R4N+"
+ set type @atom:232 charge 0.35 # "Ammonium NH4+"
+ set type @atom:233 charge 0.33 # "Ammonium RNH3+"
+ set type @atom:234 charge 0.13 # "Ammonium CH3-NH3+"
+ set type @atom:235 charge 0.19 # "CH3NH3+/N-Term GLY CA"
+ set type @atom:236 charge 0.25 # "RCH2NH3+/N-Term ALA CA"
+ set type @atom:237 charge 0.31 # "R3C-NH3+/N-Term AIB CA"
+ set type @atom:238 charge 0.23 # "N-Terminal PRO CA"
+ set type @atom:239 charge 0.17 # "N-Terminal PRO CD"
+ set type @atom:240 charge 0.11 # "Ammonium CH3-NH2R+"
+ set type @atom:241 charge 0.09 # "GLY Zwitterion CA"
+ set type @atom:242 charge 0.15 # "ALA Zwitterion CA"
+ set type @atom:243 charge -0.8 # "Guanidinium -NH2"
+ set type @atom:244 charge 0.46 # "Guanidinium -NH2"
+ set type @atom:245 charge 0.64 # "Guanidinium C+"
+ set type @atom:246 charge -0.7 # "Guanidinium -NHR"
+ set type @atom:247 charge 0.44 # "Guanidinium -NHR"
+ set type @atom:248 charge 0.2 # "Me Guanidinium CH3-"
+ set type @atom:249 charge -0.11 # "Et Guanidinium CH3-"
+ set type @atom:250 charge 0.19 # "Et Guan -CH2- & ARG CD"
+ set type @atom:251 charge -0.05 # "Pr Guan -CH2- & ARG CG"
+ set type @atom:252 charge -0.2 # "Ammonium R2NH2+"
+ set type @atom:253 charge 0.31 # "Ammonium R2NH2+"
+ set type @atom:254 charge -0.46 # "Diaminopyridine N1"
+ set type @atom:255 charge 0.36 # "Diaminopyridine C2"
+ set type @atom:256 charge -0.85 # "Diaminopyridine -NH2"
+ set type @atom:257 charge 0.37 # "Diaminopyridine -NH2"
+ set type @atom:258 charge -0.15 # "Diaminopyridine C3"
+ set type @atom:259 charge 0.1 # "Diaminopyridine H3"
+ set type @atom:260 charge -0.04 # "Diaminopyridine C4"
+ set type @atom:261 charge 0.1 # "Diaminopyridine H4"
+ set type @atom:262 charge -0.6 # "Uracil & Thymine N1"
+ set type @atom:263 charge 0.5 # "Uracil & Thymine C2"
+ set type @atom:264 charge -0.51 # "Uracil & Thymine N3"
+ set type @atom:265 charge 0.45 # "Uracil & Thymine C4"
+ set type @atom:266 charge -0.07 # "Uracil & Thymine C5"
+ set type @atom:267 charge 0.08 # "Uracil & Thymine C6"
+ set type @atom:268 charge 0.41 # "Uracil & Thymine HN1"
+ set type @atom:269 charge -0.4 # "Uracil & Thymine O2"
+ set type @atom:270 charge 0.36 # "Uracil & Thymine HN3"
+ set type @atom:271 charge -0.42 # "Uracil & Thymine O4"
+ set type @atom:272 charge 0.1 # "Uracil & Thymine HC5"
+ set type @atom:273 charge 0.1 # "Uracil & Thymine HC6"
+ set type @atom:274 charge -0.14 # "Thymine CH3-"
+ set type @atom:275 charge 0.08 # "Thymine CH3-"
+ set type @atom:276 charge -0.56 # "Cytosine N1"
+ set type @atom:277 charge 0.55 # "Cytosine C2"
+ set type @atom:278 charge -0.54 # "Cytosine N3"
+ set type @atom:279 charge 0.46 # "Cytosine C4"
+ set type @atom:280 charge -0.06 # "Cytosine C5"
+ set type @atom:281 charge 0.1 # "Cytosine C6"
+ set type @atom:282 charge 0.38 # "Cytosine HN1"
+ set type @atom:283 charge -0.48 # "Cytosine O2"
+ set type @atom:284 charge -0.79 # "Cytosine NH2-"
+ set type @atom:285 charge 0.385 # "Cytosine NH2- (N3)"
+ set type @atom:286 charge 0.355 # "Cytosine NH2- (C5)"
+ set type @atom:287 charge 0.1 # "Cytosine HC5"
+ set type @atom:288 charge 0.1 # "Cytosine HC6"
+ set type @atom:289 charge -0.53 # "Adenine N1"
+ set type @atom:290 charge 0.22 # "Adenine C2"
+ set type @atom:291 charge -0.55 # "Adenine N3"
+ set type @atom:292 charge 0.38 # "Adenine C4"
+ set type @atom:293 charge 0.15 # "Adenine C5"
+ set type @atom:294 charge 0.44 # "Adenine C6"
+ set type @atom:295 charge -0.49 # "Adenine & Guanine N7"
+ set type @atom:296 charge 0.2 # "Adenine & Guanine C8"
+ set type @atom:297 charge -0.5 # "Adenine & Guanine N9"
+ set type @atom:298 charge 0.2 # "Adenine HC2"
+ set type @atom:299 charge -0.81 # "Adenine NH2-"
+ set type @atom:300 charge 0.385 # "Adenine NH2- (N1)"
+ set type @atom:301 charge 0.355 # "Adenine NH2- (C5)"
+ set type @atom:302 charge 0.2 # "Adenine & Guanine HC8"
+ set type @atom:303 charge 0.35 # "Adenine & Guanine HN9"
+ set type @atom:304 charge -0.56 # "Guanine N1"
+ set type @atom:305 charge 0.46 # "Guanine C2"
+ set type @atom:306 charge -0.51 # "Guanine N3"
+ set type @atom:307 charge 0.34 # "Guanine C4"
+ set type @atom:308 charge 0.12 # "Guanine C5"
+ set type @atom:309 charge 0.52 # "Guanine C6"
+ set type @atom:310 charge 0.38 # "Guanine HN1"
+ set type @atom:311 charge -0.8 # "Guanine NH2-"
+ set type @atom:312 charge 0.4 # "Guanine NH2-"
+ set type @atom:313 charge -0.51 # "Guanine O6"
+ set type @atom:314 charge -0.01 # "9-Me A & 9-Me-G CH3-"
+ set type @atom:315 charge 0.12 # "9-Me-A & 9-Me-G CH3-"
+ set type @atom:316 charge -0.01 # "1-Me-U & 1-Me-T CH3-"
+ set type @atom:317 charge 0.14 # "1-Me-U & 1-Me-T CH3-"
+ set type @atom:318 charge -0.01 # "1-Me-Cytosine CH3-"
+ set type @atom:319 charge 0.13 # "1-Me-Cytosine CH3-"
+ set type @atom:320 charge -0.64 # "CytosineH+ N1"
+ set type @atom:321 charge 0.65 # "CytosineH+ C2"
+ set type @atom:322 charge -0.74 # "CytosineH+ N3"
+ set type @atom:323 charge 0.66 # "CytosineH+ C4"
+ set type @atom:324 charge -0.06 # "CytosineH+ C5"
+ set type @atom:325 charge 0.1 # "CytosineH+ C6"
+ set type @atom:326 charge 0.49 # "CytosineH+ HN1"
+ set type @atom:327 charge -0.3 # "CytosineH+ O2"
+ set type @atom:328 charge 0.48 # "CytosineH+ HN3"
+ set type @atom:329 charge -0.81 # "CytosineH+ NH2-"
+ set type @atom:330 charge 0.46 # "CytosineH+ NH2- (N3)"
+ set type @atom:331 charge 0.43 # "CytosineH+ NH2- (C5)"
+ set type @atom:332 charge 0.14 # "CytosineH+ HC5"
+ set type @atom:333 charge 0.14 # "CytosineH+ HC6"
+ set type @atom:334 charge 0.01 # "1-Me-CytosineH+ CH3-"
+ set type @atom:335 charge 0.16 # "1-Me-CytosineH+ CH3-"
+ set type @atom:336 charge 0.78 # "DiMePhosphate P (UA)"
+ set type @atom:337 charge -0.66 # "DiMePhosphate O=P-O (UA)"
+ set type @atom:338 charge -0.43 # "DiMePhosphate CH3-O (UA)"
+ set type @atom:339 charge 0.2 # "DiMePhosphate CH3-O (UA)"
+ set type @atom:340 charge 0.18 # "Trifluorothymine CF3-"
+ set type @atom:341 charge -0.06 # "Chloroalkene Cl2-C="
+ set type @atom:342 charge 0.12 # "Chloroalkene Cl2-C="
+ set type @atom:343 charge -1.0 # "Fluoride Ion F-"
+ set type @atom:344 charge -1.0 # "Chloride Ion Cl-"
+ set type @atom:345 charge -1.0 # "Bromide Ion Br-"
+ set type @atom:346 charge -1.0 # "Iodide Ion I-"
+ set type @atom:347 charge 1.0 # "Ammonium Ion NH4+ (UA)"
+ set type @atom:348 charge 1.0 # "Lithium Ion Li+"
+ set type @atom:349 charge 1.0 # "Sodium Ion Na+"
+ set type @atom:350 charge 1.0 # "Potassium Ion K+"
+ set type @atom:351 charge 1.0 # "Rubidium Ion Rb+"
+ set type @atom:352 charge 1.0 # "Cesium Ion Cs+"
+ set type @atom:353 charge 2.0 # "Magnesium Ion Mg+2"
+ set type @atom:354 charge 2.0 # "Calcium Ion Ca+2"
+ set type @atom:355 charge 2.0 # "Strontium Ion Sr+2"
+ set type @atom:356 charge 2.0 # "Barium Ion Ba+2"
+ set type @atom:357 charge -0.4 # "Methyl Thiolate CH3S-"
+ set type @atom:358 charge 0.1 # "Methyl Thiolate CH3S-"
+ set type @atom:359 charge -0.9 # "Methyl Thiolate CH3S-"
+ set type @atom:360 charge -0.2 # "Methoxide CH3O-"
+ set type @atom:361 charge 0.06 # "Methoxide CH3O-"
+ set type @atom:362 charge -0.98 # "Methoxide CH3O-"
+ set type @atom:363 charge -1.07 # "Nitrile Anion CNCH2-"
+ set type @atom:364 charge 0.19 # "Nitrile Anion CNCH2-"
+ set type @atom:365 charge 0.51 # "Nitrile Anion CNCH2-"
+ set type @atom:366 charge -0.82 # "Nitrile Anion CNCH2-"
+ set type @atom:367 charge -0.3 # "Me Amine Anion CH3NH-"
+ set type @atom:368 charge 0.07 # "Me Amine Anion CH3NH-"
+ set type @atom:369 charge -1.31 # "Me Amine Anion CH3NH-"
+ set type @atom:370 charge 0.4 # "Methyl Amine Anion"
+ set type @atom:371 charge -0.4 # "Ethyl Anion CH3-CH2-"
+ set type @atom:372 charge 0.08 # "Ethyl Anion CH3-CH2-"
+ set type @atom:373 charge 0.0 # "Ethyl Anion CH3-CH2-"
+ set type @atom:374 charge 0.07 # "Ethyl Anion CH3-CH2-"
+ set type @atom:375 charge -0.98 # "Ethyl Anion CH3-CH2-"
+ set type @atom:376 charge -1.3 # "Hydroxide Ion OH-"
+ set type @atom:377 charge 0.3 # "Hydroxide Ion OH-"
+ set type @atom:378 charge 2.5 # "Uranyl Ion UO2+"
+ set type @atom:379 charge -0.25 # "Uranyl Ion UO2+"
+ set type @atom:380 charge -0.865 # "GTP O-(POn)2"
+ set type @atom:381 charge 1.62 # "DiMe Phosphate P"
+ set type @atom:382 charge -0.92 # "DiMe Phosphate O=P-O"
+ set type @atom:383 charge -0.6 # "DiMe Phosphate CH3-O"
+ set type @atom:384 charge 0.3 # "DiMe Phosphate CH3-O"
+ set type @atom:385 charge -0.03 # "DiMe Phosphate CH3-O"
+ set type @atom:386 charge 1.92 # "Me Phosphate P"
+ set type @atom:387 charge -1.12 # "Me Phosphate O=PO2"
+ set type @atom:388 charge -0.7 # "Me Phosphate CH3-O"
+ set type @atom:389 charge 0.44 # "Me Phosphate CH3-O"
+ set type @atom:390 charge -0.1 # "Me Phosphate CH3-O"
+ set type @atom:391 charge 1.62 # "Me MePhosphonate P"
+ set type @atom:392 charge -0.97 # "Me MePhosphonate O=P-O"
+ set type @atom:393 charge -0.63 # "Me MePhosphonate CH3-O"
+ set type @atom:394 charge 0.28 # "Me MePhosphonate CH3-O"
+ set type @atom:395 charge -0.02 # "Me MePhosphonate CH3-O"
+ set type @atom:396 charge -0.51 # "Me MePhosphonate CH3-P"
+ set type @atom:397 charge 0.08 # "Me MePhosphonate CH3-P"
+ set type @atom:398 charge -0.14 # "Bz MePhosphonate Cipso"
+ set type @atom:399 charge 0.32 # "Bz MePhosphonate CH3-O"
+ set type @atom:400 charge 0.02 # "Bz MePhosphonate CH3-O"
+ set type @atom:401 charge -0.04 # "Me BzPhosphonate Cipso"
+ set type @atom:402 charge -0.47 # "Me BzPhosphonate CH3-P"
+ set type @atom:403 charge 0.12 # "Me BzPhosphonate CH3-P"
+ set type @atom:404 charge 0.14 # "Ph Phosphate Cipso"
+ set type @atom:405 charge 0.24 # "Barbiturate C6(R2)"
+ set type @atom:406 charge 0.51 # "Ester -COOR"
+ set type @atom:407 charge -0.43 # "Ester C=O"
+ set type @atom:408 charge -0.33 # "Ester CO-O-R"
+ set type @atom:409 charge 0.16 # "Methyl Ester -OCH3"
+ set type @atom:410 charge 0.03 # "Ester -OCH<"
+ set type @atom:411 charge 0.635 # "Benzoic Acid -COOH"
+ set type @atom:412 charge 0.625 # "Aryl Ester -COOR"
+ set type @atom:413 charge 0.135 # "Phenyl Ester Cipso"
+ set type @atom:414 charge -0.215 # "Phenyl Ester -OPh"
+ set type @atom:415 charge 1.48 # "Sulfonamide -SO2N<"
+ set type @atom:416 charge -0.68 # "Sulfonamide -SO2N<"
+ set type @atom:417 charge -0.54 # "Sulfonamide CH3-S"
+ set type @atom:418 charge 0.18 # "Sulfonamide CH3-S"
+ set type @atom:419 charge -1.0 # "Sulfonamide -SO2NH2"
+ set type @atom:420 charge 0.44 # "Sulfonamide -SO2NH2"
+ set type @atom:421 charge -0.8 # "Sulfonamide -SO2NHR"
+ set type @atom:422 charge 0.41 # "Sulfonamide -SO2NHR"
+ set type @atom:423 charge 0.18 # "N-Me Sulfonamide CH3-"
+ set type @atom:424 charge 0.03 # "N-Me Sulfonamide CH3-"
+ set type @atom:425 charge 0.39 # "Sulfonamide N-CH2-R"
+ set type @atom:426 charge -0.06 # "Sulfonamide N-CH2-R"
+ set type @atom:427 charge -0.18 # "N-Et Sulfonamide CH3-"
+ set type @atom:428 charge 0.06 # "N-Et Sulfonamide CH3-"
+ set type @atom:429 charge 0.0 # "Aryl Sulfonamide C-SO2N"
+ set type @atom:430 charge 0.03 # "Aryl Sulfoxide C-S=O"
+ set type @atom:431 charge 0.19 # "Et Ester -OCH2R"
+ set type @atom:432 charge 0.22 # "i-Pr Ester -OCHR2"
+ set type @atom:433 charge 0.25 # "t-Bu Ester -OCR3"
+ set type @atom:434 charge 1.374 # "Sulfone R-SO2-R"
+ set type @atom:435 charge -0.687 # "Sulfone R-SO2-R"
+ set type @atom:436 charge 0.245 # "Alkyl Aryl Sulfoxide"
+ set type @atom:437 charge 0.13 # "Dialkyl Sulfoxide"
+ set type @atom:438 charge -0.42 # "Sulfoxide R-SO-R"
+ set type @atom:439 charge -0.035 # "Sulfoxide CH3-SO-R"
+ set type @atom:440 charge 0.025 # "Sulfoxide -CH2-SO-R"
+ set type @atom:441 charge 0.075 # "TRP CG"
+ set type @atom:442 charge -0.055 # "TRP CD"
+ set type @atom:443 charge 0.13 # "TRP CE"
+ set type @atom:444 charge -0.57 # "TRP NE, HID ND & HIE NE"
+ set type @atom:445 charge 0.42 # "TRP HNE & HID/HIE HN"
+ set type @atom:446 charge -0.005 # "HIS CB"
+ set type @atom:447 charge 0.295 # "HID & HIE CE1"
+ set type @atom:448 charge -0.015 # "HID CD2 & HIE CG"
+ set type @atom:449 charge 0.015 # "HID CG & HIE CD2"
+ set type @atom:450 charge 0.385 # "HIP CE1"
+ set type @atom:451 charge 0.215 # "HIP CG & CD2"
+ set type @atom:452 charge -0.49 # "HID NE & HIE ND"
+ set type @atom:453 charge -0.54 # "HIP ND & NE"
+ set type @atom:454 charge 0.46 # "HIP HND & HNE"
+ set type @atom:455 charge -0.115 # "TRP CD1"
+ set type @atom:456 charge 0.055 # "i-Pr Benzene -CHMe2"
+ set type @atom:457 charge 0.115 # "t-Bu Benzene -CMe3"
+ set type @atom:458 charge -0.03 # "Vinyl Ether =CH-OR"
+ set type @atom:459 charge 0.085 # "Vinyl Ether =CR-OR"
+ set type @atom:460 charge 0.0 # "Biphenyl C1"
+ set type @atom:461 charge -0.678 # "Pyridine N"
+ set type @atom:462 charge 0.473 # "Pyridine C1"
+ set type @atom:463 charge -0.447 # "Pyridine C2"
+ set type @atom:464 charge 0.227 # "Pyridine C3"
+ set type @atom:465 charge 0.012 # "Pyridine H1"
+ set type @atom:466 charge 0.155 # "Pyridine H2"
+ set type @atom:467 charge 0.065 # "Pyridine H3"
+ set type @atom:468 charge -0.468 # "Pyrazine N"
+ set type @atom:469 charge 0.192 # "Pyrazine CH"
+ set type @atom:470 charge 0.042 # "Pyrazine CH"
+ set type @atom:471 charge -0.839 # "Pyrimidine N"
+ set type @atom:472 charge 0.874 # "Pyrimidine C2"
+ set type @atom:473 charge 0.653 # "Pyrimidine C4"
+ set type @atom:474 charge -0.689 # "Pyrimidine C5"
+ set type @atom:475 charge -0.032 # "Pyrimidine HC2"
+ set type @atom:476 charge 0.011 # "Pyrimidine HC4"
+ set type @atom:477 charge 0.197 # "Pyrimidine HC5"
+ set type @atom:478 charge -0.331 # "Pyridazine N"
+ set type @atom:479 charge 0.378 # "Pyridazine C3"
+ set type @atom:480 charge -0.16 # "Pyridazine C4"
+ set type @atom:481 charge -0.009 # "Pyridazine HC3"
+ set type @atom:482 charge 0.122 # "Pyridazine HC4"
+ set type @atom:483 charge -0.239 # "Pyrrole N"
+ set type @atom:484 charge -0.163 # "Pyrrole C2"
+ set type @atom:485 charge -0.149 # "Pyrrole C3"
+ set type @atom:486 charge 0.317 # "Pyrrole HN"
+ set type @atom:487 charge 0.155 # "Pyrrole HC2"
+ set type @atom:488 charge 0.118 # "Pyrrole HC3"
+ set type @atom:489 charge -0.059 # "Pyrazole N1"
+ set type @atom:490 charge -0.491 # "Pyrazole N2"
+ set type @atom:491 charge 0.246 # "Pyrazole C3"
+ set type @atom:492 charge -0.32 # "Pyrazole C4"
+ set type @atom:493 charge -0.034 # "Pyrazole C5"
+ set type @atom:494 charge 0.301 # "Pyrazole HN1"
+ set type @atom:495 charge 0.072 # "Pyrazole HC3"
+ set type @atom:496 charge 0.15 # "Pyrazole HC4"
+ set type @atom:497 charge 0.135 # "Pyrazole HC5"
+ set type @atom:498 charge -0.257 # "Imidazole N1"
+ set type @atom:499 charge 0.275 # "Imidazole C2"
+ set type @atom:500 charge -0.563 # "Imidazole N3"
+ set type @atom:501 charge 0.185 # "Imidazole C4"
+ set type @atom:502 charge -0.286 # "Imidazole C5"
+ set type @atom:503 charge 0.306 # "Imidazole HN1"
+ set type @atom:504 charge 0.078 # "Imidazole HC2"
+ set type @atom:505 charge 0.075 # "Imidazole HC4"
+ set type @atom:506 charge 0.187 # "Imidazole HC5"
+ set type @atom:507 charge -0.19 # "Furan O"
+ set type @atom:508 charge -0.019 # "Furan C2"
+ set type @atom:509 charge -0.154 # "Furan C3"
+ set type @atom:510 charge 0.142 # "Furan HC2"
+ set type @atom:511 charge 0.126 # "Furan HC3"
+ set type @atom:512 charge -0.257 # "Oxazole O"
+ set type @atom:513 charge 0.511 # "Oxazole C2"
+ set type @atom:514 charge -0.59 # "Oxazole N"
+ set type @atom:515 charge 0.169 # "Oxazole C4"
+ set type @atom:516 charge -0.148 # "Oxazole C5"
+ set type @atom:517 charge 0.043 # "Oxazole HC2"
+ set type @atom:518 charge 0.091 # "Oxazole HC4"
+ set type @atom:519 charge 0.181 # "Oxazole HC5"
+ set type @atom:520 charge -0.122 # "Isoxazole O"
+ set type @atom:521 charge -0.413 # "Isoxazole N"
+ set type @atom:522 charge 0.405 # "Isoxazole C3"
+ set type @atom:523 charge -0.455 # "Isoxazole C4"
+ set type @atom:524 charge 0.25 # "Isoxazole C5"
+ set type @atom:525 charge 0.053 # "Isoxazole HC3"
+ set type @atom:526 charge 0.184 # "Isoxazole HC4"
+ set type @atom:527 charge 0.098 # "Isoxazole HC5"
+ set type @atom:528 charge -0.5 # "Indole N1"
+ set type @atom:529 charge 0.001 # "Indole C2"
+ set type @atom:530 charge -0.39 # "Indole C3"
+ set type @atom:531 charge -0.27 # "Indole C4"
+ set type @atom:532 charge -0.127 # "Indole C5"
+ set type @atom:533 charge -0.108 # "Indole C6"
+ set type @atom:534 charge -0.258 # "Indole C7"
+ set type @atom:535 charge 0.22 # "Indole C8"
+ set type @atom:536 charge 0.225 # "Indole C9"
+ set type @atom:537 charge 0.376 # "Indole HN1"
+ set type @atom:538 charge 0.147 # "Indole HC2"
+ set type @atom:539 charge 0.172 # "Indole HC3"
+ set type @atom:540 charge 0.155 # "Indole HC4"
+ set type @atom:541 charge 0.107 # "Indole HC5"
+ set type @atom:542 charge 0.11 # "Indole HC6"
+ set type @atom:543 charge 0.14 # "Indole HC7"
+ set type @atom:544 charge -0.694 # "Quinoline N1"
+ set type @atom:545 charge 0.425 # "Quinoline C2"
+ set type @atom:546 charge -0.359 # "Quinoline C3"
+ set type @atom:547 charge -0.008 # "Quinoline C4"
+ set type @atom:548 charge -0.197 # "Quinoline C5"
+ set type @atom:549 charge -0.112 # "Quinoline C6"
+ set type @atom:550 charge -0.07 # "Quinoline C7"
+ set type @atom:551 charge -0.307 # "Quinoline C8"
+ set type @atom:552 charge 0.563 # "Quinoline C9"
+ set type @atom:553 charge -0.051 # "Quinoline C10"
+ set type @atom:554 charge 0.028 # "Quinoline HC2"
+ set type @atom:555 charge 0.146 # "Quinoline HC3"
+ set type @atom:556 charge 0.119 # "Quinoline HC4"
+ set type @atom:557 charge 0.133 # "Quinoline HC5"
+ set type @atom:558 charge 0.113 # "Quinoline HC6"
+ set type @atom:559 charge 0.114 # "Quinoline HC7"
+ set type @atom:560 charge 0.157 # "Quinoline HC8"
+ set type @atom:561 charge -0.76 # "Purine N1"
+ set type @atom:562 charge 0.679 # "Purine C2"
+ set type @atom:563 charge -0.788 # "Purine N3"
+ set type @atom:564 charge 0.736 # "Purine C4"
+ set type @atom:565 charge 0.038 # "Purine C5"
+ set type @atom:566 charge 0.343 # "Purine C6"
+ set type @atom:567 charge -0.642 # "Purine N7"
+ set type @atom:568 charge 0.452 # "Purine C8"
+ set type @atom:569 charge -0.682 # "Purine N9"
+ set type @atom:570 charge 0.024 # "Purine HC2"
+ set type @atom:571 charge 0.101 # "Purine HC6"
+ set type @atom:572 charge 0.086 # "Purine HC8"
+ set type @atom:573 charge 0.413 # "Purine HN9"
+ set type @atom:574 charge -0.03 # "Thiazole S"
+ set type @atom:575 charge 0.242 # "Thiazole C2"
+ set type @atom:576 charge -0.515 # "Thiazole N"
+ set type @atom:577 charge 0.228 # "Thiazole C4"
+ set type @atom:578 charge -0.299 # "Thiazole C5"
+ set type @atom:579 charge 0.101 # "Thiazole HC2"
+ set type @atom:580 charge 0.068 # "Thiazole HC4"
+ set type @atom:581 charge 0.205 # "Thiazole HC5"
+ set type @atom:582 charge -0.951 # "1,3,5-Triazine N"
+ set type @atom:583 charge 0.965 # "1,3,5-Triazine CH"
+ set type @atom:584 charge -0.014 # "1,3,5-Triazine CH"
+ set type @atom:585 charge 0.13 # "Serotonin C5-OH"
+ set type @atom:586 charge 0.052 # "Serotonin CH2 on C3"
+ set type @atom:587 charge -0.599 # "1,10-Phenanthroline N"
+ set type @atom:588 charge 0.392 # "1,10-Phenanthroline C2"
+ set type @atom:589 charge -0.348 # "1,10-Phenanthroline C3"
+ set type @atom:590 charge 0.02 # "1,10-Phenanthroline C4"
+ set type @atom:591 charge -0.042 # "1,10-Phenanthroline C12"
+ set type @atom:592 charge 0.347 # "1,10-Phenanthroline C11"
+ set type @atom:593 charge -0.196 # "1,10-Phenanthroline C5"
+ set type @atom:594 charge 0.032 # "1,10-Phenanthroline HC2"
+ set type @atom:595 charge 0.146 # "1,10-Phenanthroline HC3"
+ set type @atom:596 charge 0.108 # "1,10-Phenanthroline HC4"
+ set type @atom:597 charge 0.14 # "1,10-Phenanthroline HC5"
+ set type @atom:598 charge 0.122 # "1-Methylimidazole N1"
+ set type @atom:599 charge 0.166 # "1-Methylimidazole C2"
+ set type @atom:600 charge -0.58 # "1-Methylimidazole N3"
+ set type @atom:601 charge 0.173 # "1-Methylimidazole C4"
+ set type @atom:602 charge -0.395 # "1-Methylimidazole C5"
+ set type @atom:603 charge -0.199 # "1-Methylimidazole CH3-"
+ set type @atom:604 charge 0.118 # "1-Methylimidazole HC2"
+ set type @atom:605 charge 0.093 # "1-Methylimidazole HC4"
+ set type @atom:606 charge 0.208 # "1-Methylimidazole HC5"
+ set type @atom:607 charge 0.098 # "1-Methylimidazole CH3-"
+ set type @atom:608 charge -0.139 # "1-Et Imidazole RCH2-"
+ set type @atom:609 charge -0.079 # "1-iPr Imidazole R2CH-"
+ set type @atom:610 charge 0.099 # "1-MeO-Me-Imidazole CH2"
+ set type @atom:611 charge -0.168 # "2-Me Pyridine CH3"
+ set type @atom:612 charge -0.108 # "2-Et Pyridine CH2"
+ set type @atom:613 charge -0.189 # "3-Me Pyridazine CH3"
+ set type @atom:614 charge -0.129 # "3-Et Pyridazine CH2"
+ set type @atom:615 charge -0.169 # "4-Me Pyrimidine CH3"
+ set type @atom:616 charge -0.109 # "4-Et Pyrimidine CH2"
+ set type @atom:617 charge -0.138 # "2-Me Pyrazine CH3"
+ set type @atom:618 charge -0.078 # "2-Et Pyrazine CH2"
+ set type @atom:619 charge -0.025 # "2-Me Pyrrole CH3"
+ set type @atom:620 charge 0.035 # "2-Et Pyrrole CH2"
+ set type @atom:621 charge -0.038 # "2-Me Furan CH3"
+ set type @atom:622 charge 0.022 # "2-Et Furan CH2"
+ set type @atom:623 charge -0.334 # "6-Mercaptopurine SH"
+ set type @atom:624 charge 0.255 # "6-Mercaptopurine SH"
+ set type @atom:625 charge 0.523 # "6-Mercaptopurine C6"
+ set type @atom:626 charge 0.5 # "Beta-Lactam N-C=O"
+ set type @atom:627 charge -0.14 # "Beta-Lactam N-C=O"
+ set type @atom:628 charge 0.2275 # "Penicillin CH-N"
+ set type @atom:629 charge 0.14 # "Penicillin CH-CO"
+ set type @atom:630 charge -0.008 # "3-Me Indole CH3"
+ set type @atom:631 charge 0.588 # "2-Phenyl Pyridine C2"
+ set type @atom:632 charge -0.103 # "2-Phenyl Pyridine C2'"
+ set type @atom:633 charge -0.332 # "2-Phenyl Pyridine C3"
+ set type @atom:634 charge 0.04 # "2-Phenyl Pyridine C3'"
+ set type @atom:635 charge 0.342 # "2-Phenyl Pyridine C4"
+ set type @atom:636 charge -0.05 # "2-Phenyl Pyridine C4'"
+ set type @atom:637 charge -0.205 # "Diphenyl Thioether S"
+ set type @atom:638 charge 3.0 # "Actinium Ion Ac+3"
+ set type @atom:639 charge 4.0 # "Thorium Ion Th+4"
+ set type @atom:640 charge 3.0 # "Americium Ion Am+3"
+ set type @atom:641 charge 0.619 # "t-Butyl Cation C+"
+ set type @atom:642 charge -0.395 # "t-Butyl Cation CH3-"
+ set type @atom:643 charge 0.174 # "t-Butyl Cation CH3-"
+ set type @atom:644 charge 3.0 # "Lanthanum Ion La+3"
+ set type @atom:645 charge 3.0 # "Neodymium Ion Nd+3"
+ set type @atom:646 charge 3.0 # "Europium Ion Eu+3"
+ set type @atom:647 charge 3.0 # "Gadolinium Ion Gd+3"
+ set type @atom:648 charge 3.0 # "Ytterbium Ion Yb+3"
+ set type @atom:649 charge -0.344 # "Cl..CH3..Cl- Sn2 TS"
+ set type @atom:650 charge -0.628 # "Cl..CH3..Cl- Sn2 TS"
+ set type @atom:651 charge 0.2 # "Cl..CH3..Cl- Sn2 TS"
+ set type @atom:652 charge -0.12 # "Cyclopropane -CH2-"
+ set type @atom:653 charge -0.06 # "Cyclopropane -CHR-"
+ set type @atom:654 charge 0.0 # "Cyclopropane -CR2-"
+ set type @atom:655 charge -0.23 # "Cyclopentadienyl Anion"
+ set type @atom:656 charge 0.03 # "Cyclopentadienyl Anion"
+ set type @atom:657 charge -0.099 # "Cyclopentadienyl Radical"
+ set type @atom:658 charge 0.099 # "Cyclopentadienyl Radical"
+ set type @atom:659 charge 0.22 # "Fluorobenzene CF"
+ set type @atom:660 charge -0.22 # "Fluorobenzene CF"
+ set type @atom:661 charge 0.13 # "Hexafluorobenzene CF"
+ set type @atom:662 charge -0.13 # "Hexafluorobenzene CF"
+ set type @atom:663 charge -0.22 # "Bromide -CH2-Br (UA)"
+ set type @atom:664 charge 0.22 # "Bromide -CH2-Br (UA)"
+ set type @atom:665 charge 0.15 # "TrifluoroMeBenzene C-CF3"
+ set type @atom:666 charge 0.45 # "TrifluoroMeBenzene CF3-"
+ set type @atom:667 charge -0.2 # "TrifluoroMeBenzene CF3-"
+ set type @atom:668 charge 0.2 # "Difluorobenzene CF"
+ set type @atom:669 charge -0.2 # "Difluorobenzene CF"
+ set type @atom:670 charge 0.2 # "Bromobenzene CBr"
+ set type @atom:671 charge -0.2 # "Bromobenzene CBr"
+ set type @atom:672 charge 0.1 # "Iodobenzene CI"
+ set type @atom:673 charge -0.1 # "Iodobenzene CI"
+ set type @atom:674 charge 0.055 # "cProp/cBut Benzene C-Ar"
+ set type @atom:675 charge -0.22 # "Thiophenol SH"
+ set type @atom:676 charge 0.065 # "Thiophenol C-SH"
+ set type @atom:677 charge 0.013 # "Benzamidine CG"
+ set type @atom:678 charge -0.106 # "Benzamidine CD"
+ set type @atom:679 charge -0.09 # "Benzamidine CE"
+ set type @atom:680 charge -0.119 # "Benzamidine CZ"
+ set type @atom:681 charge 0.141 # "Benzamidine HCD"
+ set type @atom:682 charge 0.129 # "Benzamidine HCE"
+ set type @atom:683 charge 0.827 # "Benzamidine C+"
+ set type @atom:684 charge -0.885 # "Benzamidine -NH2"
+ set type @atom:685 charge 0.426 # "Benzamidine H1-N"
+ set type @atom:686 charge 0.465 # "Benzamidine H2-N"
+ set type @atom:687 charge 0.119 # "Benzamidine HCG"
+ set type @atom:688 charge -0.02 # "Neutral MeGdn CH3-"
+ set type @atom:689 charge 0.04 # "Neutral ARG CD"
+ set type @atom:690 charge -0.62 # "Neutral ARG NE"
+ set type @atom:691 charge -0.785 # "Neutral ARG N1 (HN=C)"
+ set type @atom:692 charge -0.785 # "Neutral ARG N2 (H2N-C)"
+ set type @atom:693 charge 0.55 # "Neutral ARG CZ (>C=)"
+ set type @atom:694 charge -0.56 # "Alkyl Nitrile -CN"
+ set type @atom:695 charge 0.46 # "Alkyl Nitrile -CN"
+ set type @atom:696 charge -0.08 # "Acetonitrile CH3-CN"
+ set type @atom:697 charge -0.02 # "Alkyl Nitrile RCH2-CN"
+ set type @atom:698 charge 0.04 # "Alkyl Nitrile R2CH-CN"
+ set type @atom:699 charge 0.1 # "Alkyl Nitrile R3C-CN"
+ set type @atom:700 charge 0.06 # "Alkyl Nitrile H-C-CN"
+ set type @atom:701 charge 0.54 # "Nitroalkane -NO2"
+ set type @atom:702 charge -0.37 # "Nitroalkane -NO2"
+ set type @atom:703 charge 0.02 # "Nitromethane CH3-NO2"
+ set type @atom:704 charge 0.06 # "Nitroalkane H-C-NO2"
+ set type @atom:705 charge 0.08 # "Nitroalkane RCH2-NO2"
+ set type @atom:706 charge 0.14 # "Nitroalkane R2CH-NO2"
+ set type @atom:707 charge 0.2 # "Nitroalkane R3C-NO2"
+ set type @atom:708 charge 0.65 # "Nitrobenzene -NO2"
+ set type @atom:709 charge 0.09 # "Nitrobenzene C-NO2"
+ set type @atom:710 charge 0.035 # "Benzonitrile -CH2-"
+ set type @atom:711 charge -0.9 # "Neutral Benzamidine N"
+ set type @atom:712 charge -0.5 # "Propylene Carbonate C=O"
+ set type @atom:713 charge 0.86 # "Propylene Carbonate C=O"
+ set type @atom:714 charge -0.45 # "Propylene Carbonate C-O"
+ set type @atom:715 charge 0.21 # "Propylene Carbonate CH2"
+ set type @atom:716 charge 0.16 # "Propylene Carbonate CH"
+ set type @atom:717 charge -0.1 # "Propylene Carbonate CH3"
+ set type @atom:718 charge 0.03 # "Propylene Carbonate CH2"
+ set type @atom:719 charge 0.03 # "Propylene Carbonate CH"
+ set type @atom:720 charge 0.06 # "Propylene Carbonate CH3"
+ set type @atom:721 charge -0.78 # "GTP O-(POn)2"
+ set type @atom:722 charge 0.9684 # "Phosphonium R4P+"
+ set type @atom:723 charge -0.5081 # "Phosphonium CH3-PR3+"
+ set type @atom:724 charge -0.008 # "Phosphonium RCH2-PR3+"
+ set type @atom:725 charge 0.172 # "Phosphonium CH3-PR3+"
+ set type @atom:726 charge 1.34 # "Hexafluorophosphate Ion"
+ set type @atom:727 charge -0.39 # "Hexafluorophosphate Ion"
+ set type @atom:728 charge 0.794 # "Nitrate Ion NO3-"
+ set type @atom:729 charge -0.598 # "Nitrate Ion NO3-"
+ set type @atom:730 charge -0.9 # "Amine RNH2"
+ set type @atom:731 charge -0.78 # "Amine R2NH"
+ set type @atom:732 charge -0.63 # "Amine R3N"
+ set type @atom:733 charge 0.0 # "Amine CH3-NH2"
+ set type @atom:734 charge 0.02 # "Amine CH3-NHR"
+ set type @atom:735 charge 0.03 # "Amine CH3-NR2"
+ set type @atom:736 charge 0.06 # "Amine RCH2-NH2"
+ set type @atom:737 charge 0.08 # "Amine RCH2-NHR"
+ set type @atom:738 charge 0.09 # "Amine RCH2-NR2"
+ set type @atom:739 charge 0.36 # "Amine RNH2"
+ set type @atom:740 charge 0.38 # "Amine R2NH"
+ set type @atom:741 charge 0.06 # "Amine H-C-N"
+ set type @atom:742 charge 0.12 # "Amine R2CH-NH2"
+ set type @atom:743 charge 0.18 # "Amine R3C-NH2"
+ set type @atom:744 charge 0.14 # "Amine R2CH-NHR"
+ set type @atom:745 charge 0.15 # "Amine R2CH-NR2"
+ set type @atom:746 charge 0.18 # "Aniline C-NH2"
+ set type @atom:747 charge 0.2 # "N-Me Aniline C-NHR"
+ set type @atom:748 charge 0.21 # "N-DiMe Aniline C-NR2"
+ set type @atom:749 charge 0.115 # "Benzyl Amine -CH2NH2"
+ set type @atom:750 charge 0.175 # "Benzyl Amine -CHRNH2"
+ set type @atom:751 charge 0.235 # "Benzyl Amine -CR2NH2"
+ set type @atom:752 charge 0.195 # "Benzyl Ether -CH2OR"
+ set type @atom:753 charge 0.1525 # "Benzyl Sulfide -CH2SH"
+ set type @atom:754 charge 0.135 # "Benzyl Amine -CH2NHR"
+ set type @atom:755 charge -0.21 # "Alkyne HCC-"
+ set type @atom:756 charge 0.2 # "Alkyne HCC-"
+ set type @atom:757 charge 0.01 # "Alkyne RCCH R w/ 2/3 H"
+ set type @atom:758 charge 0.01 # "Alkyne RCCH R w/ 1 H"
+ set type @atom:759 charge 0.01 # "Alkyne RCCH R w/ O H/Ph"
+ set type @atom:760 charge 0.06 # "Alkyne H-C-CC-"
+ set type @atom:761 charge 0.45 # "A & G Sugar C1'"
+ set type @atom:762 charge 0.48 # "C Sugar C1'"
+ set type @atom:763 charge 0.51 # "U & T Sugar C1'"
+ set type @atom:764 charge -0.655 # "Sugar O5'"
+ set type @atom:765 charge 0.39 # "Sugar H3' (-OH)"
+ set type @atom:766 charge -0.5 # "A & G Nucleoside N9"
+ set type @atom:767 charge -0.56 # "C Nucleoside N1"
+ set type @atom:768 charge -0.6 # "U & T Nucleoside N1"
+ set type @atom:769 charge 0.0 # "Alkyne RCCR"
+ set type @atom:770 charge -0.1 # "Ammonium R3NH+"
+ set type @atom:771 charge 0.29 # "Ammonium R3NH+"
+ set type @atom:772 charge 0.09 # "Ammonium CH3-NHR2+"
+ set type @atom:773 charge 0.15 # "Ammonium RCH2-NHR2+"
+ set type @atom:774 charge 0.21 # "Ammonium R2CH-NHR2+"
+ set type @atom:775 charge 0.27 # "Ammonium R3C-NHR2+"
+ set type @atom:776 charge 0.096 # "2-Phenyl Furan C2"
+ set type @atom:777 charge -0.039 # "2-Phenyl Furan C3"
+ set type @atom:778 charge 0.027 # "2-Phenyl Furan C2'"
+ set type @atom:779 charge 0.011 # "2-Phenyl Furan C3'"
+ set type @atom:780 charge 0.074 # "GLY Zwitterion HA"
+ set type @atom:781 charge -0.029 # "GLY Zwitterion CA"
+ set type @atom:782 charge 0.7 # "GLY Zwitterion C"
+ set type @atom:783 charge -0.352 # "GLY Zwitterion N"
+ set type @atom:784 charge -0.709 # "GLY Zwitterion O"
+ set type @atom:785 charge 0.317 # "GLY Zwitterion HN"
+ set type @atom:786 charge -0.22 # "Alkyl Fluoride C-F"
+ set type @atom:787 charge 0.02 # "Alkyl Fluoride RCH2-F"
+ set type @atom:788 charge 0.1 # "Alkyl Fluoride H-C-F"
+ set type @atom:789 charge 0.12 # "Alkyl Fluoride R2CH-F"
+ set type @atom:790 charge 0.22 # "Alkyl Fluoride R3C-F"
+ set type @atom:791 charge 0.36 # "Perfluoroalkane CF3-"
+ set type @atom:792 charge 0.24 # "Perfluoroalkane -CF2-"
+ set type @atom:793 charge 0.12 # "Perfluoroalkane >CF-"
+ set type @atom:794 charge 0.48 # "Tetrafluoromethane CF4"
+ set type @atom:795 charge -0.12 # "Perfluoroalkane C-F"
+ set type @atom:796 charge 0.25 # "DifluoroMeBenzene -CHF2"
+ set type @atom:797 charge 0.15 # "DifluoroMeBenzene -CHF2"
+ set type @atom:798 charge -0.08 # "Fluoroacetate FCH2-COO-"
+ set type @atom:799 charge -0.106 # "Chloroacetate ClCH2-COO-"
+ set type @atom:800 charge -0.2 # "Alkyl Chloride C-Cl"
+ set type @atom:801 charge -0.006 # "Alkyl Chloride RCH2-Cl"
+ set type @atom:802 charge 0.103 # "Alkyl Chloride H-C-Cl"
+ set type @atom:803 charge 0.097 # "Alkyl Chloride R2CH-Cl"
+ set type @atom:804 charge 0.2 # "Alkyl Chloride R3C-Cl"
+ set type @atom:805 charge -0.2 # "Alkyl Bromide C-Br"
+ set type @atom:806 charge -0.006 # "Alkyl Bromide RCH2-Br"
+ set type @atom:807 charge 0.103 # "Alkyl Bromide H-C-Br"
+ set type @atom:808 charge 0.097 # "Alkyl Bromide R2CH-Br"
+ set type @atom:809 charge 0.2 # "Alkyl Bromide R3C-Br"
+ set type @atom:810 charge -0.08 # "Acyl Fluoride F-C=O"
+ set type @atom:811 charge -0.08 # "Acyl Chloride Cl-C=O"
+ set type @atom:812 charge -0.08 # "Acyl Bromide Br-C=O"
+ set type @atom:813 charge 0.1 # "Trifluoroanisole C-OCF3"
+ set type @atom:814 charge -0.25 # "Trifluoroanisole -OCF3"
+ set type @atom:815 charge 0.6 # "Trifluoroanisole -OCF3"
+ set type @atom:816 charge -0.15 # "Trifluoroanisole -OCF3"
+ set type @atom:817 charge -0.025 # "N-Me,N-PhAcetamide N"
+ set type @atom:818 charge -0.045 # "N-Me,N-PhAcetamide Cipso"
+ set type @atom:819 charge 0.145 # "Benzyl Amine -CH2NR2"
+ set type @atom:820 charge 0.888 # "Alkyl Hydroxamic Acid C"
+ set type @atom:821 charge 1.003 # "Aryl Hydroxamic Acid C"
+ set type @atom:822 charge -0.658 # "Hydroxamic Acid C=O"
+ set type @atom:823 charge -0.634 # "Hydroxamic Acid N"
+ set type @atom:824 charge 0.411 # "Hydroxamic Acid HN"
+ set type @atom:825 charge -0.442 # "Hydroxamic Acid OH"
+ set type @atom:826 charge 0.435 # "Hydroxamic Acid OH"
+ set type @atom:827 charge 0.225 # "Benzyl Ether -CHROR"
+ set type @atom:828 charge 0.255 # "Benzyl Ether -CR2OR"
+ set type @atom:829 charge -0.034 # "3-Phenyl Pyrrole C3"
+ set type @atom:830 charge 0.003 # "3-Phenyl Pyrrole C3'"
+ set type @atom:831 charge 0.3 # "4-Phenyl Imidazole C4"
+ set type @atom:832 charge -0.04 # "4-Phenyl Imidazole C4'"
+ set type @atom:833 charge -0.0575 # "Diphenylmethane Cipso"
+ set type @atom:834 charge 2.0 # "Zinc Ion Zn+2"
+ set type @atom:835 charge -0.07 # "Alkyl Iodide RCH2-I"
+ set type @atom:836 charge 0.03 # "Alkyl Iodide R2CH-I"
+ set type @atom:837 charge 0.13 # "Alkyl Iodide R3C-I"
+ set type @atom:838 charge -0.13 # "Alkyl Iodide C-I"
+ set type @atom:839 charge 0.1 # "Alkyl Iodide H-C-I"
+ set type @atom:840 charge -0.685 # "N-Ph Sulfonamide -NHPh"
+ set type @atom:841 charge 0.155 # "N-Ph Sulfonamide Cipso"
+ set type @atom:842 charge -0.1 # "Benzoate C-COO-"
+ set type @atom:843 charge -0.427 # "N-Phenyl Urea N"
+ set type @atom:844 charge 0.218 # "N-Phenyl Urea Cipso"
+ set type @atom:845 charge 0.6 # "Tertiary Amide -CO-NR2"
+ set type @atom:846 charge -0.6 # "Tertiary Amide -CO-NR2"
+ set type @atom:847 charge -0.36 # "Tertiary Amide -CO-NR2"
+ set type @atom:848 charge 0.0 # "Tertiary Amide -NRCH3"
+ set type @atom:849 charge 0.06 # "Tertiary Amide -NRCH2R"
+ set type @atom:850 charge 0.12 # "Tertiary Amide -NRCHR2"
+ set type @atom:851 charge 0.18 # "Tertiary Amide -NRCR3"
+ set type @atom:852 charge 0.06 # "Tertiary Amide H-C-N"
+ set type @atom:853 charge 0.57 # "Tertiary Formamide C=O"
+ set type @atom:854 charge -0.57 # "Tertiary Formamide C=O"
+ set type @atom:855 charge 0.0 # "Tertiary Formamide H-C=O"
+ set type @atom:856 charge 0.02 # "B2-Peptide CA"
+ set type @atom:857 charge -0.04 # "B3-Peptide CA Main/N-Ter"
+ set type @atom:858 charge 0.0 # "B3-Pep CB GLY Main/C-Ter"
+ set type @atom:859 charge 0.06 # "B3-Pep CB ALA Main/C-Ter"
+ set type @atom:860 charge -0.07 # "B3-Pep CB PRO Main/C-Ter"
+ set type @atom:861 charge -0.14 # "B3-Peptide CA C-Ter"
+ set type @atom:862 charge 0.17 # "B3-Peptide CB ALA N-Ter"
+ set type @atom:863 charge 0.11 # "B3-Peptide CB GLY N-Ter"
+ set type @atom:864 charge 0.15 # "B3-Peptide CB PRO N-Ter"
+ set type @atom:865 charge 0.17 # "B3-Peptide CE PRO N-Ter"
+ set type @atom:866 charge 1.0 # "Alkyl Silane R4Si"
+ set type @atom:867 charge 0.85 # "Alkyl Silane R3SiH"
+ set type @atom:868 charge 0.7 # "Alkyl Silane R2SiH2"
+ set type @atom:869 charge 0.55 # "Alkyl Silane RSiH3"
+ set type @atom:870 charge -0.1 # "Alkyl Silane H-C-Si"
+ set type @atom:871 charge -0.43 # "Methyl Silane CH3-Si"
+ set type @atom:872 charge -0.37 # "Alkyl Silane RCH2-Si"
+ set type @atom:873 charge -0.31 # "Alkyl Silane R2CH-Si"
+ set type @atom:874 charge -0.25 # "Alkyl Silane R3C-Si"
+ set type @atom:875 charge -1.0 # "Fluoride Ion (GBSA)"
+ set type @atom:876 charge -1.0 # "Chloride Ion (GBSA)"
+ set type @atom:877 charge -1.0 # "Bromide Ion (GBSA)"
+ set type @atom:878 charge -1.0 # "Iodide Ion (GBSA)"
+ set type @atom:879 charge 1.0 # "Lithium Ion (GBSA)"
+ set type @atom:880 charge 1.0 # "Sodium Ion (GBSA)"
+ set type @atom:881 charge 1.0 # "Potassium Ion (GBSA)"
+ set type @atom:882 charge 1.0 # "Rubidium Ion (GBSA)"
+ set type @atom:883 charge 1.0 # "Cesium Ion (GBSA)"
+ set type @atom:884 charge 2.0 # "Magnesium Ion (GBSA)"
+ set type @atom:885 charge 2.0 # "Calcium Ion (GBSA)"
+ set type @atom:886 charge 2.0 # "Strontium Ion (GBSA)"
+ set type @atom:887 charge 2.0 # "Barium Ion (GBSA)"
+ set type @atom:888 charge -0.05 # "Ammonium CH3-NR3+"
+ set type @atom:889 charge 0.05 # "Ammonium RCH2-NR3+"
+ set type @atom:890 charge 0.15 # "Ammonium R2CH-NR3+"
+ set type @atom:891 charge 0.25 # "Ammonium R3C-NR3+"
+ set type @atom:892 charge 0.1 # "Ammonium CH3-NR3+"
+ set type @atom:893 charge 0.115 # "Anilinium Ar-NR3+"
+ set type @atom:894 charge 0.135 # "Anilinium C-NR3+"
+ set type @atom:895 charge 0.015 # "Anilinium Ar-NHR2+"
+ set type @atom:896 charge 0.155 # "Anilinium C-NHR2+"
+ set type @atom:897 charge 0.0 # "Triene R2-C= (mid C=C)"
+ set type @atom:898 charge -0.115 # "Triene RH-C= (mid C=C)"
+ set type @atom:899 charge 0.15 # "Allene/Ketene H-C=C=X"
+ set type @atom:900 charge -0.25 # "Allene/Ketene H2C=C=X"
+ set type @atom:901 charge -0.1 # "Allene/Ketene HRC=C=X"
+ set type @atom:902 charge 0.05 # "Allene/Ketene R2C=C=X"
+ set type @atom:903 charge -0.1 # "Allene =C="
+ set type @atom:904 charge 0.2 # "Ketene =C="
+ set type @atom:905 charge -0.25 # "Ketene C=O"
+ set type @atom:906 charge 0.088 # "N-Me-HIS CB"
+ } #(end of atom partial charges)
+
+
+ write_once("Data Masses") {
+ @atom:1 18.998
+ @atom:2 14.027
+ @atom:3 12.011
+ @atom:4 15.999
+ @atom:5 15.999
+ @atom:6 15.035
+ @atom:7 1.008
+ @atom:8 16.043
+ @atom:9 15.035
+ @atom:10 15.035
+ @atom:11 15.035
+ @atom:12 15.035
+ @atom:13 14.027
+ @atom:14 14.027
+ @atom:15 13.019
+ @atom:16 13.019
+ @atom:17 13.019
+ @atom:18 12.011
+ @atom:19 12.011
+ @atom:20 15.999
+ @atom:21 1.008
+ @atom:22 15.035
+ @atom:23 14.027
+ @atom:24 32.06
+ @atom:25 32.06
+ @atom:26 32.06
+ @atom:27 32.06
+ @atom:28 1.008
+ @atom:29 1.008
+ @atom:30 15.035
+ @atom:31 14.027
+ @atom:32 15.035
+ @atom:33 14.027
+ @atom:34 15.035
+ @atom:35 14.027
+ @atom:36 14.007
+ @atom:37 12.011
+ @atom:38 15.035
+ @atom:39 13.019
+ @atom:40 12.011
+ @atom:41 15.999
+ @atom:42 15.035
+ @atom:43 14.027
+ @atom:44 14.027
+ @atom:45 35.453
+ @atom:46 12.011
+ @atom:47 35.453
+ @atom:48 12.011
+ @atom:49 35.453
+ @atom:50 32.06
+ @atom:51 15.999
+ @atom:52 15.035
+ @atom:53 15.999
+ @atom:54 14.007
+ @atom:55 12.011
+ @atom:56 15.035
+ @atom:57 1.0
+ @atom:58 4.003
+ @atom:59 20.179
+ @atom:60 39.948
+ @atom:61 83.8
+ @atom:62 131.3
+ @atom:63 15.999
+ @atom:64 1.008
+ @atom:65 15.999
+ @atom:66 1.008
+ @atom:67 1e-30
+ @atom:68 15.999
+ @atom:69 1.008
+ @atom:70 15.999
+ @atom:71 1.008
+ @atom:72 1e-30
+ @atom:73 15.999
+ @atom:74 1.008
+ @atom:75 1e-30
+ @atom:76 15.999
+ @atom:77 1.008
+ @atom:78 14.007
+ @atom:79 1.008
+ @atom:80 12.011
+ @atom:81 12.011
+ @atom:82 12.011
+ @atom:83 12.011
+ @atom:84 12.011
+ @atom:85 1.008
+ @atom:86 12.011
+ @atom:87 12.011
+ @atom:88 12.011
+ @atom:89 1.008
+ @atom:90 12.011
+ @atom:91 1.008
+ @atom:92 12.011
+ @atom:93 12.011
+ @atom:94 12.011
+ @atom:95 12.011
+ @atom:96 15.999
+ @atom:97 1.008
+ @atom:98 1.008
+ @atom:99 12.011
+ @atom:100 12.011
+ @atom:101 12.011
+ @atom:102 12.011
+ @atom:103 12.011
+ @atom:104 15.999
+ @atom:105 1.008
+ @atom:106 18.998
+ @atom:107 1.008
+ @atom:108 12.011
+ @atom:109 15.999
+ @atom:110 1.008
+ @atom:111 15.999
+ @atom:112 1.008
+ @atom:113 15.999
+ @atom:114 1.008
+ @atom:115 12.011
+ @atom:116 12.011
+ @atom:117 12.011
+ @atom:118 1.008
+ @atom:119 15.999
+ @atom:120 12.011
+ @atom:121 15.999
+ @atom:122 15.999
+ @atom:123 12.011
+ @atom:124 12.011
+ @atom:125 12.011
+ @atom:126 12.011
+ @atom:127 1.008
+ @atom:128 15.999
+ @atom:129 15.999
+ @atom:130 1.008
+ @atom:131 12.011
+ @atom:132 1.008
+ @atom:133 12.011
+ @atom:134 1.008
+ @atom:135 12.011
+ @atom:136 1.008
+ @atom:137 12.011
+ @atom:138 1.008
+ @atom:139 12.011
+ @atom:140 12.011
+ @atom:141 12.011
+ @atom:142 32.06
+ @atom:143 32.06
+ @atom:144 32.06
+ @atom:145 32.06
+ @atom:146 1.008
+ @atom:147 1.008
+ @atom:148 12.011
+ @atom:149 12.011
+ @atom:150 12.011
+ @atom:151 12.011
+ @atom:152 12.011
+ @atom:153 12.011
+ @atom:154 12.011
+ @atom:155 12.011
+ @atom:156 12.011
+ @atom:157 12.011
+ @atom:158 12.011
+ @atom:159 12.011
+ @atom:160 12.011
+ @atom:161 12.011
+ @atom:162 12.011
+ @atom:163 12.011
+ @atom:164 32.06
+ @atom:165 12.011
+ @atom:166 12.011
+ @atom:167 12.011
+ @atom:168 35.453
+ @atom:169 12.011
+ @atom:170 12.011
+ @atom:171 12.011
+ @atom:172 12.011
+ @atom:173 12.011
+ @atom:174 12.011
+ @atom:175 12.011
+ @atom:176 12.011
+ @atom:177 12.011
+ @atom:178 15.999
+ @atom:179 14.007
+ @atom:180 14.007
+ @atom:181 14.007
+ @atom:182 1.008
+ @atom:183 1.008
+ @atom:184 12.011
+ @atom:185 12.011
+ @atom:186 12.011
+ @atom:187 12.011
+ @atom:188 12.011
+ @atom:189 12.011
+ @atom:190 15.999
+ @atom:191 14.007
+ @atom:192 1.008
+ @atom:193 14.007
+ @atom:194 12.011
+ @atom:195 15.999
+ @atom:196 1.008
+ @atom:197 1.008
+ @atom:198 12.011
+ @atom:199 12.011
+ @atom:200 12.011
+ @atom:201 12.011
+ @atom:202 12.011
+ @atom:203 12.011
+ @atom:204 14.007
+ @atom:205 12.011
+ @atom:206 35.453
+ @atom:207 14.007
+ @atom:208 12.011
+ @atom:209 12.011
+ @atom:210 15.999
+ @atom:211 15.999
+ @atom:212 1.008
+ @atom:213 12.011
+ @atom:214 15.999
+ @atom:215 12.011
+ @atom:216 12.011
+ @atom:217 12.011
+ @atom:218 12.011
+ @atom:219 12.011
+ @atom:220 15.999
+ @atom:221 1.008
+ @atom:222 12.011
+ @atom:223 15.999
+ @atom:224 1.008
+ @atom:225 12.011
+ @atom:226 12.011
+ @atom:227 12.011
+ @atom:228 12.011
+ @atom:229 14.007
+ @atom:230 14.007
+ @atom:231 14.007
+ @atom:232 1.008
+ @atom:233 1.008
+ @atom:234 12.011
+ @atom:235 12.011
+ @atom:236 12.011
+ @atom:237 12.011
+ @atom:238 12.011
+ @atom:239 12.011
+ @atom:240 12.011
+ @atom:241 12.011
+ @atom:242 12.011
+ @atom:243 14.007
+ @atom:244 1.008
+ @atom:245 12.011
+ @atom:246 14.007
+ @atom:247 1.008
+ @atom:248 12.011
+ @atom:249 12.011
+ @atom:250 12.011
+ @atom:251 12.011
+ @atom:252 14.007
+ @atom:253 1.008
+ @atom:254 14.007
+ @atom:255 12.011
+ @atom:256 14.007
+ @atom:257 1.008
+ @atom:258 12.011
+ @atom:259 1.008
+ @atom:260 12.011
+ @atom:261 1.008
+ @atom:262 14.007
+ @atom:263 12.011
+ @atom:264 14.007
+ @atom:265 12.011
+ @atom:266 12.011
+ @atom:267 12.011
+ @atom:268 1.008
+ @atom:269 15.999
+ @atom:270 1.008
+ @atom:271 15.999
+ @atom:272 1.008
+ @atom:273 1.008
+ @atom:274 12.011
+ @atom:275 1.008
+ @atom:276 14.007
+ @atom:277 12.011
+ @atom:278 14.007
+ @atom:279 12.011
+ @atom:280 12.011
+ @atom:281 12.011
+ @atom:282 1.008
+ @atom:283 15.999
+ @atom:284 14.007
+ @atom:285 1.008
+ @atom:286 1.008
+ @atom:287 1.008
+ @atom:288 1.008
+ @atom:289 14.007
+ @atom:290 12.011
+ @atom:291 14.007
+ @atom:292 12.011
+ @atom:293 12.011
+ @atom:294 12.011
+ @atom:295 14.007
+ @atom:296 12.011
+ @atom:297 14.007
+ @atom:298 1.008
+ @atom:299 14.007
+ @atom:300 1.008
+ @atom:301 1.008
+ @atom:302 1.008
+ @atom:303 1.008
+ @atom:304 14.007
+ @atom:305 12.011
+ @atom:306 14.007
+ @atom:307 12.011
+ @atom:308 12.011
+ @atom:309 12.011
+ @atom:310 1.008
+ @atom:311 14.007
+ @atom:312 1.008
+ @atom:313 15.999
+ @atom:314 12.011
+ @atom:315 1.008
+ @atom:316 12.011
+ @atom:317 1.008
+ @atom:318 12.011
+ @atom:319 1.008
+ @atom:320 14.007
+ @atom:321 12.011
+ @atom:322 14.007
+ @atom:323 12.011
+ @atom:324 12.011
+ @atom:325 12.011
+ @atom:326 1.008
+ @atom:327 15.999
+ @atom:328 1.008
+ @atom:329 14.007
+ @atom:330 1.008
+ @atom:331 1.008
+ @atom:332 1.008
+ @atom:333 1.008
+ @atom:334 12.011
+ @atom:335 1.008
+ @atom:336 30.974
+ @atom:337 15.999
+ @atom:338 15.999
+ @atom:339 15.035
+ @atom:340 12.011
+ @atom:341 35.453
+ @atom:342 12.011
+ @atom:343 18.998
+ @atom:344 35.453
+ @atom:345 79.904
+ @atom:346 126.905
+ @atom:347 18.039
+ @atom:348 6.941
+ @atom:349 22.99
+ @atom:350 39.098
+ @atom:351 85.468
+ @atom:352 132.905
+ @atom:353 24.305
+ @atom:354 40.08
+ @atom:355 87.62
+ @atom:356 137.33
+ @atom:357 12.011
+ @atom:358 1.008
+ @atom:359 32.06
+ @atom:360 12.011
+ @atom:361 1.008
+ @atom:362 15.999
+ @atom:363 12.011
+ @atom:364 1.008
+ @atom:365 12.011
+ @atom:366 14.007
+ @atom:367 12.011
+ @atom:368 1.008
+ @atom:369 14.007
+ @atom:370 1.008
+ @atom:371 12.011
+ @atom:372 1.008
+ @atom:373 12.011
+ @atom:374 1.008
+ @atom:375 1e-30
+ @atom:376 15.999
+ @atom:377 1.008
+ @atom:378 238.029
+ @atom:379 15.999
+ @atom:380 15.999
+ @atom:381 30.974
+ @atom:382 15.999
+ @atom:383 15.999
+ @atom:384 12.011
+ @atom:385 1.008
+ @atom:386 30.974
+ @atom:387 15.999
+ @atom:388 15.999
+ @atom:389 12.011
+ @atom:390 1.008
+ @atom:391 30.974
+ @atom:392 15.999
+ @atom:393 15.999
+ @atom:394 12.011
+ @atom:395 1.008
+ @atom:396 12.011
+ @atom:397 1.008
+ @atom:398 12.011
+ @atom:399 12.011
+ @atom:400 1.008
+ @atom:401 12.011
+ @atom:402 12.011
+ @atom:403 1.008
+ @atom:404 12.011
+ @atom:405 12.011
+ @atom:406 12.011
+ @atom:407 15.999
+ @atom:408 15.999
+ @atom:409 12.011
+ @atom:410 1.008
+ @atom:411 12.011
+ @atom:412 12.011
+ @atom:413 12.011
+ @atom:414 15.999
+ @atom:415 32.06
+ @atom:416 15.999
+ @atom:417 12.011
+ @atom:418 1.008
+ @atom:419 14.007
+ @atom:420 1.008
+ @atom:421 14.007
+ @atom:422 1.008
+ @atom:423 12.011
+ @atom:424 1.008
+ @atom:425 12.011
+ @atom:426 1.008
+ @atom:427 12.011
+ @atom:428 1.008
+ @atom:429 12.011
+ @atom:430 12.011
+ @atom:431 12.011
+ @atom:432 12.011
+ @atom:433 12.011
+ @atom:434 32.06
+ @atom:435 15.999
+ @atom:436 32.06
+ @atom:437 32.06
+ @atom:438 15.999
+ @atom:439 12.011
+ @atom:440 12.011
+ @atom:441 12.011
+ @atom:442 12.011
+ @atom:443 12.011
+ @atom:444 14.007
+ @atom:445 1.008
+ @atom:446 12.011
+ @atom:447 12.011
+ @atom:448 12.011
+ @atom:449 12.011
+ @atom:450 12.011
+ @atom:451 12.011
+ @atom:452 14.007
+ @atom:453 14.007
+ @atom:454 1.008
+ @atom:455 12.011
+ @atom:456 12.011
+ @atom:457 12.011
+ @atom:458 12.011
+ @atom:459 12.011
+ @atom:460 12.011
+ @atom:461 14.007
+ @atom:462 12.011
+ @atom:463 12.011
+ @atom:464 12.011
+ @atom:465 1.008
+ @atom:466 1.008
+ @atom:467 1.008
+ @atom:468 14.007
+ @atom:469 12.011
+ @atom:470 1.008
+ @atom:471 14.007
+ @atom:472 12.011
+ @atom:473 12.011
+ @atom:474 12.011
+ @atom:475 1.008
+ @atom:476 1.008
+ @atom:477 1.008
+ @atom:478 14.007
+ @atom:479 12.011
+ @atom:480 12.011
+ @atom:481 1.008
+ @atom:482 1.008
+ @atom:483 14.007
+ @atom:484 12.011
+ @atom:485 12.011
+ @atom:486 1.008
+ @atom:487 1.008
+ @atom:488 1.008
+ @atom:489 14.007
+ @atom:490 14.007
+ @atom:491 12.011
+ @atom:492 12.011
+ @atom:493 12.011
+ @atom:494 1.008
+ @atom:495 1.008
+ @atom:496 1.008
+ @atom:497 1.008
+ @atom:498 14.007
+ @atom:499 12.011
+ @atom:500 14.007
+ @atom:501 12.011
+ @atom:502 12.011
+ @atom:503 1.008
+ @atom:504 1.008
+ @atom:505 1.008
+ @atom:506 1.008
+ @atom:507 15.999
+ @atom:508 12.011
+ @atom:509 12.011
+ @atom:510 1.008
+ @atom:511 1.008
+ @atom:512 15.999
+ @atom:513 12.011
+ @atom:514 14.007
+ @atom:515 12.011
+ @atom:516 12.011
+ @atom:517 1.008
+ @atom:518 1.008
+ @atom:519 1.008
+ @atom:520 15.999
+ @atom:521 14.007
+ @atom:522 12.011
+ @atom:523 12.011
+ @atom:524 12.011
+ @atom:525 1.008
+ @atom:526 1.008
+ @atom:527 1.008
+ @atom:528 14.007
+ @atom:529 12.011
+ @atom:530 12.011
+ @atom:531 12.011
+ @atom:532 12.011
+ @atom:533 12.011
+ @atom:534 12.011
+ @atom:535 12.011
+ @atom:536 12.011
+ @atom:537 1.008
+ @atom:538 1.008
+ @atom:539 1.008
+ @atom:540 1.008
+ @atom:541 1.008
+ @atom:542 1.008
+ @atom:543 1.008
+ @atom:544 14.007
+ @atom:545 12.011
+ @atom:546 12.011
+ @atom:547 12.011
+ @atom:548 12.011
+ @atom:549 12.011
+ @atom:550 12.011
+ @atom:551 12.011
+ @atom:552 12.011
+ @atom:553 12.011
+ @atom:554 1.008
+ @atom:555 1.008
+ @atom:556 1.008
+ @atom:557 1.008
+ @atom:558 1.008
+ @atom:559 1.008
+ @atom:560 1.008
+ @atom:561 14.007
+ @atom:562 12.011
+ @atom:563 14.007
+ @atom:564 12.011
+ @atom:565 12.011
+ @atom:566 12.011
+ @atom:567 14.007
+ @atom:568 12.011
+ @atom:569 14.007
+ @atom:570 1.008
+ @atom:571 1.008
+ @atom:572 1.008
+ @atom:573 1.008
+ @atom:574 32.06
+ @atom:575 12.011
+ @atom:576 14.007
+ @atom:577 12.011
+ @atom:578 12.011
+ @atom:579 1.008
+ @atom:580 1.008
+ @atom:581 1.008
+ @atom:582 14.007
+ @atom:583 12.011
+ @atom:584 1.008
+ @atom:585 12.011
+ @atom:586 12.011
+ @atom:587 14.007
+ @atom:588 12.011
+ @atom:589 12.011
+ @atom:590 12.011
+ @atom:591 12.011
+ @atom:592 12.011
+ @atom:593 12.011
+ @atom:594 1.008
+ @atom:595 1.008
+ @atom:596 1.008
+ @atom:597 1.008
+ @atom:598 14.007
+ @atom:599 12.011
+ @atom:600 14.007
+ @atom:601 12.011
+ @atom:602 12.011
+ @atom:603 12.011
+ @atom:604 1.008
+ @atom:605 1.008
+ @atom:606 1.008
+ @atom:607 1.008
+ @atom:608 12.011
+ @atom:609 12.011
+ @atom:610 12.011
+ @atom:611 12.011
+ @atom:612 12.011
+ @atom:613 12.011
+ @atom:614 12.011
+ @atom:615 12.011
+ @atom:616 12.011
+ @atom:617 12.011
+ @atom:618 12.011
+ @atom:619 12.011
+ @atom:620 12.011
+ @atom:621 12.011
+ @atom:622 12.011
+ @atom:623 32.06
+ @atom:624 1.008
+ @atom:625 12.011
+ @atom:626 12.011
+ @atom:627 14.007
+ @atom:628 12.011
+ @atom:629 12.011
+ @atom:630 12.011
+ @atom:631 12.011
+ @atom:632 12.011
+ @atom:633 12.011
+ @atom:634 12.011
+ @atom:635 12.011
+ @atom:636 12.011
+ @atom:637 32.06
+ @atom:638 227.0
+ @atom:639 232.038
+ @atom:640 243.0
+ @atom:641 12.011
+ @atom:642 12.011
+ @atom:643 1.008
+ @atom:644 138.906
+ @atom:645 144.24
+ @atom:646 151.96
+ @atom:647 157.25
+ @atom:648 173.04
+ @atom:649 12.011
+ @atom:650 35.453
+ @atom:651 1.008
+ @atom:652 12.011
+ @atom:653 12.011
+ @atom:654 12.011
+ @atom:655 12.011
+ @atom:656 1.008
+ @atom:657 12.011
+ @atom:658 1.008
+ @atom:659 12.011
+ @atom:660 18.998
+ @atom:661 12.011
+ @atom:662 18.998
+ @atom:663 79.904
+ @atom:664 14.027
+ @atom:665 12.011
+ @atom:666 12.011
+ @atom:667 18.998
+ @atom:668 12.011
+ @atom:669 18.998
+ @atom:670 12.011
+ @atom:671 79.904
+ @atom:672 12.011
+ @atom:673 126.905
+ @atom:674 12.011
+ @atom:675 32.06
+ @atom:676 12.011
+ @atom:677 12.011
+ @atom:678 12.011
+ @atom:679 12.011
+ @atom:680 12.011
+ @atom:681 1.008
+ @atom:682 1.008
+ @atom:683 12.011
+ @atom:684 14.007
+ @atom:685 1.008
+ @atom:686 1.008
+ @atom:687 1.008
+ @atom:688 12.011
+ @atom:689 12.011
+ @atom:690 14.007
+ @atom:691 14.007
+ @atom:692 14.007
+ @atom:693 12.011
+ @atom:694 14.007
+ @atom:695 12.011
+ @atom:696 12.011
+ @atom:697 12.011
+ @atom:698 12.011
+ @atom:699 12.011
+ @atom:700 1.008
+ @atom:701 14.007
+ @atom:702 15.999
+ @atom:703 12.011
+ @atom:704 1.008
+ @atom:705 12.011
+ @atom:706 12.011
+ @atom:707 12.011
+ @atom:708 14.007
+ @atom:709 12.011
+ @atom:710 12.011
+ @atom:711 14.007
+ @atom:712 15.999
+ @atom:713 12.011
+ @atom:714 15.999
+ @atom:715 12.011
+ @atom:716 12.011
+ @atom:717 12.011
+ @atom:718 1.008
+ @atom:719 1.008
+ @atom:720 1.008
+ @atom:721 15.999
+ @atom:722 30.974
+ @atom:723 12.011
+ @atom:724 12.011
+ @atom:725 1.008
+ @atom:726 30.974
+ @atom:727 18.998
+ @atom:728 14.007
+ @atom:729 15.999
+ @atom:730 14.007
+ @atom:731 14.007
+ @atom:732 14.007
+ @atom:733 12.011
+ @atom:734 12.011
+ @atom:735 12.011
+ @atom:736 12.011
+ @atom:737 12.011
+ @atom:738 12.011
+ @atom:739 1.008
+ @atom:740 1.008
+ @atom:741 1.008
+ @atom:742 12.011
+ @atom:743 12.011
+ @atom:744 12.011
+ @atom:745 12.011
+ @atom:746 12.011
+ @atom:747 12.011
+ @atom:748 12.011
+ @atom:749 12.011
+ @atom:750 12.011
+ @atom:751 12.011
+ @atom:752 12.011
+ @atom:753 12.011
+ @atom:754 12.011
+ @atom:755 12.011
+ @atom:756 1.008
+ @atom:757 12.011
+ @atom:758 12.011
+ @atom:759 12.011
+ @atom:760 1.008
+ @atom:761 12.011
+ @atom:762 12.011
+ @atom:763 12.011
+ @atom:764 15.999
+ @atom:765 1.008
+ @atom:766 14.007
+ @atom:767 14.007
+ @atom:768 14.007
+ @atom:769 12.011
+ @atom:770 14.007
+ @atom:771 1.008
+ @atom:772 12.011
+ @atom:773 12.011
+ @atom:774 12.011
+ @atom:775 12.011
+ @atom:776 12.011
+ @atom:777 12.011
+ @atom:778 12.011
+ @atom:779 12.011
+ @atom:780 1.008
+ @atom:781 12.011
+ @atom:782 12.011
+ @atom:783 14.007
+ @atom:784 15.999
+ @atom:785 1.008
+ @atom:786 18.998
+ @atom:787 12.011
+ @atom:788 1.008
+ @atom:789 12.011
+ @atom:790 12.011
+ @atom:791 12.011
+ @atom:792 12.011
+ @atom:793 12.011
+ @atom:794 12.011
+ @atom:795 18.998
+ @atom:796 12.011
+ @atom:797 1.008
+ @atom:798 12.011
+ @atom:799 12.011
+ @atom:800 35.453
+ @atom:801 12.011
+ @atom:802 1.008
+ @atom:803 12.011
+ @atom:804 12.011
+ @atom:805 79.904
+ @atom:806 12.011
+ @atom:807 1.008
+ @atom:808 12.011
+ @atom:809 12.011
+ @atom:810 18.998
+ @atom:811 35.453
+ @atom:812 79.904
+ @atom:813 12.011
+ @atom:814 15.999
+ @atom:815 12.011
+ @atom:816 18.998
+ @atom:817 14.007
+ @atom:818 12.011
+ @atom:819 12.011
+ @atom:820 12.011
+ @atom:821 12.011
+ @atom:822 15.999
+ @atom:823 14.007
+ @atom:824 1.008
+ @atom:825 15.999
+ @atom:826 1.008
+ @atom:827 12.011
+ @atom:828 12.011
+ @atom:829 12.011
+ @atom:830 12.011
+ @atom:831 12.011
+ @atom:832 12.011
+ @atom:833 12.011
+ @atom:834 1e-30
+ @atom:835 12.011
+ @atom:836 12.011
+ @atom:837 12.011
+ @atom:838 126.905
+ @atom:839 1.008
+ @atom:840 14.007
+ @atom:841 12.011
+ @atom:842 12.011
+ @atom:843 14.007
+ @atom:844 12.011
+ @atom:845 12.011
+ @atom:846 15.999
+ @atom:847 14.007
+ @atom:848 12.011
+ @atom:849 12.011
+ @atom:850 12.011
+ @atom:851 12.011
+ @atom:852 1.008
+ @atom:853 12.011
+ @atom:854 15.999
+ @atom:855 1.008
+ @atom:856 12.011
+ @atom:857 12.011
+ @atom:858 12.011
+ @atom:859 12.011
+ @atom:860 12.011
+ @atom:861 12.011
+ @atom:862 12.011
+ @atom:863 12.011
+ @atom:864 12.011
+ @atom:865 12.011
+ @atom:866 28.086
+ @atom:867 28.086
+ @atom:868 28.086
+ @atom:869 28.086
+ @atom:870 1.008
+ @atom:871 12.011
+ @atom:872 12.011
+ @atom:873 12.011
+ @atom:874 12.011
+ @atom:875 18.998
+ @atom:876 35.453
+ @atom:877 79.904
+ @atom:878 126.905
+ @atom:879 6.941
+ @atom:880 22.99
+ @atom:881 39.098
+ @atom:882 85.468
+ @atom:883 132.905
+ @atom:884 24.305
+ @atom:885 40.08
+ @atom:886 87.62
+ @atom:887 137.33
+ @atom:888 12.011
+ @atom:889 12.011
+ @atom:890 12.011
+ @atom:891 12.011
+ @atom:892 1.008
+ @atom:893 14.007
+ @atom:894 12.011
+ @atom:895 14.007
+ @atom:896 12.011
+ @atom:897 12.011
+ @atom:898 12.011
+ @atom:899 1.008
+ @atom:900 12.011
+ @atom:901 12.011
+ @atom:902 12.011
+ @atom:903 12.011
+ @atom:904 12.011
+ @atom:905 15.999
+ @atom:906 12.011
+ } #(end of atom masses)
+
+
+ write_once("In Settings") {
+ pair_coeff @atom:1_b1_a1_d1_i1 @atom:1_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.94
+ pair_coeff @atom:2_b2_a2_d2_i2 @atom:2_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.905
+ pair_coeff @atom:3_b3_a3_d3_i3 @atom:3_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:4_b4_a4_d4_i4 @atom:4_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:5_b5_a5_d5_i5 @atom:5_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.0
+ pair_coeff @atom:6_b6_a6_d6_i6 @atom:6_b6_a6_d6_i6 lj/cut/coul/long 0.16 3.91
+ pair_coeff @atom:7_b7_a7_d7_i7 @atom:7_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:8_b8_a8_d8_i8 @atom:8_b8_a8_d8_i8 lj/cut/coul/long 0.294 3.73
+ pair_coeff @atom:9_b6_a6_d6_i6 @atom:9_b6_a6_d6_i6 lj/cut/coul/long 0.207 3.775
+ pair_coeff @atom:10_b6_a6_d6_i6 @atom:10_b6_a6_d6_i6 lj/cut/coul/long 0.175 3.905
+ pair_coeff @atom:11_b6_a6_d6_i6 @atom:11_b6_a6_d6_i6 lj/cut/coul/long 0.16 3.91
+ pair_coeff @atom:12_b6_a6_d6_i6 @atom:12_b6_a6_d6_i6 lj/cut/coul/long 0.145 3.96
+ pair_coeff @atom:13_b2_a2_d2_i2 @atom:13_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.905
+ pair_coeff @atom:14_b9_a9_d9_i9 @atom:14_b9_a9_d9_i9 lj/cut/coul/long 0.14 3.85
+ pair_coeff @atom:15_b10_a10_d10_i10 @atom:15_b10_a10_d10_i10 lj/cut/coul/long 0.08 3.85
+ pair_coeff @atom:16_b11_a11_d11_i11 @atom:16_b11_a11_d11_i11 lj/cut/coul/long 0.115 3.8
+ pair_coeff @atom:17_b12_a12_d12_i12 @atom:17_b12_a12_d12_i12 lj/cut/coul/long 0.11 3.75
+ pair_coeff @atom:18_b13_a13_d13_i13 @atom:18_b13_a13_d13_i13 lj/cut/coul/long 0.05 3.8
+ pair_coeff @atom:19_b14_a14_d14_i14 @atom:19_b14_a14_d14_i14 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:20_b5_a5_d5_i5 @atom:20_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07
+ pair_coeff @atom:21_b7_a7_d7_i7 @atom:21_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:22_b6_a6_d6_i6 @atom:22_b6_a6_d6_i6 lj/cut/coul/long 0.207 3.775
+ pair_coeff @atom:23_b2_a2_d2_i2 @atom:23_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.905
+ pair_coeff @atom:24_b15_a15_d15_i15 @atom:24_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.7
+ pair_coeff @atom:25_b15_a15_d15_i15 @atom:25_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.55
+ pair_coeff @atom:26_b16_a16_d16_i16 @atom:26_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55
+ pair_coeff @atom:27_b16_a16_d16_i16 @atom:27_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55
+ pair_coeff @atom:28_b17_a17_d17_i17 @atom:28_b17_a17_d17_i17 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:29_b17_a17_d17_i17 @atom:29_b17_a17_d17_i17 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:30_b6_a6_d6_i6 @atom:30_b6_a6_d6_i6 lj/cut/coul/long 0.207 3.775
+ pair_coeff @atom:31_b2_a2_d2_i2 @atom:31_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.905
+ pair_coeff @atom:32_b6_a6_d6_i6 @atom:32_b6_a6_d6_i6 lj/cut/coul/long 0.17 3.8
+ pair_coeff @atom:33_b2_a2_d2_i2 @atom:33_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.8
+ pair_coeff @atom:34_b6_a6_d6_i6 @atom:34_b6_a6_d6_i6 lj/cut/coul/long 0.17 3.8
+ pair_coeff @atom:35_b2_a2_d2_i2 @atom:35_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.8
+ pair_coeff @atom:36_b18_a18_d18_i18 @atom:36_b18_a18_d18_i18 lj/cut/coul/long 0.17 3.2
+ pair_coeff @atom:37_b19_a19_d19_i19 @atom:37_b19_a19_d19_i19 lj/cut/coul/long 0.15 3.65
+ pair_coeff @atom:38_b6_a6_d6_i6 @atom:38_b6_a6_d6_i6 lj/cut/coul/long 0.207 3.775
+ pair_coeff @atom:39_b10_a10_d10_i10 @atom:39_b10_a10_d10_i10 lj/cut/coul/long 0.08 3.85
+ pair_coeff @atom:40_b13_a13_d13_i13 @atom:40_b13_a13_d13_i13 lj/cut/coul/long 0.05 3.8
+ pair_coeff @atom:41_b20_a20_d20_i20 @atom:41_b20_a20_d20_i20 lj/cut/coul/long 0.17 3.0
+ pair_coeff @atom:42_b6_a6_d6_i6 @atom:42_b6_a6_d6_i6 lj/cut/coul/long 0.17 3.8
+ pair_coeff @atom:43_b2_a2_d2_i2 @atom:43_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.8
+ pair_coeff @atom:44_b2_a2_d2_i2 @atom:44_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.8
+ pair_coeff @atom:45_b21_a21_d21_i21 @atom:45_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4
+ pair_coeff @atom:46_b10_a10_d10_i10 @atom:46_b10_a10_d10_i10 lj/cut/coul/long 0.08 3.8
+ pair_coeff @atom:47_b21_a21_d21_i21 @atom:47_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.47
+ pair_coeff @atom:48_b13_a13_d13_i13 @atom:48_b13_a13_d13_i13 lj/cut/coul/long 0.05 3.8
+ pair_coeff @atom:49_b21_a21_d21_i21 @atom:49_b21_a21_d21_i21 lj/cut/coul/long 0.266 3.47
+ pair_coeff @atom:50_b22_a22_d22_i22 @atom:50_b22_a22_d22_i22 lj/cut/coul/long 0.395 3.56
+ pair_coeff @atom:51_b23_a23_d23_i23 @atom:51_b23_a23_d23_i23 lj/cut/coul/long 0.28 2.93
+ pair_coeff @atom:52_b6_a6_d6_i6 @atom:52_b6_a6_d6_i6 lj/cut/coul/long 0.16 3.81
+ pair_coeff @atom:53_b4_a4_d4_i4 @atom:53_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:54_b24_a24_d24_i24 @atom:54_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:55_b3_a3_d3_i3 @atom:55_b3_a3_d3_i3 lj/cut/coul/long 0.115 3.8
+ pair_coeff @atom:56_b6_a6_d6_i6 @atom:56_b6_a6_d6_i6 lj/cut/coul/long 0.17 3.8
+ pair_coeff @atom:57_b25_a25_d25_i25 @atom:57_b25_a25_d25_i25 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:58_b26_a26_d26_i26 @atom:58_b26_a26_d26_i26 lj/cut/coul/long 0.02 2.556
+ pair_coeff @atom:59_b27_a27_d27_i27 @atom:59_b27_a27_d27_i27 lj/cut/coul/long 0.069 2.78
+ pair_coeff @atom:60_b28_a28_d28_i28 @atom:60_b28_a28_d28_i28 lj/cut/coul/long 0.2339 3.401
+ pair_coeff @atom:61_b29_a29_d29_i29 @atom:61_b29_a29_d29_i29 lj/cut/coul/long 0.317 3.624
+ pair_coeff @atom:62_b30_a30_d30_i30 @atom:62_b30_a30_d30_i30 lj/cut/coul/long 0.433 3.935
+ pair_coeff @atom:63_b31_a31_d31_i31 @atom:63_b31_a31_d31_i31 lj/cut/coul/long 0.1521 3.15061
+ pair_coeff @atom:64_b32_a32_d32_i32 @atom:64_b32_a32_d32_i32 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:65_b31_a31_d31_i31 @atom:65_b31_a31_d31_i31 lj/cut/coul/long 0.155 3.15365
+ pair_coeff @atom:66_b32_a32_d32_i32 @atom:66_b32_a32_d32_i32 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:67_b33_a33_d33_i33 @atom:67_b33_a33_d33_i33 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:68_b34_a34_d34_i34 @atom:68_b34_a34_d34_i34 lj/cut/coul/long 0.15 3.176
+ pair_coeff @atom:69_b35_a35_d35_i35 @atom:69_b35_a35_d35_i35 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:70_b36_a36_d36_i36 @atom:70_b36_a36_d36_i36 lj/cut/coul/long 0.1 3.27
+ pair_coeff @atom:71_b37_a37_d37_i37 @atom:71_b37_a37_d37_i37 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:72_b38_a38_d38_i38 @atom:72_b38_a38_d38_i38 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:73_b39_a39_d39_i39 @atom:73_b39_a39_d39_i39 lj/cut/coul/long 0.16 3.12
+ pair_coeff @atom:74_b40_a40_d40_i40 @atom:74_b40_a40_d40_i40 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:75_b41_a41_d41_i41 @atom:75_b41_a41_d41_i41 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:76_b42_a42_d42_i42 @atom:76_b42_a42_d42_i42 lj/cut/coul/long 0.1554 3.16557
+ pair_coeff @atom:77_b43_a43_d43_i43 @atom:77_b43_a43_d43_i43 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:78_b44_a44_d44_i44 @atom:78_b44_a44_d44_i44 lj/cut/coul/long 0.17 3.42
+ pair_coeff @atom:79_b45_a45_d45_i45 @atom:79_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:80_b13_a13_d13_i13 @atom:80_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:81_b13_a13_d13_i13 @atom:81_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:82_b13_a13_d13_i13 @atom:82_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:83_b13_a13_d13_i13 @atom:83_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:84_b13_a13_d13_i13 @atom:84_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:85_b46_a46_d46_i46 @atom:85_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:86_b47_a47_d47_i47 @atom:86_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55
+ pair_coeff @atom:87_b47_a47_d47_i47 @atom:87_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55
+ pair_coeff @atom:88_b47_a47_d47_i47 @atom:88_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55
+ pair_coeff @atom:89_b46_a46_d46_i46 @atom:89_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:90_b48_a48_d48_i48 @atom:90_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:91_b49_a49_d49_i49 @atom:91_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:92_b48_a48_d48_i48 @atom:92_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:93_b13_a13_d13_i13 @atom:93_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:94_b13_a13_d13_i13 @atom:94_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:95_b50_a50_d50_i50 @atom:95_b50_a50_d50_i50 lj/cut/coul/long 0.076 3.55
+ pair_coeff @atom:96_b5_a5_d5_i5 @atom:96_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.12
+ pair_coeff @atom:97_b7_a7_d7_i7 @atom:97_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:98_b46_a46_d46_i46 @atom:98_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:99_b13_a13_d13_i13 @atom:99_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:100_b13_a13_d13_i13 @atom:100_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:101_b13_a13_d13_i13 @atom:101_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:102_b13_a13_d13_i13 @atom:102_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:103_b13_a13_d13_i13 @atom:103_b13_a13_d13_i13 lj/cut/coul/long 0.062 3.25
+ pair_coeff @atom:104_b5_a5_d5_i5 @atom:104_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07
+ pair_coeff @atom:105_b7_a7_d7_i7 @atom:105_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:106_b1_a1_d1_i1 @atom:106_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.94
+ pair_coeff @atom:107_b46_a46_d46_i46 @atom:107_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:108_b48_a48_d48_i48 @atom:108_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:109_b5_a5_d5_i5 @atom:109_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07
+ pair_coeff @atom:110_b7_a7_d7_i7 @atom:110_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:111_b5_a5_d5_i5 @atom:111_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07
+ pair_coeff @atom:112_b7_a7_d7_i7 @atom:112_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:113_b5_a5_d5_i5 @atom:113_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07
+ pair_coeff @atom:114_b7_a7_d7_i7 @atom:114_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:115_b13_a13_d13_i13 @atom:115_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:116_b13_a13_d13_i13 @atom:116_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:117_b13_a13_d13_i13 @atom:117_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:118_b46_a46_d46_i46 @atom:118_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:119_b20_a20_d20_i20 @atom:119_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9
+ pair_coeff @atom:120_b50_a50_d50_i50 @atom:120_b50_a50_d50_i50 lj/cut/coul/long 0.076 3.55
+ pair_coeff @atom:121_b20_a20_d20_i20 @atom:121_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9
+ pair_coeff @atom:122_b20_a20_d20_i20 @atom:122_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9
+ pair_coeff @atom:123_b13_a13_d13_i13 @atom:123_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:124_b13_a13_d13_i13 @atom:124_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:125_b13_a13_d13_i13 @atom:125_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:126_b13_a13_d13_i13 @atom:126_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:127_b46_a46_d46_i46 @atom:127_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:128_b20_a20_d20_i20 @atom:128_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9
+ pair_coeff @atom:129_b5_a5_d5_i5 @atom:129_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07
+ pair_coeff @atom:130_b7_a7_d7_i7 @atom:130_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:131_b51_a51_d51_i51 @atom:131_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:132_b46_a46_d46_i46 @atom:132_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:133_b51_a51_d51_i51 @atom:133_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:134_b46_a46_d46_i46 @atom:134_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:135_b51_a51_d51_i51 @atom:135_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:136_b46_a46_d46_i46 @atom:136_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:137_b51_a51_d51_i51 @atom:137_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:138_b46_a46_d46_i46 @atom:138_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:139_b51_a51_d51_i51 @atom:139_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:140_b51_a51_d51_i51 @atom:140_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:141_b48_a48_d48_i48 @atom:141_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:142_b15_a15_d15_i15 @atom:142_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.55
+ pair_coeff @atom:143_b15_a15_d15_i15 @atom:143_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.7
+ pair_coeff @atom:144_b16_a16_d16_i16 @atom:144_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55
+ pair_coeff @atom:145_b16_a16_d16_i16 @atom:145_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55
+ pair_coeff @atom:146_b17_a17_d17_i17 @atom:146_b17_a17_d17_i17 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:147_b17_a17_d17_i17 @atom:147_b17_a17_d17_i17 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:148_b13_a13_d13_i13 @atom:148_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:149_b13_a13_d13_i13 @atom:149_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:150_b13_a13_d13_i13 @atom:150_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:151_b13_a13_d13_i13 @atom:151_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:152_b13_a13_d13_i13 @atom:152_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:153_b13_a13_d13_i13 @atom:153_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:154_b13_a13_d13_i13 @atom:154_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:155_b13_a13_d13_i13 @atom:155_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:156_b13_a13_d13_i13 @atom:156_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:157_b13_a13_d13_i13 @atom:157_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:158_b13_a13_d13_i13 @atom:158_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:159_b13_a13_d13_i13 @atom:159_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:160_b13_a13_d13_i13 @atom:160_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:161_b13_a13_d13_i13 @atom:161_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:162_b13_a13_d13_i13 @atom:162_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:163_b48_a48_d48_i48 @atom:163_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:164_b16_a16_d16_i16 @atom:164_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55
+ pair_coeff @atom:165_b13_a13_d13_i13 @atom:165_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:166_b13_a13_d13_i13 @atom:166_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:167_b13_a13_d13_i13 @atom:167_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:168_b21_a21_d21_i21 @atom:168_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4
+ pair_coeff @atom:169_b47_a47_d47_i47 @atom:169_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55
+ pair_coeff @atom:170_b48_a48_d48_i48 @atom:170_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:171_b13_a13_d13_i13 @atom:171_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:172_b13_a13_d13_i13 @atom:172_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:173_b3_a3_d3_i3 @atom:173_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:174_b3_a3_d3_i3 @atom:174_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:175_b3_a3_d3_i3 @atom:175_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:176_b3_a3_d3_i3 @atom:176_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:177_b3_a3_d3_i3 @atom:177_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:178_b4_a4_d4_i4 @atom:178_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:179_b24_a24_d24_i24 @atom:179_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:180_b24_a24_d24_i24 @atom:180_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:181_b24_a24_d24_i24 @atom:181_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:182_b45_a45_d45_i45 @atom:182_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:183_b45_a45_d45_i45 @atom:183_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:184_b13_a13_d13_i13 @atom:184_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:185_b13_a13_d13_i13 @atom:185_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:186_b13_a13_d13_i13 @atom:186_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:187_b13_a13_d13_i13 @atom:187_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:188_b13_a13_d13_i13 @atom:188_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:189_b3_a3_d3_i3 @atom:189_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:190_b4_a4_d4_i4 @atom:190_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:191_b24_a24_d24_i24 @atom:191_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:192_b45_a45_d45_i45 @atom:192_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:193_b24_a24_d24_i24 @atom:193_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:194_b3_a3_d3_i3 @atom:194_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:195_b4_a4_d4_i4 @atom:195_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:196_b45_a45_d45_i45 @atom:196_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:197_b46_a46_d46_i46 @atom:197_b46_a46_d46_i46 lj/cut/coul/long 0.02 2.5
+ pair_coeff @atom:198_b13_a13_d13_i13 @atom:198_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:199_b13_a13_d13_i13 @atom:199_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:200_b13_a13_d13_i13 @atom:200_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:201_b13_a13_d13_i13 @atom:201_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:202_b48_a48_d48_i48 @atom:202_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:203_b19_a19_d19_i19 @atom:203_b19_a19_d19_i19 lj/cut/coul/long 0.15 3.65
+ pair_coeff @atom:204_b18_a18_d18_i18 @atom:204_b18_a18_d18_i18 lj/cut/coul/long 0.17 3.2
+ pair_coeff @atom:205_b48_a48_d48_i48 @atom:205_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:206_b21_a21_d21_i21 @atom:206_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4
+ pair_coeff @atom:207_b24_a24_d24_i24 @atom:207_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:208_b48_a48_d48_i48 @atom:208_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:209_b3_a3_d3_i3 @atom:209_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:210_b4_a4_d4_i4 @atom:210_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:211_b5_a5_d5_i5 @atom:211_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.0
+ pair_coeff @atom:212_b7_a7_d7_i7 @atom:212_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:213_b3_a3_d3_i3 @atom:213_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:214_b52_a52_d52_i52 @atom:214_b52_a52_d52_i52 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:215_b13_a13_d13_i13 @atom:215_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:216_b13_a13_d13_i13 @atom:216_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:217_b13_a13_d13_i13 @atom:217_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:218_b13_a13_d13_i13 @atom:218_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:219_b3_a3_d3_i3 @atom:219_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:220_b4_a4_d4_i4 @atom:220_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:221_b46_a46_d46_i46 @atom:221_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42
+ pair_coeff @atom:222_b3_a3_d3_i3 @atom:222_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:223_b4_a4_d4_i4 @atom:223_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:224_b46_a46_d46_i46 @atom:224_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42
+ pair_coeff @atom:225_b13_a13_d13_i13 @atom:225_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:226_b13_a13_d13_i13 @atom:226_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:227_b13_a13_d13_i13 @atom:227_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:228_b13_a13_d13_i13 @atom:228_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:229_b53_a53_d53_i53 @atom:229_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:230_b53_a53_d53_i53 @atom:230_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:231_b53_a53_d53_i53 @atom:231_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:232_b54_a54_d54_i54 @atom:232_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:233_b54_a54_d54_i54 @atom:233_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:234_b13_a13_d13_i13 @atom:234_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:235_b13_a13_d13_i13 @atom:235_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:236_b13_a13_d13_i13 @atom:236_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:237_b13_a13_d13_i13 @atom:237_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:238_b13_a13_d13_i13 @atom:238_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:239_b13_a13_d13_i13 @atom:239_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:240_b13_a13_d13_i13 @atom:240_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:241_b13_a13_d13_i13 @atom:241_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:242_b13_a13_d13_i13 @atom:242_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:243_b55_a55_d55_i55 @atom:243_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:244_b54_a54_d54_i54 @atom:244_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:245_b48_a48_d48_i48 @atom:245_b48_a48_d48_i48 lj/cut/coul/long 0.05 3.55
+ pair_coeff @atom:246_b55_a55_d55_i55 @atom:246_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:247_b54_a54_d54_i54 @atom:247_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:248_b13_a13_d13_i13 @atom:248_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:249_b13_a13_d13_i13 @atom:249_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:250_b13_a13_d13_i13 @atom:250_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:251_b13_a13_d13_i13 @atom:251_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:252_b53_a53_d53_i53 @atom:252_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:253_b54_a54_d54_i54 @atom:253_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:254_b56_a56_d56_i56 @atom:254_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:255_b48_a48_d48_i48 @atom:255_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:256_b55_a55_d55_i55 @atom:256_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:257_b45_a45_d45_i45 @atom:257_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:258_b48_a48_d48_i48 @atom:258_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:259_b49_a49_d49_i49 @atom:259_b49_a49_d49_i49 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:260_b48_a48_d48_i48 @atom:260_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:261_b49_a49_d49_i49 @atom:261_b49_a49_d49_i49 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:262_b57_a57_d57_i57 @atom:262_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:263_b3_a3_d3_i3 @atom:263_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:264_b57_a57_d57_i57 @atom:264_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:265_b3_a3_d3_i3 @atom:265_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:266_b47_a47_d47_i47 @atom:266_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:267_b47_a47_d47_i47 @atom:267_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:268_b45_a45_d45_i45 @atom:268_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:269_b4_a4_d4_i4 @atom:269_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:270_b45_a45_d45_i45 @atom:270_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:271_b4_a4_d4_i4 @atom:271_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:272_b46_a46_d46_i46 @atom:272_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:273_b46_a46_d46_i46 @atom:273_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:274_b13_a13_d13_i13 @atom:274_b13_a13_d13_i13 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:275_b46_a46_d46_i46 @atom:275_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:276_b57_a57_d57_i57 @atom:276_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:277_b3_a3_d3_i3 @atom:277_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:278_b56_a56_d56_i56 @atom:278_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:279_b48_a48_d48_i48 @atom:279_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:280_b47_a47_d47_i47 @atom:280_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:281_b47_a47_d47_i47 @atom:281_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:282_b45_a45_d45_i45 @atom:282_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:283_b4_a4_d4_i4 @atom:283_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:284_b55_a55_d55_i55 @atom:284_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:285_b45_a45_d45_i45 @atom:285_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:286_b45_a45_d45_i45 @atom:286_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:287_b46_a46_d46_i46 @atom:287_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:288_b58_a58_d58_i58 @atom:288_b58_a58_d58_i58 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:289_b56_a56_d56_i56 @atom:289_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:290_b59_a59_d59_i59 @atom:290_b59_a59_d59_i59 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:291_b56_a56_d56_i56 @atom:291_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:292_b60_a60_d60_i60 @atom:292_b60_a60_d60_i60 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:293_b60_a60_d60_i60 @atom:293_b60_a60_d60_i60 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:294_b48_a48_d48_i48 @atom:294_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:295_b61_a61_d61_i61 @atom:295_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:296_b62_a62_d62_i62 @atom:296_b62_a62_d62_i62 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:297_b57_a57_d57_i57 @atom:297_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:298_b63_a63_d63_i63 @atom:298_b63_a63_d63_i63 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:299_b55_a55_d55_i55 @atom:299_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:300_b45_a45_d45_i45 @atom:300_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:301_b45_a45_d45_i45 @atom:301_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:302_b63_a63_d63_i63 @atom:302_b63_a63_d63_i63 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:303_b45_a45_d45_i45 @atom:303_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:304_b57_a57_d57_i57 @atom:304_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:305_b48_a48_d48_i48 @atom:305_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:306_b56_a56_d56_i56 @atom:306_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:307_b60_a60_d60_i60 @atom:307_b60_a60_d60_i60 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:308_b60_a60_d60_i60 @atom:308_b60_a60_d60_i60 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:309_b3_a3_d3_i3 @atom:309_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:310_b45_a45_d45_i45 @atom:310_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:311_b55_a55_d55_i55 @atom:311_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:312_b45_a45_d45_i45 @atom:312_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:313_b4_a4_d4_i4 @atom:313_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:314_b13_a13_d13_i13 @atom:314_b13_a13_d13_i13 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:315_b46_a46_d46_i46 @atom:315_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:316_b13_a13_d13_i13 @atom:316_b13_a13_d13_i13 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:317_b46_a46_d46_i46 @atom:317_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:318_b13_a13_d13_i13 @atom:318_b13_a13_d13_i13 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:319_b46_a46_d46_i46 @atom:319_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:320_b57_a57_d57_i57 @atom:320_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:321_b3_a3_d3_i3 @atom:321_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:322_b57_a57_d57_i57 @atom:322_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:323_b48_a48_d48_i48 @atom:323_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:324_b47_a47_d47_i47 @atom:324_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:325_b47_a47_d47_i47 @atom:325_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:326_b45_a45_d45_i45 @atom:326_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:327_b4_a4_d4_i4 @atom:327_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:328_b45_a45_d45_i45 @atom:328_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:329_b55_a55_d55_i55 @atom:329_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:330_b45_a45_d45_i45 @atom:330_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:331_b45_a45_d45_i45 @atom:331_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:332_b49_a49_d49_i49 @atom:332_b49_a49_d49_i49 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:333_b58_a58_d58_i58 @atom:333_b58_a58_d58_i58 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:334_b13_a13_d13_i13 @atom:334_b13_a13_d13_i13 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:335_b46_a46_d46_i46 @atom:335_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:336_b64_a64_d64_i64 @atom:336_b64_a64_d64_i64 lj/cut/coul/long 0.2 3.74
+ pair_coeff @atom:337_b52_a52_d52_i52 @atom:337_b52_a52_d52_i52 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:338_b20_a20_d20_i20 @atom:338_b20_a20_d20_i20 lj/cut/coul/long 0.17 3.0
+ pair_coeff @atom:339_b13_a13_d13_i13 @atom:339_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.55
+ pair_coeff @atom:340_b47_a47_d47_i47 @atom:340_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5
+ pair_coeff @atom:341_b21_a21_d21_i21 @atom:341_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4
+ pair_coeff @atom:342_b47_a47_d47_i47 @atom:342_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55
+ pair_coeff @atom:343_b1_a1_d1_i1 @atom:343_b1_a1_d1_i1 lj/cut/coul/long 0.71 3.05
+ pair_coeff @atom:344_b21_a21_d21_i21 @atom:344_b21_a21_d21_i21 lj/cut/coul/long 0.71 4.02
+ pair_coeff @atom:345_b65_a65_d65_i65 @atom:345_b65_a65_d65_i65 lj/cut/coul/long 0.71 4.28
+ pair_coeff @atom:346_b66_a66_d66_i66 @atom:346_b66_a66_d66_i66 lj/cut/coul/long 0.71 4.81
+ pair_coeff @atom:347_b67_a67_d67_i67 @atom:347_b67_a67_d67_i67 lj/cut/coul/long 0.0005 5.34
+ pair_coeff @atom:348_b68_a68_d68_i68 @atom:348_b68_a68_d68_i68 lj/cut/coul/long 0.0005 2.87
+ pair_coeff @atom:349_b69_a69_d69_i69 @atom:349_b69_a69_d69_i69 lj/cut/coul/long 0.0005 4.07
+ pair_coeff @atom:350_b70_a70_d70_i70 @atom:350_b70_a70_d70_i70 lj/cut/coul/long 0.0005 5.17
+ pair_coeff @atom:351_b71_a71_d71_i71 @atom:351_b71_a71_d71_i71 lj/cut/coul/long 0.0005 5.6
+ pair_coeff @atom:352_b72_a72_d72_i72 @atom:352_b72_a72_d72_i72 lj/cut/coul/long 0.0005 6.2
+ pair_coeff @atom:353_b73_a73_d73_i73 @atom:353_b73_a73_d73_i73 lj/cut/coul/long 0.875044 1.644471
+ pair_coeff @atom:354_b74_a74_d74_i74 @atom:354_b74_a74_d74_i74 lj/cut/coul/long 0.449657 2.412031
+ pair_coeff @atom:355_b75_a75_d75_i75 @atom:355_b75_a75_d75_i75 lj/cut/coul/long 0.118226 3.102688
+ pair_coeff @atom:356_b76_a76_d76_i76 @atom:356_b76_a76_d76_i76 lj/cut/coul/long 0.047096 3.81661
+ pair_coeff @atom:357_b6_a6_d6_i6 @atom:357_b6_a6_d6_i6 lj/cut/coul/long 0.3 4.2
+ pair_coeff @atom:358_b46_a46_d46_i46 @atom:358_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:359_b15_a15_d15_i15 @atom:359_b15_a15_d15_i15 lj/cut/coul/long 0.5 4.25
+ pair_coeff @atom:360_b6_a6_d6_i6 @atom:360_b6_a6_d6_i6 lj/cut/coul/long 0.3 4.2
+ pair_coeff @atom:361_b46_a46_d46_i46 @atom:361_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:362_b5_a5_d5_i5 @atom:362_b5_a5_d5_i5 lj/cut/coul/long 0.25 3.15
+ pair_coeff @atom:363_b13_a13_d13_i13 @atom:363_b13_a13_d13_i13 lj/cut/coul/long 0.3 4.2
+ pair_coeff @atom:364_b46_a46_d46_i46 @atom:364_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:365_b19_a19_d19_i19 @atom:365_b19_a19_d19_i19 lj/cut/coul/long 0.15 3.65
+ pair_coeff @atom:366_b18_a18_d18_i18 @atom:366_b18_a18_d18_i18 lj/cut/coul/long 0.25 3.4
+ pair_coeff @atom:367_b6_a6_d6_i6 @atom:367_b6_a6_d6_i6 lj/cut/coul/long 0.3 4.2
+ pair_coeff @atom:368_b46_a46_d46_i46 @atom:368_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:369_b53_a53_d53_i53 @atom:369_b53_a53_d53_i53 lj/cut/coul/long 0.25 3.4
+ pair_coeff @atom:370_b45_a45_d45_i45 @atom:370_b45_a45_d45_i45 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:371_b6_a6_d6_i6 @atom:371_b6_a6_d6_i6 lj/cut/coul/long 0.3 4.2
+ pair_coeff @atom:372_b46_a46_d46_i46 @atom:372_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:373_b13_a13_d13_i13 @atom:373_b13_a13_d13_i13 lj/cut/coul/long 0.3 4.2
+ pair_coeff @atom:374_b46_a46_d46_i46 @atom:374_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5
+ pair_coeff @atom:375_b33_a33_d33_i33 @atom:375_b33_a33_d33_i33 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:376_b5_a5_d5_i5 @atom:376_b5_a5_d5_i5 lj/cut/coul/long 0.25 3.2
+ pair_coeff @atom:377_b7_a7_d7_i7 @atom:377_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:378_b77_a77_d77_i77 @atom:378_b77_a77_d77_i77 lj/cut/coul/long 0.4 2.81524
+ pair_coeff @atom:379_b78_a78_d78_i78 @atom:379_b78_a78_d78_i78 lj/cut/coul/long 0.2 3.11815
+ pair_coeff @atom:380_b20_a20_d20_i20 @atom:380_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9
+ pair_coeff @atom:381_b64_a64_d64_i64 @atom:381_b64_a64_d64_i64 lj/cut/coul/long 0.2 3.74
+ pair_coeff @atom:382_b52_a52_d52_i52 @atom:382_b52_a52_d52_i52 lj/cut/coul/long 0.2 3.15
+ pair_coeff @atom:383_b20_a20_d20_i20 @atom:383_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9
+ pair_coeff @atom:384_b13_a13_d13_i13 @atom:384_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:385_b46_a46_d46_i46 @atom:385_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:386_b64_a64_d64_i64 @atom:386_b64_a64_d64_i64 lj/cut/coul/long 0.2 3.74
+ pair_coeff @atom:387_b52_a52_d52_i52 @atom:387_b52_a52_d52_i52 lj/cut/coul/long 0.2 3.15
+ pair_coeff @atom:388_b20_a20_d20_i20 @atom:388_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9
+ pair_coeff @atom:389_b13_a13_d13_i13 @atom:389_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:390_b46_a46_d46_i46 @atom:390_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:391_b64_a64_d64_i64 @atom:391_b64_a64_d64_i64 lj/cut/coul/long 0.2 3.74
+ pair_coeff @atom:392_b52_a52_d52_i52 @atom:392_b52_a52_d52_i52 lj/cut/coul/long 0.2 3.15
+ pair_coeff @atom:393_b20_a20_d20_i20 @atom:393_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9
+ pair_coeff @atom:394_b13_a13_d13_i13 @atom:394_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:395_b46_a46_d46_i46 @atom:395_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:396_b13_a13_d13_i13 @atom:396_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:397_b46_a46_d46_i46 @atom:397_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:398_b48_a48_d48_i48 @atom:398_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:399_b13_a13_d13_i13 @atom:399_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:400_b46_a46_d46_i46 @atom:400_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:401_b48_a48_d48_i48 @atom:401_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:402_b13_a13_d13_i13 @atom:402_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:403_b46_a46_d46_i46 @atom:403_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:404_b48_a48_d48_i48 @atom:404_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:405_b13_a13_d13_i13 @atom:405_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:406_b3_a3_d3_i3 @atom:406_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:407_b4_a4_d4_i4 @atom:407_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:408_b20_a20_d20_i20 @atom:408_b20_a20_d20_i20 lj/cut/coul/long 0.17 3.0
+ pair_coeff @atom:409_b13_a13_d13_i13 @atom:409_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:410_b46_a46_d46_i46 @atom:410_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42
+ pair_coeff @atom:411_b3_a3_d3_i3 @atom:411_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:412_b3_a3_d3_i3 @atom:412_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:413_b48_a48_d48_i48 @atom:413_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:414_b20_a20_d20_i20 @atom:414_b20_a20_d20_i20 lj/cut/coul/long 0.17 3.0
+ pair_coeff @atom:415_b79_a79_d79_i79 @atom:415_b79_a79_d79_i79 lj/cut/coul/long 0.25 3.55
+ pair_coeff @atom:416_b23_a23_d23_i23 @atom:416_b23_a23_d23_i23 lj/cut/coul/long 0.17 2.96
+ pair_coeff @atom:417_b13_a13_d13_i13 @atom:417_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:418_b46_a46_d46_i46 @atom:418_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:419_b24_a24_d24_i24 @atom:419_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:420_b45_a45_d45_i45 @atom:420_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:421_b24_a24_d24_i24 @atom:421_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:422_b45_a45_d45_i45 @atom:422_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:423_b13_a13_d13_i13 @atom:423_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:424_b46_a46_d46_i46 @atom:424_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:425_b13_a13_d13_i13 @atom:425_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:426_b46_a46_d46_i46 @atom:426_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:427_b13_a13_d13_i13 @atom:427_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:428_b46_a46_d46_i46 @atom:428_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:429_b48_a48_d48_i48 @atom:429_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:430_b48_a48_d48_i48 @atom:430_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:431_b13_a13_d13_i13 @atom:431_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:432_b13_a13_d13_i13 @atom:432_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:433_b13_a13_d13_i13 @atom:433_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:434_b79_a79_d79_i79 @atom:434_b79_a79_d79_i79 lj/cut/coul/long 0.25 3.55
+ pair_coeff @atom:435_b23_a23_d23_i23 @atom:435_b23_a23_d23_i23 lj/cut/coul/long 0.17 2.96
+ pair_coeff @atom:436_b22_a22_d22_i22 @atom:436_b22_a22_d22_i22 lj/cut/coul/long 0.395 3.56
+ pair_coeff @atom:437_b22_a22_d22_i22 @atom:437_b22_a22_d22_i22 lj/cut/coul/long 0.395 3.56
+ pair_coeff @atom:438_b23_a23_d23_i23 @atom:438_b23_a23_d23_i23 lj/cut/coul/long 0.28 2.93
+ pair_coeff @atom:439_b13_a13_d13_i13 @atom:439_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:440_b13_a13_d13_i13 @atom:440_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:441_b80_a80_d80_i80 @atom:441_b80_a80_d80_i80 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:442_b60_a60_d60_i60 @atom:442_b60_a60_d60_i60 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:443_b81_a81_d81_i81 @atom:443_b81_a81_d81_i81 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:444_b57_a57_d57_i57 @atom:444_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:445_b45_a45_d45_i45 @atom:445_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:446_b13_a13_d13_i13 @atom:446_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:447_b82_a82_d82_i82 @atom:447_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:448_b83_a83_d83_i83 @atom:448_b83_a83_d83_i83 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:449_b84_a84_d84_i84 @atom:449_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:450_b82_a82_d82_i82 @atom:450_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:451_b85_a85_d85_i85 @atom:451_b85_a85_d85_i85 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:452_b61_a61_d61_i61 @atom:452_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:453_b57_a57_d57_i57 @atom:453_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:454_b45_a45_d45_i45 @atom:454_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:455_b84_a84_d84_i84 @atom:455_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:456_b13_a13_d13_i13 @atom:456_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:457_b13_a13_d13_i13 @atom:457_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:458_b47_a47_d47_i47 @atom:458_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55
+ pair_coeff @atom:459_b47_a47_d47_i47 @atom:459_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55
+ pair_coeff @atom:460_b86_a86_d86_i86 @atom:460_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:461_b56_a56_d56_i56 @atom:461_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:462_b48_a48_d48_i48 @atom:462_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:463_b48_a48_d48_i48 @atom:463_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:464_b48_a48_d48_i48 @atom:464_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:465_b49_a49_d49_i49 @atom:465_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:466_b49_a49_d49_i49 @atom:466_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:467_b49_a49_d49_i49 @atom:467_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:468_b56_a56_d56_i56 @atom:468_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:469_b48_a48_d48_i48 @atom:469_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:470_b49_a49_d49_i49 @atom:470_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:471_b56_a56_d56_i56 @atom:471_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:472_b59_a59_d59_i59 @atom:472_b59_a59_d59_i59 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:473_b48_a48_d48_i48 @atom:473_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:474_b48_a48_d48_i48 @atom:474_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:475_b49_a49_d49_i49 @atom:475_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:476_b49_a49_d49_i49 @atom:476_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:477_b49_a49_d49_i49 @atom:477_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:478_b56_a56_d56_i56 @atom:478_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:479_b48_a48_d48_i48 @atom:479_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:480_b48_a48_d48_i48 @atom:480_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:481_b49_a49_d49_i49 @atom:481_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:482_b49_a49_d49_i49 @atom:482_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:483_b57_a57_d57_i57 @atom:483_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:484_b84_a84_d84_i84 @atom:484_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:485_b87_a87_d87_i87 @atom:485_b87_a87_d87_i87 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:486_b45_a45_d45_i45 @atom:486_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:487_b49_a49_d49_i49 @atom:487_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:488_b49_a49_d49_i49 @atom:488_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:489_b57_a57_d57_i57 @atom:489_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:490_b61_a61_d61_i61 @atom:490_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:491_b88_a88_d88_i88 @atom:491_b88_a88_d88_i88 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:492_b87_a87_d87_i87 @atom:492_b87_a87_d87_i87 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:493_b84_a84_d84_i84 @atom:493_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:494_b45_a45_d45_i45 @atom:494_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:495_b49_a49_d49_i49 @atom:495_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:496_b49_a49_d49_i49 @atom:496_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:497_b49_a49_d49_i49 @atom:497_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:498_b57_a57_d57_i57 @atom:498_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:499_b82_a82_d82_i82 @atom:499_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:500_b61_a61_d61_i61 @atom:500_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:501_b83_a83_d83_i83 @atom:501_b83_a83_d83_i83 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:502_b84_a84_d84_i84 @atom:502_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:503_b45_a45_d45_i45 @atom:503_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:504_b49_a49_d49_i49 @atom:504_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:505_b49_a49_d49_i49 @atom:505_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:506_b49_a49_d49_i49 @atom:506_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:507_b20_a20_d20_i20 @atom:507_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9
+ pair_coeff @atom:508_b84_a84_d84_i84 @atom:508_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:509_b87_a87_d87_i87 @atom:509_b87_a87_d87_i87 lj/cut/coul/long 0.076 3.55
+ pair_coeff @atom:510_b49_a49_d49_i49 @atom:510_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:511_b49_a49_d49_i49 @atom:511_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:512_b20_a20_d20_i20 @atom:512_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9
+ pair_coeff @atom:513_b82_a82_d82_i82 @atom:513_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:514_b61_a61_d61_i61 @atom:514_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:515_b83_a83_d83_i83 @atom:515_b83_a83_d83_i83 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:516_b84_a84_d84_i84 @atom:516_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:517_b49_a49_d49_i49 @atom:517_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:518_b49_a49_d49_i49 @atom:518_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:519_b49_a49_d49_i49 @atom:519_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:520_b20_a20_d20_i20 @atom:520_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9
+ pair_coeff @atom:521_b61_a61_d61_i61 @atom:521_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:522_b88_a88_d88_i88 @atom:522_b88_a88_d88_i88 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:523_b87_a87_d87_i87 @atom:523_b87_a87_d87_i87 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:524_b84_a84_d84_i84 @atom:524_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:525_b49_a49_d49_i49 @atom:525_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:526_b49_a49_d49_i49 @atom:526_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:527_b49_a49_d49_i49 @atom:527_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:528_b57_a57_d57_i57 @atom:528_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:529_b84_a84_d84_i84 @atom:529_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:530_b87_a87_d87_i87 @atom:530_b87_a87_d87_i87 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:531_b48_a48_d48_i48 @atom:531_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:532_b48_a48_d48_i48 @atom:532_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:533_b48_a48_d48_i48 @atom:533_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:534_b48_a48_d48_i48 @atom:534_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:535_b81_a81_d81_i81 @atom:535_b81_a81_d81_i81 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:536_b60_a60_d60_i60 @atom:536_b60_a60_d60_i60 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:537_b45_a45_d45_i45 @atom:537_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:538_b49_a49_d49_i49 @atom:538_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:539_b49_a49_d49_i49 @atom:539_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:540_b49_a49_d49_i49 @atom:540_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:541_b49_a49_d49_i49 @atom:541_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:542_b49_a49_d49_i49 @atom:542_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:543_b49_a49_d49_i49 @atom:543_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:544_b56_a56_d56_i56 @atom:544_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:545_b48_a48_d48_i48 @atom:545_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:546_b48_a48_d48_i48 @atom:546_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:547_b48_a48_d48_i48 @atom:547_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:548_b48_a48_d48_i48 @atom:548_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:549_b48_a48_d48_i48 @atom:549_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:550_b48_a48_d48_i48 @atom:550_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:551_b48_a48_d48_i48 @atom:551_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:552_b48_a48_d48_i48 @atom:552_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:553_b48_a48_d48_i48 @atom:553_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:554_b49_a49_d49_i49 @atom:554_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:555_b49_a49_d49_i49 @atom:555_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:556_b49_a49_d49_i49 @atom:556_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:557_b49_a49_d49_i49 @atom:557_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:558_b49_a49_d49_i49 @atom:558_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:559_b49_a49_d49_i49 @atom:559_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:560_b49_a49_d49_i49 @atom:560_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:561_b56_a56_d56_i56 @atom:561_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:562_b59_a59_d59_i59 @atom:562_b59_a59_d59_i59 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:563_b56_a56_d56_i56 @atom:563_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:564_b60_a60_d60_i60 @atom:564_b60_a60_d60_i60 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:565_b60_a60_d60_i60 @atom:565_b60_a60_d60_i60 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:566_b48_a48_d48_i48 @atom:566_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:567_b61_a61_d61_i61 @atom:567_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:568_b62_a62_d62_i62 @atom:568_b62_a62_d62_i62 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:569_b57_a57_d57_i57 @atom:569_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:570_b49_a49_d49_i49 @atom:570_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:571_b49_a49_d49_i49 @atom:571_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:572_b49_a49_d49_i49 @atom:572_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:573_b45_a45_d45_i45 @atom:573_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:574_b16_a16_d16_i16 @atom:574_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55
+ pair_coeff @atom:575_b82_a82_d82_i82 @atom:575_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:576_b61_a61_d61_i61 @atom:576_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:577_b83_a83_d83_i83 @atom:577_b83_a83_d83_i83 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:578_b84_a84_d84_i84 @atom:578_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:579_b49_a49_d49_i49 @atom:579_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:580_b49_a49_d49_i49 @atom:580_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:581_b49_a49_d49_i49 @atom:581_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:582_b56_a56_d56_i56 @atom:582_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:583_b59_a59_d59_i59 @atom:583_b59_a59_d59_i59 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:584_b49_a49_d49_i49 @atom:584_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:585_b48_a48_d48_i48 @atom:585_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:586_b13_a13_d13_i13 @atom:586_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:587_b56_a56_d56_i56 @atom:587_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:588_b48_a48_d48_i48 @atom:588_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:589_b48_a48_d48_i48 @atom:589_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:590_b48_a48_d48_i48 @atom:590_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:591_b48_a48_d48_i48 @atom:591_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:592_b48_a48_d48_i48 @atom:592_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:593_b48_a48_d48_i48 @atom:593_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:594_b49_a49_d49_i49 @atom:594_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:595_b49_a49_d49_i49 @atom:595_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:596_b49_a49_d49_i49 @atom:596_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:597_b49_a49_d49_i49 @atom:597_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:598_b57_a57_d57_i57 @atom:598_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:599_b82_a82_d82_i82 @atom:599_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:600_b61_a61_d61_i61 @atom:600_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:601_b83_a83_d83_i83 @atom:601_b83_a83_d83_i83 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:602_b84_a84_d84_i84 @atom:602_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:603_b13_a13_d13_i13 @atom:603_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:604_b49_a49_d49_i49 @atom:604_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:605_b49_a49_d49_i49 @atom:605_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:606_b49_a49_d49_i49 @atom:606_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:607_b46_a46_d46_i46 @atom:607_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:608_b13_a13_d13_i13 @atom:608_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:609_b13_a13_d13_i13 @atom:609_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:610_b13_a13_d13_i13 @atom:610_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:611_b13_a13_d13_i13 @atom:611_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:612_b13_a13_d13_i13 @atom:612_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:613_b13_a13_d13_i13 @atom:613_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:614_b13_a13_d13_i13 @atom:614_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:615_b13_a13_d13_i13 @atom:615_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:616_b13_a13_d13_i13 @atom:616_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:617_b13_a13_d13_i13 @atom:617_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:618_b13_a13_d13_i13 @atom:618_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:619_b13_a13_d13_i13 @atom:619_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:620_b13_a13_d13_i13 @atom:620_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:621_b13_a13_d13_i13 @atom:621_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:622_b13_a13_d13_i13 @atom:622_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:623_b15_a15_d15_i15 @atom:623_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.55
+ pair_coeff @atom:624_b17_a17_d17_i17 @atom:624_b17_a17_d17_i17 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:625_b48_a48_d48_i48 @atom:625_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:626_b89_a89_d89_i89 @atom:626_b89_a89_d89_i89 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:627_b90_a90_d90_i90 @atom:627_b90_a90_d90_i90 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:628_b91_a91_d91_i91 @atom:628_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:629_b91_a91_d91_i91 @atom:629_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:630_b13_a13_d13_i13 @atom:630_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:631_b86_a86_d86_i86 @atom:631_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:632_b86_a86_d86_i86 @atom:632_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:633_b86_a86_d86_i86 @atom:633_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:634_b86_a86_d86_i86 @atom:634_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:635_b86_a86_d86_i86 @atom:635_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:636_b86_a86_d86_i86 @atom:636_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:637_b16_a16_d16_i16 @atom:637_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55
+ pair_coeff @atom:638_b92_a92_d92_i92 @atom:638_b92_a92_d92_i92 lj/cut/coul/long 0.054 3.473
+ pair_coeff @atom:639_b93_a93_d93_i93 @atom:639_b93_a93_d93_i93 lj/cut/coul/long 0.05 3.3
+ pair_coeff @atom:640_b94_a94_d94_i94 @atom:640_b94_a94_d94_i94 lj/cut/coul/long 0.05 3.3
+ pair_coeff @atom:641_b95_a95_d95_i95 @atom:641_b95_a95_d95_i95 lj/cut/coul/long 0.076 3.55
+ pair_coeff @atom:642_b13_a13_d13_i13 @atom:642_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:643_b46_a46_d46_i46 @atom:643_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:644_b96_a96_d96_i96 @atom:644_b96_a96_d96_i96 lj/cut/coul/long 0.06 3.75
+ pair_coeff @atom:645_b97_a97_d97_i97 @atom:645_b97_a97_d97_i97 lj/cut/coul/long 0.054 3.473
+ pair_coeff @atom:646_b98_a98_d98_i98 @atom:646_b98_a98_d98_i98 lj/cut/coul/long 0.05 3.3
+ pair_coeff @atom:647_b99_a99_d99_i99 @atom:647_b99_a99_d99_i99 lj/cut/coul/long 0.05 3.3
+ pair_coeff @atom:648_b100_a100_d100_i100 @atom:648_b100_a100_d100_i100 lj/cut/coul/long 0.04 2.95
+ pair_coeff @atom:649_b47_a47_d47_i47 @atom:649_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55
+ pair_coeff @atom:650_b21_a21_d21_i21 @atom:650_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4
+ pair_coeff @atom:651_b46_a46_d46_i46 @atom:651_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:652_b91_a91_d91_i91 @atom:652_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:653_b91_a91_d91_i91 @atom:653_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:654_b91_a91_d91_i91 @atom:654_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:655_b48_a48_d48_i48 @atom:655_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:656_b49_a49_d49_i49 @atom:656_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:657_b48_a48_d48_i48 @atom:657_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:658_b49_a49_d49_i49 @atom:658_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:659_b48_a48_d48_i48 @atom:659_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:660_b1_a1_d1_i1 @atom:660_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.85
+ pair_coeff @atom:661_b48_a48_d48_i48 @atom:661_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:662_b1_a1_d1_i1 @atom:662_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.85
+ pair_coeff @atom:663_b65_a65_d65_i65 @atom:663_b65_a65_d65_i65 lj/cut/coul/long 0.47 3.47
+ pair_coeff @atom:664_b2_a2_d2_i2 @atom:664_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.905
+ pair_coeff @atom:665_b48_a48_d48_i48 @atom:665_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:666_b13_a13_d13_i13 @atom:666_b13_a13_d13_i13 lj/cut/coul/long 0.062 3.25
+ pair_coeff @atom:667_b1_a1_d1_i1 @atom:667_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.94
+ pair_coeff @atom:668_b48_a48_d48_i48 @atom:668_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:669_b1_a1_d1_i1 @atom:669_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.85
+ pair_coeff @atom:670_b48_a48_d48_i48 @atom:670_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:671_b65_a65_d65_i65 @atom:671_b65_a65_d65_i65 lj/cut/coul/long 0.47 3.47
+ pair_coeff @atom:672_b48_a48_d48_i48 @atom:672_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:673_b66_a66_d66_i66 @atom:673_b66_a66_d66_i66 lj/cut/coul/long 0.6 3.75
+ pair_coeff @atom:674_b91_a91_d91_i91 @atom:674_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:675_b15_a15_d15_i15 @atom:675_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.55
+ pair_coeff @atom:676_b48_a48_d48_i48 @atom:676_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:677_b48_a48_d48_i48 @atom:677_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:678_b48_a48_d48_i48 @atom:678_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:679_b48_a48_d48_i48 @atom:679_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:680_b48_a48_d48_i48 @atom:680_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:681_b49_a49_d49_i49 @atom:681_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:682_b49_a49_d49_i49 @atom:682_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:683_b48_a48_d48_i48 @atom:683_b48_a48_d48_i48 lj/cut/coul/long 0.05 3.55
+ pair_coeff @atom:684_b55_a55_d55_i55 @atom:684_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:685_b45_a45_d45_i45 @atom:685_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:686_b45_a45_d45_i45 @atom:686_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:687_b49_a49_d49_i49 @atom:687_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:688_b13_a13_d13_i13 @atom:688_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:689_b13_a13_d13_i13 @atom:689_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:690_b101_a101_d101_i101 @atom:690_b101_a101_d101_i101 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:691_b56_a56_d56_i56 @atom:691_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:692_b101_a101_d101_i101 @atom:692_b101_a101_d101_i101 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:693_b48_a48_d48_i48 @atom:693_b48_a48_d48_i48 lj/cut/coul/long 0.05 3.55
+ pair_coeff @atom:694_b18_a18_d18_i18 @atom:694_b18_a18_d18_i18 lj/cut/coul/long 0.17 3.2
+ pair_coeff @atom:695_b19_a19_d19_i19 @atom:695_b19_a19_d19_i19 lj/cut/coul/long 0.066 3.3
+ pair_coeff @atom:696_b13_a13_d13_i13 @atom:696_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.3
+ pair_coeff @atom:697_b13_a13_d13_i13 @atom:697_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.3
+ pair_coeff @atom:698_b13_a13_d13_i13 @atom:698_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.3
+ pair_coeff @atom:699_b13_a13_d13_i13 @atom:699_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.3
+ pair_coeff @atom:700_b46_a46_d46_i46 @atom:700_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.5
+ pair_coeff @atom:701_b102_a102_d102_i102 @atom:701_b102_a102_d102_i102 lj/cut/coul/long 0.12 3.25
+ pair_coeff @atom:702_b103_a103_d103_i103 @atom:702_b103_a103_d103_i103 lj/cut/coul/long 0.17 2.96
+ pair_coeff @atom:703_b13_a13_d13_i13 @atom:703_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:704_b46_a46_d46_i46 @atom:704_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.5
+ pair_coeff @atom:705_b13_a13_d13_i13 @atom:705_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:706_b13_a13_d13_i13 @atom:706_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:707_b13_a13_d13_i13 @atom:707_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:708_b102_a102_d102_i102 @atom:708_b102_a102_d102_i102 lj/cut/coul/long 0.12 3.25
+ pair_coeff @atom:709_b48_a48_d48_i48 @atom:709_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:710_b13_a13_d13_i13 @atom:710_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.3
+ pair_coeff @atom:711_b56_a56_d56_i56 @atom:711_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:712_b4_a4_d4_i4 @atom:712_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:713_b3_a3_d3_i3 @atom:713_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:714_b20_a20_d20_i20 @atom:714_b20_a20_d20_i20 lj/cut/coul/long 0.17 3.0
+ pair_coeff @atom:715_b13_a13_d13_i13 @atom:715_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:716_b13_a13_d13_i13 @atom:716_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:717_b13_a13_d13_i13 @atom:717_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:718_b46_a46_d46_i46 @atom:718_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42
+ pair_coeff @atom:719_b46_a46_d46_i46 @atom:719_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42
+ pair_coeff @atom:720_b46_a46_d46_i46 @atom:720_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42
+ pair_coeff @atom:721_b20_a20_d20_i20 @atom:721_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9
+ pair_coeff @atom:722_b104_a104_d104_i104 @atom:722_b104_a104_d104_i104 lj/cut/coul/long 0.2 3.74
+ pair_coeff @atom:723_b13_a13_d13_i13 @atom:723_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:724_b13_a13_d13_i13 @atom:724_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:725_b46_a46_d46_i46 @atom:725_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:726_b64_a64_d64_i64 @atom:726_b64_a64_d64_i64 lj/cut/coul/long 0.2 3.74
+ pair_coeff @atom:727_b1_a1_d1_i1 @atom:727_b1_a1_d1_i1 lj/cut/coul/long 0.061 3.1181
+ pair_coeff @atom:728_b24_a24_d24_i24 @atom:728_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.15
+ pair_coeff @atom:729_b4_a4_d4_i4 @atom:729_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.86
+ pair_coeff @atom:730_b44_a44_d44_i44 @atom:730_b44_a44_d44_i44 lj/cut/coul/long 0.17 3.3
+ pair_coeff @atom:731_b44_a44_d44_i44 @atom:731_b44_a44_d44_i44 lj/cut/coul/long 0.17 3.3
+ pair_coeff @atom:732_b44_a44_d44_i44 @atom:732_b44_a44_d44_i44 lj/cut/coul/long 0.17 3.3
+ pair_coeff @atom:733_b13_a13_d13_i13 @atom:733_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:734_b13_a13_d13_i13 @atom:734_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:735_b13_a13_d13_i13 @atom:735_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:736_b13_a13_d13_i13 @atom:736_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:737_b13_a13_d13_i13 @atom:737_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:738_b13_a13_d13_i13 @atom:738_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:739_b45_a45_d45_i45 @atom:739_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:740_b45_a45_d45_i45 @atom:740_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:741_b46_a46_d46_i46 @atom:741_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.5
+ pair_coeff @atom:742_b13_a13_d13_i13 @atom:742_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:743_b13_a13_d13_i13 @atom:743_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:744_b13_a13_d13_i13 @atom:744_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:745_b13_a13_d13_i13 @atom:745_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:746_b48_a48_d48_i48 @atom:746_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:747_b48_a48_d48_i48 @atom:747_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:748_b48_a48_d48_i48 @atom:748_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:749_b13_a13_d13_i13 @atom:749_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:750_b13_a13_d13_i13 @atom:750_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:751_b13_a13_d13_i13 @atom:751_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:752_b13_a13_d13_i13 @atom:752_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:753_b13_a13_d13_i13 @atom:753_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:754_b13_a13_d13_i13 @atom:754_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:755_b19_a19_d19_i19 @atom:755_b19_a19_d19_i19 lj/cut/coul/long 0.086 3.3
+ pair_coeff @atom:756_b46_a46_d46_i46 @atom:756_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42
+ pair_coeff @atom:757_b19_a19_d19_i19 @atom:757_b19_a19_d19_i19 lj/cut/coul/long 0.21 3.3
+ pair_coeff @atom:758_b19_a19_d19_i19 @atom:758_b19_a19_d19_i19 lj/cut/coul/long 0.135 3.3
+ pair_coeff @atom:759_b19_a19_d19_i19 @atom:759_b19_a19_d19_i19 lj/cut/coul/long 0.1 3.3
+ pair_coeff @atom:760_b46_a46_d46_i46 @atom:760_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.5
+ pair_coeff @atom:761_b51_a51_d51_i51 @atom:761_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:762_b51_a51_d51_i51 @atom:762_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:763_b51_a51_d51_i51 @atom:763_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:764_b5_a5_d5_i5 @atom:764_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.12
+ pair_coeff @atom:765_b7_a7_d7_i7 @atom:765_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:766_b105_a105_d105_i105 @atom:766_b105_a105_d105_i105 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:767_b105_a105_d105_i105 @atom:767_b105_a105_d105_i105 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:768_b105_a105_d105_i105 @atom:768_b105_a105_d105_i105 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:769_b19_a19_d19_i19 @atom:769_b19_a19_d19_i19 lj/cut/coul/long 0.21 3.3
+ pair_coeff @atom:770_b53_a53_d53_i53 @atom:770_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:771_b54_a54_d54_i54 @atom:771_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:772_b13_a13_d13_i13 @atom:772_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:773_b13_a13_d13_i13 @atom:773_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:774_b13_a13_d13_i13 @atom:774_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:775_b13_a13_d13_i13 @atom:775_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:776_b84_a84_d84_i84 @atom:776_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:777_b87_a87_d87_i87 @atom:777_b87_a87_d87_i87 lj/cut/coul/long 0.076 3.55
+ pair_coeff @atom:778_b86_a86_d86_i86 @atom:778_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:779_b86_a86_d86_i86 @atom:779_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:780_b46_a46_d46_i46 @atom:780_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:781_b13_a13_d13_i13 @atom:781_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:782_b3_a3_d3_i3 @atom:782_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:783_b53_a53_d53_i53 @atom:783_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:784_b52_a52_d52_i52 @atom:784_b52_a52_d52_i52 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:785_b54_a54_d54_i54 @atom:785_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:786_b1_a1_d1_i1 @atom:786_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.94
+ pair_coeff @atom:787_b13_a13_d13_i13 @atom:787_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:788_b46_a46_d46_i46 @atom:788_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:789_b13_a13_d13_i13 @atom:789_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:790_b13_a13_d13_i13 @atom:790_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:791_b13_a13_d13_i13 @atom:791_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:792_b13_a13_d13_i13 @atom:792_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:793_b13_a13_d13_i13 @atom:793_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:794_b13_a13_d13_i13 @atom:794_b13_a13_d13_i13 lj/cut/coul/long 0.097 3.5
+ pair_coeff @atom:795_b1_a1_d1_i1 @atom:795_b1_a1_d1_i1 lj/cut/coul/long 0.053 2.95
+ pair_coeff @atom:796_b13_a13_d13_i13 @atom:796_b13_a13_d13_i13 lj/cut/coul/long 0.062 3.25
+ pair_coeff @atom:797_b46_a46_d46_i46 @atom:797_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:798_b13_a13_d13_i13 @atom:798_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:799_b13_a13_d13_i13 @atom:799_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:800_b21_a21_d21_i21 @atom:800_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4
+ pair_coeff @atom:801_b13_a13_d13_i13 @atom:801_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:802_b46_a46_d46_i46 @atom:802_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:803_b13_a13_d13_i13 @atom:803_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:804_b13_a13_d13_i13 @atom:804_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:805_b65_a65_d65_i65 @atom:805_b65_a65_d65_i65 lj/cut/coul/long 0.47 3.47
+ pair_coeff @atom:806_b13_a13_d13_i13 @atom:806_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:807_b46_a46_d46_i46 @atom:807_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:808_b13_a13_d13_i13 @atom:808_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:809_b13_a13_d13_i13 @atom:809_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:810_b1_a1_d1_i1 @atom:810_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.94
+ pair_coeff @atom:811_b21_a21_d21_i21 @atom:811_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4
+ pair_coeff @atom:812_b65_a65_d65_i65 @atom:812_b65_a65_d65_i65 lj/cut/coul/long 0.47 3.47
+ pair_coeff @atom:813_b48_a48_d48_i48 @atom:813_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:814_b20_a20_d20_i20 @atom:814_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9
+ pair_coeff @atom:815_b13_a13_d13_i13 @atom:815_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:816_b1_a1_d1_i1 @atom:816_b1_a1_d1_i1 lj/cut/coul/long 0.06 2.9
+ pair_coeff @atom:817_b24_a24_d24_i24 @atom:817_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:818_b48_a48_d48_i48 @atom:818_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:819_b13_a13_d13_i13 @atom:819_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:820_b3_a3_d3_i3 @atom:820_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:821_b3_a3_d3_i3 @atom:821_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:822_b4_a4_d4_i4 @atom:822_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:823_b24_a24_d24_i24 @atom:823_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:824_b45_a45_d45_i45 @atom:824_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:825_b5_a5_d5_i5 @atom:825_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.12
+ pair_coeff @atom:826_b7_a7_d7_i7 @atom:826_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0
+ pair_coeff @atom:827_b13_a13_d13_i13 @atom:827_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:828_b13_a13_d13_i13 @atom:828_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:829_b86_a86_d86_i86 @atom:829_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:830_b86_a86_d86_i86 @atom:830_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:831_b86_a86_d86_i86 @atom:831_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:832_b86_a86_d86_i86 @atom:832_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:833_b48_a48_d48_i48 @atom:833_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:834_b106_a106_d106_i106 @atom:834_b106_a106_d106_i106 lj/cut/coul/long 0.0125 1.96
+ pair_coeff @atom:835_b13_a13_d13_i13 @atom:835_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:836_b13_a13_d13_i13 @atom:836_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:837_b13_a13_d13_i13 @atom:837_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:838_b66_a66_d66_i66 @atom:838_b66_a66_d66_i66 lj/cut/coul/long 0.6 3.75
+ pair_coeff @atom:839_b46_a46_d46_i46 @atom:839_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:840_b24_a24_d24_i24 @atom:840_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:841_b48_a48_d48_i48 @atom:841_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:842_b48_a48_d48_i48 @atom:842_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:843_b24_a24_d24_i24 @atom:843_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:844_b48_a48_d48_i48 @atom:844_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:845_b3_a3_d3_i3 @atom:845_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:846_b4_a4_d4_i4 @atom:846_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:847_b107_a107_d107_i107 @atom:847_b107_a107_d107_i107 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:848_b13_a13_d13_i13 @atom:848_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:849_b13_a13_d13_i13 @atom:849_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:850_b13_a13_d13_i13 @atom:850_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:851_b13_a13_d13_i13 @atom:851_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:852_b46_a46_d46_i46 @atom:852_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42
+ pair_coeff @atom:853_b3_a3_d3_i3 @atom:853_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75
+ pair_coeff @atom:854_b4_a4_d4_i4 @atom:854_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:855_b46_a46_d46_i46 @atom:855_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42
+ pair_coeff @atom:856_b13_a13_d13_i13 @atom:856_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:857_b13_a13_d13_i13 @atom:857_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:858_b13_a13_d13_i13 @atom:858_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:859_b13_a13_d13_i13 @atom:859_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:860_b13_a13_d13_i13 @atom:860_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:861_b13_a13_d13_i13 @atom:861_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:862_b13_a13_d13_i13 @atom:862_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:863_b13_a13_d13_i13 @atom:863_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:864_b13_a13_d13_i13 @atom:864_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:865_b13_a13_d13_i13 @atom:865_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:866_b108_a108_d108_i108 @atom:866_b108_a108_d108_i108 lj/cut/coul/long 0.1 4.0
+ pair_coeff @atom:867_b108_a108_d108_i108 @atom:867_b108_a108_d108_i108 lj/cut/coul/long 0.1 4.0
+ pair_coeff @atom:868_b108_a108_d108_i108 @atom:868_b108_a108_d108_i108 lj/cut/coul/long 0.1 4.0
+ pair_coeff @atom:869_b108_a108_d108_i108 @atom:869_b108_a108_d108_i108 lj/cut/coul/long 0.1 4.0
+ pair_coeff @atom:870_b45_a45_d45_i45 @atom:870_b45_a45_d45_i45 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:871_b13_a13_d13_i13 @atom:871_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:872_b13_a13_d13_i13 @atom:872_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:873_b13_a13_d13_i13 @atom:873_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:874_b13_a13_d13_i13 @atom:874_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:875_b1_a1_d1_i1 @atom:875_b1_a1_d1_i1 lj/cut/coul/long 0.72 3.08
+ pair_coeff @atom:876_b21_a21_d21_i21 @atom:876_b21_a21_d21_i21 lj/cut/coul/long 0.11779 4.18
+ pair_coeff @atom:877_b65_a65_d65_i65 @atom:877_b65_a65_d65_i65 lj/cut/coul/long 0.09 4.51
+ pair_coeff @atom:878_b66_a66_d66_i66 @atom:878_b66_a66_d66_i66 lj/cut/coul/long 0.07 5.15
+ pair_coeff @atom:879_b68_a68_d68_i68 @atom:879_b68_a68_d68_i68 lj/cut/coul/long 0.018279 2.7
+ pair_coeff @atom:880_b69_a69_d69_i69 @atom:880_b69_a69_d69_i69 lj/cut/coul/long 0.002772 3.35
+ pair_coeff @atom:881_b70_a70_d70_i70 @atom:881_b70_a70_d70_i70 lj/cut/coul/long 0.000328 4.06
+ pair_coeff @atom:882_b71_a71_d71_i71 @atom:882_b71_a71_d71_i71 lj/cut/coul/long 0.000171 4.32
+ pair_coeff @atom:883_b72_a72_d72_i72 @atom:883_b72_a72_d72_i72 lj/cut/coul/long 8.1e-05 4.82
+ pair_coeff @atom:884_b73_a73_d73_i73 @atom:884_b73_a73_d73_i73 lj/cut/coul/long 0.875044 2.91
+ pair_coeff @atom:885_b74_a74_d74_i74 @atom:885_b74_a74_d74_i74 lj/cut/coul/long 0.449657 3.47
+ pair_coeff @atom:886_b75_a75_d75_i75 @atom:886_b75_a75_d75_i75 lj/cut/coul/long 0.118226 3.82
+ pair_coeff @atom:887_b76_a76_d76_i76 @atom:887_b76_a76_d76_i76 lj/cut/coul/long 0.047096 4.18
+ pair_coeff @atom:888_b13_a13_d13_i13 @atom:888_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:889_b13_a13_d13_i13 @atom:889_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:890_b13_a13_d13_i13 @atom:890_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:891_b13_a13_d13_i13 @atom:891_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ pair_coeff @atom:892_b46_a46_d46_i46 @atom:892_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5
+ pair_coeff @atom:893_b53_a53_d53_i53 @atom:893_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:894_b48_a48_d48_i48 @atom:894_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:895_b53_a53_d53_i53 @atom:895_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25
+ pair_coeff @atom:896_b48_a48_d48_i48 @atom:896_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55
+ pair_coeff @atom:897_b109_a109_d109_i109 @atom:897_b109_a109_d109_i109 lj/cut/coul/long 0.076 3.55
+ pair_coeff @atom:898_b109_a109_d109_i109 @atom:898_b109_a109_d109_i109 lj/cut/coul/long 0.076 3.55
+ pair_coeff @atom:899_b46_a46_d46_i46 @atom:899_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.42
+ pair_coeff @atom:900_b47_a47_d47_i47 @atom:900_b47_a47_d47_i47 lj/cut/coul/long 0.086 3.3
+ pair_coeff @atom:901_b47_a47_d47_i47 @atom:901_b47_a47_d47_i47 lj/cut/coul/long 0.086 3.3
+ pair_coeff @atom:902_b47_a47_d47_i47 @atom:902_b47_a47_d47_i47 lj/cut/coul/long 0.086 3.3
+ pair_coeff @atom:903_b110_a110_d110_i110 @atom:903_b110_a110_d110_i110 lj/cut/coul/long 0.086 3.3
+ pair_coeff @atom:904_b110_a110_d110_i110 @atom:904_b110_a110_d110_i110 lj/cut/coul/long 0.086 3.3
+ pair_coeff @atom:905_b4_a4_d4_i4 @atom:905_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96
+ pair_coeff @atom:906_b13_a13_d13_i13 @atom:906_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5
+ } #(end of pair_coeffs)
+
+
+ # ------- 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)
+
+
+ write_once("In Settings") {
+ bond_coeff @bond:1-2 harmonic 367.0 1.38
+ bond_coeff @bond:1-3 harmonic 420.0 1.357
+ bond_coeff @bond:1-13 harmonic 367.0 1.36
+ bond_coeff @bond:1-19 harmonic 450.0 1.279
+ bond_coeff @bond:1-25 harmonic 300.0 0.3
+ bond_coeff @bond:1-47 harmonic 420.0 1.34
+ bond_coeff @bond:1-48 harmonic 420.0 1.354
+ bond_coeff @bond:1-82 harmonic 420.0 1.354
+ bond_coeff @bond:1-83 harmonic 420.0 1.354
+ bond_coeff @bond:1-84 harmonic 420.0 1.354
+ bond_coeff @bond:1-87 harmonic 420.0 1.354
+ bond_coeff @bond:1-88 harmonic 420.0 1.354
+ bond_coeff @bond:1-108 harmonic 461.0 1.57
+ bond_coeff @bond:2-2 harmonic 260.0 1.526
+ bond_coeff @bond:2-3 harmonic 317.0 1.522
+ bond_coeff @bond:2-5 harmonic 386.0 1.425
+ bond_coeff @bond:2-6 harmonic 260.0 1.526
+ bond_coeff @bond:2-10 harmonic 260.0 1.526
+ bond_coeff @bond:2-11 harmonic 317.0 1.5
+ bond_coeff @bond:2-12 harmonic 317.0 1.51
+ bond_coeff @bond:2-13 harmonic 260.0 1.526
+ bond_coeff @bond:2-14 harmonic 317.0 1.5
+ bond_coeff @bond:2-15 harmonic 222.0 1.81
+ bond_coeff @bond:2-16 harmonic 222.0 1.81
+ bond_coeff @bond:2-20 harmonic 320.0 1.425
+ bond_coeff @bond:2-24 harmonic 337.0 1.449
+ bond_coeff @bond:2-44 harmonic 382.0 1.448
+ bond_coeff @bond:2-48 harmonic 317.0 1.51
+ bond_coeff @bond:2-51 harmonic 260.0 1.526
+ bond_coeff @bond:2-53 harmonic 367.0 1.471
+ bond_coeff @bond:2-55 harmonic 337.0 1.463
+ bond_coeff @bond:2-80 harmonic 317.0 1.495
+ bond_coeff @bond:3-3 harmonic 350.0 1.51
+ bond_coeff @bond:3-4 harmonic 570.0 1.229
+ bond_coeff @bond:3-5 harmonic 450.0 1.364
+ bond_coeff @bond:3-6 harmonic 317.0 1.522
+ bond_coeff @bond:3-10 harmonic 317.0 1.522
+ bond_coeff @bond:3-12 harmonic 469.0 1.4
+ bond_coeff @bond:3-13 harmonic 317.0 1.522
+ bond_coeff @bond:3-19 harmonic 400.0 1.444
+ bond_coeff @bond:3-20 harmonic 214.0 1.327
+ bond_coeff @bond:3-21 harmonic 300.0 1.79
+ bond_coeff @bond:3-24 harmonic 490.0 1.335
+ bond_coeff @bond:3-44 harmonic 317.0 1.522
+ bond_coeff @bond:3-46 harmonic 340.0 1.09
+ bond_coeff @bond:3-47 harmonic 410.0 1.444
+ bond_coeff @bond:3-48 harmonic 400.0 1.49
+ bond_coeff @bond:3-50 harmonic 385.0 1.46
+ bond_coeff @bond:3-52 harmonic 656.0 1.25
+ bond_coeff @bond:3-56 harmonic 457.0 1.358
+ bond_coeff @bond:3-57 harmonic 418.0 1.388
+ bond_coeff @bond:3-60 harmonic 447.0 1.419
+ bond_coeff @bond:3-65 harmonic 300.0 1.98
+ bond_coeff @bond:3-84 harmonic 400.0 1.49
+ bond_coeff @bond:3-86 harmonic 385.0 1.46
+ bond_coeff @bond:3-105 harmonic 424.0 1.383
+ bond_coeff @bond:3-107 harmonic 490.0 1.335
+ bond_coeff @bond:4-25 harmonic 553.0 0.3
+ bond_coeff @bond:4-64 harmonic 525.0 1.48
+ bond_coeff @bond:4-89 harmonic 570.0 1.229
+ bond_coeff @bond:4-110 harmonic 700.0 1.171
+ bond_coeff @bond:5-6 harmonic 386.0 1.425
+ bond_coeff @bond:5-7 harmonic 553.0 0.945
+ bond_coeff @bond:5-10 harmonic 386.0 1.425
+ bond_coeff @bond:5-13 harmonic 320.0 1.41
+ bond_coeff @bond:5-20 harmonic 250.0 1.47
+ bond_coeff @bond:5-24 harmonic 400.0 1.38
+ bond_coeff @bond:5-25 harmonic 340.0 0.3
+ bond_coeff @bond:5-44 harmonic 320.0 1.45
+ bond_coeff @bond:5-47 harmonic 450.0 1.37
+ bond_coeff @bond:5-48 harmonic 450.0 1.364
+ bond_coeff @bond:5-51 harmonic 320.0 1.38
+ bond_coeff @bond:5-64 harmonic 230.0 1.61
+ bond_coeff @bond:5-79 harmonic 450.0 1.67
+ bond_coeff @bond:5-106 harmonic 94.0 1.8
+ bond_coeff @bond:5-108 harmonic 374.0 1.64
+ bond_coeff @bond:6-6 harmonic 260.0 1.526
+ bond_coeff @bond:6-10 harmonic 260.0 1.526
+ bond_coeff @bond:6-11 harmonic 317.0 1.5
+ bond_coeff @bond:6-13 harmonic 260.0 1.526
+ bond_coeff @bond:6-14 harmonic 317.0 1.5
+ bond_coeff @bond:6-15 harmonic 222.0 1.81
+ bond_coeff @bond:6-16 harmonic 222.0 1.81
+ bond_coeff @bond:6-20 harmonic 320.0 1.425
+ bond_coeff @bond:6-24 harmonic 337.0 1.449
+ bond_coeff @bond:6-44 harmonic 382.0 1.448
+ bond_coeff @bond:6-47 harmonic 317.0 1.51
+ bond_coeff @bond:6-51 harmonic 260.0 1.526
+ bond_coeff @bond:6-53 harmonic 367.0 1.471
+ bond_coeff @bond:6-55 harmonic 337.0 1.463
+ bond_coeff @bond:6-79 harmonic 222.0 1.81
+ bond_coeff @bond:6-105 harmonic 337.0 1.475
+ bond_coeff @bond:7-20 harmonic 553.0 0.945
+ bond_coeff @bond:7-25 harmonic 340.0 0.1
+ bond_coeff @bond:9-9 harmonic 530.0 1.34
+ bond_coeff @bond:9-11 harmonic 530.0 1.34
+ bond_coeff @bond:9-14 harmonic 530.0 1.34
+ bond_coeff @bond:10-10 harmonic 260.0 1.526
+ bond_coeff @bond:10-11 harmonic 317.0 1.5
+ bond_coeff @bond:10-14 harmonic 317.0 1.5
+ bond_coeff @bond:10-20 harmonic 320.0 1.425
+ bond_coeff @bond:10-24 harmonic 337.0 1.449
+ bond_coeff @bond:10-44 harmonic 382.0 1.448
+ bond_coeff @bond:10-105 harmonic 337.0 1.475
+ bond_coeff @bond:11-11 harmonic 530.0 1.34
+ bond_coeff @bond:11-13 harmonic 317.0 1.5
+ bond_coeff @bond:11-14 harmonic 530.0 1.34
+ bond_coeff @bond:11-79 harmonic 222.0 1.76
+ bond_coeff @bond:12-12 harmonic 469.0 1.4
+ bond_coeff @bond:12-48 harmonic 469.0 1.4
+ bond_coeff @bond:12-60 harmonic 469.0 1.4
+ bond_coeff @bond:12-81 harmonic 469.0 1.4
+ bond_coeff @bond:13-13 harmonic 268.0 1.529
+ bond_coeff @bond:13-14 harmonic 317.0 1.5
+ bond_coeff @bond:13-15 harmonic 222.0 1.81
+ bond_coeff @bond:13-16 harmonic 222.0 1.81
+ bond_coeff @bond:13-18 harmonic 390.0 1.43
+ bond_coeff @bond:13-19 harmonic 390.0 1.47
+ bond_coeff @bond:13-20 harmonic 320.0 1.41
+ bond_coeff @bond:13-21 harmonic 245.0 1.781
+ bond_coeff @bond:13-22 harmonic 340.0 1.79
+ bond_coeff @bond:13-24 harmonic 337.0 1.449
+ bond_coeff @bond:13-25 harmonic 340.0 0.3
+ bond_coeff @bond:13-44 harmonic 382.0 1.448
+ bond_coeff @bond:13-46 harmonic 340.0 1.09
+ bond_coeff @bond:13-47 harmonic 317.0 1.51
+ bond_coeff @bond:13-48 harmonic 317.0 1.51
+ bond_coeff @bond:13-50 harmonic 317.0 1.51
+ bond_coeff @bond:13-51 harmonic 268.0 1.529
+ bond_coeff @bond:13-53 harmonic 367.0 1.471
+ bond_coeff @bond:13-55 harmonic 337.0 1.463
+ bond_coeff @bond:13-56 harmonic 337.0 1.449
+ bond_coeff @bond:13-57 harmonic 337.0 1.475
+ bond_coeff @bond:13-60 harmonic 317.0 1.51
+ bond_coeff @bond:13-64 harmonic 212.0 1.843
+ bond_coeff @bond:13-65 harmonic 245.0 1.945
+ bond_coeff @bond:13-66 harmonic 200.0 2.19
+ bond_coeff @bond:13-79 harmonic 340.0 1.77
+ bond_coeff @bond:13-80 harmonic 317.0 1.495
+ bond_coeff @bond:13-83 harmonic 317.0 1.504
+ bond_coeff @bond:13-84 harmonic 317.0 1.504
+ bond_coeff @bond:13-85 harmonic 317.0 1.504
+ bond_coeff @bond:13-87 harmonic 317.0 1.495
+ bond_coeff @bond:13-90 harmonic 337.0 1.449
+ bond_coeff @bond:13-91 harmonic 280.0 1.51
+ bond_coeff @bond:13-95 harmonic 532.8 1.46
+ bond_coeff @bond:13-101 harmonic 382.0 1.448
+ bond_coeff @bond:13-102 harmonic 375.0 1.49
+ bond_coeff @bond:13-104 harmonic 212.0 1.82
+ bond_coeff @bond:13-105 harmonic 337.0 1.475
+ bond_coeff @bond:13-107 harmonic 337.0 1.449
+ bond_coeff @bond:13-108 harmonic 187.0 1.86
+ bond_coeff @bond:13-109 harmonic 317.0 1.51
+ bond_coeff @bond:14-14 harmonic 530.0 1.34
+ bond_coeff @bond:15-17 harmonic 274.0 1.336
+ bond_coeff @bond:15-48 harmonic 250.0 1.74
+ bond_coeff @bond:16-16 harmonic 166.0 2.038
+ bond_coeff @bond:16-19 harmonic 300.0 1.685
+ bond_coeff @bond:16-24 harmonic 250.0 1.73
+ bond_coeff @bond:16-25 harmonic 340.0 0.5
+ bond_coeff @bond:16-47 harmonic 250.0 1.76
+ bond_coeff @bond:16-48 harmonic 250.0 1.76
+ bond_coeff @bond:16-61 harmonic 250.0 1.73
+ bond_coeff @bond:16-82 harmonic 250.0 1.76
+ bond_coeff @bond:16-84 harmonic 250.0 1.74
+ bond_coeff @bond:16-91 harmonic 222.0 1.81
+ bond_coeff @bond:16-108 harmonic 144.0 2.15
+ bond_coeff @bond:17-25 harmonic 340.0 0.1
+ bond_coeff @bond:18-18 harmonic 550.0 1.12
+ bond_coeff @bond:18-19 harmonic 650.0 1.157
+ bond_coeff @bond:18-48 harmonic 400.0 1.41
+ bond_coeff @bond:18-56 harmonic 550.0 1.24
+ bond_coeff @bond:19-19 harmonic 1150.0 1.21
+ bond_coeff @bond:19-21 harmonic 330.0 1.637
+ bond_coeff @bond:19-46 harmonic 420.0 1.08
+ bond_coeff @bond:19-47 harmonic 400.0 1.426
+ bond_coeff @bond:19-48 harmonic 400.0 1.451
+ bond_coeff @bond:19-50 harmonic 400.0 1.426
+ bond_coeff @bond:19-65 harmonic 330.0 1.784
+ bond_coeff @bond:19-88 harmonic 400.0 1.451
+ bond_coeff @bond:19-91 harmonic 400.0 1.451
+ bond_coeff @bond:20-20 harmonic 250.0 1.47
+ bond_coeff @bond:20-21 harmonic 200.0 1.69
+ bond_coeff @bond:20-24 harmonic 320.0 1.45
+ bond_coeff @bond:20-25 harmonic 340.0 0.3
+ bond_coeff @bond:20-44 harmonic 320.0 1.45
+ bond_coeff @bond:20-47 harmonic 450.0 1.37
+ bond_coeff @bond:20-48 harmonic 450.0 1.364
+ bond_coeff @bond:20-51 harmonic 320.0 1.38
+ bond_coeff @bond:20-60 harmonic 340.0 1.36
+ bond_coeff @bond:20-61 harmonic 462.0 1.399
+ bond_coeff @bond:20-64 harmonic 230.0 1.61
+ bond_coeff @bond:20-82 harmonic 462.0 1.357
+ bond_coeff @bond:20-84 harmonic 340.0 1.36
+ bond_coeff @bond:20-108 harmonic 374.0 1.64
+ bond_coeff @bond:21-25 harmonic 300.0 0.3
+ bond_coeff @bond:21-47 harmonic 300.0 1.725
+ bond_coeff @bond:21-48 harmonic 300.0 1.725
+ bond_coeff @bond:21-82 harmonic 300.0 1.725
+ bond_coeff @bond:21-83 harmonic 300.0 1.725
+ bond_coeff @bond:21-84 harmonic 300.0 1.725
+ bond_coeff @bond:21-87 harmonic 300.0 1.725
+ bond_coeff @bond:21-88 harmonic 300.0 1.725
+ bond_coeff @bond:21-108 harmonic 223.0 2.02
+ bond_coeff @bond:22-23 harmonic 700.0 1.53
+ bond_coeff @bond:22-25 harmonic 340.0 0.5
+ bond_coeff @bond:23-25 harmonic 340.0 0.3
+ bond_coeff @bond:23-79 harmonic 700.0 1.44
+ bond_coeff @bond:24-25 harmonic 367.0 0.3
+ bond_coeff @bond:24-45 harmonic 434.0 1.01
+ bond_coeff @bond:24-48 harmonic 427.0 1.381
+ bond_coeff @bond:24-59 harmonic 427.0 1.381
+ bond_coeff @bond:24-79 harmonic 434.0 1.67
+ bond_coeff @bond:24-84 harmonic 427.0 1.381
+ bond_coeff @bond:24-88 harmonic 427.0 1.381
+ bond_coeff @bond:24-91 harmonic 337.0 1.449
+ bond_coeff @bond:24-103 harmonic 500.0 1.27
+ bond_coeff @bond:24-106 harmonic 40.0 2.05
+ bond_coeff @bond:25-25 harmonic 340.0 0.3
+ bond_coeff @bond:25-44 harmonic 340.0 0.3
+ bond_coeff @bond:25-45 harmonic 340.0 0.1
+ bond_coeff @bond:25-46 harmonic 340.0 0.3
+ bond_coeff @bond:25-47 harmonic 340.0 0.3
+ bond_coeff @bond:25-48 harmonic 367.0 0.3
+ bond_coeff @bond:25-49 harmonic 340.0 0.3
+ bond_coeff @bond:25-53 harmonic 340.0 0.3
+ bond_coeff @bond:25-56 harmonic 367.0 0.3
+ bond_coeff @bond:25-61 harmonic 367.0 0.3
+ bond_coeff @bond:25-65 harmonic 300.0 0.3
+ bond_coeff @bond:25-103 harmonic 340.0 0.1
+ bond_coeff @bond:31-32 harmonic 600.0 0.9572
+ bond_coeff @bond:31-33 harmonic 900.0 0.15
+ bond_coeff @bond:31-106 harmonic 40.0 2.05
+ bond_coeff @bond:34-35 harmonic 529.6 0.9572
+ bond_coeff @bond:36-37 harmonic 600.0 0.9572
+ bond_coeff @bond:36-38 harmonic 900.0 0.175
+ bond_coeff @bond:39-40 harmonic 600.0 0.9572
+ bond_coeff @bond:39-41 harmonic 900.0 0.7
+ bond_coeff @bond:42-43 harmonic 600.0 1.0
+ bond_coeff @bond:44-44 harmonic 350.0 1.445
+ bond_coeff @bond:44-45 harmonic 434.0 1.01
+ bond_coeff @bond:44-48 harmonic 481.0 1.34
+ bond_coeff @bond:44-79 harmonic 340.0 1.77
+ bond_coeff @bond:44-91 harmonic 382.0 1.448
+ bond_coeff @bond:44-108 harmonic 266.0 1.74
+ bond_coeff @bond:45-53 harmonic 434.0 1.01
+ bond_coeff @bond:45-55 harmonic 434.0 1.01
+ bond_coeff @bond:45-56 harmonic 434.0 1.01
+ bond_coeff @bond:45-57 harmonic 434.0 1.01
+ bond_coeff @bond:45-101 harmonic 434.0 1.01
+ bond_coeff @bond:45-105 harmonic 434.0 1.01
+ bond_coeff @bond:45-108 harmonic 166.0 1.48
+ bond_coeff @bond:46-47 harmonic 340.0 1.08
+ bond_coeff @bond:46-50 harmonic 340.0 1.08
+ bond_coeff @bond:46-51 harmonic 340.0 1.09
+ bond_coeff @bond:46-80 harmonic 340.0 1.08
+ bond_coeff @bond:46-91 harmonic 340.0 1.088
+ bond_coeff @bond:46-95 harmonic 532.8 1.084
+ bond_coeff @bond:46-108 harmonic 166.0 1.48
+ bond_coeff @bond:46-109 harmonic 340.0 1.08
+ bond_coeff @bond:47-47 harmonic 549.0 1.34
+ bond_coeff @bond:47-48 harmonic 427.0 1.433
+ bond_coeff @bond:47-50 harmonic 549.0 1.34
+ bond_coeff @bond:47-57 harmonic 448.0 1.365
+ bond_coeff @bond:47-58 harmonic 367.0 1.08
+ bond_coeff @bond:47-65 harmonic 300.0 1.9
+ bond_coeff @bond:47-66 harmonic 250.0 2.08
+ bond_coeff @bond:47-86 harmonic 385.0 1.46
+ bond_coeff @bond:47-91 harmonic 317.0 1.51
+ bond_coeff @bond:47-105 harmonic 448.0 1.365
+ bond_coeff @bond:47-110 harmonic 700.0 1.305
+ bond_coeff @bond:48-48 harmonic 469.0 1.4
+ bond_coeff @bond:48-49 harmonic 367.0 1.08
+ bond_coeff @bond:48-50 harmonic 427.0 1.433
+ bond_coeff @bond:48-53 harmonic 400.0 1.45
+ bond_coeff @bond:48-55 harmonic 481.0 1.34
+ bond_coeff @bond:48-56 harmonic 483.0 1.339
+ bond_coeff @bond:48-57 harmonic 427.0 1.381
+ bond_coeff @bond:48-60 harmonic 469.0 1.404
+ bond_coeff @bond:48-61 harmonic 414.0 1.391
+ bond_coeff @bond:48-64 harmonic 220.0 1.78
+ bond_coeff @bond:48-65 harmonic 300.0 1.87
+ bond_coeff @bond:48-66 harmonic 250.0 2.08
+ bond_coeff @bond:48-79 harmonic 340.0 1.77
+ bond_coeff @bond:48-81 harmonic 469.0 1.4
+ bond_coeff @bond:48-84 harmonic 546.0 1.367
+ bond_coeff @bond:48-86 harmonic 469.0 1.4
+ bond_coeff @bond:48-88 harmonic 469.0 1.421
+ bond_coeff @bond:48-91 harmonic 317.0 1.49
+ bond_coeff @bond:48-101 harmonic 382.0 1.385
+ bond_coeff @bond:48-102 harmonic 400.0 1.46
+ bond_coeff @bond:48-109 harmonic 427.0 1.433
+ bond_coeff @bond:49-59 harmonic 367.0 1.08
+ bond_coeff @bond:49-62 harmonic 340.0 1.08
+ bond_coeff @bond:49-82 harmonic 367.0 1.08
+ bond_coeff @bond:49-83 harmonic 367.0 1.08
+ bond_coeff @bond:49-84 harmonic 367.0 1.08
+ bond_coeff @bond:49-85 harmonic 367.0 1.08
+ bond_coeff @bond:49-87 harmonic 367.0 1.08
+ bond_coeff @bond:49-88 harmonic 367.0 1.08
+ bond_coeff @bond:50-50 harmonic 385.0 1.46
+ bond_coeff @bond:50-56 harmonic 457.0 1.29
+ bond_coeff @bond:50-84 harmonic 549.0 1.365
+ bond_coeff @bond:50-109 harmonic 385.0 1.46
+ bond_coeff @bond:51-105 harmonic 337.0 1.475
+ bond_coeff @bond:52-64 harmonic 525.0 1.48
+ bond_coeff @bond:53-54 harmonic 434.0 1.01
+ bond_coeff @bond:54-55 harmonic 434.0 1.01
+ bond_coeff @bond:55-59 harmonic 481.0 1.34
+ bond_coeff @bond:55-82 harmonic 481.0 1.34
+ bond_coeff @bond:56-56 harmonic 500.0 1.32
+ bond_coeff @bond:56-59 harmonic 502.0 1.324
+ bond_coeff @bond:56-60 harmonic 461.0 1.354
+ bond_coeff @bond:56-82 harmonic 461.0 1.354
+ bond_coeff @bond:56-86 harmonic 483.0 1.339
+ bond_coeff @bond:56-103 harmonic 550.0 1.21
+ bond_coeff @bond:56-109 harmonic 457.0 1.29
+ bond_coeff @bond:57-60 harmonic 436.0 1.374
+ bond_coeff @bond:57-61 harmonic 400.0 1.349
+ bond_coeff @bond:57-62 harmonic 440.0 1.371
+ bond_coeff @bond:57-81 harmonic 428.0 1.38
+ bond_coeff @bond:57-82 harmonic 477.0 1.343
+ bond_coeff @bond:57-84 harmonic 427.0 1.381
+ bond_coeff @bond:57-85 harmonic 427.0 1.381
+ bond_coeff @bond:57-86 harmonic 385.0 1.44
+ bond_coeff @bond:58-83 harmonic 367.0 1.08
+ bond_coeff @bond:58-84 harmonic 367.0 1.08
+ bond_coeff @bond:59-63 harmonic 367.0 1.08
+ bond_coeff @bond:60-60 harmonic 520.0 1.37
+ bond_coeff @bond:60-61 harmonic 414.0 1.391
+ bond_coeff @bond:60-80 harmonic 388.0 1.459
+ bond_coeff @bond:60-81 harmonic 447.0 1.419
+ bond_coeff @bond:60-87 harmonic 469.0 1.424
+ bond_coeff @bond:60-105 harmonic 436.0 1.374
+ bond_coeff @bond:61-61 harmonic 400.0 1.28
+ bond_coeff @bond:61-62 harmonic 529.0 1.304
+ bond_coeff @bond:61-82 harmonic 488.0 1.335
+ bond_coeff @bond:61-83 harmonic 410.0 1.394
+ bond_coeff @bond:61-84 harmonic 410.0 1.394
+ bond_coeff @bond:61-88 harmonic 410.0 1.32
+ bond_coeff @bond:62-63 harmonic 367.0 1.08
+ bond_coeff @bond:62-105 harmonic 440.0 1.371
+ bond_coeff @bond:63-82 harmonic 367.0 1.08
+ bond_coeff @bond:64-108 harmonic 108.0 2.25
+ bond_coeff @bond:65-82 harmonic 300.0 1.87
+ bond_coeff @bond:65-83 harmonic 300.0 1.87
+ bond_coeff @bond:65-84 harmonic 300.0 1.87
+ bond_coeff @bond:65-87 harmonic 300.0 1.87
+ bond_coeff @bond:65-88 harmonic 300.0 1.87
+ bond_coeff @bond:65-108 harmonic 151.0 2.19
+ bond_coeff @bond:66-82 harmonic 250.0 2.08
+ bond_coeff @bond:66-83 harmonic 250.0 2.08
+ bond_coeff @bond:66-84 harmonic 250.0 2.08
+ bond_coeff @bond:66-87 harmonic 250.0 2.08
+ bond_coeff @bond:66-88 harmonic 250.0 2.08
+ bond_coeff @bond:66-108 harmonic 108.0 2.44
+ bond_coeff @bond:77-78 harmonic 500.0 1.8
+ bond_coeff @bond:80-84 harmonic 546.0 1.352
+ bond_coeff @bond:82-86 harmonic 385.0 1.46
+ bond_coeff @bond:82-87 harmonic 520.0 1.37
+ bond_coeff @bond:83-84 harmonic 520.0 1.37
+ bond_coeff @bond:83-86 harmonic 385.0 1.46
+ bond_coeff @bond:84-84 harmonic 512.0 1.375
+ bond_coeff @bond:84-86 harmonic 385.0 1.46
+ bond_coeff @bond:84-87 harmonic 546.0 1.367
+ bond_coeff @bond:84-88 harmonic 520.0 1.37
+ bond_coeff @bond:85-85 harmonic 520.0 1.37
+ bond_coeff @bond:86-86 harmonic 385.0 1.46
+ bond_coeff @bond:86-87 harmonic 385.0 1.46
+ bond_coeff @bond:86-88 harmonic 385.0 1.46
+ bond_coeff @bond:87-87 harmonic 469.0 1.424
+ bond_coeff @bond:87-88 harmonic 469.0 1.424
+ bond_coeff @bond:89-90 harmonic 490.0 1.335
+ bond_coeff @bond:89-91 harmonic 317.0 1.522
+ bond_coeff @bond:90-91 harmonic 337.0 1.449
+ bond_coeff @bond:91-91 harmonic 260.0 1.52
+ bond_coeff @bond:102-103 harmonic 550.0 1.225
+ bond_coeff @bond:108-108 harmonic 94.0 2.32
+ bond_coeff @bond:109-109 harmonic 549.0 1.345
+ } #(end of bond_coeffs)
+
+ 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*
+ @bond:1-13 @atom:*_b1_a*_d*_i* @atom:*_b13_a*_d*_i*
+ @bond:1-19 @atom:*_b1_a*_d*_i* @atom:*_b19_a*_d*_i*
+ @bond:1-25 @atom:*_b1_a*_d*_i* @atom:*_b25_a*_d*_i*
+ @bond:1-47 @atom:*_b1_a*_d*_i* @atom:*_b47_a*_d*_i*
+ @bond:1-48 @atom:*_b1_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:1-82 @atom:*_b1_a*_d*_i* @atom:*_b82_a*_d*_i*
+ @bond:1-83 @atom:*_b1_a*_d*_i* @atom:*_b83_a*_d*_i*
+ @bond:1-84 @atom:*_b1_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:1-87 @atom:*_b1_a*_d*_i* @atom:*_b87_a*_d*_i*
+ @bond:1-88 @atom:*_b1_a*_d*_i* @atom:*_b88_a*_d*_i*
+ @bond:1-108 @atom:*_b1_a*_d*_i* @atom:*_b108_a*_d*_i*
+ @bond:2-2 @atom:*_b2_a*_d*_i* @atom:*_b2_a*_d*_i*
+ @bond:2-3 @atom:*_b2_a*_d*_i* @atom:*_b3_a*_d*_i*
+ @bond:2-5 @atom:*_b2_a*_d*_i* @atom:*_b5_a*_d*_i*
+ @bond:2-6 @atom:*_b2_a*_d*_i* @atom:*_b6_a*_d*_i*
+ @bond:2-10 @atom:*_b2_a*_d*_i* @atom:*_b10_a*_d*_i*
+ @bond:2-11 @atom:*_b2_a*_d*_i* @atom:*_b11_a*_d*_i*
+ @bond:2-12 @atom:*_b2_a*_d*_i* @atom:*_b12_a*_d*_i*
+ @bond:2-13 @atom:*_b2_a*_d*_i* @atom:*_b13_a*_d*_i*
+ @bond:2-14 @atom:*_b2_a*_d*_i* @atom:*_b14_a*_d*_i*
+ @bond:2-15 @atom:*_b2_a*_d*_i* @atom:*_b15_a*_d*_i*
+ @bond:2-16 @atom:*_b2_a*_d*_i* @atom:*_b16_a*_d*_i*
+ @bond:2-20 @atom:*_b2_a*_d*_i* @atom:*_b20_a*_d*_i*
+ @bond:2-24 @atom:*_b2_a*_d*_i* @atom:*_b24_a*_d*_i*
+ @bond:2-44 @atom:*_b2_a*_d*_i* @atom:*_b44_a*_d*_i*
+ @bond:2-48 @atom:*_b2_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:2-51 @atom:*_b2_a*_d*_i* @atom:*_b51_a*_d*_i*
+ @bond:2-53 @atom:*_b2_a*_d*_i* @atom:*_b53_a*_d*_i*
+ @bond:2-55 @atom:*_b2_a*_d*_i* @atom:*_b55_a*_d*_i*
+ @bond:2-80 @atom:*_b2_a*_d*_i* @atom:*_b80_a*_d*_i*
+ @bond:3-3 @atom:*_b3_a*_d*_i* @atom:*_b3_a*_d*_i*
+ @bond:3-4 @atom:*_b3_a*_d*_i* @atom:*_b4_a*_d*_i*
+ @bond:3-5 @atom:*_b3_a*_d*_i* @atom:*_b5_a*_d*_i*
+ @bond:3-6 @atom:*_b3_a*_d*_i* @atom:*_b6_a*_d*_i*
+ @bond:3-10 @atom:*_b3_a*_d*_i* @atom:*_b10_a*_d*_i*
+ @bond:3-12 @atom:*_b3_a*_d*_i* @atom:*_b12_a*_d*_i*
+ @bond:3-13 @atom:*_b3_a*_d*_i* @atom:*_b13_a*_d*_i*
+ @bond:3-19 @atom:*_b3_a*_d*_i* @atom:*_b19_a*_d*_i*
+ @bond:3-20 @atom:*_b3_a*_d*_i* @atom:*_b20_a*_d*_i*
+ @bond:3-21 @atom:*_b3_a*_d*_i* @atom:*_b21_a*_d*_i*
+ @bond:3-24 @atom:*_b3_a*_d*_i* @atom:*_b24_a*_d*_i*
+ @bond:3-44 @atom:*_b3_a*_d*_i* @atom:*_b44_a*_d*_i*
+ @bond:3-46 @atom:*_b3_a*_d*_i* @atom:*_b46_a*_d*_i*
+ @bond:3-47 @atom:*_b3_a*_d*_i* @atom:*_b47_a*_d*_i*
+ @bond:3-48 @atom:*_b3_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:3-50 @atom:*_b3_a*_d*_i* @atom:*_b50_a*_d*_i*
+ @bond:3-52 @atom:*_b3_a*_d*_i* @atom:*_b52_a*_d*_i*
+ @bond:3-56 @atom:*_b3_a*_d*_i* @atom:*_b56_a*_d*_i*
+ @bond:3-57 @atom:*_b3_a*_d*_i* @atom:*_b57_a*_d*_i*
+ @bond:3-60 @atom:*_b3_a*_d*_i* @atom:*_b60_a*_d*_i*
+ @bond:3-65 @atom:*_b3_a*_d*_i* @atom:*_b65_a*_d*_i*
+ @bond:3-84 @atom:*_b3_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:3-86 @atom:*_b3_a*_d*_i* @atom:*_b86_a*_d*_i*
+ @bond:3-105 @atom:*_b3_a*_d*_i* @atom:*_b105_a*_d*_i*
+ @bond:3-107 @atom:*_b3_a*_d*_i* @atom:*_b107_a*_d*_i*
+ @bond:4-25 @atom:*_b4_a*_d*_i* @atom:*_b25_a*_d*_i*
+ @bond:4-64 @atom:*_b4_a*_d*_i* @atom:*_b64_a*_d*_i*
+ @bond:4-89 @atom:*_b4_a*_d*_i* @atom:*_b89_a*_d*_i*
+ @bond:4-110 @atom:*_b4_a*_d*_i* @atom:*_b110_a*_d*_i*
+ @bond:5-6 @atom:*_b5_a*_d*_i* @atom:*_b6_a*_d*_i*
+ @bond:5-7 @atom:*_b5_a*_d*_i* @atom:*_b7_a*_d*_i*
+ @bond:5-10 @atom:*_b5_a*_d*_i* @atom:*_b10_a*_d*_i*
+ @bond:5-13 @atom:*_b5_a*_d*_i* @atom:*_b13_a*_d*_i*
+ @bond:5-20 @atom:*_b5_a*_d*_i* @atom:*_b20_a*_d*_i*
+ @bond:5-24 @atom:*_b5_a*_d*_i* @atom:*_b24_a*_d*_i*
+ @bond:5-25 @atom:*_b5_a*_d*_i* @atom:*_b25_a*_d*_i*
+ @bond:5-44 @atom:*_b5_a*_d*_i* @atom:*_b44_a*_d*_i*
+ @bond:5-47 @atom:*_b5_a*_d*_i* @atom:*_b47_a*_d*_i*
+ @bond:5-48 @atom:*_b5_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:5-51 @atom:*_b5_a*_d*_i* @atom:*_b51_a*_d*_i*
+ @bond:5-64 @atom:*_b5_a*_d*_i* @atom:*_b64_a*_d*_i*
+ @bond:5-79 @atom:*_b5_a*_d*_i* @atom:*_b79_a*_d*_i*
+ @bond:5-106 @atom:*_b5_a*_d*_i* @atom:*_b106_a*_d*_i*
+ @bond:5-108 @atom:*_b5_a*_d*_i* @atom:*_b108_a*_d*_i*
+ @bond:6-6 @atom:*_b6_a*_d*_i* @atom:*_b6_a*_d*_i*
+ @bond:6-10 @atom:*_b6_a*_d*_i* @atom:*_b10_a*_d*_i*
+ @bond:6-11 @atom:*_b6_a*_d*_i* @atom:*_b11_a*_d*_i*
+ @bond:6-13 @atom:*_b6_a*_d*_i* @atom:*_b13_a*_d*_i*
+ @bond:6-14 @atom:*_b6_a*_d*_i* @atom:*_b14_a*_d*_i*
+ @bond:6-15 @atom:*_b6_a*_d*_i* @atom:*_b15_a*_d*_i*
+ @bond:6-16 @atom:*_b6_a*_d*_i* @atom:*_b16_a*_d*_i*
+ @bond:6-20 @atom:*_b6_a*_d*_i* @atom:*_b20_a*_d*_i*
+ @bond:6-24 @atom:*_b6_a*_d*_i* @atom:*_b24_a*_d*_i*
+ @bond:6-44 @atom:*_b6_a*_d*_i* @atom:*_b44_a*_d*_i*
+ @bond:6-47 @atom:*_b6_a*_d*_i* @atom:*_b47_a*_d*_i*
+ @bond:6-51 @atom:*_b6_a*_d*_i* @atom:*_b51_a*_d*_i*
+ @bond:6-53 @atom:*_b6_a*_d*_i* @atom:*_b53_a*_d*_i*
+ @bond:6-55 @atom:*_b6_a*_d*_i* @atom:*_b55_a*_d*_i*
+ @bond:6-79 @atom:*_b6_a*_d*_i* @atom:*_b79_a*_d*_i*
+ @bond:6-105 @atom:*_b6_a*_d*_i* @atom:*_b105_a*_d*_i*
+ @bond:7-20 @atom:*_b7_a*_d*_i* @atom:*_b20_a*_d*_i*
+ @bond:7-25 @atom:*_b7_a*_d*_i* @atom:*_b25_a*_d*_i*
+ @bond:9-9 @atom:*_b9_a*_d*_i* @atom:*_b9_a*_d*_i*
+ @bond:9-11 @atom:*_b9_a*_d*_i* @atom:*_b11_a*_d*_i*
+ @bond:9-14 @atom:*_b9_a*_d*_i* @atom:*_b14_a*_d*_i*
+ @bond:10-10 @atom:*_b10_a*_d*_i* @atom:*_b10_a*_d*_i*
+ @bond:10-11 @atom:*_b10_a*_d*_i* @atom:*_b11_a*_d*_i*
+ @bond:10-14 @atom:*_b10_a*_d*_i* @atom:*_b14_a*_d*_i*
+ @bond:10-20 @atom:*_b10_a*_d*_i* @atom:*_b20_a*_d*_i*
+ @bond:10-24 @atom:*_b10_a*_d*_i* @atom:*_b24_a*_d*_i*
+ @bond:10-44 @atom:*_b10_a*_d*_i* @atom:*_b44_a*_d*_i*
+ @bond:10-105 @atom:*_b10_a*_d*_i* @atom:*_b105_a*_d*_i*
+ @bond:11-11 @atom:*_b11_a*_d*_i* @atom:*_b11_a*_d*_i*
+ @bond:11-13 @atom:*_b11_a*_d*_i* @atom:*_b13_a*_d*_i*
+ @bond:11-14 @atom:*_b11_a*_d*_i* @atom:*_b14_a*_d*_i*
+ @bond:11-79 @atom:*_b11_a*_d*_i* @atom:*_b79_a*_d*_i*
+ @bond:12-12 @atom:*_b12_a*_d*_i* @atom:*_b12_a*_d*_i*
+ @bond:12-48 @atom:*_b12_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:12-60 @atom:*_b12_a*_d*_i* @atom:*_b60_a*_d*_i*
+ @bond:12-81 @atom:*_b12_a*_d*_i* @atom:*_b81_a*_d*_i*
+ @bond:13-13 @atom:*_b13_a*_d*_i* @atom:*_b13_a*_d*_i*
+ @bond:13-14 @atom:*_b13_a*_d*_i* @atom:*_b14_a*_d*_i*
+ @bond:13-15 @atom:*_b13_a*_d*_i* @atom:*_b15_a*_d*_i*
+ @bond:13-16 @atom:*_b13_a*_d*_i* @atom:*_b16_a*_d*_i*
+ @bond:13-18 @atom:*_b13_a*_d*_i* @atom:*_b18_a*_d*_i*
+ @bond:13-19 @atom:*_b13_a*_d*_i* @atom:*_b19_a*_d*_i*
+ @bond:13-20 @atom:*_b13_a*_d*_i* @atom:*_b20_a*_d*_i*
+ @bond:13-21 @atom:*_b13_a*_d*_i* @atom:*_b21_a*_d*_i*
+ @bond:13-22 @atom:*_b13_a*_d*_i* @atom:*_b22_a*_d*_i*
+ @bond:13-24 @atom:*_b13_a*_d*_i* @atom:*_b24_a*_d*_i*
+ @bond:13-25 @atom:*_b13_a*_d*_i* @atom:*_b25_a*_d*_i*
+ @bond:13-44 @atom:*_b13_a*_d*_i* @atom:*_b44_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:13-48 @atom:*_b13_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:13-50 @atom:*_b13_a*_d*_i* @atom:*_b50_a*_d*_i*
+ @bond:13-51 @atom:*_b13_a*_d*_i* @atom:*_b51_a*_d*_i*
+ @bond:13-53 @atom:*_b13_a*_d*_i* @atom:*_b53_a*_d*_i*
+ @bond:13-55 @atom:*_b13_a*_d*_i* @atom:*_b55_a*_d*_i*
+ @bond:13-56 @atom:*_b13_a*_d*_i* @atom:*_b56_a*_d*_i*
+ @bond:13-57 @atom:*_b13_a*_d*_i* @atom:*_b57_a*_d*_i*
+ @bond:13-60 @atom:*_b13_a*_d*_i* @atom:*_b60_a*_d*_i*
+ @bond:13-64 @atom:*_b13_a*_d*_i* @atom:*_b64_a*_d*_i*
+ @bond:13-65 @atom:*_b13_a*_d*_i* @atom:*_b65_a*_d*_i*
+ @bond:13-66 @atom:*_b13_a*_d*_i* @atom:*_b66_a*_d*_i*
+ @bond:13-79 @atom:*_b13_a*_d*_i* @atom:*_b79_a*_d*_i*
+ @bond:13-80 @atom:*_b13_a*_d*_i* @atom:*_b80_a*_d*_i*
+ @bond:13-83 @atom:*_b13_a*_d*_i* @atom:*_b83_a*_d*_i*
+ @bond:13-84 @atom:*_b13_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:13-85 @atom:*_b13_a*_d*_i* @atom:*_b85_a*_d*_i*
+ @bond:13-87 @atom:*_b13_a*_d*_i* @atom:*_b87_a*_d*_i*
+ @bond:13-90 @atom:*_b13_a*_d*_i* @atom:*_b90_a*_d*_i*
+ @bond:13-91 @atom:*_b13_a*_d*_i* @atom:*_b91_a*_d*_i*
+ @bond:13-95 @atom:*_b13_a*_d*_i* @atom:*_b95_a*_d*_i*
+ @bond:13-101 @atom:*_b13_a*_d*_i* @atom:*_b101_a*_d*_i*
+ @bond:13-102 @atom:*_b13_a*_d*_i* @atom:*_b102_a*_d*_i*
+ @bond:13-104 @atom:*_b13_a*_d*_i* @atom:*_b104_a*_d*_i*
+ @bond:13-105 @atom:*_b13_a*_d*_i* @atom:*_b105_a*_d*_i*
+ @bond:13-107 @atom:*_b13_a*_d*_i* @atom:*_b107_a*_d*_i*
+ @bond:13-108 @atom:*_b13_a*_d*_i* @atom:*_b108_a*_d*_i*
+ @bond:13-109 @atom:*_b13_a*_d*_i* @atom:*_b109_a*_d*_i*
+ @bond:14-14 @atom:*_b14_a*_d*_i* @atom:*_b14_a*_d*_i*
+ @bond:15-17 @atom:*_b15_a*_d*_i* @atom:*_b17_a*_d*_i*
+ @bond:15-48 @atom:*_b15_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:16-16 @atom:*_b16_a*_d*_i* @atom:*_b16_a*_d*_i*
+ @bond:16-19 @atom:*_b16_a*_d*_i* @atom:*_b19_a*_d*_i*
+ @bond:16-24 @atom:*_b16_a*_d*_i* @atom:*_b24_a*_d*_i*
+ @bond:16-25 @atom:*_b16_a*_d*_i* @atom:*_b25_a*_d*_i*
+ @bond:16-47 @atom:*_b16_a*_d*_i* @atom:*_b47_a*_d*_i*
+ @bond:16-48 @atom:*_b16_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:16-61 @atom:*_b16_a*_d*_i* @atom:*_b61_a*_d*_i*
+ @bond:16-82 @atom:*_b16_a*_d*_i* @atom:*_b82_a*_d*_i*
+ @bond:16-84 @atom:*_b16_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:16-91 @atom:*_b16_a*_d*_i* @atom:*_b91_a*_d*_i*
+ @bond:16-108 @atom:*_b16_a*_d*_i* @atom:*_b108_a*_d*_i*
+ @bond:17-25 @atom:*_b17_a*_d*_i* @atom:*_b25_a*_d*_i*
+ @bond:18-18 @atom:*_b18_a*_d*_i* @atom:*_b18_a*_d*_i*
+ @bond:18-19 @atom:*_b18_a*_d*_i* @atom:*_b19_a*_d*_i*
+ @bond:18-48 @atom:*_b18_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:18-56 @atom:*_b18_a*_d*_i* @atom:*_b56_a*_d*_i*
+ @bond:19-19 @atom:*_b19_a*_d*_i* @atom:*_b19_a*_d*_i*
+ @bond:19-21 @atom:*_b19_a*_d*_i* @atom:*_b21_a*_d*_i*
+ @bond:19-46 @atom:*_b19_a*_d*_i* @atom:*_b46_a*_d*_i*
+ @bond:19-47 @atom:*_b19_a*_d*_i* @atom:*_b47_a*_d*_i*
+ @bond:19-48 @atom:*_b19_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:19-50 @atom:*_b19_a*_d*_i* @atom:*_b50_a*_d*_i*
+ @bond:19-65 @atom:*_b19_a*_d*_i* @atom:*_b65_a*_d*_i*
+ @bond:19-88 @atom:*_b19_a*_d*_i* @atom:*_b88_a*_d*_i*
+ @bond:19-91 @atom:*_b19_a*_d*_i* @atom:*_b91_a*_d*_i*
+ @bond:20-20 @atom:*_b20_a*_d*_i* @atom:*_b20_a*_d*_i*
+ @bond:20-21 @atom:*_b20_a*_d*_i* @atom:*_b21_a*_d*_i*
+ @bond:20-24 @atom:*_b20_a*_d*_i* @atom:*_b24_a*_d*_i*
+ @bond:20-25 @atom:*_b20_a*_d*_i* @atom:*_b25_a*_d*_i*
+ @bond:20-44 @atom:*_b20_a*_d*_i* @atom:*_b44_a*_d*_i*
+ @bond:20-47 @atom:*_b20_a*_d*_i* @atom:*_b47_a*_d*_i*
+ @bond:20-48 @atom:*_b20_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:20-51 @atom:*_b20_a*_d*_i* @atom:*_b51_a*_d*_i*
+ @bond:20-60 @atom:*_b20_a*_d*_i* @atom:*_b60_a*_d*_i*
+ @bond:20-61 @atom:*_b20_a*_d*_i* @atom:*_b61_a*_d*_i*
+ @bond:20-64 @atom:*_b20_a*_d*_i* @atom:*_b64_a*_d*_i*
+ @bond:20-82 @atom:*_b20_a*_d*_i* @atom:*_b82_a*_d*_i*
+ @bond:20-84 @atom:*_b20_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:20-108 @atom:*_b20_a*_d*_i* @atom:*_b108_a*_d*_i*
+ @bond:21-25 @atom:*_b21_a*_d*_i* @atom:*_b25_a*_d*_i*
+ @bond:21-47 @atom:*_b21_a*_d*_i* @atom:*_b47_a*_d*_i*
+ @bond:21-48 @atom:*_b21_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:21-82 @atom:*_b21_a*_d*_i* @atom:*_b82_a*_d*_i*
+ @bond:21-83 @atom:*_b21_a*_d*_i* @atom:*_b83_a*_d*_i*
+ @bond:21-84 @atom:*_b21_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:21-87 @atom:*_b21_a*_d*_i* @atom:*_b87_a*_d*_i*
+ @bond:21-88 @atom:*_b21_a*_d*_i* @atom:*_b88_a*_d*_i*
+ @bond:21-108 @atom:*_b21_a*_d*_i* @atom:*_b108_a*_d*_i*
+ @bond:22-23 @atom:*_b22_a*_d*_i* @atom:*_b23_a*_d*_i*
+ @bond:22-25 @atom:*_b22_a*_d*_i* @atom:*_b25_a*_d*_i*
+ @bond:23-25 @atom:*_b23_a*_d*_i* @atom:*_b25_a*_d*_i*
+ @bond:23-79 @atom:*_b23_a*_d*_i* @atom:*_b79_a*_d*_i*
+ @bond:24-25 @atom:*_b24_a*_d*_i* @atom:*_b25_a*_d*_i*
+ @bond:24-45 @atom:*_b24_a*_d*_i* @atom:*_b45_a*_d*_i*
+ @bond:24-48 @atom:*_b24_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:24-59 @atom:*_b24_a*_d*_i* @atom:*_b59_a*_d*_i*
+ @bond:24-79 @atom:*_b24_a*_d*_i* @atom:*_b79_a*_d*_i*
+ @bond:24-84 @atom:*_b24_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:24-88 @atom:*_b24_a*_d*_i* @atom:*_b88_a*_d*_i*
+ @bond:24-91 @atom:*_b24_a*_d*_i* @atom:*_b91_a*_d*_i*
+ @bond:24-103 @atom:*_b24_a*_d*_i* @atom:*_b103_a*_d*_i*
+ @bond:24-106 @atom:*_b24_a*_d*_i* @atom:*_b106_a*_d*_i*
+ @bond:25-25 @atom:*_b25_a*_d*_i* @atom:*_b25_a*_d*_i*
+ @bond:25-44 @atom:*_b25_a*_d*_i* @atom:*_b44_a*_d*_i*
+ @bond:25-45 @atom:*_b25_a*_d*_i* @atom:*_b45_a*_d*_i*
+ @bond:25-46 @atom:*_b25_a*_d*_i* @atom:*_b46_a*_d*_i*
+ @bond:25-47 @atom:*_b25_a*_d*_i* @atom:*_b47_a*_d*_i*
+ @bond:25-48 @atom:*_b25_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:25-49 @atom:*_b25_a*_d*_i* @atom:*_b49_a*_d*_i*
+ @bond:25-53 @atom:*_b25_a*_d*_i* @atom:*_b53_a*_d*_i*
+ @bond:25-56 @atom:*_b25_a*_d*_i* @atom:*_b56_a*_d*_i*
+ @bond:25-61 @atom:*_b25_a*_d*_i* @atom:*_b61_a*_d*_i*
+ @bond:25-65 @atom:*_b25_a*_d*_i* @atom:*_b65_a*_d*_i*
+ @bond:25-103 @atom:*_b25_a*_d*_i* @atom:*_b103_a*_d*_i*
+ @bond:31-32 @atom:*_b31_a*_d*_i* @atom:*_b32_a*_d*_i*
+ @bond:31-33 @atom:*_b31_a*_d*_i* @atom:*_b33_a*_d*_i*
+ @bond:31-106 @atom:*_b31_a*_d*_i* @atom:*_b106_a*_d*_i*
+ @bond:34-35 @atom:*_b34_a*_d*_i* @atom:*_b35_a*_d*_i*
+ @bond:36-37 @atom:*_b36_a*_d*_i* @atom:*_b37_a*_d*_i*
+ @bond:36-38 @atom:*_b36_a*_d*_i* @atom:*_b38_a*_d*_i*
+ @bond:39-40 @atom:*_b39_a*_d*_i* @atom:*_b40_a*_d*_i*
+ @bond:39-41 @atom:*_b39_a*_d*_i* @atom:*_b41_a*_d*_i*
+ @bond:42-43 @atom:*_b42_a*_d*_i* @atom:*_b43_a*_d*_i*
+ @bond:44-44 @atom:*_b44_a*_d*_i* @atom:*_b44_a*_d*_i*
+ @bond:44-45 @atom:*_b44_a*_d*_i* @atom:*_b45_a*_d*_i*
+ @bond:44-48 @atom:*_b44_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:44-79 @atom:*_b44_a*_d*_i* @atom:*_b79_a*_d*_i*
+ @bond:44-91 @atom:*_b44_a*_d*_i* @atom:*_b91_a*_d*_i*
+ @bond:44-108 @atom:*_b44_a*_d*_i* @atom:*_b108_a*_d*_i*
+ @bond:45-53 @atom:*_b45_a*_d*_i* @atom:*_b53_a*_d*_i*
+ @bond:45-55 @atom:*_b45_a*_d*_i* @atom:*_b55_a*_d*_i*
+ @bond:45-56 @atom:*_b45_a*_d*_i* @atom:*_b56_a*_d*_i*
+ @bond:45-57 @atom:*_b45_a*_d*_i* @atom:*_b57_a*_d*_i*
+ @bond:45-101 @atom:*_b45_a*_d*_i* @atom:*_b101_a*_d*_i*
+ @bond:45-105 @atom:*_b45_a*_d*_i* @atom:*_b105_a*_d*_i*
+ @bond:45-108 @atom:*_b45_a*_d*_i* @atom:*_b108_a*_d*_i*
+ @bond:46-47 @atom:*_b46_a*_d*_i* @atom:*_b47_a*_d*_i*
+ @bond:46-50 @atom:*_b46_a*_d*_i* @atom:*_b50_a*_d*_i*
+ @bond:46-51 @atom:*_b46_a*_d*_i* @atom:*_b51_a*_d*_i*
+ @bond:46-80 @atom:*_b46_a*_d*_i* @atom:*_b80_a*_d*_i*
+ @bond:46-91 @atom:*_b46_a*_d*_i* @atom:*_b91_a*_d*_i*
+ @bond:46-95 @atom:*_b46_a*_d*_i* @atom:*_b95_a*_d*_i*
+ @bond:46-108 @atom:*_b46_a*_d*_i* @atom:*_b108_a*_d*_i*
+ @bond:46-109 @atom:*_b46_a*_d*_i* @atom:*_b109_a*_d*_i*
+ @bond:47-47 @atom:*_b47_a*_d*_i* @atom:*_b47_a*_d*_i*
+ @bond:47-48 @atom:*_b47_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:47-50 @atom:*_b47_a*_d*_i* @atom:*_b50_a*_d*_i*
+ @bond:47-57 @atom:*_b47_a*_d*_i* @atom:*_b57_a*_d*_i*
+ @bond:47-58 @atom:*_b47_a*_d*_i* @atom:*_b58_a*_d*_i*
+ @bond:47-65 @atom:*_b47_a*_d*_i* @atom:*_b65_a*_d*_i*
+ @bond:47-66 @atom:*_b47_a*_d*_i* @atom:*_b66_a*_d*_i*
+ @bond:47-86 @atom:*_b47_a*_d*_i* @atom:*_b86_a*_d*_i*
+ @bond:47-91 @atom:*_b47_a*_d*_i* @atom:*_b91_a*_d*_i*
+ @bond:47-105 @atom:*_b47_a*_d*_i* @atom:*_b105_a*_d*_i*
+ @bond:47-110 @atom:*_b47_a*_d*_i* @atom:*_b110_a*_d*_i*
+ @bond:48-48 @atom:*_b48_a*_d*_i* @atom:*_b48_a*_d*_i*
+ @bond:48-49 @atom:*_b48_a*_d*_i* @atom:*_b49_a*_d*_i*
+ @bond:48-50 @atom:*_b48_a*_d*_i* @atom:*_b50_a*_d*_i*
+ @bond:48-53 @atom:*_b48_a*_d*_i* @atom:*_b53_a*_d*_i*
+ @bond:48-55 @atom:*_b48_a*_d*_i* @atom:*_b55_a*_d*_i*
+ @bond:48-56 @atom:*_b48_a*_d*_i* @atom:*_b56_a*_d*_i*
+ @bond:48-57 @atom:*_b48_a*_d*_i* @atom:*_b57_a*_d*_i*
+ @bond:48-60 @atom:*_b48_a*_d*_i* @atom:*_b60_a*_d*_i*
+ @bond:48-61 @atom:*_b48_a*_d*_i* @atom:*_b61_a*_d*_i*
+ @bond:48-64 @atom:*_b48_a*_d*_i* @atom:*_b64_a*_d*_i*
+ @bond:48-65 @atom:*_b48_a*_d*_i* @atom:*_b65_a*_d*_i*
+ @bond:48-66 @atom:*_b48_a*_d*_i* @atom:*_b66_a*_d*_i*
+ @bond:48-79 @atom:*_b48_a*_d*_i* @atom:*_b79_a*_d*_i*
+ @bond:48-81 @atom:*_b48_a*_d*_i* @atom:*_b81_a*_d*_i*
+ @bond:48-84 @atom:*_b48_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:48-86 @atom:*_b48_a*_d*_i* @atom:*_b86_a*_d*_i*
+ @bond:48-88 @atom:*_b48_a*_d*_i* @atom:*_b88_a*_d*_i*
+ @bond:48-91 @atom:*_b48_a*_d*_i* @atom:*_b91_a*_d*_i*
+ @bond:48-101 @atom:*_b48_a*_d*_i* @atom:*_b101_a*_d*_i*
+ @bond:48-102 @atom:*_b48_a*_d*_i* @atom:*_b102_a*_d*_i*
+ @bond:48-109 @atom:*_b48_a*_d*_i* @atom:*_b109_a*_d*_i*
+ @bond:49-59 @atom:*_b49_a*_d*_i* @atom:*_b59_a*_d*_i*
+ @bond:49-62 @atom:*_b49_a*_d*_i* @atom:*_b62_a*_d*_i*
+ @bond:49-82 @atom:*_b49_a*_d*_i* @atom:*_b82_a*_d*_i*
+ @bond:49-83 @atom:*_b49_a*_d*_i* @atom:*_b83_a*_d*_i*
+ @bond:49-84 @atom:*_b49_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:49-85 @atom:*_b49_a*_d*_i* @atom:*_b85_a*_d*_i*
+ @bond:49-87 @atom:*_b49_a*_d*_i* @atom:*_b87_a*_d*_i*
+ @bond:49-88 @atom:*_b49_a*_d*_i* @atom:*_b88_a*_d*_i*
+ @bond:50-50 @atom:*_b50_a*_d*_i* @atom:*_b50_a*_d*_i*
+ @bond:50-56 @atom:*_b50_a*_d*_i* @atom:*_b56_a*_d*_i*
+ @bond:50-84 @atom:*_b50_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:50-109 @atom:*_b50_a*_d*_i* @atom:*_b109_a*_d*_i*
+ @bond:51-105 @atom:*_b51_a*_d*_i* @atom:*_b105_a*_d*_i*
+ @bond:52-64 @atom:*_b52_a*_d*_i* @atom:*_b64_a*_d*_i*
+ @bond:53-54 @atom:*_b53_a*_d*_i* @atom:*_b54_a*_d*_i*
+ @bond:54-55 @atom:*_b54_a*_d*_i* @atom:*_b55_a*_d*_i*
+ @bond:55-59 @atom:*_b55_a*_d*_i* @atom:*_b59_a*_d*_i*
+ @bond:55-82 @atom:*_b55_a*_d*_i* @atom:*_b82_a*_d*_i*
+ @bond:56-56 @atom:*_b56_a*_d*_i* @atom:*_b56_a*_d*_i*
+ @bond:56-59 @atom:*_b56_a*_d*_i* @atom:*_b59_a*_d*_i*
+ @bond:56-60 @atom:*_b56_a*_d*_i* @atom:*_b60_a*_d*_i*
+ @bond:56-82 @atom:*_b56_a*_d*_i* @atom:*_b82_a*_d*_i*
+ @bond:56-86 @atom:*_b56_a*_d*_i* @atom:*_b86_a*_d*_i*
+ @bond:56-103 @atom:*_b56_a*_d*_i* @atom:*_b103_a*_d*_i*
+ @bond:56-109 @atom:*_b56_a*_d*_i* @atom:*_b109_a*_d*_i*
+ @bond:57-60 @atom:*_b57_a*_d*_i* @atom:*_b60_a*_d*_i*
+ @bond:57-61 @atom:*_b57_a*_d*_i* @atom:*_b61_a*_d*_i*
+ @bond:57-62 @atom:*_b57_a*_d*_i* @atom:*_b62_a*_d*_i*
+ @bond:57-81 @atom:*_b57_a*_d*_i* @atom:*_b81_a*_d*_i*
+ @bond:57-82 @atom:*_b57_a*_d*_i* @atom:*_b82_a*_d*_i*
+ @bond:57-84 @atom:*_b57_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:57-85 @atom:*_b57_a*_d*_i* @atom:*_b85_a*_d*_i*
+ @bond:57-86 @atom:*_b57_a*_d*_i* @atom:*_b86_a*_d*_i*
+ @bond:58-83 @atom:*_b58_a*_d*_i* @atom:*_b83_a*_d*_i*
+ @bond:58-84 @atom:*_b58_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:59-63 @atom:*_b59_a*_d*_i* @atom:*_b63_a*_d*_i*
+ @bond:60-60 @atom:*_b60_a*_d*_i* @atom:*_b60_a*_d*_i*
+ @bond:60-61 @atom:*_b60_a*_d*_i* @atom:*_b61_a*_d*_i*
+ @bond:60-80 @atom:*_b60_a*_d*_i* @atom:*_b80_a*_d*_i*
+ @bond:60-81 @atom:*_b60_a*_d*_i* @atom:*_b81_a*_d*_i*
+ @bond:60-87 @atom:*_b60_a*_d*_i* @atom:*_b87_a*_d*_i*
+ @bond:60-105 @atom:*_b60_a*_d*_i* @atom:*_b105_a*_d*_i*
+ @bond:61-61 @atom:*_b61_a*_d*_i* @atom:*_b61_a*_d*_i*
+ @bond:61-62 @atom:*_b61_a*_d*_i* @atom:*_b62_a*_d*_i*
+ @bond:61-82 @atom:*_b61_a*_d*_i* @atom:*_b82_a*_d*_i*
+ @bond:61-83 @atom:*_b61_a*_d*_i* @atom:*_b83_a*_d*_i*
+ @bond:61-84 @atom:*_b61_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:61-88 @atom:*_b61_a*_d*_i* @atom:*_b88_a*_d*_i*
+ @bond:62-63 @atom:*_b62_a*_d*_i* @atom:*_b63_a*_d*_i*
+ @bond:62-105 @atom:*_b62_a*_d*_i* @atom:*_b105_a*_d*_i*
+ @bond:63-82 @atom:*_b63_a*_d*_i* @atom:*_b82_a*_d*_i*
+ @bond:64-108 @atom:*_b64_a*_d*_i* @atom:*_b108_a*_d*_i*
+ @bond:65-82 @atom:*_b65_a*_d*_i* @atom:*_b82_a*_d*_i*
+ @bond:65-83 @atom:*_b65_a*_d*_i* @atom:*_b83_a*_d*_i*
+ @bond:65-84 @atom:*_b65_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:65-87 @atom:*_b65_a*_d*_i* @atom:*_b87_a*_d*_i*
+ @bond:65-88 @atom:*_b65_a*_d*_i* @atom:*_b88_a*_d*_i*
+ @bond:65-108 @atom:*_b65_a*_d*_i* @atom:*_b108_a*_d*_i*
+ @bond:66-82 @atom:*_b66_a*_d*_i* @atom:*_b82_a*_d*_i*
+ @bond:66-83 @atom:*_b66_a*_d*_i* @atom:*_b83_a*_d*_i*
+ @bond:66-84 @atom:*_b66_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:66-87 @atom:*_b66_a*_d*_i* @atom:*_b87_a*_d*_i*
+ @bond:66-88 @atom:*_b66_a*_d*_i* @atom:*_b88_a*_d*_i*
+ @bond:66-108 @atom:*_b66_a*_d*_i* @atom:*_b108_a*_d*_i*
+ @bond:77-78 @atom:*_b77_a*_d*_i* @atom:*_b78_a*_d*_i*
+ @bond:80-84 @atom:*_b80_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:82-86 @atom:*_b82_a*_d*_i* @atom:*_b86_a*_d*_i*
+ @bond:82-87 @atom:*_b82_a*_d*_i* @atom:*_b87_a*_d*_i*
+ @bond:83-84 @atom:*_b83_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:83-86 @atom:*_b83_a*_d*_i* @atom:*_b86_a*_d*_i*
+ @bond:84-84 @atom:*_b84_a*_d*_i* @atom:*_b84_a*_d*_i*
+ @bond:84-86 @atom:*_b84_a*_d*_i* @atom:*_b86_a*_d*_i*
+ @bond:84-87 @atom:*_b84_a*_d*_i* @atom:*_b87_a*_d*_i*
+ @bond:84-88 @atom:*_b84_a*_d*_i* @atom:*_b88_a*_d*_i*
+ @bond:85-85 @atom:*_b85_a*_d*_i* @atom:*_b85_a*_d*_i*
+ @bond:86-86 @atom:*_b86_a*_d*_i* @atom:*_b86_a*_d*_i*
+ @bond:86-87 @atom:*_b86_a*_d*_i* @atom:*_b87_a*_d*_i*
+ @bond:86-88 @atom:*_b86_a*_d*_i* @atom:*_b88_a*_d*_i*
+ @bond:87-87 @atom:*_b87_a*_d*_i* @atom:*_b87_a*_d*_i*
+ @bond:87-88 @atom:*_b87_a*_d*_i* @atom:*_b88_a*_d*_i*
+ @bond:89-90 @atom:*_b89_a*_d*_i* @atom:*_b90_a*_d*_i*
+ @bond:89-91 @atom:*_b89_a*_d*_i* @atom:*_b91_a*_d*_i*
+ @bond:90-91 @atom:*_b90_a*_d*_i* @atom:*_b91_a*_d*_i*
+ @bond:91-91 @atom:*_b91_a*_d*_i* @atom:*_b91_a*_d*_i*
+ @bond:102-103 @atom:*_b102_a*_d*_i* @atom:*_b103_a*_d*_i*
+ @bond:108-108 @atom:*_b108_a*_d*_i* @atom:*_b108_a*_d*_i*
+ @bond:109-109 @atom:*_b109_a*_d*_i* @atom:*_b109_a*_d*_i*
+ } #(end of bonds by type)
+
+
+ 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
+ angle_coeff @angle:2-2-2 harmonic 63.0 112.4
+ angle_coeff @angle:2-2-3 harmonic 63.0 112.4
+ angle_coeff @angle:2-2-5 harmonic 80.0 109.5
+ angle_coeff @angle:2-2-6 harmonic 63.0 112.4
+ angle_coeff @angle:6-2-6 harmonic 63.0 112.4
+ angle_coeff @angle:5-2-6 harmonic 80.0 109.5
+ angle_coeff @angle:2-2-10 harmonic 63.0 112.4
+ angle_coeff @angle:3-2-10 harmonic 63.0 112.4
+ angle_coeff @angle:6-2-10 harmonic 63.0 112.4
+ angle_coeff @angle:10-2-10 harmonic 63.0 112.4
+ angle_coeff @angle:5-2-10 harmonic 80.0 109.5
+ angle_coeff @angle:10-2-12 harmonic 63.0 114.0
+ angle_coeff @angle:6-2-13 harmonic 63.0 112.4
+ angle_coeff @angle:10-2-15 harmonic 50.0 108.6
+ angle_coeff @angle:2-2-16 harmonic 50.0 114.7
+ angle_coeff @angle:10-2-16 harmonic 50.0 114.7
+ angle_coeff @angle:2-2-20 harmonic 80.0 109.5
+ angle_coeff @angle:6-2-20 harmonic 80.0 109.5
+ angle_coeff @angle:10-2-20 harmonic 80.0 109.5
+ angle_coeff @angle:3-2-24 harmonic 80.0 110.3
+ angle_coeff @angle:2-2-24 harmonic 80.0 111.2
+ angle_coeff @angle:2-2-44 harmonic 56.2 109.47
+ angle_coeff @angle:6-2-44 harmonic 56.2 109.47
+ angle_coeff @angle:10-2-44 harmonic 56.2 109.47
+ angle_coeff @angle:13-2-44 harmonic 56.2 109.47
+ angle_coeff @angle:3-2-44 harmonic 80.0 111.2
+ angle_coeff @angle:2-2-48 harmonic 63.0 112.4
+ angle_coeff @angle:10-2-48 harmonic 63.0 114.0
+ angle_coeff @angle:2-2-51 harmonic 63.0 112.4
+ angle_coeff @angle:6-2-51 harmonic 63.0 112.4
+ angle_coeff @angle:2-2-53 harmonic 80.0 111.2
+ angle_coeff @angle:2-2-55 harmonic 80.0 111.2
+ angle_coeff @angle:10-2-80 harmonic 63.0 115.6
+ angle_coeff @angle:2-3-4 harmonic 80.0 120.4
+ angle_coeff @angle:1-3-4 harmonic 80.0 121.0
+ angle_coeff @angle:3-3-4 harmonic 80.0 121.4
+ angle_coeff @angle:4-3-4 harmonic 80.0 126.0
+ angle_coeff @angle:4-3-5 harmonic 80.0 121.0
+ angle_coeff @angle:4-3-6 harmonic 80.0 120.4
+ angle_coeff @angle:5-3-10 harmonic 70.0 115.0
+ angle_coeff @angle:4-3-10 harmonic 80.0 120.4
+ angle_coeff @angle:5-3-12 harmonic 70.0 120.0
+ angle_coeff @angle:12-3-12 harmonic 85.0 120.0
+ angle_coeff @angle:5-3-13 harmonic 70.0 108.0
+ angle_coeff @angle:13-3-13 harmonic 70.0 116.0
+ angle_coeff @angle:1-3-13 harmonic 80.0 111.0
+ angle_coeff @angle:3-3-13 harmonic 80.0 117.2
+ angle_coeff @angle:4-3-13 harmonic 80.0 120.4
+ angle_coeff @angle:10-3-20 harmonic 81.0 111.4
+ angle_coeff @angle:13-3-20 harmonic 81.0 111.4
+ angle_coeff @angle:4-3-20 harmonic 83.0 123.4
+ angle_coeff @angle:13-3-21 harmonic 75.0 109.0
+ angle_coeff @angle:4-3-21 harmonic 75.0 119.0
+ angle_coeff @angle:24-3-24 harmonic 70.0 114.2
+ angle_coeff @angle:2-3-24 harmonic 70.0 116.6
+ angle_coeff @angle:3-3-24 harmonic 70.0 116.6
+ angle_coeff @angle:6-3-24 harmonic 70.0 116.6
+ angle_coeff @angle:10-3-24 harmonic 70.0 116.6
+ angle_coeff @angle:13-3-24 harmonic 70.0 116.6
+ angle_coeff @angle:4-3-24 harmonic 80.0 122.9
+ angle_coeff @angle:20-3-24 harmonic 81.0 111.4
+ angle_coeff @angle:13-3-44 harmonic 70.0 116.0
+ angle_coeff @angle:4-3-44 harmonic 80.0 120.4
+ angle_coeff @angle:13-3-46 harmonic 35.0 115.0
+ angle_coeff @angle:46-3-46 harmonic 35.0 115.0
+ angle_coeff @angle:4-3-46 harmonic 35.0 123.0
+ angle_coeff @angle:24-3-46 harmonic 40.0 114.0
+ angle_coeff @angle:5-3-46 harmonic 40.0 115.0
+ angle_coeff @angle:20-3-46 harmonic 40.0 115.0
+ angle_coeff @angle:24-3-47 harmonic 70.0 115.5
+ angle_coeff @angle:4-3-47 harmonic 80.0 125.3
+ angle_coeff @angle:46-3-48 harmonic 35.0 115.0
+ angle_coeff @angle:24-3-48 harmonic 70.0 115.5
+ angle_coeff @angle:13-3-48 harmonic 70.0 116.0
+ angle_coeff @angle:5-3-48 harmonic 70.0 120.0
+ angle_coeff @angle:4-3-48 harmonic 80.0 120.4
+ angle_coeff @angle:20-3-48 harmonic 81.0 111.4
+ angle_coeff @angle:48-3-48 harmonic 85.0 120.0
+ angle_coeff @angle:13-3-50 harmonic 70.0 116.0
+ angle_coeff @angle:46-3-50 harmonic 80.0 116.0
+ angle_coeff @angle:4-3-50 harmonic 80.0 124.0
+ angle_coeff @angle:10-3-52 harmonic 65.0 117.0
+ angle_coeff @angle:2-3-52 harmonic 70.0 117.0
+ angle_coeff @angle:6-3-52 harmonic 70.0 117.0
+ angle_coeff @angle:13-3-52 harmonic 70.0 117.0
+ angle_coeff @angle:48-3-52 harmonic 70.0 117.0
+ angle_coeff @angle:4-3-52 harmonic 80.0 126.0
+ angle_coeff @angle:52-3-52 harmonic 80.0 126.0
+ angle_coeff @angle:46-3-56 harmonic 35.0 122.0
+ angle_coeff @angle:4-3-56 harmonic 80.0 122.5
+ angle_coeff @angle:47-3-57 harmonic 70.0 114.1
+ angle_coeff @angle:56-3-57 harmonic 70.0 118.6
+ angle_coeff @angle:57-3-57 harmonic 70.0 118.6
+ angle_coeff @angle:4-3-57 harmonic 80.0 120.6
+ angle_coeff @angle:24-3-60 harmonic 70.0 111.3
+ angle_coeff @angle:57-3-60 harmonic 70.0 111.3
+ angle_coeff @angle:4-3-60 harmonic 80.0 128.8
+ angle_coeff @angle:13-3-65 harmonic 75.0 109.0
+ angle_coeff @angle:4-3-65 harmonic 75.0 119.0
+ angle_coeff @angle:44-3-84 harmonic 70.0 116.0
+ angle_coeff @angle:4-3-84 harmonic 80.0 120.4
+ angle_coeff @angle:4-3-87 harmonic 80.0 128.2
+ angle_coeff @angle:57-3-105 harmonic 70.0 115.4
+ angle_coeff @angle:56-3-105 harmonic 70.0 118.6
+ angle_coeff @angle:4-3-105 harmonic 80.0 120.9
+ angle_coeff @angle:13-3-107 harmonic 70.0 116.6
+ angle_coeff @angle:4-3-107 harmonic 80.0 122.9
+ angle_coeff @angle:25-4-25 harmonic 10.0 117.0
+ angle_coeff @angle:3-4-25 harmonic 35.0 113.0
+ angle_coeff @angle:3-5-7 harmonic 35.0 113.0
+ angle_coeff @angle:2-5-7 harmonic 55.0 108.5
+ angle_coeff @angle:6-5-7 harmonic 55.0 108.5
+ angle_coeff @angle:7-5-10 harmonic 55.0 108.5
+ angle_coeff @angle:7-5-13 harmonic 55.0 108.5
+ angle_coeff @angle:7-5-24 harmonic 49.0 105.4
+ angle_coeff @angle:25-5-25 harmonic 5.0 109.47
+ angle_coeff @angle:7-5-25 harmonic 10.0 109.47
+ angle_coeff @angle:13-5-25 harmonic 10.0 109.47
+ angle_coeff @angle:7-5-47 harmonic 35.0 109.0
+ angle_coeff @angle:25-5-48 harmonic 10.0 109.47
+ angle_coeff @angle:7-5-48 harmonic 35.0 113.0
+ angle_coeff @angle:7-5-51 harmonic 55.0 108.5
+ angle_coeff @angle:7-5-64 harmonic 55.0 108.5
+ angle_coeff @angle:13-5-64 harmonic 100.0 120.5
+ angle_coeff @angle:7-5-79 harmonic 74.0 110.0
+ angle_coeff @angle:7-5-106 harmonic 100.0 126.0
+ angle_coeff @angle:5-7-25 harmonic 10.0 109.47
+ angle_coeff @angle:25-7-25 harmonic 33.0 109.47
+ angle_coeff @angle:2-10-2 harmonic 63.0 112.4
+ angle_coeff @angle:2-10-3 harmonic 63.0 111.1
+ angle_coeff @angle:2-10-5 harmonic 80.0 109.5
+ angle_coeff @angle:3-10-6 harmonic 63.0 111.1
+ angle_coeff @angle:6-10-6 harmonic 63.0 111.5
+ angle_coeff @angle:2-10-6 harmonic 63.0 112.4
+ angle_coeff @angle:5-10-6 harmonic 80.0 109.5
+ angle_coeff @angle:3-10-10 harmonic 63.0 111.1
+ angle_coeff @angle:2-10-10 harmonic 63.0 111.5
+ angle_coeff @angle:6-10-10 harmonic 63.0 111.5
+ angle_coeff @angle:10-10-10 harmonic 63.0 111.5
+ angle_coeff @angle:5-10-10 harmonic 80.0 109.5
+ angle_coeff @angle:2-10-20 harmonic 80.0 109.5
+ angle_coeff @angle:6-10-20 harmonic 80.0 109.5
+ angle_coeff @angle:10-10-20 harmonic 80.0 109.5
+ angle_coeff @angle:3-10-24 harmonic 63.0 110.1
+ angle_coeff @angle:6-10-24 harmonic 80.0 109.5
+ angle_coeff @angle:2-10-24 harmonic 80.0 109.7
+ angle_coeff @angle:10-10-24 harmonic 80.0 109.7
+ angle_coeff @angle:2-10-44 harmonic 56.2 109.47
+ angle_coeff @angle:6-10-44 harmonic 56.2 109.47
+ angle_coeff @angle:10-10-44 harmonic 56.2 109.47
+ angle_coeff @angle:13-10-44 harmonic 56.2 109.47
+ angle_coeff @angle:3-10-44 harmonic 80.0 109.7
+ angle_coeff @angle:2-10-48 harmonic 63.0 112.4
+ angle_coeff @angle:20-10-48 harmonic 80.0 109.5
+ angle_coeff @angle:2-10-105 harmonic 80.0 109.5
+ angle_coeff @angle:10-10-105 harmonic 80.0 109.5
+ angle_coeff @angle:20-10-105 harmonic 80.0 109.5
+ angle_coeff @angle:2-11-2 harmonic 70.0 124.0
+ angle_coeff @angle:2-11-6 harmonic 70.0 124.0
+ angle_coeff @angle:6-11-6 harmonic 70.0 124.0
+ angle_coeff @angle:2-11-9 harmonic 70.0 118.0
+ angle_coeff @angle:6-11-9 harmonic 70.0 118.0
+ angle_coeff @angle:9-11-10 harmonic 70.0 118.0
+ angle_coeff @angle:2-11-10 harmonic 70.0 124.0
+ angle_coeff @angle:6-11-10 harmonic 70.0 124.0
+ angle_coeff @angle:10-11-10 harmonic 70.0 124.0
+ angle_coeff @angle:2-11-11 harmonic 70.0 118.0
+ angle_coeff @angle:6-11-11 harmonic 70.0 118.0
+ angle_coeff @angle:9-11-11 harmonic 70.0 118.0
+ angle_coeff @angle:10-11-11 harmonic 70.0 118.0
+ angle_coeff @angle:11-11-11 harmonic 70.0 118.0
+ angle_coeff @angle:9-11-13 harmonic 70.0 118.0
+ angle_coeff @angle:11-11-13 harmonic 70.0 118.0
+ angle_coeff @angle:2-11-13 harmonic 70.0 124.0
+ angle_coeff @angle:6-11-13 harmonic 70.0 124.0
+ angle_coeff @angle:10-11-13 harmonic 70.0 124.0
+ angle_coeff @angle:13-11-13 harmonic 70.0 124.0
+ angle_coeff @angle:9-11-14 harmonic 70.0 118.0
+ angle_coeff @angle:11-11-14 harmonic 70.0 118.0
+ angle_coeff @angle:9-11-79 harmonic 70.0 118.0
+ angle_coeff @angle:2-12-12 harmonic 70.0 120.0
+ angle_coeff @angle:3-12-12 harmonic 85.0 120.0
+ angle_coeff @angle:12-12-12 harmonic 85.0 120.0
+ angle_coeff @angle:12-12-48 harmonic 85.0 120.0
+ angle_coeff @angle:12-12-60 harmonic 85.0 120.0
+ angle_coeff @angle:12-12-81 harmonic 85.0 120.0
+ angle_coeff @angle:1-13-1 harmonic 77.0 109.1
+ angle_coeff @angle:2-13-2 harmonic 40.0 109.5
+ angle_coeff @angle:1-13-3 harmonic 50.0 109.5
+ angle_coeff @angle:2-13-3 harmonic 63.0 111.1
+ angle_coeff @angle:3-13-3 harmonic 63.0 111.1
+ angle_coeff @angle:2-13-6 harmonic 40.0 109.5
+ angle_coeff @angle:6-13-6 harmonic 40.0 109.5
+ angle_coeff @angle:3-13-6 harmonic 63.0 109.5
+ angle_coeff @angle:1-13-13 harmonic 50.0 109.5
+ angle_coeff @angle:5-13-13 harmonic 50.0 109.5
+ angle_coeff @angle:13-13-13 harmonic 58.35 112.7
+ angle_coeff @angle:3-13-13 harmonic 63.0 111.1
+ angle_coeff @angle:13-13-15 harmonic 50.0 108.6
+ angle_coeff @angle:13-13-16 harmonic 50.0 114.7
+ angle_coeff @angle:13-13-19 harmonic 58.35 112.7
+ angle_coeff @angle:3-13-20 harmonic 50.0 109.5
+ angle_coeff @angle:13-13-20 harmonic 50.0 109.5
+ angle_coeff @angle:3-13-21 harmonic 69.0 109.8
+ angle_coeff @angle:13-13-21 harmonic 69.0 109.8
+ angle_coeff @angle:21-13-21 harmonic 78.0 111.7
+ angle_coeff @angle:13-13-22 harmonic 50.0 108.6
+ angle_coeff @angle:20-13-24 harmonic 50.0 109.5
+ angle_coeff @angle:3-13-24 harmonic 63.0 110.1
+ angle_coeff @angle:2-13-24 harmonic 80.0 109.7
+ angle_coeff @angle:13-13-24 harmonic 80.0 109.7
+ angle_coeff @angle:16-13-44 harmonic 50.0 114.7
+ angle_coeff @angle:2-13-44 harmonic 56.2 109.47
+ angle_coeff @angle:6-13-44 harmonic 56.2 109.47
+ angle_coeff @angle:10-13-44 harmonic 56.2 109.47
+ angle_coeff @angle:13-13-44 harmonic 56.2 109.47
+ angle_coeff @angle:3-13-44 harmonic 80.0 111.2
+ angle_coeff @angle:46-13-46 harmonic 33.0 107.8
+ angle_coeff @angle:18-13-46 harmonic 35.0 108.5
+ angle_coeff @angle:19-13-46 harmonic 35.0 108.5
+ angle_coeff @angle:2-13-46 harmonic 35.0 109.5
+ angle_coeff @angle:3-13-46 harmonic 35.0 109.5
+ angle_coeff @angle:5-13-46 harmonic 35.0 109.5
+ angle_coeff @angle:15-13-46 harmonic 35.0 109.5
+ angle_coeff @angle:16-13-46 harmonic 35.0 109.5
+ angle_coeff @angle:20-13-46 harmonic 35.0 109.5
+ angle_coeff @angle:22-13-46 harmonic 35.0 109.5
+ angle_coeff @angle:24-13-46 harmonic 35.0 109.5
+ angle_coeff @angle:44-13-46 harmonic 35.0 109.5
+ angle_coeff @angle:13-13-46 harmonic 37.5 110.7
+ angle_coeff @angle:1-13-46 harmonic 40.0 107.0
+ angle_coeff @angle:21-13-46 harmonic 51.0 107.6
+ angle_coeff @angle:46-13-47 harmonic 35.0 109.5
+ angle_coeff @angle:1-13-47 harmonic 50.0 109.5
+ angle_coeff @angle:13-13-47 harmonic 63.0 111.1
+ angle_coeff @angle:47-13-47 harmonic 63.0 112.4
+ angle_coeff @angle:46-13-48 harmonic 35.0 109.5
+ angle_coeff @angle:47-13-48 harmonic 40.0 109.5
+ angle_coeff @angle:48-13-48 harmonic 40.0 109.5
+ angle_coeff @angle:1-13-48 harmonic 50.0 109.5
+ angle_coeff @angle:5-13-48 harmonic 50.0 109.5
+ angle_coeff @angle:20-13-48 harmonic 50.0 109.5
+ angle_coeff @angle:16-13-48 harmonic 50.0 114.7
+ angle_coeff @angle:3-13-48 harmonic 63.0 112.0
+ angle_coeff @angle:2-13-48 harmonic 63.0 114.0
+ angle_coeff @angle:13-13-48 harmonic 63.0 114.0
+ angle_coeff @angle:44-13-48 harmonic 80.0 111.2
+ angle_coeff @angle:46-13-50 harmonic 35.0 109.5
+ angle_coeff @angle:46-13-51 harmonic 37.5 110.7
+ angle_coeff @angle:5-13-51 harmonic 50.0 109.5
+ angle_coeff @angle:13-13-51 harmonic 58.35 112.7
+ angle_coeff @angle:46-13-53 harmonic 35.0 109.5
+ angle_coeff @angle:3-13-53 harmonic 80.0 111.2
+ angle_coeff @angle:13-13-53 harmonic 80.0 111.2
+ angle_coeff @angle:46-13-55 harmonic 35.0 109.5
+ angle_coeff @angle:13-13-55 harmonic 80.0 111.2
+ angle_coeff @angle:46-13-56 harmonic 35.0 109.5
+ angle_coeff @angle:3-13-56 harmonic 63.0 110.1
+ angle_coeff @angle:13-13-56 harmonic 65.0 109.0
+ angle_coeff @angle:46-13-57 harmonic 35.0 109.5
+ angle_coeff @angle:48-13-57 harmonic 80.0 111.2
+ angle_coeff @angle:46-13-60 harmonic 35.0 109.5
+ angle_coeff @angle:13-13-60 harmonic 63.0 114.0
+ angle_coeff @angle:46-13-64 harmonic 41.0 109.5
+ angle_coeff @angle:13-13-64 harmonic 43.0 109.5
+ angle_coeff @angle:48-13-64 harmonic 43.0 109.5
+ angle_coeff @angle:46-13-65 harmonic 51.0 107.6
+ angle_coeff @angle:3-13-65 harmonic 69.0 109.8
+ angle_coeff @angle:13-13-65 harmonic 69.0 110.0
+ angle_coeff @angle:48-13-65 harmonic 69.0 110.0
+ angle_coeff @angle:65-13-65 harmonic 78.0 111.7
+ angle_coeff @angle:46-13-66 harmonic 75.0 111.0
+ angle_coeff @angle:13-13-66 harmonic 75.0 112.0
+ angle_coeff @angle:46-13-79 harmonic 35.0 109.5
+ angle_coeff @angle:13-13-79 harmonic 50.0 108.6
+ angle_coeff @angle:1-13-79 harmonic 50.0 109.5
+ angle_coeff @angle:46-13-80 harmonic 35.0 109.5
+ angle_coeff @angle:13-13-80 harmonic 63.0 115.6
+ angle_coeff @angle:46-13-83 harmonic 35.0 109.5
+ angle_coeff @angle:13-13-83 harmonic 63.0 114.0
+ angle_coeff @angle:46-13-84 harmonic 35.0 109.5
+ angle_coeff @angle:16-13-84 harmonic 50.0 114.7
+ angle_coeff @angle:13-13-84 harmonic 63.0 114.0
+ angle_coeff @angle:46-13-85 harmonic 35.0 109.5
+ angle_coeff @angle:13-13-85 harmonic 63.0 114.0
+ angle_coeff @angle:46-13-87 harmonic 35.0 109.5
+ angle_coeff @angle:13-13-87 harmonic 63.0 115.6
+ angle_coeff @angle:46-13-90 harmonic 35.0 109.5
+ angle_coeff @angle:13-13-90 harmonic 80.0 110.0
+ angle_coeff @angle:3-13-90 harmonic 80.0 113.0
+ angle_coeff @angle:46-13-91 harmonic 37.5 110.7
+ angle_coeff @angle:46-13-95 harmonic 35.0 105.0
+ angle_coeff @angle:13-13-95 harmonic 63.0 105.0
+ angle_coeff @angle:46-13-101 harmonic 35.0 109.5
+ angle_coeff @angle:13-13-101 harmonic 80.0 111.2
+ angle_coeff @angle:46-13-102 harmonic 35.0 105.0
+ angle_coeff @angle:13-13-102 harmonic 63.0 111.1
+ angle_coeff @angle:46-13-104 harmonic 41.0 109.5
+ angle_coeff @angle:13-13-104 harmonic 43.0 109.5
+ angle_coeff @angle:46-13-105 harmonic 35.0 109.5
+ angle_coeff @angle:13-13-105 harmonic 50.0 109.5
+ angle_coeff @angle:20-13-105 harmonic 50.0 109.5
+ angle_coeff @angle:46-13-107 harmonic 35.0 109.5
+ angle_coeff @angle:13-13-107 harmonic 80.0 109.7
+ angle_coeff @angle:46-13-108 harmonic 35.0 109.5
+ angle_coeff @angle:13-13-108 harmonic 60.0 112.0
+ angle_coeff @angle:2-14-2 harmonic 70.0 124.0
+ angle_coeff @angle:2-14-6 harmonic 70.0 124.0
+ angle_coeff @angle:6-14-6 harmonic 70.0 124.0
+ angle_coeff @angle:2-14-9 harmonic 70.0 118.0
+ angle_coeff @angle:6-14-9 harmonic 70.0 118.0
+ angle_coeff @angle:9-14-10 harmonic 70.0 118.0
+ angle_coeff @angle:2-14-10 harmonic 70.0 124.0
+ angle_coeff @angle:6-14-10 harmonic 70.0 124.0
+ angle_coeff @angle:10-14-10 harmonic 70.0 124.0
+ angle_coeff @angle:2-14-11 harmonic 70.0 118.0
+ angle_coeff @angle:6-14-11 harmonic 70.0 118.0
+ angle_coeff @angle:9-14-11 harmonic 70.0 118.0
+ angle_coeff @angle:10-14-11 harmonic 70.0 118.0
+ angle_coeff @angle:11-14-11 harmonic 70.0 118.0
+ angle_coeff @angle:9-14-13 harmonic 70.0 118.0
+ angle_coeff @angle:11-14-13 harmonic 70.0 118.0
+ angle_coeff @angle:2-14-13 harmonic 70.0 124.0
+ angle_coeff @angle:6-14-13 harmonic 70.0 124.0
+ angle_coeff @angle:10-14-13 harmonic 70.0 124.0
+ angle_coeff @angle:13-14-13 harmonic 70.0 124.0
+ angle_coeff @angle:2-14-14 harmonic 70.0 118.0
+ angle_coeff @angle:6-14-14 harmonic 70.0 118.0
+ angle_coeff @angle:9-14-14 harmonic 70.0 118.0
+ angle_coeff @angle:10-14-14 harmonic 70.0 118.0
+ angle_coeff @angle:11-14-14 harmonic 70.0 118.0
+ angle_coeff @angle:13-14-14 harmonic 70.0 118.0
+ angle_coeff @angle:14-14-14 harmonic 70.0 118.0
+ angle_coeff @angle:17-15-17 harmonic 35.0 92.07
+ angle_coeff @angle:2-15-17 harmonic 44.0 96.0
+ angle_coeff @angle:6-15-17 harmonic 44.0 96.0
+ angle_coeff @angle:13-15-17 harmonic 44.0 96.0
+ angle_coeff @angle:25-15-25 harmonic 5.0 109.47
+ angle_coeff @angle:13-15-25 harmonic 10.0 109.47
+ angle_coeff @angle:33-15-33 harmonic 10.0 160.0
+ angle_coeff @angle:2-15-33 harmonic 150.0 96.7
+ angle_coeff @angle:6-15-33 harmonic 150.0 96.7
+ angle_coeff @angle:13-15-33 harmonic 150.0 96.7
+ angle_coeff @angle:17-15-33 harmonic 150.0 96.7
+ angle_coeff @angle:17-15-48 harmonic 50.0 96.0
+ angle_coeff @angle:2-16-6 harmonic 62.0 98.9
+ angle_coeff @angle:13-16-13 harmonic 62.0 98.9
+ angle_coeff @angle:2-16-16 harmonic 68.0 103.7
+ angle_coeff @angle:6-16-16 harmonic 68.0 103.7
+ angle_coeff @angle:13-16-16 harmonic 68.0 103.7
+ angle_coeff @angle:13-16-19 harmonic 65.0 100.0
+ angle_coeff @angle:25-16-25 harmonic 5.0 109.47
+ angle_coeff @angle:13-16-25 harmonic 10.0 109.47
+ angle_coeff @angle:33-16-33 harmonic 10.0 160.0
+ angle_coeff @angle:2-16-33 harmonic 150.0 96.7
+ angle_coeff @angle:6-16-33 harmonic 150.0 96.7
+ angle_coeff @angle:13-16-33 harmonic 150.0 96.7
+ angle_coeff @angle:16-16-33 harmonic 150.0 96.7
+ angle_coeff @angle:13-16-48 harmonic 62.0 104.2
+ angle_coeff @angle:47-16-48 harmonic 62.0 104.2
+ angle_coeff @angle:24-16-60 harmonic 74.0 92.4
+ angle_coeff @angle:25-16-61 harmonic 10.0 130.0
+ angle_coeff @angle:25-16-82 harmonic 10.0 130.0
+ angle_coeff @angle:60-16-82 harmonic 74.0 97.0
+ angle_coeff @angle:25-16-84 harmonic 10.0 130.0
+ angle_coeff @angle:82-16-84 harmonic 74.0 90.0
+ angle_coeff @angle:60-16-84 harmonic 74.0 97.0
+ angle_coeff @angle:84-16-84 harmonic 74.0 97.0
+ angle_coeff @angle:13-16-91 harmonic 62.0 94.0
+ angle_coeff @angle:15-17-25 harmonic 10.0 109.47
+ angle_coeff @angle:25-17-25 harmonic 33.0 109.47
+ angle_coeff @angle:13-18-19 harmonic 150.0 180.0
+ angle_coeff @angle:19-18-48 harmonic 170.0 180.0
+ angle_coeff @angle:18-18-56 harmonic 100.0 180.0
+ angle_coeff @angle:13-19-18 harmonic 150.0 180.0
+ angle_coeff @angle:16-19-19 harmonic 140.0 180.0
+ angle_coeff @angle:13-19-19 harmonic 150.0 180.0
+ angle_coeff @angle:18-19-25 harmonic 10.0 90.0
+ angle_coeff @angle:19-19-46 harmonic 112.0 180.0
+ angle_coeff @angle:18-19-47 harmonic 150.0 180.0
+ angle_coeff @angle:19-19-47 harmonic 160.0 180.0
+ angle_coeff @angle:18-19-48 harmonic 150.0 180.0
+ angle_coeff @angle:19-19-48 harmonic 160.0 180.0
+ angle_coeff @angle:19-19-50 harmonic 160.0 180.0
+ angle_coeff @angle:18-19-55 harmonic 150.0 180.0
+ angle_coeff @angle:18-19-88 harmonic 150.0 180.0
+ angle_coeff @angle:2-20-2 harmonic 100.0 111.8
+ angle_coeff @angle:2-20-3 harmonic 83.0 116.9
+ angle_coeff @angle:3-20-6 harmonic 83.0 116.9
+ angle_coeff @angle:2-20-6 harmonic 100.0 111.8
+ angle_coeff @angle:2-20-7 harmonic 55.0 108.5
+ angle_coeff @angle:7-20-10 harmonic 55.0 108.5
+ angle_coeff @angle:3-20-10 harmonic 83.0 116.9
+ angle_coeff @angle:10-20-10 harmonic 100.0 111.8
+ angle_coeff @angle:13-20-13 harmonic 60.0 109.5
+ angle_coeff @angle:3-20-13 harmonic 83.0 116.9
+ angle_coeff @angle:25-20-25 harmonic 5.0 109.47
+ angle_coeff @angle:13-20-25 harmonic 10.0 109.47
+ angle_coeff @angle:13-20-47 harmonic 75.0 111.0
+ angle_coeff @angle:25-20-48 harmonic 10.0 109.47
+ angle_coeff @angle:13-20-48 harmonic 75.0 111.0
+ angle_coeff @angle:47-20-48 harmonic 75.0 111.0
+ angle_coeff @angle:48-20-48 harmonic 75.0 111.0
+ angle_coeff @angle:3-20-48 harmonic 83.0 116.9
+ angle_coeff @angle:2-20-48 harmonic 100.0 111.8
+ angle_coeff @angle:13-20-51 harmonic 60.0 109.5
+ angle_coeff @angle:2-20-51 harmonic 100.0 113.0
+ angle_coeff @angle:6-20-51 harmonic 100.0 113.0
+ angle_coeff @angle:10-20-51 harmonic 100.0 113.0
+ angle_coeff @angle:24-20-60 harmonic 70.0 104.5
+ angle_coeff @angle:25-20-61 harmonic 10.0 125.0
+ angle_coeff @angle:2-20-64 harmonic 100.0 120.5
+ angle_coeff @angle:6-20-64 harmonic 100.0 120.5
+ angle_coeff @angle:10-20-64 harmonic 100.0 120.5
+ angle_coeff @angle:13-20-64 harmonic 100.0 120.5
+ angle_coeff @angle:48-20-64 harmonic 100.0 120.5
+ angle_coeff @angle:64-20-64 harmonic 100.0 120.5
+ angle_coeff @angle:25-20-82 harmonic 10.0 125.0
+ angle_coeff @angle:60-20-82 harmonic 70.0 106.5
+ angle_coeff @angle:82-20-82 harmonic 70.0 107.0
+ angle_coeff @angle:25-20-84 harmonic 10.0 125.0
+ angle_coeff @angle:82-20-84 harmonic 70.0 104.0
+ angle_coeff @angle:60-20-84 harmonic 70.0 106.5
+ angle_coeff @angle:84-20-84 harmonic 70.0 106.5
+ angle_coeff @angle:61-20-84 harmonic 70.0 108.9
+ angle_coeff @angle:108-20-108 harmonic 20.0 145.0
+ angle_coeff @angle:13-20-108 harmonic 40.0 130.0
+ angle_coeff @angle:25-21-25 harmonic 33.0 109.47
+ angle_coeff @angle:13-22-13 harmonic 62.0 96.0
+ angle_coeff @angle:13-22-23 harmonic 74.0 107.0
+ angle_coeff @angle:23-22-25 harmonic 10.0 90.0
+ angle_coeff @angle:2-24-3 harmonic 50.0 121.9
+ angle_coeff @angle:3-24-3 harmonic 70.0 126.4
+ angle_coeff @angle:3-24-5 harmonic 46.0 115.7
+ angle_coeff @angle:2-24-6 harmonic 50.0 121.9
+ angle_coeff @angle:3-24-6 harmonic 50.0 121.9
+ angle_coeff @angle:2-24-10 harmonic 50.0 118.0
+ angle_coeff @angle:3-24-10 harmonic 50.0 121.9
+ angle_coeff @angle:13-24-13 harmonic 50.0 118.0
+ angle_coeff @angle:3-24-13 harmonic 50.0 121.9
+ angle_coeff @angle:3-24-16 harmonic 70.0 112.0
+ angle_coeff @angle:3-24-20 harmonic 70.0 108.6
+ angle_coeff @angle:3-24-25 harmonic 10.0 109.5
+ angle_coeff @angle:25-24-45 harmonic 10.0 100.0
+ angle_coeff @angle:5-24-45 harmonic 35.0 110.2
+ angle_coeff @angle:3-24-45 harmonic 35.0 119.8
+ angle_coeff @angle:45-24-45 harmonic 35.0 120.0
+ angle_coeff @angle:2-24-45 harmonic 38.0 118.4
+ angle_coeff @angle:6-24-45 harmonic 38.0 118.4
+ angle_coeff @angle:10-24-45 harmonic 38.0 118.4
+ angle_coeff @angle:13-24-45 harmonic 38.0 118.4
+ angle_coeff @angle:45-24-48 harmonic 35.0 119.8
+ angle_coeff @angle:13-24-48 harmonic 50.0 118.0
+ angle_coeff @angle:3-24-48 harmonic 50.0 121.9
+ angle_coeff @angle:48-24-48 harmonic 70.0 118.0
+ angle_coeff @angle:54-24-54 harmonic 35.0 120.0
+ angle_coeff @angle:45-24-59 harmonic 35.0 118.0
+ angle_coeff @angle:3-24-59 harmonic 70.0 125.2
+ angle_coeff @angle:13-24-79 harmonic 50.0 120.0
+ angle_coeff @angle:45-24-79 harmonic 100.0 111.0
+ angle_coeff @angle:45-24-84 harmonic 35.0 119.8
+ angle_coeff @angle:48-24-84 harmonic 70.0 118.0
+ angle_coeff @angle:16-24-86 harmonic 70.0 117.0
+ angle_coeff @angle:45-24-87 harmonic 35.0 119.8
+ angle_coeff @angle:48-24-87 harmonic 70.0 118.0
+ angle_coeff @angle:45-24-88 harmonic 35.0 119.8
+ angle_coeff @angle:48-24-88 harmonic 70.0 118.0
+ angle_coeff @angle:45-24-91 harmonic 40.0 113.0
+ angle_coeff @angle:3-24-91 harmonic 55.0 128.0
+ angle_coeff @angle:48-24-103 harmonic 70.0 121.0
+ angle_coeff @angle:3-24-106 harmonic 20.0 126.0
+ angle_coeff @angle:25-25-25 harmonic 33.0 109.47
+ angle_coeff @angle:32-31-32 harmonic 75.0 104.52
+ angle_coeff @angle:32-31-33 harmonic 50.0 52.26
+ angle_coeff @angle:35-34-35 harmonic 34.05 104.52
+ angle_coeff @angle:37-36-37 harmonic 75.0 109.5
+ angle_coeff @angle:37-36-38 harmonic 50.0 54.75
+ angle_coeff @angle:40-39-40 harmonic 75.0 104.52
+ angle_coeff @angle:41-39-41 harmonic 50.0 109.47
+ angle_coeff @angle:40-39-41 harmonic 50.0 110.6948
+ angle_coeff @angle:43-42-43 harmonic 75.0 109.47
+ angle_coeff @angle:2-44-2 harmonic 51.8 107.2
+ angle_coeff @angle:2-44-6 harmonic 51.8 107.2
+ angle_coeff @angle:6-44-6 harmonic 51.8 107.2
+ angle_coeff @angle:2-44-10 harmonic 51.8 107.2
+ angle_coeff @angle:6-44-10 harmonic 51.8 107.2
+ angle_coeff @angle:10-44-10 harmonic 51.8 107.2
+ angle_coeff @angle:2-44-13 harmonic 51.8 107.2
+ angle_coeff @angle:6-44-13 harmonic 51.8 107.2
+ angle_coeff @angle:10-44-13 harmonic 51.8 107.2
+ angle_coeff @angle:13-44-13 harmonic 51.8 107.2
+ angle_coeff @angle:3-44-13 harmonic 63.0 111.1
+ angle_coeff @angle:25-44-45 harmonic 10.0 100.0
+ angle_coeff @angle:13-44-45 harmonic 35.0 109.5
+ angle_coeff @angle:2-44-45 harmonic 43.2 108.1
+ angle_coeff @angle:6-44-45 harmonic 43.2 108.1
+ angle_coeff @angle:10-44-45 harmonic 43.2 108.1
+ angle_coeff @angle:45-44-45 harmonic 43.6 106.4
+ angle_coeff @angle:25-44-48 harmonic 10.0 109.5
+ angle_coeff @angle:45-44-48 harmonic 35.0 116.0
+ angle_coeff @angle:13-44-48 harmonic 50.0 116.0
+ angle_coeff @angle:48-44-48 harmonic 50.0 116.0
+ angle_coeff @angle:3-44-48 harmonic 63.0 112.0
+ angle_coeff @angle:45-44-79 harmonic 35.0 115.0
+ angle_coeff @angle:13-44-79 harmonic 50.0 108.6
+ angle_coeff @angle:48-44-79 harmonic 50.0 108.6
+ angle_coeff @angle:48-44-91 harmonic 50.0 109.5
+ angle_coeff @angle:25-45-25 harmonic 33.0 109.47
+ angle_coeff @angle:25-45-44 harmonic 10.0 109.5
+ angle_coeff @angle:25-46-25 harmonic 33.0 109.47
+ angle_coeff @angle:13-46-25 harmonic 37.5 109.47
+ angle_coeff @angle:1-47-1 harmonic 80.0 108.0
+ angle_coeff @angle:1-47-3 harmonic 80.0 121.5
+ angle_coeff @angle:3-47-6 harmonic 85.0 119.7
+ angle_coeff @angle:3-47-13 harmonic 70.0 119.7
+ angle_coeff @angle:13-47-13 harmonic 70.0 130.0
+ angle_coeff @angle:25-47-46 harmonic 10.0 90.0
+ angle_coeff @angle:20-47-46 harmonic 35.0 114.5
+ angle_coeff @angle:13-47-46 harmonic 35.0 117.0
+ angle_coeff @angle:46-47-46 harmonic 35.0 117.0
+ angle_coeff @angle:3-47-46 harmonic 35.0 119.7
+ angle_coeff @angle:19-47-46 harmonic 35.0 120.0
+ angle_coeff @angle:1-47-46 harmonic 50.0 112.0
+ angle_coeff @angle:21-47-46 harmonic 60.0 114.0
+ angle_coeff @angle:25-47-47 harmonic 2.0 90.0
+ angle_coeff @angle:46-47-47 harmonic 35.0 120.0
+ angle_coeff @angle:5-47-47 harmonic 70.0 123.0
+ angle_coeff @angle:20-47-47 harmonic 70.0 123.0
+ angle_coeff @angle:13-47-47 harmonic 70.0 124.0
+ angle_coeff @angle:19-47-47 harmonic 70.0 124.0
+ angle_coeff @angle:21-47-47 harmonic 75.0 121.5
+ angle_coeff @angle:1-47-47 harmonic 80.0 121.5
+ angle_coeff @angle:16-47-47 harmonic 85.0 119.4
+ angle_coeff @angle:3-47-47 harmonic 85.0 120.7
+ angle_coeff @angle:46-47-48 harmonic 35.0 123.3
+ angle_coeff @angle:47-47-48 harmonic 85.0 117.0
+ angle_coeff @angle:13-47-48 harmonic 85.0 119.7
+ angle_coeff @angle:25-47-50 harmonic 2.0 90.0
+ angle_coeff @angle:46-47-50 harmonic 35.0 120.0
+ angle_coeff @angle:5-47-50 harmonic 70.0 123.0
+ angle_coeff @angle:20-47-50 harmonic 70.0 123.0
+ angle_coeff @angle:13-47-50 harmonic 70.0 124.0
+ angle_coeff @angle:46-47-57 harmonic 35.0 119.1
+ angle_coeff @angle:13-47-57 harmonic 70.0 120.0
+ angle_coeff @angle:20-47-57 harmonic 70.0 120.0
+ angle_coeff @angle:47-47-57 harmonic 70.0 121.2
+ angle_coeff @angle:16-47-57 harmonic 85.0 119.4
+ angle_coeff @angle:57-47-58 harmonic 35.0 119.1
+ angle_coeff @angle:47-47-58 harmonic 35.0 119.7
+ angle_coeff @angle:46-47-65 harmonic 60.0 114.0
+ angle_coeff @angle:47-47-65 harmonic 75.0 120.0
+ angle_coeff @angle:46-47-91 harmonic 35.0 135.0
+ angle_coeff @angle:3-47-91 harmonic 70.0 119.7
+ angle_coeff @angle:47-47-91 harmonic 70.0 124.0
+ angle_coeff @angle:46-47-105 harmonic 35.0 119.1
+ angle_coeff @angle:58-47-105 harmonic 35.0 119.1
+ angle_coeff @angle:13-47-105 harmonic 70.0 120.0
+ angle_coeff @angle:20-47-105 harmonic 70.0 120.0
+ angle_coeff @angle:47-47-105 harmonic 70.0 121.2
+ angle_coeff @angle:16-47-105 harmonic 85.0 119.4
+ angle_coeff @angle:46-47-110 harmonic 40.0 121.0
+ angle_coeff @angle:13-47-110 harmonic 80.0 122.0
+ angle_coeff @angle:48-47-110 harmonic 80.0 122.0
+ angle_coeff @angle:1-47-110 harmonic 80.0 125.0
+ angle_coeff @angle:2-48-12 harmonic 70.0 120.0
+ angle_coeff @angle:12-48-12 harmonic 85.0 120.0
+ angle_coeff @angle:3-48-13 harmonic 70.0 119.7
+ angle_coeff @angle:25-48-48 harmonic 10.0 90.0
+ angle_coeff @angle:48-48-48 harmonic 63.0 120.0
+ angle_coeff @angle:2-48-48 harmonic 70.0 120.0
+ angle_coeff @angle:5-48-48 harmonic 70.0 120.0
+ angle_coeff @angle:10-48-48 harmonic 70.0 120.0
+ angle_coeff @angle:13-48-48 harmonic 70.0 120.0
+ angle_coeff @angle:15-48-48 harmonic 70.0 120.0
+ angle_coeff @angle:19-48-48 harmonic 70.0 120.0
+ angle_coeff @angle:20-48-48 harmonic 70.0 120.0
+ angle_coeff @angle:24-48-48 harmonic 70.0 120.0
+ angle_coeff @angle:44-48-48 harmonic 70.0 120.0
+ angle_coeff @angle:47-48-48 harmonic 70.0 124.0
+ angle_coeff @angle:21-48-48 harmonic 75.0 120.0
+ angle_coeff @angle:1-48-48 harmonic 80.0 120.0
+ angle_coeff @angle:18-48-48 harmonic 80.0 120.0
+ angle_coeff @angle:16-48-48 harmonic 85.0 119.4
+ angle_coeff @angle:3-48-48 harmonic 85.0 120.0
+ angle_coeff @angle:25-48-49 harmonic 2.0 90.0
+ angle_coeff @angle:24-48-49 harmonic 35.0 119.1
+ angle_coeff @angle:3-48-49 harmonic 35.0 120.0
+ angle_coeff @angle:48-48-49 harmonic 35.0 120.0
+ angle_coeff @angle:48-48-50 harmonic 70.0 124.0
+ angle_coeff @angle:48-48-53 harmonic 70.0 120.0
+ angle_coeff @angle:55-48-55 harmonic 70.0 120.0
+ angle_coeff @angle:47-48-55 harmonic 70.0 120.1
+ angle_coeff @angle:48-48-55 harmonic 70.0 120.1
+ angle_coeff @angle:49-48-56 harmonic 35.0 116.0
+ angle_coeff @angle:13-48-56 harmonic 70.0 116.0
+ angle_coeff @angle:44-48-56 harmonic 70.0 116.0
+ angle_coeff @angle:55-48-56 harmonic 70.0 119.3
+ angle_coeff @angle:5-48-56 harmonic 70.0 120.0
+ angle_coeff @angle:47-48-56 harmonic 70.0 121.5
+ angle_coeff @angle:50-48-56 harmonic 70.0 121.5
+ angle_coeff @angle:48-48-56 harmonic 70.0 124.0
+ angle_coeff @angle:21-48-56 harmonic 75.0 120.0
+ angle_coeff @angle:49-48-57 harmonic 35.0 120.0
+ angle_coeff @angle:48-48-57 harmonic 70.0 108.7
+ angle_coeff @angle:55-48-57 harmonic 70.0 116.0
+ angle_coeff @angle:13-48-57 harmonic 70.0 120.0
+ angle_coeff @angle:47-48-57 harmonic 70.0 121.5
+ angle_coeff @angle:56-48-57 harmonic 70.0 123.3
+ angle_coeff @angle:49-48-60 harmonic 35.0 120.0
+ angle_coeff @angle:48-48-60 harmonic 63.0 120.0
+ angle_coeff @angle:57-48-60 harmonic 70.0 108.7
+ angle_coeff @angle:56-48-60 harmonic 70.0 117.3
+ angle_coeff @angle:55-48-60 harmonic 70.0 123.5
+ angle_coeff @angle:2-48-60 harmonic 70.0 128.6
+ angle_coeff @angle:13-48-60 harmonic 70.0 128.6
+ angle_coeff @angle:49-48-61 harmonic 35.0 119.1
+ angle_coeff @angle:48-48-61 harmonic 70.0 108.7
+ angle_coeff @angle:57-48-61 harmonic 70.0 123.3
+ angle_coeff @angle:48-48-64 harmonic 85.0 119.4
+ angle_coeff @angle:48-48-65 harmonic 75.0 120.0
+ angle_coeff @angle:48-48-66 harmonic 75.0 120.0
+ angle_coeff @angle:48-48-79 harmonic 85.0 119.4
+ angle_coeff @angle:49-48-81 harmonic 35.0 120.0
+ angle_coeff @angle:48-48-81 harmonic 85.0 120.0
+ angle_coeff @angle:49-48-84 harmonic 35.0 126.9
+ angle_coeff @angle:60-48-84 harmonic 63.0 106.4
+ angle_coeff @angle:48-48-84 harmonic 70.0 107.4
+ angle_coeff @angle:49-48-86 harmonic 35.0 120.0
+ angle_coeff @angle:48-48-86 harmonic 63.0 120.0
+ angle_coeff @angle:56-48-86 harmonic 70.0 124.0
+ angle_coeff @angle:49-48-88 harmonic 35.0 128.2
+ angle_coeff @angle:101-48-101 harmonic 70.0 111.8
+ angle_coeff @angle:56-48-101 harmonic 70.0 124.1
+ angle_coeff @angle:48-48-102 harmonic 85.0 120.0
+ angle_coeff @angle:48-48-109 harmonic 70.0 124.0
+ angle_coeff @angle:25-50-46 harmonic 10.0 90.0
+ angle_coeff @angle:19-50-46 harmonic 35.0 120.0
+ angle_coeff @angle:25-50-47 harmonic 2.0 90.0
+ angle_coeff @angle:46-50-47 harmonic 35.0 120.0
+ angle_coeff @angle:3-50-47 harmonic 70.0 118.7
+ angle_coeff @angle:13-50-47 harmonic 70.0 124.0
+ angle_coeff @angle:46-50-48 harmonic 35.0 123.3
+ angle_coeff @angle:47-50-48 harmonic 85.0 117.0
+ angle_coeff @angle:25-50-50 harmonic 2.0 90.0
+ angle_coeff @angle:46-50-50 harmonic 35.0 120.0
+ angle_coeff @angle:13-50-50 harmonic 70.0 124.0
+ angle_coeff @angle:47-50-50 harmonic 70.0 124.0
+ angle_coeff @angle:50-50-84 harmonic 35.0 106.0
+ angle_coeff @angle:46-50-84 harmonic 35.0 122.0
+ angle_coeff @angle:46-50-109 harmonic 35.0 120.0
+ angle_coeff @angle:13-50-109 harmonic 70.0 124.0
+ angle_coeff @angle:47-50-109 harmonic 70.0 124.0
+ angle_coeff @angle:6-51-6 harmonic 40.0 109.5
+ angle_coeff @angle:5-51-13 harmonic 50.0 109.5
+ angle_coeff @angle:13-51-20 harmonic 50.0 109.5
+ angle_coeff @angle:2-51-20 harmonic 80.0 109.5
+ angle_coeff @angle:6-51-20 harmonic 80.0 109.5
+ angle_coeff @angle:5-51-20 harmonic 92.6 111.55
+ angle_coeff @angle:20-51-20 harmonic 92.6 111.55
+ angle_coeff @angle:46-51-46 harmonic 33.0 109.5
+ angle_coeff @angle:5-51-46 harmonic 35.0 109.5
+ angle_coeff @angle:20-51-46 harmonic 35.0 109.5
+ angle_coeff @angle:13-51-46 harmonic 37.5 110.7
+ angle_coeff @angle:46-51-105 harmonic 35.0 109.5
+ angle_coeff @angle:13-51-105 harmonic 50.0 109.5
+ angle_coeff @angle:20-51-105 harmonic 50.0 109.5
+ angle_coeff @angle:13-53-13 harmonic 50.0 113.0
+ angle_coeff @angle:13-53-25 harmonic 10.0 100.0
+ angle_coeff @angle:45-53-45 harmonic 43.6 109.5
+ angle_coeff @angle:25-53-48 harmonic 10.0 100.0
+ angle_coeff @angle:13-53-48 harmonic 55.0 114.0
+ angle_coeff @angle:2-53-54 harmonic 35.0 109.5
+ angle_coeff @angle:6-53-54 harmonic 35.0 109.5
+ angle_coeff @angle:13-53-54 harmonic 35.0 109.5
+ angle_coeff @angle:48-53-54 harmonic 35.0 109.5
+ angle_coeff @angle:54-53-54 harmonic 35.0 109.5
+ angle_coeff @angle:25-53-82 harmonic 10.0 100.0
+ angle_coeff @angle:13-55-13 harmonic 50.0 118.0
+ angle_coeff @angle:45-55-45 harmonic 35.0 113.0
+ angle_coeff @angle:13-55-45 harmonic 35.0 118.4
+ angle_coeff @angle:45-55-48 harmonic 35.0 120.0
+ angle_coeff @angle:2-55-48 harmonic 50.0 123.2
+ angle_coeff @angle:6-55-48 harmonic 50.0 123.2
+ angle_coeff @angle:13-55-48 harmonic 50.0 123.2
+ angle_coeff @angle:2-55-54 harmonic 35.0 118.4
+ angle_coeff @angle:13-55-54 harmonic 35.0 118.4
+ angle_coeff @angle:48-55-54 harmonic 35.0 120.0
+ angle_coeff @angle:54-55-54 harmonic 35.0 120.0
+ angle_coeff @angle:45-55-59 harmonic 35.0 120.0
+ angle_coeff @angle:3-56-13 harmonic 70.0 120.5
+ angle_coeff @angle:13-56-18 harmonic 70.0 120.0
+ angle_coeff @angle:25-56-48 harmonic 5.0 120.0
+ angle_coeff @angle:45-56-48 harmonic 35.0 113.0
+ angle_coeff @angle:13-56-48 harmonic 50.0 118.0
+ angle_coeff @angle:48-56-48 harmonic 70.0 117.0
+ angle_coeff @angle:3-56-48 harmonic 70.0 120.5
+ angle_coeff @angle:13-56-56 harmonic 70.0 117.0
+ angle_coeff @angle:48-56-56 harmonic 70.0 117.0
+ angle_coeff @angle:25-56-59 harmonic 5.0 119.8
+ angle_coeff @angle:48-56-59 harmonic 70.0 118.6
+ angle_coeff @angle:59-56-59 harmonic 70.0 118.6
+ angle_coeff @angle:59-56-60 harmonic 70.0 111.0
+ angle_coeff @angle:48-56-60 harmonic 70.0 112.2
+ angle_coeff @angle:59-56-82 harmonic 70.0 111.0
+ angle_coeff @angle:48-56-86 harmonic 70.0 117.0
+ angle_coeff @angle:13-56-103 harmonic 70.0 114.0
+ angle_coeff @angle:3-57-3 harmonic 70.0 126.4
+ angle_coeff @angle:3-57-45 harmonic 35.0 116.8
+ angle_coeff @angle:45-57-47 harmonic 35.0 119.2
+ angle_coeff @angle:3-57-47 harmonic 70.0 121.6
+ angle_coeff @angle:45-57-48 harmonic 35.0 118.0
+ angle_coeff @angle:3-57-48 harmonic 70.0 125.2
+ angle_coeff @angle:48-57-48 harmonic 70.0 125.2
+ angle_coeff @angle:45-57-60 harmonic 30.0 125.8
+ angle_coeff @angle:13-57-60 harmonic 70.0 125.8
+ angle_coeff @angle:60-57-61 harmonic 56.0 113.1
+ angle_coeff @angle:45-57-61 harmonic 56.0 118.4
+ angle_coeff @angle:13-57-61 harmonic 70.0 118.4
+ angle_coeff @angle:48-57-61 harmonic 70.0 118.4
+ angle_coeff @angle:45-57-62 harmonic 30.0 128.8
+ angle_coeff @angle:60-57-62 harmonic 70.0 105.4
+ angle_coeff @angle:48-57-62 harmonic 70.0 109.8
+ angle_coeff @angle:13-57-62 harmonic 70.0 128.8
+ angle_coeff @angle:45-57-81 harmonic 35.0 123.1
+ angle_coeff @angle:45-57-82 harmonic 35.0 120.0
+ angle_coeff @angle:61-57-82 harmonic 56.0 113.1
+ angle_coeff @angle:60-57-82 harmonic 70.0 109.8
+ angle_coeff @angle:45-57-84 harmonic 35.0 120.0
+ angle_coeff @angle:61-57-84 harmonic 56.0 113.1
+ angle_coeff @angle:60-57-84 harmonic 70.0 109.8
+ angle_coeff @angle:82-57-84 harmonic 70.0 109.8
+ angle_coeff @angle:84-57-84 harmonic 70.0 109.8
+ angle_coeff @angle:81-57-84 harmonic 70.0 111.6
+ angle_coeff @angle:45-57-85 harmonic 35.0 120.0
+ angle_coeff @angle:82-57-85 harmonic 70.0 109.8
+ angle_coeff @angle:24-59-55 harmonic 70.0 116.0
+ angle_coeff @angle:49-59-56 harmonic 35.0 115.45
+ angle_coeff @angle:13-59-56 harmonic 70.0 115.5
+ angle_coeff @angle:55-59-56 harmonic 70.0 119.3
+ angle_coeff @angle:24-59-56 harmonic 70.0 123.3
+ angle_coeff @angle:56-59-56 harmonic 70.0 129.1
+ angle_coeff @angle:56-59-63 harmonic 35.0 115.45
+ angle_coeff @angle:13-60-48 harmonic 70.0 120.0
+ angle_coeff @angle:48-60-48 harmonic 85.0 134.9
+ angle_coeff @angle:56-60-57 harmonic 70.0 126.2
+ angle_coeff @angle:57-60-60 harmonic 70.0 106.2
+ angle_coeff @angle:20-60-60 harmonic 70.0 110.6
+ angle_coeff @angle:16-60-60 harmonic 70.0 111.0
+ angle_coeff @angle:13-60-60 harmonic 70.0 120.0
+ angle_coeff @angle:24-60-60 harmonic 70.0 127.7
+ angle_coeff @angle:56-60-60 harmonic 70.0 127.7
+ angle_coeff @angle:48-60-60 harmonic 85.0 117.3
+ angle_coeff @angle:3-60-60 harmonic 85.0 119.2
+ angle_coeff @angle:60-60-61 harmonic 70.0 111.0
+ angle_coeff @angle:24-60-61 harmonic 70.0 126.2
+ angle_coeff @angle:3-60-61 harmonic 70.0 130.0
+ angle_coeff @angle:48-60-61 harmonic 70.0 132.4
+ angle_coeff @angle:12-60-80 harmonic 85.0 134.9
+ angle_coeff @angle:48-60-80 harmonic 85.0 134.9
+ angle_coeff @angle:80-60-81 harmonic 85.0 108.8
+ angle_coeff @angle:12-60-81 harmonic 85.0 116.2
+ angle_coeff @angle:48-60-81 harmonic 85.0 116.2
+ angle_coeff @angle:3-60-84 harmonic 70.0 130.0
+ angle_coeff @angle:60-60-87 harmonic 70.0 107.3
+ angle_coeff @angle:57-60-87 harmonic 70.0 107.7
+ angle_coeff @angle:81-60-87 harmonic 85.0 108.8
+ angle_coeff @angle:12-60-87 harmonic 85.0 134.9
+ angle_coeff @angle:48-60-87 harmonic 85.0 134.9
+ angle_coeff @angle:60-60-105 harmonic 70.0 106.2
+ angle_coeff @angle:56-60-105 harmonic 70.0 126.2
+ angle_coeff @angle:48-61-48 harmonic 70.0 125.2
+ angle_coeff @angle:25-61-57 harmonic 10.0 125.0
+ angle_coeff @angle:25-61-61 harmonic 10.0 125.0
+ angle_coeff @angle:60-61-62 harmonic 70.0 103.8
+ angle_coeff @angle:25-61-82 harmonic 10.0 125.0
+ angle_coeff @angle:61-61-82 harmonic 70.0 109.0
+ angle_coeff @angle:60-61-82 harmonic 70.0 110.0
+ angle_coeff @angle:82-61-83 harmonic 70.0 110.0
+ angle_coeff @angle:57-61-84 harmonic 70.0 104.1
+ angle_coeff @angle:82-61-84 harmonic 70.0 110.0
+ angle_coeff @angle:57-61-88 harmonic 70.0 104.1
+ angle_coeff @angle:20-61-88 harmonic 70.0 105.3
+ angle_coeff @angle:49-62-57 harmonic 35.0 120.0
+ angle_coeff @angle:49-62-61 harmonic 35.0 120.0
+ angle_coeff @angle:57-62-61 harmonic 70.0 113.9
+ angle_coeff @angle:57-62-63 harmonic 35.0 123.05
+ angle_coeff @angle:61-62-63 harmonic 35.0 123.05
+ angle_coeff @angle:49-62-105 harmonic 35.0 120.0
+ angle_coeff @angle:63-62-105 harmonic 35.0 123.05
+ angle_coeff @angle:61-62-105 harmonic 70.0 113.9
+ angle_coeff @angle:5-64-5 harmonic 45.0 102.6
+ angle_coeff @angle:4-64-5 harmonic 100.0 108.23
+ angle_coeff @angle:4-64-13 harmonic 45.0 109.5
+ angle_coeff @angle:5-64-20 harmonic 45.0 102.6
+ angle_coeff @angle:20-64-20 harmonic 45.0 102.6
+ angle_coeff @angle:13-64-20 harmonic 45.0 109.5
+ angle_coeff @angle:4-64-20 harmonic 100.0 108.23
+ angle_coeff @angle:4-64-48 harmonic 45.0 109.5
+ angle_coeff @angle:5-64-48 harmonic 45.0 109.5
+ angle_coeff @angle:20-64-48 harmonic 45.0 109.5
+ angle_coeff @angle:5-64-52 harmonic 45.0 108.23
+ angle_coeff @angle:13-64-52 harmonic 45.0 109.5
+ angle_coeff @angle:20-64-52 harmonic 100.0 108.23
+ angle_coeff @angle:52-64-52 harmonic 140.0 119.9
+ angle_coeff @angle:25-65-25 harmonic 33.0 109.47
+ angle_coeff @angle:25-66-25 harmonic 33.0 109.47
+ angle_coeff @angle:78-77-78 harmonic 150.0 180.0
+ angle_coeff @angle:6-79-11 harmonic 62.0 98.9
+ angle_coeff @angle:13-79-13 harmonic 62.0 102.0
+ angle_coeff @angle:5-79-13 harmonic 75.0 96.4
+ angle_coeff @angle:5-79-23 harmonic 74.0 108.7
+ angle_coeff @angle:13-79-23 harmonic 74.0 108.9
+ angle_coeff @angle:23-79-23 harmonic 104.0 119.0
+ angle_coeff @angle:13-79-24 harmonic 100.0 103.0
+ angle_coeff @angle:23-79-24 harmonic 120.0 107.0
+ angle_coeff @angle:13-79-44 harmonic 62.0 102.0
+ angle_coeff @angle:23-79-44 harmonic 74.0 108.9
+ angle_coeff @angle:13-79-48 harmonic 62.0 102.0
+ angle_coeff @angle:23-79-48 harmonic 74.0 107.2
+ angle_coeff @angle:5-79-48 harmonic 75.0 96.4
+ angle_coeff @angle:24-79-48 harmonic 100.0 103.0
+ angle_coeff @angle:13-79-82 harmonic 62.0 102.0
+ angle_coeff @angle:46-80-60 harmonic 35.0 126.8
+ angle_coeff @angle:2-80-60 harmonic 70.0 128.6
+ angle_coeff @angle:13-80-60 harmonic 70.0 128.6
+ angle_coeff @angle:46-80-84 harmonic 35.0 126.8
+ angle_coeff @angle:2-80-84 harmonic 70.0 125.0
+ angle_coeff @angle:13-80-84 harmonic 70.0 125.0
+ angle_coeff @angle:60-80-84 harmonic 85.0 106.4
+ angle_coeff @angle:12-81-57 harmonic 70.0 132.8
+ angle_coeff @angle:48-81-57 harmonic 70.0 132.8
+ angle_coeff @angle:57-81-60 harmonic 70.0 104.4
+ angle_coeff @angle:12-81-60 harmonic 85.0 122.7
+ angle_coeff @angle:48-81-60 harmonic 85.0 122.7
+ angle_coeff @angle:13-82-16 harmonic 70.0 125.0
+ angle_coeff @angle:16-82-24 harmonic 70.0 125.0
+ angle_coeff @angle:16-82-44 harmonic 70.0 120.2
+ angle_coeff @angle:20-82-49 harmonic 35.0 117.0
+ angle_coeff @angle:16-82-49 harmonic 35.0 125.0
+ angle_coeff @angle:49-82-57 harmonic 35.0 120.0
+ angle_coeff @angle:57-82-57 harmonic 70.0 120.0
+ angle_coeff @angle:13-82-57 harmonic 70.0 125.0
+ angle_coeff @angle:48-82-57 harmonic 70.0 125.0
+ angle_coeff @angle:56-82-57 harmonic 70.0 126.2
+ angle_coeff @angle:49-82-61 harmonic 35.0 120.0
+ angle_coeff @angle:16-82-61 harmonic 70.0 115.0
+ angle_coeff @angle:20-82-61 harmonic 70.0 115.0
+ angle_coeff @angle:57-82-61 harmonic 70.0 120.0
+ angle_coeff @angle:13-82-61 harmonic 70.0 125.0
+ angle_coeff @angle:44-82-61 harmonic 70.0 126.1
+ angle_coeff @angle:24-82-61 harmonic 70.0 126.2
+ angle_coeff @angle:57-82-79 harmonic 70.0 120.0
+ angle_coeff @angle:61-82-79 harmonic 70.0 120.0
+ angle_coeff @angle:20-82-86 harmonic 70.0 122.0
+ angle_coeff @angle:61-82-86 harmonic 70.0 130.0
+ angle_coeff @angle:57-82-87 harmonic 70.0 106.2
+ angle_coeff @angle:56-82-87 harmonic 70.0 127.7
+ angle_coeff @angle:49-83-61 harmonic 35.0 120.0
+ angle_coeff @angle:48-83-61 harmonic 70.0 111.0
+ angle_coeff @angle:13-83-61 harmonic 70.0 124.5
+ angle_coeff @angle:49-83-84 harmonic 35.0 128.2
+ angle_coeff @angle:61-83-84 harmonic 70.0 111.0
+ angle_coeff @angle:13-83-84 harmonic 70.0 130.7
+ angle_coeff @angle:13-84-16 harmonic 70.0 125.0
+ angle_coeff @angle:13-84-20 harmonic 70.0 121.6
+ angle_coeff @angle:16-84-24 harmonic 70.0 125.0
+ angle_coeff @angle:20-84-49 harmonic 35.0 113.4
+ angle_coeff @angle:16-84-49 harmonic 35.0 125.0
+ angle_coeff @angle:48-84-49 harmonic 35.0 130.7
+ angle_coeff @angle:49-84-50 harmonic 35.0 130.7
+ angle_coeff @angle:20-84-50 harmonic 70.0 110.0
+ angle_coeff @angle:49-84-57 harmonic 35.0 121.6
+ angle_coeff @angle:13-84-57 harmonic 70.0 121.6
+ angle_coeff @angle:48-84-57 harmonic 70.0 121.6
+ angle_coeff @angle:3-84-57 harmonic 85.0 120.0
+ angle_coeff @angle:57-84-58 harmonic 35.0 120.0
+ angle_coeff @angle:13-84-61 harmonic 70.0 118.9
+ angle_coeff @angle:49-84-80 harmonic 35.0 120.0
+ angle_coeff @angle:57-84-80 harmonic 70.0 108.7
+ angle_coeff @angle:49-84-83 harmonic 35.0 130.7
+ angle_coeff @angle:57-84-83 harmonic 70.0 106.3
+ angle_coeff @angle:20-84-83 harmonic 70.0 108.0
+ angle_coeff @angle:16-84-83 harmonic 70.0 111.0
+ angle_coeff @angle:13-84-83 harmonic 70.0 130.7
+ angle_coeff @angle:13-84-84 harmonic 70.0 120.0
+ angle_coeff @angle:57-84-84 harmonic 70.0 120.0
+ angle_coeff @angle:61-84-84 harmonic 70.0 120.0
+ angle_coeff @angle:20-84-86 harmonic 70.0 121.6
+ angle_coeff @angle:57-84-86 harmonic 70.0 121.6
+ angle_coeff @angle:49-84-87 harmonic 35.0 132.1
+ angle_coeff @angle:57-84-87 harmonic 70.0 107.7
+ angle_coeff @angle:20-84-87 harmonic 70.0 110.6
+ angle_coeff @angle:16-84-87 harmonic 70.0 111.0
+ angle_coeff @angle:61-84-87 harmonic 70.0 111.9
+ angle_coeff @angle:13-84-87 harmonic 70.0 132.1
+ angle_coeff @angle:48-84-87 harmonic 70.0 132.1
+ angle_coeff @angle:86-84-87 harmonic 70.0 132.1
+ angle_coeff @angle:3-84-87 harmonic 85.0 120.0
+ angle_coeff @angle:49-85-57 harmonic 35.0 120.0
+ angle_coeff @angle:13-85-57 harmonic 70.0 121.6
+ angle_coeff @angle:49-85-85 harmonic 35.0 130.7
+ angle_coeff @angle:57-85-85 harmonic 70.0 106.3
+ angle_coeff @angle:13-85-85 harmonic 70.0 130.7
+ angle_coeff @angle:48-86-48 harmonic 63.0 120.0
+ angle_coeff @angle:48-86-56 harmonic 70.0 124.0
+ angle_coeff @angle:48-86-82 harmonic 63.0 120.0
+ angle_coeff @angle:48-86-83 harmonic 63.0 120.0
+ angle_coeff @angle:48-86-84 harmonic 63.0 120.0
+ angle_coeff @angle:48-86-86 harmonic 63.0 120.0
+ angle_coeff @angle:56-86-86 harmonic 70.0 124.0
+ angle_coeff @angle:48-86-87 harmonic 63.0 120.0
+ angle_coeff @angle:48-86-88 harmonic 63.0 120.0
+ angle_coeff @angle:49-87-60 harmonic 35.0 120.0
+ angle_coeff @angle:46-87-60 harmonic 35.0 126.8
+ angle_coeff @angle:13-87-60 harmonic 70.0 128.6
+ angle_coeff @angle:49-87-84 harmonic 35.0 125.7
+ angle_coeff @angle:46-87-84 harmonic 35.0 126.8
+ angle_coeff @angle:84-87-84 harmonic 70.0 103.8
+ angle_coeff @angle:82-87-84 harmonic 70.0 110.4
+ angle_coeff @angle:2-87-84 harmonic 70.0 125.0
+ angle_coeff @angle:13-87-84 harmonic 70.0 125.0
+ angle_coeff @angle:3-87-84 harmonic 70.0 130.0
+ angle_coeff @angle:60-87-84 harmonic 85.0 106.4
+ angle_coeff @angle:84-87-86 harmonic 70.0 125.7
+ angle_coeff @angle:49-87-87 harmonic 35.0 127.5
+ angle_coeff @angle:60-87-87 harmonic 70.0 107.3
+ angle_coeff @angle:84-87-87 harmonic 70.0 107.3
+ angle_coeff @angle:86-87-87 harmonic 70.0 127.5
+ angle_coeff @angle:84-87-88 harmonic 70.0 103.8
+ angle_coeff @angle:48-88-49 harmonic 35.0 128.6
+ angle_coeff @angle:49-88-61 harmonic 35.0 118.9
+ angle_coeff @angle:13-88-61 harmonic 70.0 118.9
+ angle_coeff @angle:19-88-61 harmonic 70.0 118.9
+ angle_coeff @angle:61-88-87 harmonic 70.0 111.9
+ angle_coeff @angle:4-89-90 harmonic 80.0 134.0
+ angle_coeff @angle:90-89-91 harmonic 70.0 91.0
+ angle_coeff @angle:4-89-91 harmonic 80.0 134.0
+ angle_coeff @angle:13-90-89 harmonic 55.0 127.0
+ angle_coeff @angle:89-90-91 harmonic 50.0 94.0
+ angle_coeff @angle:13-90-91 harmonic 50.0 126.0
+ angle_coeff @angle:24-91-46 harmonic 35.0 108.0
+ angle_coeff @angle:13-91-46 harmonic 35.0 114.3
+ angle_coeff @angle:44-91-46 harmonic 35.0 114.3
+ angle_coeff @angle:46-91-46 harmonic 35.0 114.3
+ angle_coeff @angle:16-91-46 harmonic 37.5 108.0
+ angle_coeff @angle:46-91-47 harmonic 35.0 109.5
+ angle_coeff @angle:46-91-89 harmonic 37.5 110.0
+ angle_coeff @angle:24-91-89 harmonic 70.0 117.0
+ angle_coeff @angle:46-91-90 harmonic 35.0 111.0
+ angle_coeff @angle:16-91-90 harmonic 55.0 109.0
+ angle_coeff @angle:91-91-91 harmonic 30.0 79.2
+ angle_coeff @angle:13-91-91 harmonic 37.5 117.2
+ angle_coeff @angle:44-91-91 harmonic 37.5 117.2
+ angle_coeff @angle:46-91-91 harmonic 37.5 117.2
+ angle_coeff @angle:24-91-91 harmonic 37.5 126.0
+ angle_coeff @angle:16-91-91 harmonic 55.0 128.0
+ angle_coeff @angle:89-91-91 harmonic 63.0 85.0
+ angle_coeff @angle:47-91-91 harmonic 63.0 114.0
+ angle_coeff @angle:90-91-91 harmonic 80.0 89.0
+ angle_coeff @angle:13-95-13 harmonic 172.8 120.0
+ angle_coeff @angle:13-95-46 harmonic 144.0 120.0
+ angle_coeff @angle:13-101-45 harmonic 35.0 109.5
+ angle_coeff @angle:45-101-45 harmonic 43.6 106.4
+ angle_coeff @angle:45-101-48 harmonic 50.0 112.5
+ angle_coeff @angle:13-101-48 harmonic 50.0 120.5
+ angle_coeff @angle:13-102-103 harmonic 80.0 117.5
+ angle_coeff @angle:48-102-103 harmonic 80.0 117.5
+ angle_coeff @angle:103-102-103 harmonic 80.0 125.0
+ angle_coeff @angle:25-103-25 harmonic 10.0 109.5
+ angle_coeff @angle:25-103-102 harmonic 10.0 109.5
+ angle_coeff @angle:13-104-13 harmonic 45.0 109.5
+ angle_coeff @angle:3-105-10 harmonic 70.0 117.6
+ angle_coeff @angle:3-105-13 harmonic 70.0 117.6
+ angle_coeff @angle:3-105-45 harmonic 35.0 119.2
+ angle_coeff @angle:45-105-47 harmonic 35.0 119.2
+ angle_coeff @angle:13-105-47 harmonic 70.0 121.2
+ angle_coeff @angle:3-105-47 harmonic 70.0 121.6
+ angle_coeff @angle:3-105-51 harmonic 70.0 117.6
+ angle_coeff @angle:47-105-51 harmonic 70.0 121.2
+ angle_coeff @angle:45-105-60 harmonic 30.0 125.8
+ angle_coeff @angle:6-105-60 harmonic 70.0 125.8
+ angle_coeff @angle:10-105-60 harmonic 70.0 125.8
+ angle_coeff @angle:13-105-60 harmonic 70.0 125.8
+ angle_coeff @angle:51-105-60 harmonic 70.0 125.8
+ angle_coeff @angle:45-105-62 harmonic 30.0 128.8
+ angle_coeff @angle:60-105-62 harmonic 70.0 105.4
+ angle_coeff @angle:6-105-62 harmonic 70.0 128.8
+ angle_coeff @angle:10-105-62 harmonic 70.0 128.8
+ angle_coeff @angle:13-105-62 harmonic 70.0 128.8
+ angle_coeff @angle:51-105-62 harmonic 70.0 128.8
+ angle_coeff @angle:4-106-24 harmonic 20.0 109.5
+ angle_coeff @angle:24-106-24 harmonic 20.0 109.5
+ angle_coeff @angle:13-107-13 harmonic 50.0 118.0
+ angle_coeff @angle:3-107-13 harmonic 50.0 121.9
+ angle_coeff @angle:1-108-13 harmonic 35.0 110.5
+ angle_coeff @angle:13-108-13 harmonic 60.0 110.0
+ angle_coeff @angle:13-108-20 harmonic 60.0 100.0
+ angle_coeff @angle:20-108-20 harmonic 60.0 110.0
+ angle_coeff @angle:13-108-21 harmonic 35.0 110.5
+ angle_coeff @angle:45-108-45 harmonic 35.0 109.5
+ angle_coeff @angle:13-108-45 harmonic 35.0 110.5
+ angle_coeff @angle:46-108-46 harmonic 35.0 109.5
+ angle_coeff @angle:13-108-46 harmonic 35.0 110.5
+ angle_coeff @angle:13-108-65 harmonic 35.0 110.5
+ angle_coeff @angle:13-108-66 harmonic 35.0 110.5
+ angle_coeff @angle:13-108-108 harmonic 50.0 112.0
+ angle_coeff @angle:46-109-48 harmonic 35.0 123.3
+ angle_coeff @angle:46-109-50 harmonic 35.0 120.0
+ angle_coeff @angle:13-109-50 harmonic 70.0 124.0
+ angle_coeff @angle:46-109-109 harmonic 35.0 120.0
+ angle_coeff @angle:13-109-109 harmonic 70.0 124.0
+ angle_coeff @angle:50-109-109 harmonic 70.0 124.0
+ angle_coeff @angle:48-109-109 harmonic 85.0 117.0
+ angle_coeff @angle:4-110-47 harmonic 160.0 180.0
+ angle_coeff @angle:47-110-47 harmonic 160.0 180.0
+ } #(end of angle_coeffs)
+
+ 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*
+ @angle:2-2-2 @atom:*_b*_a2_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a2_d*_i*
+ @angle:2-2-3 @atom:*_b*_a2_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a3_d*_i*
+ @angle:2-2-5 @atom:*_b*_a2_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a5_d*_i*
+ @angle:2-2-6 @atom:*_b*_a2_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:6-2-6 @atom:*_b*_a6_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:5-2-6 @atom:*_b*_a5_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:2-2-10 @atom:*_b*_a2_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:3-2-10 @atom:*_b*_a3_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:6-2-10 @atom:*_b*_a6_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:10-2-10 @atom:*_b*_a10_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:5-2-10 @atom:*_b*_a5_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:10-2-12 @atom:*_b*_a10_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a12_d*_i*
+ @angle:6-2-13 @atom:*_b*_a6_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:10-2-15 @atom:*_b*_a10_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a15_d*_i*
+ @angle:2-2-16 @atom:*_b*_a2_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a16_d*_i*
+ @angle:10-2-16 @atom:*_b*_a10_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a16_d*_i*
+ @angle:2-2-20 @atom:*_b*_a2_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:6-2-20 @atom:*_b*_a6_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:10-2-20 @atom:*_b*_a10_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:3-2-24 @atom:*_b*_a3_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:2-2-24 @atom:*_b*_a2_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:2-2-44 @atom:*_b*_a2_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:6-2-44 @atom:*_b*_a6_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:10-2-44 @atom:*_b*_a10_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:13-2-44 @atom:*_b*_a13_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:3-2-44 @atom:*_b*_a3_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:2-2-48 @atom:*_b*_a2_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:10-2-48 @atom:*_b*_a10_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:2-2-51 @atom:*_b*_a2_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a51_d*_i*
+ @angle:6-2-51 @atom:*_b*_a6_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a51_d*_i*
+ @angle:2-2-53 @atom:*_b*_a2_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a53_d*_i*
+ @angle:2-2-55 @atom:*_b*_a2_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a55_d*_i*
+ @angle:10-2-80 @atom:*_b*_a10_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a80_d*_i*
+ @angle:2-3-4 @atom:*_b*_a2_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a4_d*_i*
+ @angle:1-3-4 @atom:*_b*_a1_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a4_d*_i*
+ @angle:3-3-4 @atom:*_b*_a3_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a4_d*_i*
+ @angle:4-3-4 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a4_d*_i*
+ @angle:4-3-5 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a5_d*_i*
+ @angle:4-3-6 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:5-3-10 @atom:*_b*_a5_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:4-3-10 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:5-3-12 @atom:*_b*_a5_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a12_d*_i*
+ @angle:12-3-12 @atom:*_b*_a12_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a12_d*_i*
+ @angle:5-3-13 @atom:*_b*_a5_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:13-3-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:1-3-13 @atom:*_b*_a1_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:3-3-13 @atom:*_b*_a3_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:4-3-13 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:10-3-20 @atom:*_b*_a10_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:13-3-20 @atom:*_b*_a13_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:4-3-20 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:13-3-21 @atom:*_b*_a13_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a21_d*_i*
+ @angle:4-3-21 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a21_d*_i*
+ @angle:24-3-24 @atom:*_b*_a24_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:2-3-24 @atom:*_b*_a2_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:3-3-24 @atom:*_b*_a3_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:6-3-24 @atom:*_b*_a6_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:10-3-24 @atom:*_b*_a10_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:13-3-24 @atom:*_b*_a13_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:4-3-24 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:20-3-24 @atom:*_b*_a20_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:13-3-44 @atom:*_b*_a13_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:4-3-44 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:13-3-46 @atom:*_b*_a13_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:46-3-46 @atom:*_b*_a46_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:4-3-46 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:24-3-46 @atom:*_b*_a24_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:5-3-46 @atom:*_b*_a5_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:20-3-46 @atom:*_b*_a20_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:24-3-47 @atom:*_b*_a24_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:4-3-47 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:46-3-48 @atom:*_b*_a46_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:24-3-48 @atom:*_b*_a24_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-3-48 @atom:*_b*_a13_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:5-3-48 @atom:*_b*_a5_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:4-3-48 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:20-3-48 @atom:*_b*_a20_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:48-3-48 @atom:*_b*_a48_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-3-50 @atom:*_b*_a13_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:46-3-50 @atom:*_b*_a46_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:4-3-50 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:10-3-52 @atom:*_b*_a10_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a52_d*_i*
+ @angle:2-3-52 @atom:*_b*_a2_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a52_d*_i*
+ @angle:6-3-52 @atom:*_b*_a6_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a52_d*_i*
+ @angle:13-3-52 @atom:*_b*_a13_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a52_d*_i*
+ @angle:48-3-52 @atom:*_b*_a48_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a52_d*_i*
+ @angle:4-3-52 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a52_d*_i*
+ @angle:52-3-52 @atom:*_b*_a52_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a52_d*_i*
+ @angle:46-3-56 @atom:*_b*_a46_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:4-3-56 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:47-3-57 @atom:*_b*_a47_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:56-3-57 @atom:*_b*_a56_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:57-3-57 @atom:*_b*_a57_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:4-3-57 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:24-3-60 @atom:*_b*_a24_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:57-3-60 @atom:*_b*_a57_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:4-3-60 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:13-3-65 @atom:*_b*_a13_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a65_d*_i*
+ @angle:4-3-65 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a65_d*_i*
+ @angle:44-3-84 @atom:*_b*_a44_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:4-3-84 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:4-3-87 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:57-3-105 @atom:*_b*_a57_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:56-3-105 @atom:*_b*_a56_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:4-3-105 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:13-3-107 @atom:*_b*_a13_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a107_d*_i*
+ @angle:4-3-107 @atom:*_b*_a4_d*_i* @atom:*_b*_a3_d*_i* @atom:*_b*_a107_d*_i*
+ @angle:25-4-25 @atom:*_b*_a25_d*_i* @atom:*_b*_a4_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:3-4-25 @atom:*_b*_a3_d*_i* @atom:*_b*_a4_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:3-5-7 @atom:*_b*_a3_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a7_d*_i*
+ @angle:2-5-7 @atom:*_b*_a2_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a7_d*_i*
+ @angle:6-5-7 @atom:*_b*_a6_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a7_d*_i*
+ @angle:7-5-10 @atom:*_b*_a7_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:7-5-13 @atom:*_b*_a7_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:7-5-24 @atom:*_b*_a7_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:25-5-25 @atom:*_b*_a25_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:7-5-25 @atom:*_b*_a7_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:13-5-25 @atom:*_b*_a13_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:7-5-47 @atom:*_b*_a7_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:25-5-48 @atom:*_b*_a25_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:7-5-48 @atom:*_b*_a7_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:7-5-51 @atom:*_b*_a7_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a51_d*_i*
+ @angle:7-5-64 @atom:*_b*_a7_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a64_d*_i*
+ @angle:13-5-64 @atom:*_b*_a13_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a64_d*_i*
+ @angle:7-5-79 @atom:*_b*_a7_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a79_d*_i*
+ @angle:7-5-106 @atom:*_b*_a7_d*_i* @atom:*_b*_a5_d*_i* @atom:*_b*_a106_d*_i*
+ @angle:5-7-25 @atom:*_b*_a5_d*_i* @atom:*_b*_a7_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:25-7-25 @atom:*_b*_a25_d*_i* @atom:*_b*_a7_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:2-10-2 @atom:*_b*_a2_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a2_d*_i*
+ @angle:2-10-3 @atom:*_b*_a2_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a3_d*_i*
+ @angle:2-10-5 @atom:*_b*_a2_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a5_d*_i*
+ @angle:3-10-6 @atom:*_b*_a3_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:6-10-6 @atom:*_b*_a6_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:2-10-6 @atom:*_b*_a2_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:5-10-6 @atom:*_b*_a5_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:3-10-10 @atom:*_b*_a3_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:2-10-10 @atom:*_b*_a2_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:6-10-10 @atom:*_b*_a6_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:10-10-10 @atom:*_b*_a10_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:5-10-10 @atom:*_b*_a5_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:2-10-20 @atom:*_b*_a2_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:6-10-20 @atom:*_b*_a6_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:10-10-20 @atom:*_b*_a10_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:3-10-24 @atom:*_b*_a3_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:6-10-24 @atom:*_b*_a6_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:2-10-24 @atom:*_b*_a2_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:10-10-24 @atom:*_b*_a10_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:2-10-44 @atom:*_b*_a2_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:6-10-44 @atom:*_b*_a6_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:10-10-44 @atom:*_b*_a10_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:13-10-44 @atom:*_b*_a13_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:3-10-44 @atom:*_b*_a3_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:2-10-48 @atom:*_b*_a2_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:20-10-48 @atom:*_b*_a20_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:2-10-105 @atom:*_b*_a2_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:10-10-105 @atom:*_b*_a10_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:20-10-105 @atom:*_b*_a20_d*_i* @atom:*_b*_a10_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:2-11-2 @atom:*_b*_a2_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a2_d*_i*
+ @angle:2-11-6 @atom:*_b*_a2_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:6-11-6 @atom:*_b*_a6_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:2-11-9 @atom:*_b*_a2_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a9_d*_i*
+ @angle:6-11-9 @atom:*_b*_a6_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a9_d*_i*
+ @angle:9-11-10 @atom:*_b*_a9_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:2-11-10 @atom:*_b*_a2_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:6-11-10 @atom:*_b*_a6_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:10-11-10 @atom:*_b*_a10_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:2-11-11 @atom:*_b*_a2_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a11_d*_i*
+ @angle:6-11-11 @atom:*_b*_a6_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a11_d*_i*
+ @angle:9-11-11 @atom:*_b*_a9_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a11_d*_i*
+ @angle:10-11-11 @atom:*_b*_a10_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a11_d*_i*
+ @angle:11-11-11 @atom:*_b*_a11_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a11_d*_i*
+ @angle:9-11-13 @atom:*_b*_a9_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:11-11-13 @atom:*_b*_a11_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:2-11-13 @atom:*_b*_a2_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:6-11-13 @atom:*_b*_a6_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:10-11-13 @atom:*_b*_a10_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:13-11-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:9-11-14 @atom:*_b*_a9_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a14_d*_i*
+ @angle:11-11-14 @atom:*_b*_a11_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a14_d*_i*
+ @angle:9-11-79 @atom:*_b*_a9_d*_i* @atom:*_b*_a11_d*_i* @atom:*_b*_a79_d*_i*
+ @angle:2-12-12 @atom:*_b*_a2_d*_i* @atom:*_b*_a12_d*_i* @atom:*_b*_a12_d*_i*
+ @angle:3-12-12 @atom:*_b*_a3_d*_i* @atom:*_b*_a12_d*_i* @atom:*_b*_a12_d*_i*
+ @angle:12-12-12 @atom:*_b*_a12_d*_i* @atom:*_b*_a12_d*_i* @atom:*_b*_a12_d*_i*
+ @angle:12-12-48 @atom:*_b*_a12_d*_i* @atom:*_b*_a12_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:12-12-60 @atom:*_b*_a12_d*_i* @atom:*_b*_a12_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:12-12-81 @atom:*_b*_a12_d*_i* @atom:*_b*_a12_d*_i* @atom:*_b*_a81_d*_i*
+ @angle:1-13-1 @atom:*_b*_a1_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a1_d*_i*
+ @angle:2-13-2 @atom:*_b*_a2_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a2_d*_i*
+ @angle:1-13-3 @atom:*_b*_a1_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a3_d*_i*
+ @angle:2-13-3 @atom:*_b*_a2_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a3_d*_i*
+ @angle:3-13-3 @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a3_d*_i*
+ @angle:2-13-6 @atom:*_b*_a2_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:6-13-6 @atom:*_b*_a6_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:3-13-6 @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:1-13-13 @atom:*_b*_a1_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:5-13-13 @atom:*_b*_a5_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:13-13-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:3-13-13 @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:13-13-15 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a15_d*_i*
+ @angle:13-13-16 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a16_d*_i*
+ @angle:13-13-19 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a19_d*_i*
+ @angle:3-13-20 @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:13-13-20 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:3-13-21 @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a21_d*_i*
+ @angle:13-13-21 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a21_d*_i*
+ @angle:21-13-21 @atom:*_b*_a21_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a21_d*_i*
+ @angle:13-13-22 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a22_d*_i*
+ @angle:20-13-24 @atom:*_b*_a20_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:3-13-24 @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:2-13-24 @atom:*_b*_a2_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:13-13-24 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:16-13-44 @atom:*_b*_a16_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:2-13-44 @atom:*_b*_a2_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:6-13-44 @atom:*_b*_a6_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:10-13-44 @atom:*_b*_a10_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:13-13-44 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:3-13-44 @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:46-13-46 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:18-13-46 @atom:*_b*_a18_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:19-13-46 @atom:*_b*_a19_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:2-13-46 @atom:*_b*_a2_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:3-13-46 @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:5-13-46 @atom:*_b*_a5_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:15-13-46 @atom:*_b*_a15_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:16-13-46 @atom:*_b*_a16_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:20-13-46 @atom:*_b*_a20_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:22-13-46 @atom:*_b*_a22_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:24-13-46 @atom:*_b*_a24_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:44-13-46 @atom:*_b*_a44_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:13-13-46 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:1-13-46 @atom:*_b*_a1_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:21-13-46 @atom:*_b*_a21_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:1-13-47 @atom:*_b*_a1_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:13-13-47 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_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*
+ @angle:46-13-48 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:47-13-48 @atom:*_b*_a47_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:48-13-48 @atom:*_b*_a48_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:1-13-48 @atom:*_b*_a1_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:5-13-48 @atom:*_b*_a5_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:20-13-48 @atom:*_b*_a20_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:16-13-48 @atom:*_b*_a16_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:3-13-48 @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:2-13-48 @atom:*_b*_a2_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-13-48 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:44-13-48 @atom:*_b*_a44_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:46-13-50 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:46-13-51 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a51_d*_i*
+ @angle:5-13-51 @atom:*_b*_a5_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a51_d*_i*
+ @angle:13-13-51 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a51_d*_i*
+ @angle:46-13-53 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a53_d*_i*
+ @angle:3-13-53 @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a53_d*_i*
+ @angle:13-13-53 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a53_d*_i*
+ @angle:46-13-55 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a55_d*_i*
+ @angle:13-13-55 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a55_d*_i*
+ @angle:46-13-56 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:3-13-56 @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:13-13-56 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:46-13-57 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:48-13-57 @atom:*_b*_a48_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:46-13-60 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:13-13-60 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:46-13-64 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a64_d*_i*
+ @angle:13-13-64 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a64_d*_i*
+ @angle:48-13-64 @atom:*_b*_a48_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a64_d*_i*
+ @angle:46-13-65 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a65_d*_i*
+ @angle:3-13-65 @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a65_d*_i*
+ @angle:13-13-65 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a65_d*_i*
+ @angle:48-13-65 @atom:*_b*_a48_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a65_d*_i*
+ @angle:65-13-65 @atom:*_b*_a65_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a65_d*_i*
+ @angle:46-13-66 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a66_d*_i*
+ @angle:13-13-66 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a66_d*_i*
+ @angle:46-13-79 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a79_d*_i*
+ @angle:13-13-79 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a79_d*_i*
+ @angle:1-13-79 @atom:*_b*_a1_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a79_d*_i*
+ @angle:46-13-80 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a80_d*_i*
+ @angle:13-13-80 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a80_d*_i*
+ @angle:46-13-83 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a83_d*_i*
+ @angle:13-13-83 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a83_d*_i*
+ @angle:46-13-84 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:16-13-84 @atom:*_b*_a16_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:13-13-84 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:46-13-85 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a85_d*_i*
+ @angle:13-13-85 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a85_d*_i*
+ @angle:46-13-87 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:13-13-87 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:46-13-90 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a90_d*_i*
+ @angle:13-13-90 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a90_d*_i*
+ @angle:3-13-90 @atom:*_b*_a3_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a90_d*_i*
+ @angle:46-13-91 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:46-13-95 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a95_d*_i*
+ @angle:13-13-95 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a95_d*_i*
+ @angle:46-13-101 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a101_d*_i*
+ @angle:13-13-101 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a101_d*_i*
+ @angle:46-13-102 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a102_d*_i*
+ @angle:13-13-102 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a102_d*_i*
+ @angle:46-13-104 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a104_d*_i*
+ @angle:13-13-104 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a104_d*_i*
+ @angle:46-13-105 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:13-13-105 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:20-13-105 @atom:*_b*_a20_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:46-13-107 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a107_d*_i*
+ @angle:13-13-107 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a107_d*_i*
+ @angle:46-13-108 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a108_d*_i*
+ @angle:13-13-108 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a108_d*_i*
+ @angle:2-14-2 @atom:*_b*_a2_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a2_d*_i*
+ @angle:2-14-6 @atom:*_b*_a2_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:6-14-6 @atom:*_b*_a6_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:2-14-9 @atom:*_b*_a2_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a9_d*_i*
+ @angle:6-14-9 @atom:*_b*_a6_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a9_d*_i*
+ @angle:9-14-10 @atom:*_b*_a9_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:2-14-10 @atom:*_b*_a2_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:6-14-10 @atom:*_b*_a6_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:10-14-10 @atom:*_b*_a10_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:2-14-11 @atom:*_b*_a2_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a11_d*_i*
+ @angle:6-14-11 @atom:*_b*_a6_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a11_d*_i*
+ @angle:9-14-11 @atom:*_b*_a9_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a11_d*_i*
+ @angle:10-14-11 @atom:*_b*_a10_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a11_d*_i*
+ @angle:11-14-11 @atom:*_b*_a11_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a11_d*_i*
+ @angle:9-14-13 @atom:*_b*_a9_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:11-14-13 @atom:*_b*_a11_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:2-14-13 @atom:*_b*_a2_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:6-14-13 @atom:*_b*_a6_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:10-14-13 @atom:*_b*_a10_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:13-14-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:2-14-14 @atom:*_b*_a2_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a14_d*_i*
+ @angle:6-14-14 @atom:*_b*_a6_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a14_d*_i*
+ @angle:9-14-14 @atom:*_b*_a9_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a14_d*_i*
+ @angle:10-14-14 @atom:*_b*_a10_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a14_d*_i*
+ @angle:11-14-14 @atom:*_b*_a11_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a14_d*_i*
+ @angle:13-14-14 @atom:*_b*_a13_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a14_d*_i*
+ @angle:14-14-14 @atom:*_b*_a14_d*_i* @atom:*_b*_a14_d*_i* @atom:*_b*_a14_d*_i*
+ @angle:17-15-17 @atom:*_b*_a17_d*_i* @atom:*_b*_a15_d*_i* @atom:*_b*_a17_d*_i*
+ @angle:2-15-17 @atom:*_b*_a2_d*_i* @atom:*_b*_a15_d*_i* @atom:*_b*_a17_d*_i*
+ @angle:6-15-17 @atom:*_b*_a6_d*_i* @atom:*_b*_a15_d*_i* @atom:*_b*_a17_d*_i*
+ @angle:13-15-17 @atom:*_b*_a13_d*_i* @atom:*_b*_a15_d*_i* @atom:*_b*_a17_d*_i*
+ @angle:25-15-25 @atom:*_b*_a25_d*_i* @atom:*_b*_a15_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:13-15-25 @atom:*_b*_a13_d*_i* @atom:*_b*_a15_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:33-15-33 @atom:*_b*_a33_d*_i* @atom:*_b*_a15_d*_i* @atom:*_b*_a33_d*_i*
+ @angle:2-15-33 @atom:*_b*_a2_d*_i* @atom:*_b*_a15_d*_i* @atom:*_b*_a33_d*_i*
+ @angle:6-15-33 @atom:*_b*_a6_d*_i* @atom:*_b*_a15_d*_i* @atom:*_b*_a33_d*_i*
+ @angle:13-15-33 @atom:*_b*_a13_d*_i* @atom:*_b*_a15_d*_i* @atom:*_b*_a33_d*_i*
+ @angle:17-15-33 @atom:*_b*_a17_d*_i* @atom:*_b*_a15_d*_i* @atom:*_b*_a33_d*_i*
+ @angle:17-15-48 @atom:*_b*_a17_d*_i* @atom:*_b*_a15_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:2-16-6 @atom:*_b*_a2_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:13-16-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:2-16-16 @atom:*_b*_a2_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a16_d*_i*
+ @angle:6-16-16 @atom:*_b*_a6_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a16_d*_i*
+ @angle:13-16-16 @atom:*_b*_a13_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a16_d*_i*
+ @angle:13-16-19 @atom:*_b*_a13_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a19_d*_i*
+ @angle:25-16-25 @atom:*_b*_a25_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:13-16-25 @atom:*_b*_a13_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:33-16-33 @atom:*_b*_a33_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a33_d*_i*
+ @angle:2-16-33 @atom:*_b*_a2_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a33_d*_i*
+ @angle:6-16-33 @atom:*_b*_a6_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a33_d*_i*
+ @angle:13-16-33 @atom:*_b*_a13_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a33_d*_i*
+ @angle:16-16-33 @atom:*_b*_a16_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a33_d*_i*
+ @angle:13-16-48 @atom:*_b*_a13_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:47-16-48 @atom:*_b*_a47_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:24-16-60 @atom:*_b*_a24_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:25-16-61 @atom:*_b*_a25_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:25-16-82 @atom:*_b*_a25_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a82_d*_i*
+ @angle:60-16-82 @atom:*_b*_a60_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a82_d*_i*
+ @angle:25-16-84 @atom:*_b*_a25_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:82-16-84 @atom:*_b*_a82_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:60-16-84 @atom:*_b*_a60_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:84-16-84 @atom:*_b*_a84_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:13-16-91 @atom:*_b*_a13_d*_i* @atom:*_b*_a16_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:15-17-25 @atom:*_b*_a15_d*_i* @atom:*_b*_a17_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:25-17-25 @atom:*_b*_a25_d*_i* @atom:*_b*_a17_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:13-18-19 @atom:*_b*_a13_d*_i* @atom:*_b*_a18_d*_i* @atom:*_b*_a19_d*_i*
+ @angle:19-18-48 @atom:*_b*_a19_d*_i* @atom:*_b*_a18_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:18-18-56 @atom:*_b*_a18_d*_i* @atom:*_b*_a18_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:13-19-18 @atom:*_b*_a13_d*_i* @atom:*_b*_a19_d*_i* @atom:*_b*_a18_d*_i*
+ @angle:16-19-19 @atom:*_b*_a16_d*_i* @atom:*_b*_a19_d*_i* @atom:*_b*_a19_d*_i*
+ @angle:13-19-19 @atom:*_b*_a13_d*_i* @atom:*_b*_a19_d*_i* @atom:*_b*_a19_d*_i*
+ @angle:18-19-25 @atom:*_b*_a18_d*_i* @atom:*_b*_a19_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:19-19-46 @atom:*_b*_a19_d*_i* @atom:*_b*_a19_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:18-19-47 @atom:*_b*_a18_d*_i* @atom:*_b*_a19_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:19-19-47 @atom:*_b*_a19_d*_i* @atom:*_b*_a19_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:18-19-48 @atom:*_b*_a18_d*_i* @atom:*_b*_a19_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:19-19-48 @atom:*_b*_a19_d*_i* @atom:*_b*_a19_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:19-19-50 @atom:*_b*_a19_d*_i* @atom:*_b*_a19_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:18-19-55 @atom:*_b*_a18_d*_i* @atom:*_b*_a19_d*_i* @atom:*_b*_a55_d*_i*
+ @angle:18-19-88 @atom:*_b*_a18_d*_i* @atom:*_b*_a19_d*_i* @atom:*_b*_a88_d*_i*
+ @angle:2-20-2 @atom:*_b*_a2_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a2_d*_i*
+ @angle:2-20-3 @atom:*_b*_a2_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a3_d*_i*
+ @angle:3-20-6 @atom:*_b*_a3_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:2-20-6 @atom:*_b*_a2_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:2-20-7 @atom:*_b*_a2_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a7_d*_i*
+ @angle:7-20-10 @atom:*_b*_a7_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:3-20-10 @atom:*_b*_a3_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:10-20-10 @atom:*_b*_a10_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:13-20-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:3-20-13 @atom:*_b*_a3_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:25-20-25 @atom:*_b*_a25_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:13-20-25 @atom:*_b*_a13_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:13-20-47 @atom:*_b*_a13_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:25-20-48 @atom:*_b*_a25_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-20-48 @atom:*_b*_a13_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:47-20-48 @atom:*_b*_a47_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:48-20-48 @atom:*_b*_a48_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:3-20-48 @atom:*_b*_a3_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:2-20-48 @atom:*_b*_a2_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-20-51 @atom:*_b*_a13_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a51_d*_i*
+ @angle:2-20-51 @atom:*_b*_a2_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a51_d*_i*
+ @angle:6-20-51 @atom:*_b*_a6_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a51_d*_i*
+ @angle:10-20-51 @atom:*_b*_a10_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a51_d*_i*
+ @angle:24-20-60 @atom:*_b*_a24_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:25-20-61 @atom:*_b*_a25_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:2-20-64 @atom:*_b*_a2_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a64_d*_i*
+ @angle:6-20-64 @atom:*_b*_a6_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a64_d*_i*
+ @angle:10-20-64 @atom:*_b*_a10_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a64_d*_i*
+ @angle:13-20-64 @atom:*_b*_a13_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a64_d*_i*
+ @angle:48-20-64 @atom:*_b*_a48_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a64_d*_i*
+ @angle:64-20-64 @atom:*_b*_a64_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a64_d*_i*
+ @angle:25-20-82 @atom:*_b*_a25_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a82_d*_i*
+ @angle:60-20-82 @atom:*_b*_a60_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a82_d*_i*
+ @angle:82-20-82 @atom:*_b*_a82_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a82_d*_i*
+ @angle:25-20-84 @atom:*_b*_a25_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:82-20-84 @atom:*_b*_a82_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:60-20-84 @atom:*_b*_a60_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:84-20-84 @atom:*_b*_a84_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:61-20-84 @atom:*_b*_a61_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:108-20-108 @atom:*_b*_a108_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a108_d*_i*
+ @angle:13-20-108 @atom:*_b*_a13_d*_i* @atom:*_b*_a20_d*_i* @atom:*_b*_a108_d*_i*
+ @angle:25-21-25 @atom:*_b*_a25_d*_i* @atom:*_b*_a21_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:13-22-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a22_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:13-22-23 @atom:*_b*_a13_d*_i* @atom:*_b*_a22_d*_i* @atom:*_b*_a23_d*_i*
+ @angle:23-22-25 @atom:*_b*_a23_d*_i* @atom:*_b*_a22_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:2-24-3 @atom:*_b*_a2_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a3_d*_i*
+ @angle:3-24-3 @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a3_d*_i*
+ @angle:3-24-5 @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a5_d*_i*
+ @angle:2-24-6 @atom:*_b*_a2_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:3-24-6 @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:2-24-10 @atom:*_b*_a2_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:3-24-10 @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:13-24-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:3-24-13 @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:3-24-16 @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a16_d*_i*
+ @angle:3-24-20 @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:3-24-25 @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:25-24-45 @atom:*_b*_a25_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:5-24-45 @atom:*_b*_a5_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:3-24-45 @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:45-24-45 @atom:*_b*_a45_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:2-24-45 @atom:*_b*_a2_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:6-24-45 @atom:*_b*_a6_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:10-24-45 @atom:*_b*_a10_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:13-24-45 @atom:*_b*_a13_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:45-24-48 @atom:*_b*_a45_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-24-48 @atom:*_b*_a13_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:3-24-48 @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:48-24-48 @atom:*_b*_a48_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:54-24-54 @atom:*_b*_a54_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a54_d*_i*
+ @angle:45-24-59 @atom:*_b*_a45_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a59_d*_i*
+ @angle:3-24-59 @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a59_d*_i*
+ @angle:13-24-79 @atom:*_b*_a13_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a79_d*_i*
+ @angle:45-24-79 @atom:*_b*_a45_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a79_d*_i*
+ @angle:45-24-84 @atom:*_b*_a45_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:48-24-84 @atom:*_b*_a48_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:16-24-86 @atom:*_b*_a16_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a86_d*_i*
+ @angle:45-24-87 @atom:*_b*_a45_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:48-24-87 @atom:*_b*_a48_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:45-24-88 @atom:*_b*_a45_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a88_d*_i*
+ @angle:48-24-88 @atom:*_b*_a48_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a88_d*_i*
+ @angle:45-24-91 @atom:*_b*_a45_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:3-24-91 @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:48-24-103 @atom:*_b*_a48_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a103_d*_i*
+ @angle:3-24-106 @atom:*_b*_a3_d*_i* @atom:*_b*_a24_d*_i* @atom:*_b*_a106_d*_i*
+ @angle:25-25-25 @atom:*_b*_a25_d*_i* @atom:*_b*_a25_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:32-31-32 @atom:*_b*_a32_d*_i* @atom:*_b*_a31_d*_i* @atom:*_b*_a32_d*_i*
+ @angle:32-31-33 @atom:*_b*_a32_d*_i* @atom:*_b*_a31_d*_i* @atom:*_b*_a33_d*_i*
+ @angle:35-34-35 @atom:*_b*_a35_d*_i* @atom:*_b*_a34_d*_i* @atom:*_b*_a35_d*_i*
+ @angle:37-36-37 @atom:*_b*_a37_d*_i* @atom:*_b*_a36_d*_i* @atom:*_b*_a37_d*_i*
+ @angle:37-36-38 @atom:*_b*_a37_d*_i* @atom:*_b*_a36_d*_i* @atom:*_b*_a38_d*_i*
+ @angle:40-39-40 @atom:*_b*_a40_d*_i* @atom:*_b*_a39_d*_i* @atom:*_b*_a40_d*_i*
+ @angle:41-39-41 @atom:*_b*_a41_d*_i* @atom:*_b*_a39_d*_i* @atom:*_b*_a41_d*_i*
+ @angle:40-39-41 @atom:*_b*_a40_d*_i* @atom:*_b*_a39_d*_i* @atom:*_b*_a41_d*_i*
+ @angle:43-42-43 @atom:*_b*_a43_d*_i* @atom:*_b*_a42_d*_i* @atom:*_b*_a43_d*_i*
+ @angle:2-44-2 @atom:*_b*_a2_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a2_d*_i*
+ @angle:2-44-6 @atom:*_b*_a2_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:6-44-6 @atom:*_b*_a6_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:2-44-10 @atom:*_b*_a2_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:6-44-10 @atom:*_b*_a6_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:10-44-10 @atom:*_b*_a10_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:2-44-13 @atom:*_b*_a2_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:6-44-13 @atom:*_b*_a6_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:10-44-13 @atom:*_b*_a10_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:13-44-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:3-44-13 @atom:*_b*_a3_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:25-44-45 @atom:*_b*_a25_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:13-44-45 @atom:*_b*_a13_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:2-44-45 @atom:*_b*_a2_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:6-44-45 @atom:*_b*_a6_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:10-44-45 @atom:*_b*_a10_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:45-44-45 @atom:*_b*_a45_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:25-44-48 @atom:*_b*_a25_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:45-44-48 @atom:*_b*_a45_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-44-48 @atom:*_b*_a13_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:48-44-48 @atom:*_b*_a48_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:3-44-48 @atom:*_b*_a3_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:45-44-79 @atom:*_b*_a45_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a79_d*_i*
+ @angle:13-44-79 @atom:*_b*_a13_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a79_d*_i*
+ @angle:48-44-79 @atom:*_b*_a48_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a79_d*_i*
+ @angle:48-44-91 @atom:*_b*_a48_d*_i* @atom:*_b*_a44_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:25-45-25 @atom:*_b*_a25_d*_i* @atom:*_b*_a45_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:25-45-44 @atom:*_b*_a25_d*_i* @atom:*_b*_a45_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:25-46-25 @atom:*_b*_a25_d*_i* @atom:*_b*_a46_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:13-46-25 @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:1-47-1 @atom:*_b*_a1_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a1_d*_i*
+ @angle:1-47-3 @atom:*_b*_a1_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a3_d*_i*
+ @angle:3-47-6 @atom:*_b*_a3_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:3-47-13 @atom:*_b*_a3_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:13-47-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:25-47-46 @atom:*_b*_a25_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:20-47-46 @atom:*_b*_a20_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:13-47-46 @atom:*_b*_a13_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:46-47-46 @atom:*_b*_a46_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:3-47-46 @atom:*_b*_a3_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:19-47-46 @atom:*_b*_a19_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:1-47-46 @atom:*_b*_a1_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:21-47-46 @atom:*_b*_a21_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:25-47-47 @atom:*_b*_a25_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:46-47-47 @atom:*_b*_a46_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:5-47-47 @atom:*_b*_a5_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:20-47-47 @atom:*_b*_a20_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:13-47-47 @atom:*_b*_a13_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:19-47-47 @atom:*_b*_a19_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:21-47-47 @atom:*_b*_a21_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:1-47-47 @atom:*_b*_a1_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:16-47-47 @atom:*_b*_a16_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:3-47-47 @atom:*_b*_a3_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:46-47-48 @atom:*_b*_a46_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:47-47-48 @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-47-48 @atom:*_b*_a13_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:25-47-50 @atom:*_b*_a25_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:46-47-50 @atom:*_b*_a46_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:5-47-50 @atom:*_b*_a5_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:20-47-50 @atom:*_b*_a20_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:13-47-50 @atom:*_b*_a13_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:46-47-57 @atom:*_b*_a46_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:13-47-57 @atom:*_b*_a13_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:20-47-57 @atom:*_b*_a20_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:47-47-57 @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:16-47-57 @atom:*_b*_a16_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:57-47-58 @atom:*_b*_a57_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a58_d*_i*
+ @angle:47-47-58 @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a58_d*_i*
+ @angle:46-47-65 @atom:*_b*_a46_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a65_d*_i*
+ @angle:47-47-65 @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a65_d*_i*
+ @angle:46-47-91 @atom:*_b*_a46_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:3-47-91 @atom:*_b*_a3_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:47-47-91 @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:46-47-105 @atom:*_b*_a46_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:58-47-105 @atom:*_b*_a58_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:13-47-105 @atom:*_b*_a13_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:20-47-105 @atom:*_b*_a20_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:47-47-105 @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:16-47-105 @atom:*_b*_a16_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:46-47-110 @atom:*_b*_a46_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a110_d*_i*
+ @angle:13-47-110 @atom:*_b*_a13_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a110_d*_i*
+ @angle:48-47-110 @atom:*_b*_a48_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a110_d*_i*
+ @angle:1-47-110 @atom:*_b*_a1_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a110_d*_i*
+ @angle:2-48-12 @atom:*_b*_a2_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a12_d*_i*
+ @angle:12-48-12 @atom:*_b*_a12_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a12_d*_i*
+ @angle:3-48-13 @atom:*_b*_a3_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:25-48-48 @atom:*_b*_a25_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:48-48-48 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:2-48-48 @atom:*_b*_a2_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:5-48-48 @atom:*_b*_a5_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:10-48-48 @atom:*_b*_a10_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-48-48 @atom:*_b*_a13_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:15-48-48 @atom:*_b*_a15_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:19-48-48 @atom:*_b*_a19_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:20-48-48 @atom:*_b*_a20_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:24-48-48 @atom:*_b*_a24_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:44-48-48 @atom:*_b*_a44_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:47-48-48 @atom:*_b*_a47_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:21-48-48 @atom:*_b*_a21_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:1-48-48 @atom:*_b*_a1_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:18-48-48 @atom:*_b*_a18_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:16-48-48 @atom:*_b*_a16_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:3-48-48 @atom:*_b*_a3_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:25-48-49 @atom:*_b*_a25_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a49_d*_i*
+ @angle:24-48-49 @atom:*_b*_a24_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a49_d*_i*
+ @angle:3-48-49 @atom:*_b*_a3_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a49_d*_i*
+ @angle:48-48-49 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a49_d*_i*
+ @angle:48-48-50 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:48-48-53 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a53_d*_i*
+ @angle:55-48-55 @atom:*_b*_a55_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a55_d*_i*
+ @angle:47-48-55 @atom:*_b*_a47_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a55_d*_i*
+ @angle:48-48-55 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a55_d*_i*
+ @angle:49-48-56 @atom:*_b*_a49_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:13-48-56 @atom:*_b*_a13_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:44-48-56 @atom:*_b*_a44_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:55-48-56 @atom:*_b*_a55_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:5-48-56 @atom:*_b*_a5_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:47-48-56 @atom:*_b*_a47_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:50-48-56 @atom:*_b*_a50_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:48-48-56 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:21-48-56 @atom:*_b*_a21_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:49-48-57 @atom:*_b*_a49_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:48-48-57 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:55-48-57 @atom:*_b*_a55_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:13-48-57 @atom:*_b*_a13_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:47-48-57 @atom:*_b*_a47_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:56-48-57 @atom:*_b*_a56_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:49-48-60 @atom:*_b*_a49_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:48-48-60 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:57-48-60 @atom:*_b*_a57_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:56-48-60 @atom:*_b*_a56_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:55-48-60 @atom:*_b*_a55_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:2-48-60 @atom:*_b*_a2_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:13-48-60 @atom:*_b*_a13_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:49-48-61 @atom:*_b*_a49_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:48-48-61 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:57-48-61 @atom:*_b*_a57_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:48-48-64 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a64_d*_i*
+ @angle:48-48-65 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a65_d*_i*
+ @angle:48-48-66 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a66_d*_i*
+ @angle:48-48-79 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a79_d*_i*
+ @angle:49-48-81 @atom:*_b*_a49_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a81_d*_i*
+ @angle:48-48-81 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a81_d*_i*
+ @angle:49-48-84 @atom:*_b*_a49_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:60-48-84 @atom:*_b*_a60_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:48-48-84 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:49-48-86 @atom:*_b*_a49_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a86_d*_i*
+ @angle:48-48-86 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a86_d*_i*
+ @angle:56-48-86 @atom:*_b*_a56_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a86_d*_i*
+ @angle:49-48-88 @atom:*_b*_a49_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a88_d*_i*
+ @angle:101-48-101 @atom:*_b*_a101_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a101_d*_i*
+ @angle:56-48-101 @atom:*_b*_a56_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a101_d*_i*
+ @angle:48-48-102 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a102_d*_i*
+ @angle:48-48-109 @atom:*_b*_a48_d*_i* @atom:*_b*_a48_d*_i* @atom:*_b*_a109_d*_i*
+ @angle:25-50-46 @atom:*_b*_a25_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:19-50-46 @atom:*_b*_a19_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:25-50-47 @atom:*_b*_a25_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:46-50-47 @atom:*_b*_a46_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:3-50-47 @atom:*_b*_a3_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:13-50-47 @atom:*_b*_a13_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:46-50-48 @atom:*_b*_a46_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:47-50-48 @atom:*_b*_a47_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:25-50-50 @atom:*_b*_a25_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:46-50-50 @atom:*_b*_a46_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:13-50-50 @atom:*_b*_a13_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:47-50-50 @atom:*_b*_a47_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:50-50-84 @atom:*_b*_a50_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:46-50-84 @atom:*_b*_a46_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:46-50-109 @atom:*_b*_a46_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a109_d*_i*
+ @angle:13-50-109 @atom:*_b*_a13_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a109_d*_i*
+ @angle:47-50-109 @atom:*_b*_a47_d*_i* @atom:*_b*_a50_d*_i* @atom:*_b*_a109_d*_i*
+ @angle:6-51-6 @atom:*_b*_a6_d*_i* @atom:*_b*_a51_d*_i* @atom:*_b*_a6_d*_i*
+ @angle:5-51-13 @atom:*_b*_a5_d*_i* @atom:*_b*_a51_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:13-51-20 @atom:*_b*_a13_d*_i* @atom:*_b*_a51_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:2-51-20 @atom:*_b*_a2_d*_i* @atom:*_b*_a51_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:6-51-20 @atom:*_b*_a6_d*_i* @atom:*_b*_a51_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:5-51-20 @atom:*_b*_a5_d*_i* @atom:*_b*_a51_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:20-51-20 @atom:*_b*_a20_d*_i* @atom:*_b*_a51_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:46-51-46 @atom:*_b*_a46_d*_i* @atom:*_b*_a51_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:5-51-46 @atom:*_b*_a5_d*_i* @atom:*_b*_a51_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:20-51-46 @atom:*_b*_a20_d*_i* @atom:*_b*_a51_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:13-51-46 @atom:*_b*_a13_d*_i* @atom:*_b*_a51_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:46-51-105 @atom:*_b*_a46_d*_i* @atom:*_b*_a51_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:13-51-105 @atom:*_b*_a13_d*_i* @atom:*_b*_a51_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:20-51-105 @atom:*_b*_a20_d*_i* @atom:*_b*_a51_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:13-53-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a53_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:13-53-25 @atom:*_b*_a13_d*_i* @atom:*_b*_a53_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:45-53-45 @atom:*_b*_a45_d*_i* @atom:*_b*_a53_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:25-53-48 @atom:*_b*_a25_d*_i* @atom:*_b*_a53_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-53-48 @atom:*_b*_a13_d*_i* @atom:*_b*_a53_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:2-53-54 @atom:*_b*_a2_d*_i* @atom:*_b*_a53_d*_i* @atom:*_b*_a54_d*_i*
+ @angle:6-53-54 @atom:*_b*_a6_d*_i* @atom:*_b*_a53_d*_i* @atom:*_b*_a54_d*_i*
+ @angle:13-53-54 @atom:*_b*_a13_d*_i* @atom:*_b*_a53_d*_i* @atom:*_b*_a54_d*_i*
+ @angle:48-53-54 @atom:*_b*_a48_d*_i* @atom:*_b*_a53_d*_i* @atom:*_b*_a54_d*_i*
+ @angle:54-53-54 @atom:*_b*_a54_d*_i* @atom:*_b*_a53_d*_i* @atom:*_b*_a54_d*_i*
+ @angle:25-53-82 @atom:*_b*_a25_d*_i* @atom:*_b*_a53_d*_i* @atom:*_b*_a82_d*_i*
+ @angle:13-55-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a55_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:45-55-45 @atom:*_b*_a45_d*_i* @atom:*_b*_a55_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:13-55-45 @atom:*_b*_a13_d*_i* @atom:*_b*_a55_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:45-55-48 @atom:*_b*_a45_d*_i* @atom:*_b*_a55_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:2-55-48 @atom:*_b*_a2_d*_i* @atom:*_b*_a55_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:6-55-48 @atom:*_b*_a6_d*_i* @atom:*_b*_a55_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-55-48 @atom:*_b*_a13_d*_i* @atom:*_b*_a55_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:2-55-54 @atom:*_b*_a2_d*_i* @atom:*_b*_a55_d*_i* @atom:*_b*_a54_d*_i*
+ @angle:13-55-54 @atom:*_b*_a13_d*_i* @atom:*_b*_a55_d*_i* @atom:*_b*_a54_d*_i*
+ @angle:48-55-54 @atom:*_b*_a48_d*_i* @atom:*_b*_a55_d*_i* @atom:*_b*_a54_d*_i*
+ @angle:54-55-54 @atom:*_b*_a54_d*_i* @atom:*_b*_a55_d*_i* @atom:*_b*_a54_d*_i*
+ @angle:45-55-59 @atom:*_b*_a45_d*_i* @atom:*_b*_a55_d*_i* @atom:*_b*_a59_d*_i*
+ @angle:3-56-13 @atom:*_b*_a3_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:13-56-18 @atom:*_b*_a13_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a18_d*_i*
+ @angle:25-56-48 @atom:*_b*_a25_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:45-56-48 @atom:*_b*_a45_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-56-48 @atom:*_b*_a13_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:48-56-48 @atom:*_b*_a48_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:3-56-48 @atom:*_b*_a3_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-56-56 @atom:*_b*_a13_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:48-56-56 @atom:*_b*_a48_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:25-56-59 @atom:*_b*_a25_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a59_d*_i*
+ @angle:48-56-59 @atom:*_b*_a48_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a59_d*_i*
+ @angle:59-56-59 @atom:*_b*_a59_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a59_d*_i*
+ @angle:59-56-60 @atom:*_b*_a59_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:48-56-60 @atom:*_b*_a48_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:59-56-82 @atom:*_b*_a59_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a82_d*_i*
+ @angle:48-56-86 @atom:*_b*_a48_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a86_d*_i*
+ @angle:13-56-103 @atom:*_b*_a13_d*_i* @atom:*_b*_a56_d*_i* @atom:*_b*_a103_d*_i*
+ @angle:3-57-3 @atom:*_b*_a3_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a3_d*_i*
+ @angle:3-57-45 @atom:*_b*_a3_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:45-57-47 @atom:*_b*_a45_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:3-57-47 @atom:*_b*_a3_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:45-57-48 @atom:*_b*_a45_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:3-57-48 @atom:*_b*_a3_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:48-57-48 @atom:*_b*_a48_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:45-57-60 @atom:*_b*_a45_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:13-57-60 @atom:*_b*_a13_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:60-57-61 @atom:*_b*_a60_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:45-57-61 @atom:*_b*_a45_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:13-57-61 @atom:*_b*_a13_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:48-57-61 @atom:*_b*_a48_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:45-57-62 @atom:*_b*_a45_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a62_d*_i*
+ @angle:60-57-62 @atom:*_b*_a60_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a62_d*_i*
+ @angle:48-57-62 @atom:*_b*_a48_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a62_d*_i*
+ @angle:13-57-62 @atom:*_b*_a13_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a62_d*_i*
+ @angle:45-57-81 @atom:*_b*_a45_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a81_d*_i*
+ @angle:45-57-82 @atom:*_b*_a45_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a82_d*_i*
+ @angle:61-57-82 @atom:*_b*_a61_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a82_d*_i*
+ @angle:60-57-82 @atom:*_b*_a60_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a82_d*_i*
+ @angle:45-57-84 @atom:*_b*_a45_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:61-57-84 @atom:*_b*_a61_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:60-57-84 @atom:*_b*_a60_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:82-57-84 @atom:*_b*_a82_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:84-57-84 @atom:*_b*_a84_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:81-57-84 @atom:*_b*_a81_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:45-57-85 @atom:*_b*_a45_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a85_d*_i*
+ @angle:82-57-85 @atom:*_b*_a82_d*_i* @atom:*_b*_a57_d*_i* @atom:*_b*_a85_d*_i*
+ @angle:24-59-55 @atom:*_b*_a24_d*_i* @atom:*_b*_a59_d*_i* @atom:*_b*_a55_d*_i*
+ @angle:49-59-56 @atom:*_b*_a49_d*_i* @atom:*_b*_a59_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:13-59-56 @atom:*_b*_a13_d*_i* @atom:*_b*_a59_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:55-59-56 @atom:*_b*_a55_d*_i* @atom:*_b*_a59_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:24-59-56 @atom:*_b*_a24_d*_i* @atom:*_b*_a59_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:56-59-56 @atom:*_b*_a56_d*_i* @atom:*_b*_a59_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:56-59-63 @atom:*_b*_a56_d*_i* @atom:*_b*_a59_d*_i* @atom:*_b*_a63_d*_i*
+ @angle:13-60-48 @atom:*_b*_a13_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:48-60-48 @atom:*_b*_a48_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:56-60-57 @atom:*_b*_a56_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:57-60-60 @atom:*_b*_a57_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:20-60-60 @atom:*_b*_a20_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:16-60-60 @atom:*_b*_a16_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:13-60-60 @atom:*_b*_a13_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:24-60-60 @atom:*_b*_a24_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:56-60-60 @atom:*_b*_a56_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:48-60-60 @atom:*_b*_a48_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:3-60-60 @atom:*_b*_a3_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:60-60-61 @atom:*_b*_a60_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:24-60-61 @atom:*_b*_a24_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:3-60-61 @atom:*_b*_a3_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:48-60-61 @atom:*_b*_a48_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:12-60-80 @atom:*_b*_a12_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a80_d*_i*
+ @angle:48-60-80 @atom:*_b*_a48_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a80_d*_i*
+ @angle:80-60-81 @atom:*_b*_a80_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a81_d*_i*
+ @angle:12-60-81 @atom:*_b*_a12_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a81_d*_i*
+ @angle:48-60-81 @atom:*_b*_a48_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a81_d*_i*
+ @angle:3-60-84 @atom:*_b*_a3_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:60-60-87 @atom:*_b*_a60_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:57-60-87 @atom:*_b*_a57_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:81-60-87 @atom:*_b*_a81_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:12-60-87 @atom:*_b*_a12_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:48-60-87 @atom:*_b*_a48_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:60-60-105 @atom:*_b*_a60_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:56-60-105 @atom:*_b*_a56_d*_i* @atom:*_b*_a60_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:48-61-48 @atom:*_b*_a48_d*_i* @atom:*_b*_a61_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:25-61-57 @atom:*_b*_a25_d*_i* @atom:*_b*_a61_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:25-61-61 @atom:*_b*_a25_d*_i* @atom:*_b*_a61_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:60-61-62 @atom:*_b*_a60_d*_i* @atom:*_b*_a61_d*_i* @atom:*_b*_a62_d*_i*
+ @angle:25-61-82 @atom:*_b*_a25_d*_i* @atom:*_b*_a61_d*_i* @atom:*_b*_a82_d*_i*
+ @angle:61-61-82 @atom:*_b*_a61_d*_i* @atom:*_b*_a61_d*_i* @atom:*_b*_a82_d*_i*
+ @angle:60-61-82 @atom:*_b*_a60_d*_i* @atom:*_b*_a61_d*_i* @atom:*_b*_a82_d*_i*
+ @angle:82-61-83 @atom:*_b*_a82_d*_i* @atom:*_b*_a61_d*_i* @atom:*_b*_a83_d*_i*
+ @angle:57-61-84 @atom:*_b*_a57_d*_i* @atom:*_b*_a61_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:82-61-84 @atom:*_b*_a82_d*_i* @atom:*_b*_a61_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:57-61-88 @atom:*_b*_a57_d*_i* @atom:*_b*_a61_d*_i* @atom:*_b*_a88_d*_i*
+ @angle:20-61-88 @atom:*_b*_a20_d*_i* @atom:*_b*_a61_d*_i* @atom:*_b*_a88_d*_i*
+ @angle:49-62-57 @atom:*_b*_a49_d*_i* @atom:*_b*_a62_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:49-62-61 @atom:*_b*_a49_d*_i* @atom:*_b*_a62_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:57-62-61 @atom:*_b*_a57_d*_i* @atom:*_b*_a62_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:57-62-63 @atom:*_b*_a57_d*_i* @atom:*_b*_a62_d*_i* @atom:*_b*_a63_d*_i*
+ @angle:61-62-63 @atom:*_b*_a61_d*_i* @atom:*_b*_a62_d*_i* @atom:*_b*_a63_d*_i*
+ @angle:49-62-105 @atom:*_b*_a49_d*_i* @atom:*_b*_a62_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:63-62-105 @atom:*_b*_a63_d*_i* @atom:*_b*_a62_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:61-62-105 @atom:*_b*_a61_d*_i* @atom:*_b*_a62_d*_i* @atom:*_b*_a105_d*_i*
+ @angle:5-64-5 @atom:*_b*_a5_d*_i* @atom:*_b*_a64_d*_i* @atom:*_b*_a5_d*_i*
+ @angle:4-64-5 @atom:*_b*_a4_d*_i* @atom:*_b*_a64_d*_i* @atom:*_b*_a5_d*_i*
+ @angle:4-64-13 @atom:*_b*_a4_d*_i* @atom:*_b*_a64_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:5-64-20 @atom:*_b*_a5_d*_i* @atom:*_b*_a64_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:20-64-20 @atom:*_b*_a20_d*_i* @atom:*_b*_a64_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:13-64-20 @atom:*_b*_a13_d*_i* @atom:*_b*_a64_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:4-64-20 @atom:*_b*_a4_d*_i* @atom:*_b*_a64_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:4-64-48 @atom:*_b*_a4_d*_i* @atom:*_b*_a64_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:5-64-48 @atom:*_b*_a5_d*_i* @atom:*_b*_a64_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:20-64-48 @atom:*_b*_a20_d*_i* @atom:*_b*_a64_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:5-64-52 @atom:*_b*_a5_d*_i* @atom:*_b*_a64_d*_i* @atom:*_b*_a52_d*_i*
+ @angle:13-64-52 @atom:*_b*_a13_d*_i* @atom:*_b*_a64_d*_i* @atom:*_b*_a52_d*_i*
+ @angle:20-64-52 @atom:*_b*_a20_d*_i* @atom:*_b*_a64_d*_i* @atom:*_b*_a52_d*_i*
+ @angle:52-64-52 @atom:*_b*_a52_d*_i* @atom:*_b*_a64_d*_i* @atom:*_b*_a52_d*_i*
+ @angle:25-65-25 @atom:*_b*_a25_d*_i* @atom:*_b*_a65_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:25-66-25 @atom:*_b*_a25_d*_i* @atom:*_b*_a66_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:78-77-78 @atom:*_b*_a78_d*_i* @atom:*_b*_a77_d*_i* @atom:*_b*_a78_d*_i*
+ @angle:6-79-11 @atom:*_b*_a6_d*_i* @atom:*_b*_a79_d*_i* @atom:*_b*_a11_d*_i*
+ @angle:13-79-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a79_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:5-79-13 @atom:*_b*_a5_d*_i* @atom:*_b*_a79_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:5-79-23 @atom:*_b*_a5_d*_i* @atom:*_b*_a79_d*_i* @atom:*_b*_a23_d*_i*
+ @angle:13-79-23 @atom:*_b*_a13_d*_i* @atom:*_b*_a79_d*_i* @atom:*_b*_a23_d*_i*
+ @angle:23-79-23 @atom:*_b*_a23_d*_i* @atom:*_b*_a79_d*_i* @atom:*_b*_a23_d*_i*
+ @angle:13-79-24 @atom:*_b*_a13_d*_i* @atom:*_b*_a79_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:23-79-24 @atom:*_b*_a23_d*_i* @atom:*_b*_a79_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:13-79-44 @atom:*_b*_a13_d*_i* @atom:*_b*_a79_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:23-79-44 @atom:*_b*_a23_d*_i* @atom:*_b*_a79_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:13-79-48 @atom:*_b*_a13_d*_i* @atom:*_b*_a79_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:23-79-48 @atom:*_b*_a23_d*_i* @atom:*_b*_a79_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:5-79-48 @atom:*_b*_a5_d*_i* @atom:*_b*_a79_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:24-79-48 @atom:*_b*_a24_d*_i* @atom:*_b*_a79_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-79-82 @atom:*_b*_a13_d*_i* @atom:*_b*_a79_d*_i* @atom:*_b*_a82_d*_i*
+ @angle:46-80-60 @atom:*_b*_a46_d*_i* @atom:*_b*_a80_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:2-80-60 @atom:*_b*_a2_d*_i* @atom:*_b*_a80_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:13-80-60 @atom:*_b*_a13_d*_i* @atom:*_b*_a80_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:46-80-84 @atom:*_b*_a46_d*_i* @atom:*_b*_a80_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:2-80-84 @atom:*_b*_a2_d*_i* @atom:*_b*_a80_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:13-80-84 @atom:*_b*_a13_d*_i* @atom:*_b*_a80_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:60-80-84 @atom:*_b*_a60_d*_i* @atom:*_b*_a80_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:12-81-57 @atom:*_b*_a12_d*_i* @atom:*_b*_a81_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:48-81-57 @atom:*_b*_a48_d*_i* @atom:*_b*_a81_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:57-81-60 @atom:*_b*_a57_d*_i* @atom:*_b*_a81_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:12-81-60 @atom:*_b*_a12_d*_i* @atom:*_b*_a81_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:48-81-60 @atom:*_b*_a48_d*_i* @atom:*_b*_a81_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:13-82-16 @atom:*_b*_a13_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a16_d*_i*
+ @angle:16-82-24 @atom:*_b*_a16_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:16-82-44 @atom:*_b*_a16_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a44_d*_i*
+ @angle:20-82-49 @atom:*_b*_a20_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a49_d*_i*
+ @angle:16-82-49 @atom:*_b*_a16_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a49_d*_i*
+ @angle:49-82-57 @atom:*_b*_a49_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:57-82-57 @atom:*_b*_a57_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:13-82-57 @atom:*_b*_a13_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:48-82-57 @atom:*_b*_a48_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:56-82-57 @atom:*_b*_a56_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:49-82-61 @atom:*_b*_a49_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:16-82-61 @atom:*_b*_a16_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:20-82-61 @atom:*_b*_a20_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:57-82-61 @atom:*_b*_a57_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:13-82-61 @atom:*_b*_a13_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:44-82-61 @atom:*_b*_a44_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:24-82-61 @atom:*_b*_a24_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:57-82-79 @atom:*_b*_a57_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a79_d*_i*
+ @angle:61-82-79 @atom:*_b*_a61_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a79_d*_i*
+ @angle:20-82-86 @atom:*_b*_a20_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a86_d*_i*
+ @angle:61-82-86 @atom:*_b*_a61_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a86_d*_i*
+ @angle:57-82-87 @atom:*_b*_a57_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:56-82-87 @atom:*_b*_a56_d*_i* @atom:*_b*_a82_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:49-83-61 @atom:*_b*_a49_d*_i* @atom:*_b*_a83_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:48-83-61 @atom:*_b*_a48_d*_i* @atom:*_b*_a83_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:13-83-61 @atom:*_b*_a13_d*_i* @atom:*_b*_a83_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:49-83-84 @atom:*_b*_a49_d*_i* @atom:*_b*_a83_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:61-83-84 @atom:*_b*_a61_d*_i* @atom:*_b*_a83_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:13-83-84 @atom:*_b*_a13_d*_i* @atom:*_b*_a83_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:13-84-16 @atom:*_b*_a13_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a16_d*_i*
+ @angle:13-84-20 @atom:*_b*_a13_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:16-84-24 @atom:*_b*_a16_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:20-84-49 @atom:*_b*_a20_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a49_d*_i*
+ @angle:16-84-49 @atom:*_b*_a16_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a49_d*_i*
+ @angle:48-84-49 @atom:*_b*_a48_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a49_d*_i*
+ @angle:49-84-50 @atom:*_b*_a49_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:20-84-50 @atom:*_b*_a20_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:49-84-57 @atom:*_b*_a49_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:13-84-57 @atom:*_b*_a13_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:48-84-57 @atom:*_b*_a48_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:3-84-57 @atom:*_b*_a3_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:57-84-58 @atom:*_b*_a57_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a58_d*_i*
+ @angle:13-84-61 @atom:*_b*_a13_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:49-84-80 @atom:*_b*_a49_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a80_d*_i*
+ @angle:57-84-80 @atom:*_b*_a57_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a80_d*_i*
+ @angle:49-84-83 @atom:*_b*_a49_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a83_d*_i*
+ @angle:57-84-83 @atom:*_b*_a57_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a83_d*_i*
+ @angle:20-84-83 @atom:*_b*_a20_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a83_d*_i*
+ @angle:16-84-83 @atom:*_b*_a16_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a83_d*_i*
+ @angle:13-84-83 @atom:*_b*_a13_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a83_d*_i*
+ @angle:13-84-84 @atom:*_b*_a13_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:57-84-84 @atom:*_b*_a57_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:61-84-84 @atom:*_b*_a61_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:20-84-86 @atom:*_b*_a20_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a86_d*_i*
+ @angle:57-84-86 @atom:*_b*_a57_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a86_d*_i*
+ @angle:49-84-87 @atom:*_b*_a49_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:57-84-87 @atom:*_b*_a57_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:20-84-87 @atom:*_b*_a20_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:16-84-87 @atom:*_b*_a16_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:61-84-87 @atom:*_b*_a61_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:13-84-87 @atom:*_b*_a13_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:48-84-87 @atom:*_b*_a48_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:86-84-87 @atom:*_b*_a86_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:3-84-87 @atom:*_b*_a3_d*_i* @atom:*_b*_a84_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:49-85-57 @atom:*_b*_a49_d*_i* @atom:*_b*_a85_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:13-85-57 @atom:*_b*_a13_d*_i* @atom:*_b*_a85_d*_i* @atom:*_b*_a57_d*_i*
+ @angle:49-85-85 @atom:*_b*_a49_d*_i* @atom:*_b*_a85_d*_i* @atom:*_b*_a85_d*_i*
+ @angle:57-85-85 @atom:*_b*_a57_d*_i* @atom:*_b*_a85_d*_i* @atom:*_b*_a85_d*_i*
+ @angle:13-85-85 @atom:*_b*_a13_d*_i* @atom:*_b*_a85_d*_i* @atom:*_b*_a85_d*_i*
+ @angle:48-86-48 @atom:*_b*_a48_d*_i* @atom:*_b*_a86_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:48-86-56 @atom:*_b*_a48_d*_i* @atom:*_b*_a86_d*_i* @atom:*_b*_a56_d*_i*
+ @angle:48-86-82 @atom:*_b*_a48_d*_i* @atom:*_b*_a86_d*_i* @atom:*_b*_a82_d*_i*
+ @angle:48-86-83 @atom:*_b*_a48_d*_i* @atom:*_b*_a86_d*_i* @atom:*_b*_a83_d*_i*
+ @angle:48-86-84 @atom:*_b*_a48_d*_i* @atom:*_b*_a86_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:48-86-86 @atom:*_b*_a48_d*_i* @atom:*_b*_a86_d*_i* @atom:*_b*_a86_d*_i*
+ @angle:56-86-86 @atom:*_b*_a56_d*_i* @atom:*_b*_a86_d*_i* @atom:*_b*_a86_d*_i*
+ @angle:48-86-87 @atom:*_b*_a48_d*_i* @atom:*_b*_a86_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:48-86-88 @atom:*_b*_a48_d*_i* @atom:*_b*_a86_d*_i* @atom:*_b*_a88_d*_i*
+ @angle:49-87-60 @atom:*_b*_a49_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:46-87-60 @atom:*_b*_a46_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:13-87-60 @atom:*_b*_a13_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:49-87-84 @atom:*_b*_a49_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:46-87-84 @atom:*_b*_a46_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:84-87-84 @atom:*_b*_a84_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:82-87-84 @atom:*_b*_a82_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:2-87-84 @atom:*_b*_a2_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:13-87-84 @atom:*_b*_a13_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:3-87-84 @atom:*_b*_a3_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:60-87-84 @atom:*_b*_a60_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a84_d*_i*
+ @angle:84-87-86 @atom:*_b*_a84_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a86_d*_i*
+ @angle:49-87-87 @atom:*_b*_a49_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:60-87-87 @atom:*_b*_a60_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:84-87-87 @atom:*_b*_a84_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:86-87-87 @atom:*_b*_a86_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:84-87-88 @atom:*_b*_a84_d*_i* @atom:*_b*_a87_d*_i* @atom:*_b*_a88_d*_i*
+ @angle:48-88-49 @atom:*_b*_a48_d*_i* @atom:*_b*_a88_d*_i* @atom:*_b*_a49_d*_i*
+ @angle:49-88-61 @atom:*_b*_a49_d*_i* @atom:*_b*_a88_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:13-88-61 @atom:*_b*_a13_d*_i* @atom:*_b*_a88_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:19-88-61 @atom:*_b*_a19_d*_i* @atom:*_b*_a88_d*_i* @atom:*_b*_a61_d*_i*
+ @angle:61-88-87 @atom:*_b*_a61_d*_i* @atom:*_b*_a88_d*_i* @atom:*_b*_a87_d*_i*
+ @angle:4-89-90 @atom:*_b*_a4_d*_i* @atom:*_b*_a89_d*_i* @atom:*_b*_a90_d*_i*
+ @angle:90-89-91 @atom:*_b*_a90_d*_i* @atom:*_b*_a89_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:4-89-91 @atom:*_b*_a4_d*_i* @atom:*_b*_a89_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:13-90-89 @atom:*_b*_a13_d*_i* @atom:*_b*_a90_d*_i* @atom:*_b*_a89_d*_i*
+ @angle:89-90-91 @atom:*_b*_a89_d*_i* @atom:*_b*_a90_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:13-90-91 @atom:*_b*_a13_d*_i* @atom:*_b*_a90_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:24-91-46 @atom:*_b*_a24_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:13-91-46 @atom:*_b*_a13_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:44-91-46 @atom:*_b*_a44_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:46-91-46 @atom:*_b*_a46_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:16-91-46 @atom:*_b*_a16_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:46-91-47 @atom:*_b*_a46_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:46-91-89 @atom:*_b*_a46_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a89_d*_i*
+ @angle:24-91-89 @atom:*_b*_a24_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a89_d*_i*
+ @angle:46-91-90 @atom:*_b*_a46_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a90_d*_i*
+ @angle:16-91-90 @atom:*_b*_a16_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a90_d*_i*
+ @angle:91-91-91 @atom:*_b*_a91_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:13-91-91 @atom:*_b*_a13_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:44-91-91 @atom:*_b*_a44_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:46-91-91 @atom:*_b*_a46_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:24-91-91 @atom:*_b*_a24_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:16-91-91 @atom:*_b*_a16_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:89-91-91 @atom:*_b*_a89_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:47-91-91 @atom:*_b*_a47_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:90-91-91 @atom:*_b*_a90_d*_i* @atom:*_b*_a91_d*_i* @atom:*_b*_a91_d*_i*
+ @angle:13-95-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a95_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:13-95-46 @atom:*_b*_a13_d*_i* @atom:*_b*_a95_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:13-101-45 @atom:*_b*_a13_d*_i* @atom:*_b*_a101_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:45-101-45 @atom:*_b*_a45_d*_i* @atom:*_b*_a101_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:45-101-48 @atom:*_b*_a45_d*_i* @atom:*_b*_a101_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-101-48 @atom:*_b*_a13_d*_i* @atom:*_b*_a101_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:13-102-103 @atom:*_b*_a13_d*_i* @atom:*_b*_a102_d*_i* @atom:*_b*_a103_d*_i*
+ @angle:48-102-103 @atom:*_b*_a48_d*_i* @atom:*_b*_a102_d*_i* @atom:*_b*_a103_d*_i*
+ @angle:103-102-103 @atom:*_b*_a103_d*_i* @atom:*_b*_a102_d*_i* @atom:*_b*_a103_d*_i*
+ @angle:25-103-25 @atom:*_b*_a25_d*_i* @atom:*_b*_a103_d*_i* @atom:*_b*_a25_d*_i*
+ @angle:25-103-102 @atom:*_b*_a25_d*_i* @atom:*_b*_a103_d*_i* @atom:*_b*_a102_d*_i*
+ @angle:13-104-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a104_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:3-105-10 @atom:*_b*_a3_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a10_d*_i*
+ @angle:3-105-13 @atom:*_b*_a3_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:3-105-45 @atom:*_b*_a3_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:45-105-47 @atom:*_b*_a45_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:13-105-47 @atom:*_b*_a13_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:3-105-47 @atom:*_b*_a3_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:3-105-51 @atom:*_b*_a3_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a51_d*_i*
+ @angle:47-105-51 @atom:*_b*_a47_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a51_d*_i*
+ @angle:45-105-60 @atom:*_b*_a45_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:6-105-60 @atom:*_b*_a6_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:10-105-60 @atom:*_b*_a10_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:13-105-60 @atom:*_b*_a13_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:51-105-60 @atom:*_b*_a51_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a60_d*_i*
+ @angle:45-105-62 @atom:*_b*_a45_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a62_d*_i*
+ @angle:60-105-62 @atom:*_b*_a60_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a62_d*_i*
+ @angle:6-105-62 @atom:*_b*_a6_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a62_d*_i*
+ @angle:10-105-62 @atom:*_b*_a10_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a62_d*_i*
+ @angle:13-105-62 @atom:*_b*_a13_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a62_d*_i*
+ @angle:51-105-62 @atom:*_b*_a51_d*_i* @atom:*_b*_a105_d*_i* @atom:*_b*_a62_d*_i*
+ @angle:4-106-24 @atom:*_b*_a4_d*_i* @atom:*_b*_a106_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:24-106-24 @atom:*_b*_a24_d*_i* @atom:*_b*_a106_d*_i* @atom:*_b*_a24_d*_i*
+ @angle:13-107-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a107_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:3-107-13 @atom:*_b*_a3_d*_i* @atom:*_b*_a107_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:1-108-13 @atom:*_b*_a1_d*_i* @atom:*_b*_a108_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:13-108-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a108_d*_i* @atom:*_b*_a13_d*_i*
+ @angle:13-108-20 @atom:*_b*_a13_d*_i* @atom:*_b*_a108_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:20-108-20 @atom:*_b*_a20_d*_i* @atom:*_b*_a108_d*_i* @atom:*_b*_a20_d*_i*
+ @angle:13-108-21 @atom:*_b*_a13_d*_i* @atom:*_b*_a108_d*_i* @atom:*_b*_a21_d*_i*
+ @angle:45-108-45 @atom:*_b*_a45_d*_i* @atom:*_b*_a108_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:13-108-45 @atom:*_b*_a13_d*_i* @atom:*_b*_a108_d*_i* @atom:*_b*_a45_d*_i*
+ @angle:46-108-46 @atom:*_b*_a46_d*_i* @atom:*_b*_a108_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:13-108-46 @atom:*_b*_a13_d*_i* @atom:*_b*_a108_d*_i* @atom:*_b*_a46_d*_i*
+ @angle:13-108-65 @atom:*_b*_a13_d*_i* @atom:*_b*_a108_d*_i* @atom:*_b*_a65_d*_i*
+ @angle:13-108-66 @atom:*_b*_a13_d*_i* @atom:*_b*_a108_d*_i* @atom:*_b*_a66_d*_i*
+ @angle:13-108-108 @atom:*_b*_a13_d*_i* @atom:*_b*_a108_d*_i* @atom:*_b*_a108_d*_i*
+ @angle:46-109-48 @atom:*_b*_a46_d*_i* @atom:*_b*_a109_d*_i* @atom:*_b*_a48_d*_i*
+ @angle:46-109-50 @atom:*_b*_a46_d*_i* @atom:*_b*_a109_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:13-109-50 @atom:*_b*_a13_d*_i* @atom:*_b*_a109_d*_i* @atom:*_b*_a50_d*_i*
+ @angle:46-109-109 @atom:*_b*_a46_d*_i* @atom:*_b*_a109_d*_i* @atom:*_b*_a109_d*_i*
+ @angle:13-109-109 @atom:*_b*_a13_d*_i* @atom:*_b*_a109_d*_i* @atom:*_b*_a109_d*_i*
+ @angle:50-109-109 @atom:*_b*_a50_d*_i* @atom:*_b*_a109_d*_i* @atom:*_b*_a109_d*_i*
+ @angle:48-109-109 @atom:*_b*_a48_d*_i* @atom:*_b*_a109_d*_i* @atom:*_b*_a109_d*_i*
+ @angle:4-110-47 @atom:*_b*_a4_d*_i* @atom:*_b*_a110_d*_i* @atom:*_b*_a47_d*_i*
+ @angle:47-110-47 @atom:*_b*_a47_d*_i* @atom:*_b*_a110_d*_i* @atom:*_b*_a47_d*_i*
+ } #(end of angles by type)
+
+
+ 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
+ dihedral_coeff @dihedral:1-2-2-2 opls -2.0 0.7 3.0 0.0
+ dihedral_coeff @dihedral:1-2-2-6 opls -2.0 0.7 3.0 0.0
+ dihedral_coeff @dihedral:2-2-2-2 opls -3.4 1.25 3.1 0.0
+ dihedral_coeff @dihedral:2-2-2-6 opls -3.4 1.25 3.1 0.0
+ dihedral_coeff @dihedral:2-2-2-10 opls -3.4 1.25 3.1 0.0
+ dihedral_coeff @dihedral:2-2-2-13 opls -3.4 1.25 3.1 0.0
+ dihedral_coeff @dihedral:2-2-2-65 opls -2.0 0.5 3.25 0.0
+ dihedral_coeff @dihedral:6-2-2-6 opls -3.4 1.25 3.1 0.0
+ dihedral_coeff @dihedral:6-2-2-65 opls -2.0 0.5 3.25 0.0
+ dihedral_coeff @dihedral:10-2-2-10 opls -3.4 1.25 3.1 0.0
+ dihedral_coeff @dihedral:2-2-5-7 opls 0.3 0.0 1.3 0.0
+ dihedral_coeff @dihedral:6-2-5-7 opls 0.3 0.0 1.3 0.0
+ dihedral_coeff @dihedral:10-2-5-7 opls 0.3 0.0 1.3 0.0
+ dihedral_coeff @dihedral:X-2-10-2 opls -2.5 1.25 3.1 0.0
+ dihedral_coeff @dihedral:2-2-10-2 opls -3.4 1.25 3.1 0.0
+ dihedral_coeff @dihedral:2-2-13-2 opls -3.4 1.25 3.1 0.0
+ dihedral_coeff @dihedral:6-2-20-2 opls -7.4 3.0 1.8 0.0
+ dihedral_coeff @dihedral:6-2-20-6 opls -8.4 3.0 1.8 0.0
+ dihedral_coeff @dihedral:4-3-3-4 opls 1.6 3.2 0.0 0.0
+ dihedral_coeff @dihedral:4-3-3-13 opls 0.0 0.5 0.0 0.0
+ dihedral_coeff @dihedral:4-3-3-24 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:4-3-3-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-3-3-13 opls 0.7 -1.5 0.0 0.0
+ dihedral_coeff @dihedral:13-3-3-24 opls -0.5 0.2 0.0 0.0
+ dihedral_coeff @dihedral:13-3-3-46 opls 0.8 -0.76 0.0 0.0
+ dihedral_coeff @dihedral:24-3-3-46 opls -0.9 0.3 0.0 0.0
+ dihedral_coeff @dihedral:46-3-3-46 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:3-3-5-7 opls 3.0 5.5 0.0 0.0
+ dihedral_coeff @dihedral:4-3-5-7 opls 0.0 5.0 0.0 0.0
+ dihedral_coeff @dihedral:13-3-5-7 opls 1.5 5.5 0.0 0.0
+ dihedral_coeff @dihedral:24-3-5-7 opls -2.0 5.0 0.0 0.0
+ dihedral_coeff @dihedral:46-3-5-7 opls 1.5 5.5 0.0 0.0
+ dihedral_coeff @dihedral:48-3-5-7 opls 4.0 5.0 0.0 0.0
+ dihedral_coeff @dihedral:1-3-13-13 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:1-3-13-46 opls 0.0 0.0 0.36 0.0
+ dihedral_coeff @dihedral:3-3-13-46 opls 0.0 0.0 0.085 0.0
+ dihedral_coeff @dihedral:4-3-13-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:4-3-13-13 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:4-3-13-21 opls -0.65 0.0 0.0 0.0
+ dihedral_coeff @dihedral:4-3-13-44 opls 0.0 0.82 0.0 0.0
+ dihedral_coeff @dihedral:4-3-13-24 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:4-3-13-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:4-3-13-48 opls 0.0 0.546 0.0 0.0
+ dihedral_coeff @dihedral:5-3-13-13 opls 0.0 1.412 0.0 0.0
+ dihedral_coeff @dihedral:5-3-13-44 opls 5.26 0.82 0.0 0.0
+ dihedral_coeff @dihedral:5-3-13-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-3-13-13 opls 1.454 -0.144 -0.775 0.0
+ dihedral_coeff @dihedral:13-3-13-46 opls 0.0 0.0 0.275 0.0
+ dihedral_coeff @dihedral:20-3-13-13 opls 0.0 0.0 -0.553 0.0
+ dihedral_coeff @dihedral:20-3-13-46 opls 0.0 0.0 0.132 0.0
+ dihedral_coeff @dihedral:21-3-13-13 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:21-3-13-46 opls 0.0 0.0 0.36 0.0
+ dihedral_coeff @dihedral:24-3-13-13 opls 1.173 0.189 -1.2 0.0
+ dihedral_coeff @dihedral:24-3-13-21 opls 0.65 0.0 0.0 0.0
+ dihedral_coeff @dihedral:24-3-13-24 opls 1.816 1.222 1.581 0.0
+ dihedral_coeff @dihedral:24-3-13-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-3-13-13 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-3-13-46 opls 0.0 0.0 0.36 0.0
+ dihedral_coeff @dihedral:48-3-13-46 opls 0.0 0.0 0.275 0.0
+ dihedral_coeff @dihedral:52-3-13-13 opls 0.0 0.82 0.0 0.0
+ dihedral_coeff @dihedral:52-3-13-44 opls 0.0 0.82 0.0 0.0
+ dihedral_coeff @dihedral:52-3-13-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:65-3-13-13 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:65-3-13-46 opls 0.0 0.0 0.36 0.0
+ dihedral_coeff @dihedral:107-3-13-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:4-3-20-13 opls 0.0 5.124 0.0 0.0
+ dihedral_coeff @dihedral:4-3-20-48 opls 0.0 5.0 0.0 0.0
+ dihedral_coeff @dihedral:13-3-20-13 opls 4.669 5.124 0.0 0.0
+ dihedral_coeff @dihedral:13-3-20-48 opls 1.5 5.0 0.0 0.0
+ dihedral_coeff @dihedral:24-3-20-13 opls -2.0 5.0 0.0 0.0
+ dihedral_coeff @dihedral:46-3-20-13 opls 4.669 5.124 0.0 0.0
+ dihedral_coeff @dihedral:48-3-20-13 opls 4.0 5.0 0.0 0.0
+ dihedral_coeff @dihedral:3-3-24-13 opls 0.4 4.9 0.0 0.0
+ dihedral_coeff @dihedral:3-3-24-45 opls 0.0 4.9 0.0 0.0
+ dihedral_coeff @dihedral:4-3-24-5 opls 0.0 6.603 0.0 0.0
+ dihedral_coeff @dihedral:4-3-24-13 opls 0.0 6.089 0.0 0.0
+ dihedral_coeff @dihedral:4-3-24-45 opls 0.0 4.9 0.0 0.0
+ dihedral_coeff @dihedral:4-3-24-47 opls 0.0 6.089 0.0 0.0
+ dihedral_coeff @dihedral:4-3-24-48 opls 0.0 6.089 0.0 0.0
+ dihedral_coeff @dihedral:4-3-24-91 opls 0.0 6.089 0.0 0.0
+ dihedral_coeff @dihedral:5-3-24-13 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:5-3-24-45 opls 0.0 4.9 0.0 0.0
+ dihedral_coeff @dihedral:13-3-24-5 opls 4.542 6.603 1.045 0.0
+ dihedral_coeff @dihedral:13-3-24-13 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:13-3-24-45 opls 0.0 4.9 0.0 0.0
+ dihedral_coeff @dihedral:13-3-24-48 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:20-3-24-13 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:20-3-24-45 opls 0.0 4.9 0.0 0.0
+ dihedral_coeff @dihedral:24-3-24-3 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:24-3-24-13 opls 4.6 0.0 0.0 0.0
+ dihedral_coeff @dihedral:24-3-24-45 opls 0.0 4.9 0.0 0.0
+ dihedral_coeff @dihedral:46-3-24-13 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:46-3-24-45 opls 0.0 4.9 0.0 0.0
+ dihedral_coeff @dihedral:47-3-24-45 opls 0.0 4.9 0.0 0.0
+ dihedral_coeff @dihedral:48-3-24-45 opls 0.0 4.9 0.0 0.0
+ dihedral_coeff @dihedral:48-3-24-48 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:48-3-24-84 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:48-3-24-87 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:84-3-24-48 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:84-3-24-84 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:84-3-24-87 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:87-3-24-45 opls 0.0 4.9 0.0 0.0
+ dihedral_coeff @dihedral:87-3-24-48 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:87-3-24-84 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:87-3-24-87 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:X-3-47-13 opls 0.9 0.23 -0.505 0.0
+ dihedral_coeff @dihedral:4-3-47-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:4-3-47-47 opls 2.5 6.0 0.0 0.0
+ dihedral_coeff @dihedral:5-3-47-47 opls 3.2 -3.0 0.0 0.0
+ dihedral_coeff @dihedral:24-3-47-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:24-3-47-47 opls 2.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:107-3-47-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:107-3-47-47 opls 2.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:4-3-48-48 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:5-3-48-48 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:13-3-48-48 opls 0.0 0.2 0.0 0.0
+ dihedral_coeff @dihedral:20-3-48-48 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:24-3-48-48 opls 0.0 1.1 0.0 0.0
+ dihedral_coeff @dihedral:46-3-48-48 opls 0.0 0.2 0.0 0.0
+ dihedral_coeff @dihedral:X-3-50-13 opls 0.9 0.23 -0.505 0.0
+ dihedral_coeff @dihedral:4-3-50-47 opls 2.5 6.0 0.0 0.0
+ dihedral_coeff @dihedral:5-3-50-47 opls 3.2 -3.0 0.0 0.0
+ dihedral_coeff @dihedral:13-3-50-47 opls 0.8 -3.0 0.0 0.0
+ dihedral_coeff @dihedral:13-3-56-X opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:13-3-56-13 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:46-3-56-X opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:46-3-56-45 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:X-3-60-X opls 0.0 7.0 0.0 0.0
+ dihedral_coeff @dihedral:4-3-60-X opls 0.0 7.0 0.0 0.0
+ dihedral_coeff @dihedral:4-3-82-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:4-3-82-57 opls 2.0 1.0 0.0 0.0
+ dihedral_coeff @dihedral:4-3-82-61 opls 0.0 1.0 0.0 0.0
+ dihedral_coeff @dihedral:82-3-82-57 opls -2.0 1.0 0.0 0.0
+ dihedral_coeff @dihedral:82-3-82-61 opls 0.0 1.0 0.0 0.0
+ dihedral_coeff @dihedral:4-3-84-20 opls -0.75 1.5 0.0 0.0
+ dihedral_coeff @dihedral:4-3-84-87 opls 0.75 1.5 0.0 0.0
+ dihedral_coeff @dihedral:84-3-84-20 opls 0.0 1.5 0.0 0.0
+ dihedral_coeff @dihedral:84-3-84-87 opls 0.0 1.5 0.0 0.0
+ dihedral_coeff @dihedral:48-3-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:X-3-87-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:4-3-87-84 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:4-3-87-87 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:24-3-87-84 opls 0.0 1.1 0.0 0.0
+ dihedral_coeff @dihedral:24-3-87-87 opls 0.0 1.1 0.0 0.0
+ dihedral_coeff @dihedral:4-3-107-13 opls 0.0 4.9 0.0 0.0
+ dihedral_coeff @dihedral:13-3-107-13 opls 0.0 4.9 0.0 0.0
+ dihedral_coeff @dihedral:4-3-109-109 opls 2.5 6.0 0.0 0.0
+ dihedral_coeff @dihedral:5-3-109-109 opls 3.2 -3.0 0.0 0.0
+ dihedral_coeff @dihedral:X-4-106-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:7-5-10-2 opls 0.3 0.0 0.5 0.0
+ dihedral_coeff @dihedral:7-5-10-6 opls 0.3 0.0 0.5 0.0
+ dihedral_coeff @dihedral:7-5-13-2 opls 0.0 0.0 0.2 0.0
+ dihedral_coeff @dihedral:7-5-13-6 opls 0.0 0.0 0.2 0.0
+ dihedral_coeff @dihedral:7-5-13-13 opls -0.356 -0.174 0.492 0.0
+ dihedral_coeff @dihedral:7-5-13-46 opls 0.0 0.0 0.352 0.0
+ dihedral_coeff @dihedral:7-5-13-47 opls -0.9 0.0 0.0 0.0
+ dihedral_coeff @dihedral:7-5-13-48 opls -0.9 0.0 0.0 0.0
+ dihedral_coeff @dihedral:7-5-13-50 opls -0.9 0.0 0.0 0.0
+ dihedral_coeff @dihedral:7-5-44-13 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:7-5-44-45 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:7-5-24-3 opls 5.519 -6.7 0.581 0.0
+ dihedral_coeff @dihedral:7-5-24-45 opls 2.722 -5.154 0.0 0.0
+ dihedral_coeff @dihedral:7-5-47-47 opls 0.0 1.682 0.0 0.0
+ dihedral_coeff @dihedral:7-5-48-48 opls 0.0 1.682 0.0 0.0
+ dihedral_coeff @dihedral:7-5-51-20 opls -1.257 -1.806 0.003 0.0
+ dihedral_coeff @dihedral:7-5-56-3 opls 3.0 3.0 0.0 0.0
+ dihedral_coeff @dihedral:7-5-64-4 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:7-5-64-5 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:7-5-79-13 opls -0.75 0.0 0.0 0.0
+ dihedral_coeff @dihedral:7-5-79-23 opls 0.75 0.0 0.0 0.0
+ dihedral_coeff @dihedral:7-5-79-48 opls 2.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-13-13-3 opls -4.344 -1.714 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-13-24 opls 1.428 0.086 0.029 0.0
+ dihedral_coeff @dihedral:1-13-13-1 opls -2.5 0.0 0.25 0.0
+ dihedral_coeff @dihedral:1-13-13-5 opls 0.0 0.0 0.54 0.0
+ dihedral_coeff @dihedral:1-13-13-13 opls 0.3 -0.4 0.4 0.0
+ dihedral_coeff @dihedral:1-13-13-46 opls 0.0 0.0 0.4 0.0
+ dihedral_coeff @dihedral:3-13-13-3 opls -0.55 0.0 1.0 0.0
+ dihedral_coeff @dihedral:3-13-13-5 opls -6.18 0.0 0.0 0.0
+ dihedral_coeff @dihedral:3-13-13-13 opls -2.06 -0.313 0.315 0.0
+ dihedral_coeff @dihedral:3-13-13-15 opls -4.344 -1.714 0.0 0.0
+ dihedral_coeff @dihedral:3-13-13-16 opls -4.344 -1.714 0.0 0.0
+ dihedral_coeff @dihedral:3-13-13-24 opls -9.0 2.0 0.8 0.0
+ dihedral_coeff @dihedral:3-13-13-46 opls 0.0 0.0 -0.1 0.0
+ dihedral_coeff @dihedral:3-13-13-48 opls -1.697 -0.456 0.585 0.0
+ dihedral_coeff @dihedral:3-13-13-80 opls -1.697 -0.456 0.585 0.0
+ dihedral_coeff @dihedral:5-13-13-5 opls 9.508 0.0 0.0 0.0
+ dihedral_coeff @dihedral:5-13-13-13 opls -1.552 0.0 0.0 0.0
+ dihedral_coeff @dihedral:5-13-13-20 opls 4.319 0.0 0.0 0.0
+ dihedral_coeff @dihedral:5-13-13-44 opls 8.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:5-13-13-24 opls 6.28 -1.467 2.03 0.0
+ dihedral_coeff @dihedral:5-13-13-46 opls 0.0 0.0 0.468 0.0
+ dihedral_coeff @dihedral:13-13-13-13 opls 1.3 -0.05 0.2 0.0
+ dihedral_coeff @dihedral:13-13-13-15 opls 1.262 -0.198 0.465 0.0
+ dihedral_coeff @dihedral:13-13-13-16 opls 2.619 -0.62 0.258 0.0
+ dihedral_coeff @dihedral:13-13-13-19 opls 0.0 -0.65 0.0 0.0
+ dihedral_coeff @dihedral:13-13-13-21 opls 0.0 0.0 0.4 0.0
+ dihedral_coeff @dihedral:13-13-13-44 opls 2.392 -0.674 0.55 0.0
+ dihedral_coeff @dihedral:13-13-13-24 opls 0.845 -0.962 0.713 0.0
+ dihedral_coeff @dihedral:13-13-13-46 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:13-13-13-51 opls 1.3 -0.05 0.2 0.0
+ dihedral_coeff @dihedral:13-13-13-53 opls 2.732 -0.229 0.485 0.0
+ dihedral_coeff @dihedral:13-13-13-65 opls 0.0 0.0 0.4 0.0
+ dihedral_coeff @dihedral:13-13-13-66 opls 0.0 0.0 0.4 0.0
+ dihedral_coeff @dihedral:13-13-13-79 opls 1.262 -0.198 0.465 0.0
+ dihedral_coeff @dihedral:13-13-13-107 opls 1.964 0.0 0.659 0.0
+ dihedral_coeff @dihedral:13-13-13-108 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:15-13-13-46 opls 0.0 0.0 0.452 0.0
+ dihedral_coeff @dihedral:16-13-13-46 opls 0.0 0.0 0.452 0.0
+ dihedral_coeff @dihedral:19-13-13-46 opls 0.0 0.0 0.366 0.0
+ dihedral_coeff @dihedral:20-13-13-20 opls -0.55 0.0 0.0 0.0
+ dihedral_coeff @dihedral:20-13-13-46 opls 0.0 0.0 0.468 0.0
+ dihedral_coeff @dihedral:21-13-13-21 opls -0.25 0.0 0.0 0.0
+ dihedral_coeff @dihedral:21-13-13-44 opls 2.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:21-13-13-46 opls 0.0 0.0 0.4 0.0
+ dihedral_coeff @dihedral:44-13-13-44 opls 11.035 -0.968 0.27 0.0
+ dihedral_coeff @dihedral:44-13-13-46 opls -1.013 -0.709 0.473 0.0
+ dihedral_coeff @dihedral:44-13-13-48 opls -0.8 0.0 0.0 0.0
+ dihedral_coeff @dihedral:24-13-13-46 opls 0.0 0.0 0.464 0.0
+ dihedral_coeff @dihedral:24-13-13-48 opls 0.845 -0.962 0.713 0.0
+ dihedral_coeff @dihedral:24-13-13-80 opls 0.845 -0.962 0.713 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-13-48 opls 0.0 0.0 0.462 0.0
+ dihedral_coeff @dihedral:46-13-13-51 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:46-13-13-53 opls 0.0 0.0 0.384 0.0
+ dihedral_coeff @dihedral:46-13-13-55 opls 0.0 0.0 -0.582 0.0
+ dihedral_coeff @dihedral:46-13-13-59 opls 0.0 0.0 0.462 0.0
+ dihedral_coeff @dihedral:46-13-13-62 opls 0.0 0.0 0.462 0.0
+ dihedral_coeff @dihedral:46-13-13-65 opls 0.0 0.0 0.4 0.0
+ dihedral_coeff @dihedral:46-13-13-66 opls 0.0 0.0 0.4 0.0
+ dihedral_coeff @dihedral:46-13-13-79 opls 0.0 0.0 0.452 0.0
+ dihedral_coeff @dihedral:46-13-13-80 opls 0.0 0.0 0.462 0.0
+ dihedral_coeff @dihedral:46-13-13-82 opls 0.0 0.0 0.462 0.0
+ dihedral_coeff @dihedral:46-13-13-83 opls 0.0 0.0 0.462 0.0
+ dihedral_coeff @dihedral:46-13-13-84 opls 0.0 0.0 0.462 0.0
+ dihedral_coeff @dihedral:46-13-13-87 opls 0.0 0.0 0.462 0.0
+ dihedral_coeff @dihedral:46-13-13-88 opls 0.0 0.0 0.462 0.0
+ dihedral_coeff @dihedral:46-13-13-102 opls 0.0 0.0 -0.225 0.0
+ dihedral_coeff @dihedral:46-13-13-104 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:46-13-13-107 opls 0.0 0.0 0.464 0.0
+ dihedral_coeff @dihedral:46-13-13-108 opls 0.0 0.0 0.45 0.0
+ dihedral_coeff @dihedral:46-13-13-109 opls 0.0 0.0 0.366 0.0
+ dihedral_coeff @dihedral:48-13-13-53 opls 1.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:108-13-13-108 opls 5.2 -0.5 0.0 0.0
+ dihedral_coeff @dihedral:13-13-15-17 opls -0.759 -0.282 0.68 0.0
+ dihedral_coeff @dihedral:46-13-15-17 opls 0.0 0.0 0.48 0.0
+ dihedral_coeff @dihedral:13-13-16-13 opls 0.925 -0.576 0.677 0.0
+ dihedral_coeff @dihedral:13-13-16-16 opls 1.941 -0.836 0.935 0.0
+ dihedral_coeff @dihedral:46-13-16-13 opls 0.0 0.0 0.647 0.0
+ dihedral_coeff @dihedral:46-13-16-16 opls 0.0 0.0 0.558 0.0
+ dihedral_coeff @dihedral:46-13-16-48 opls 0.0 0.0 0.647 0.0
+ dihedral_coeff @dihedral:X-13-18-19 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-18-19 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-13-19-18 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-13-19-19 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-19-19 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-19-19 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-13-20-13 opls -0.521 -2.018 1.996 0.0
+ dihedral_coeff @dihedral:56-13-20-13 opls -0.5 -1.5 1.0 0.0
+ dihedral_coeff @dihedral:57-13-20-13 opls -0.5 -1.5 1.0 0.0
+ dihedral_coeff @dihedral:13-13-20-3 opls -1.22 -0.126 0.422 0.0
+ dihedral_coeff @dihedral:13-13-20-13 opls 0.65 -0.25 0.67 0.0
+ dihedral_coeff @dihedral:13-13-20-64 opls -1.42 -0.62 0.1 0.0
+ dihedral_coeff @dihedral:46-13-20-X opls 0.0 0.0 0.76 0.0
+ dihedral_coeff @dihedral:46-13-20-3 opls 0.0 0.0 0.198 0.0
+ dihedral_coeff @dihedral:46-13-20-47 opls 0.0 0.0 0.76 0.0
+ 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
+ dihedral_coeff @dihedral:3-13-24-45 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-24-3 opls 0.0 0.462 0.0 0.0
+ dihedral_coeff @dihedral:13-13-24-13 opls 4.753 -0.734 0.0 0.0
+ dihedral_coeff @dihedral:13-13-24-45 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-24-59 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-24-79 opls 2.929 -2.533 0.497 0.0
+ dihedral_coeff @dihedral:13-13-24-91 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:46-13-24-3 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-24-13 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-24-45 opls 0.0 0.0 0.0 0.0
+ 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: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
+ dihedral_coeff @dihedral:X-13-47-50 opls 0.5 0.0 0.0 0.0
+ dihedral_coeff @dihedral:1-13-47-47 opls 0.5 0.0 0.0 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-13-47-50 opls 0.346 0.405 -0.904 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-13-47-50 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:46-13-47-110 opls 0.0 0.0 -0.25 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:X-13-48-48 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:1-13-48-48 opls 0.0 0.45 0.0 0.0
+ dihedral_coeff @dihedral:13-13-48-48 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-48-56 opls -0.5 0.5 -0.5 0.0
+ dihedral_coeff @dihedral:21-13-48-48 opls 0.0 -0.4 0.0 0.0
+ dihedral_coeff @dihedral:46-13-48-48 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:64-13-48-48 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:65-13-48-48 opls 0.0 0.0 0.4 0.0
+ dihedral_coeff @dihedral:X-13-50-47 opls 0.5 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-50-50 opls 0.346 0.405 -0.904 0.0
+ dihedral_coeff @dihedral:46-13-50-47 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:46-13-50-50 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:46-13-50-109 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:13-13-51-X opls 1.711 -0.5 0.663 0.0
+ dihedral_coeff @dihedral:13-13-51-46 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:46-13-51-20 opls 0.0 0.0 0.468 0.0
+ dihedral_coeff @dihedral:13-13-53-13 opls 1.438 -0.124 0.264 0.0
+ dihedral_coeff @dihedral:13-13-53-45 opls 0.0 0.0 0.347 0.0
+ dihedral_coeff @dihedral:46-13-53-13 opls 0.0 0.0 0.302 0.0
+ dihedral_coeff @dihedral:46-13-53-45 opls 0.0 0.0 0.261 0.0
+ dihedral_coeff @dihedral:46-13-53-48 opls 0.0 0.0 0.462 0.0
+ dihedral_coeff @dihedral:46-13-53-54 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:13-13-55-45 opls -0.19 -0.417 0.418 0.0
+ dihedral_coeff @dihedral:13-13-55-48 opls 1.829 0.243 -0.498 0.0
+ dihedral_coeff @dihedral:13-13-55-54 opls -0.19 -0.417 0.418 0.0
+ dihedral_coeff @dihedral:46-13-55-13 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-55-45 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-55-48 opls 0.0 0.0 0.177 0.0
+ dihedral_coeff @dihedral:13-13-56-18 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-13-57-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-57-X opls 1.0 -0.35 0.0 0.0
+ dihedral_coeff @dihedral:13-13-57-62 opls 2.756 -0.872 -3.68 0.0
+ dihedral_coeff @dihedral:13-13-57-82 opls -1.0 -0.35 0.0 0.0
+ dihedral_coeff @dihedral:20-13-57-X opls 1.5 -1.5 0.0 0.0
+ dihedral_coeff @dihedral:20-13-57-62 opls -1.5 -1.5 0.0 0.0
+ dihedral_coeff @dihedral:20-13-57-82 opls -1.5 -1.5 0.0 0.0
+ dihedral_coeff @dihedral:13-13-59-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-59-56 opls 0.0 0.5 -0.5 0.0
+ dihedral_coeff @dihedral:46-13-59-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-62-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-62-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-64-20 opls 0.0 0.0 0.25 0.0
+ dihedral_coeff @dihedral:46-13-64-52 opls 0.0 0.0 0.25 0.0
+ dihedral_coeff @dihedral:48-13-64-20 opls 2.25 0.0 0.0 0.0
+ dihedral_coeff @dihedral:48-13-64-52 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-13-79-23 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-13-79-24 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-79-13 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-79-23 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-79-5 opls 0.0 0.0 0.35 0.0
+ dihedral_coeff @dihedral:46-13-79-13 opls 0.0 0.0 0.35 0.0
+ dihedral_coeff @dihedral:46-13-79-23 opls 0.0 0.0 0.35 0.0
+ dihedral_coeff @dihedral:46-13-79-48 opls 0.0 0.0 0.35 0.0
+ dihedral_coeff @dihedral:13-13-80-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-80-60 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-80-84 opls -0.714 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-80-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-80-60 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-80-84 opls 0.0 0.0 -0.48 0.0
+ dihedral_coeff @dihedral:13-13-82-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-82-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-83-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-83-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:1-13-84-X opls 0.0 0.45 0.0 0.0
+ dihedral_coeff @dihedral:13-13-84-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-84-57 opls 1.7 -0.6 0.0 0.0
+ dihedral_coeff @dihedral:21-13-84-X opls 0.0 -0.4 0.0 0.0
+ dihedral_coeff @dihedral:46-13-84-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:1-13-87-X opls 0.0 0.45 0.0 0.0
+ dihedral_coeff @dihedral:13-13-87-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:21-13-87-X opls 0.0 -0.4 0.0 0.0
+ dihedral_coeff @dihedral:46-13-87-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-88-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-88-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-13-90-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-90-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-91-91 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:13-13-95-13 opls 0.0 -1.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-95-46 opls 0.0 -1.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-102-103 opls 0.0 0.4 0.0 0.0
+ dihedral_coeff @dihedral:46-13-102-103 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-104-13 opls 1.0 -0.5 0.5 0.0
+ dihedral_coeff @dihedral:46-13-104-13 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:X-13-105-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-105-X opls 1.0 -0.35 0.0 0.0
+ dihedral_coeff @dihedral:13-13-105-62 opls -1.0 -0.35 0.0 0.0
+ dihedral_coeff @dihedral:13-13-105-82 opls -1.0 -0.35 0.0 0.0
+ dihedral_coeff @dihedral:20-13-105-X opls 1.5 -1.5 0.0 0.0
+ dihedral_coeff @dihedral:20-13-105-62 opls 3.132 -1.491 2.744 0.0
+ dihedral_coeff @dihedral:20-13-105-82 opls -1.5 -1.5 0.0 0.0
+ dihedral_coeff @dihedral:3-13-107-13 opls -1.737 1.251 -3.501 0.0
+ dihedral_coeff @dihedral:13-13-107-3 opls -1.396 -0.427 0.0 0.0
+ dihedral_coeff @dihedral:13-13-107-13 opls 4.753 -0.734 0.0 0.0
+ dihedral_coeff @dihedral:46-13-107-3 opls 0.0 0.0 -0.139 0.0
+ dihedral_coeff @dihedral:46-13-107-13 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-107-48 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-108-13 opls 1.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-108-45 opls 0.0 0.0 0.26 0.0
+ dihedral_coeff @dihedral:46-13-108-13 opls 0.0 0.0 0.18 0.0
+ dihedral_coeff @dihedral:46-13-108-20 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-13-108-45 opls 0.0 0.0 0.18 0.0
+ dihedral_coeff @dihedral:13-13-109-109 opls 0.346 0.405 -0.904 0.0
+ dihedral_coeff @dihedral:46-13-109-13 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:46-13-109-46 opls 0.0 0.0 0.318 0.0
+ dihedral_coeff @dihedral:46-13-109-109 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:17-15-48-X opls 0.0 1.1 0.0 0.0
+ dihedral_coeff @dihedral:17-15-48-48 opls 0.0 1.1 0.0 0.0
+ dihedral_coeff @dihedral:13-16-16-13 opls 0.0 -7.414 1.705 0.0
+ dihedral_coeff @dihedral:13-16-48-48 opls 0.0 0.6 0.0 0.0
+ dihedral_coeff @dihedral:13-16-48-56 opls 1.6 5.1 0.0 0.0
+ dihedral_coeff @dihedral:13-16-59-56 opls 0.0 4.8 0.0 0.0
+ dihedral_coeff @dihedral:84-16-82-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:84-16-82-61 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:82-16-84-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:82-16-84-83 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:82-16-84-88 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-16-91-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:19-18-48-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:19-18-48-48 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:18-18-56-13 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:18-18-56-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-19-19-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-19-19-13 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-19-19-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-19-19-47 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-19-19-109 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-19-19-47 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-19-19-109 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:19-19-47-13 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:19-19-47-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:19-19-47-47 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-20-44-13 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:13-20-44-45 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:13-20-47-13 opls 0.65 -0.25 0.67 0.0
+ dihedral_coeff @dihedral:13-20-47-46 opls 0.0 0.0 0.76 0.0
+ dihedral_coeff @dihedral:13-20-47-47 opls -3.5 3.0 0.0 0.0
+ dihedral_coeff @dihedral:13-20-47-50 opls -3.5 3.0 0.0 0.0
+ dihedral_coeff @dihedral:3-20-48-48 opls 0.0 2.5 0.0 0.0
+ dihedral_coeff @dihedral:13-20-48-48 opls 0.0 3.0 0.0 0.0
+ dihedral_coeff @dihedral:13-20-48-56 opls 0.4 5.5 0.0 0.0
+ dihedral_coeff @dihedral:64-20-48-48 opls 0.0 2.99 0.0 0.0
+ dihedral_coeff @dihedral:13-20-51-5 opls -0.375 -1.358 0.004 0.0
+ dihedral_coeff @dihedral:13-20-51-13 opls 0.65 -0.25 0.67 0.0
+ dihedral_coeff @dihedral:13-20-51-20 opls -0.375 -1.358 0.004 0.0
+ dihedral_coeff @dihedral:13-20-51-46 opls 0.0 0.0 0.76 0.0
+ dihedral_coeff @dihedral:13-20-56-3 opls 3.0 3.0 0.0 0.0
+ dihedral_coeff @dihedral:13-20-59-56 opls 0.0 5.2 0.0 0.0
+ dihedral_coeff @dihedral:X-20-64-52 opls 0.0 0.0 0.562 0.0
+ dihedral_coeff @dihedral:13-20-64-13 opls 3.5 -3.3 1.5 0.0
+ dihedral_coeff @dihedral:13-20-64-52 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:48-20-64-4 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:84-20-82-61 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:82-20-84-88 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:84-20-84-49 opls 0.0 7.25 0.0 0.0
+ 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
+ dihedral_coeff @dihedral:45-24-48-48 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:59-24-48-48 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:82-24-48-48 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:84-24-48-48 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:X-24-59-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-24-59-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:45-24-59-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-24-60-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-24-79-23 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-24-79-48 opls 2.074 -2.966 2.473 0.0
+ dihedral_coeff @dihedral:45-24-79-48 opls 1.671 -4.901 0.669 0.0
+ dihedral_coeff @dihedral:13-24-82-61 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:45-24-82-16 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:45-24-82-20 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:45-24-82-61 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:48-24-82-16 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:48-24-82-20 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:48-24-82-61 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:X-24-84-X opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:3-24-84-84 opls 0.0 3.0 0.0 0.0
+ dihedral_coeff @dihedral:45-24-84-16 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:45-24-84-20 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:48-24-84-16 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:48-24-84-20 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:3-24-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:3-24-86-56 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:3-24-86-86 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:47-24-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:47-24-86-56 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:X-24-87-X opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:X-24-88-X opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:3-24-91-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:3-24-91-89 opls -1.396 -0.427 0.0 0.0
+ dihedral_coeff @dihedral:3-24-91-91 opls -1.396 -0.427 0.0 0.0
+ dihedral_coeff @dihedral:45-24-91-46 opls 0.0 0.0 0.0 0.0
+ 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: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
+ dihedral_coeff @dihedral:X-47-47-19 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:3-47-47-24 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:3-47-47-46 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:5-47-47-13 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:5-47-47-46 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:13-47-47-13 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:13-47-47-19 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:13-47-47-20 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:19-47-47-46 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:20-47-47-46 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:21-47-47-21 opls -1.6 14.0 0.0 0.0
+ dihedral_coeff @dihedral:21-47-47-46 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:46-47-47-46 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:46-47-47-48 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:13-47-48-48 opls 0.205 -0.531 0.0 0.0
+ dihedral_coeff @dihedral:46-47-48-48 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:46-47-48-56 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:47-47-48-48 opls 1.241 3.353 -0.286 0.0
+ dihedral_coeff @dihedral:13-47-50-13 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:13-47-50-46 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:13-47-50-48 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:13-47-50-50 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:13-47-50-109 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:24-47-50-3 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:46-47-50-13 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:46-47-50-46 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:46-47-50-48 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:46-47-50-50 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:46-47-50-109 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:X-47-84-X opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:X-47-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:3-47-86-86 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-47-86-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-47-86-24 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-47-87-X opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:X-47-88-X opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:13-47-110-47 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-47-110-47 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-48-48-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-48-48-13 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-48-48-48 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-48-48-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:1-48-48-48 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:1-48-48-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:13-48-48-13 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:13-48-48-48 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:13-48-48-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:13-48-48-50 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:21-48-48-48 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:21-48-48-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:44-48-48-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:47-48-48-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-48-48-48 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-48-48-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-48-48-50 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-48-48-55 opls 0.0 1.62 0.0 -0.44
+ dihedral_coeff @dihedral:48-48-48-60 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-48-48-65 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-48-48-66 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-48-48-86 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-48-48-109 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-48-48-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-48-48-50 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-48-48-60 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-48-48-65 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-48-48-66 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-48-48-86 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-48-48-109 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:56-48-48-86 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-48-50-46 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:48-48-50-47 opls 1.241 3.353 -0.286 0.0
+ dihedral_coeff @dihedral:56-48-50-46 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:56-48-50-47 opls 1.241 3.353 -0.286 0.0
+ dihedral_coeff @dihedral:48-48-53-13 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:48-48-53-54 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-48-55-45 opls 0.0 2.03 0.0 0.0
+ dihedral_coeff @dihedral:48-48-55-45 opls 0.0 3.9 0.0 0.0
+ dihedral_coeff @dihedral:55-48-55-13 opls 0.0 7.936 0.0 0.0
+ dihedral_coeff @dihedral:55-48-55-45 opls 0.0 3.9 0.0 0.0
+ dihedral_coeff @dihedral:60-48-55-45 opls 0.0 2.03 0.0 0.0
+ dihedral_coeff @dihedral:X-48-56-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-48-56-48 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-48-56-48 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-48-60-X opls 0.0 7.0 0.0 0.0
+ dihedral_coeff @dihedral:X-48-79-23 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:48-48-79-13 opls 0.0 -0.9 0.0 0.0
+ dihedral_coeff @dihedral:48-48-79-24 opls 1.656 -0.768 -0.117 0.0
+ dihedral_coeff @dihedral:48-48-86-48 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-48-86-56 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-48-86-86 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-48-86-48 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-48-86-56 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-48-86-86 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:56-48-86-48 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:56-48-86-86 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-48-88-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:56-48-101-13 opls 0.0 3.651 0.0 0.0
+ dihedral_coeff @dihedral:48-48-102-103 opls 0.0 1.15 0.0 0.0
+ dihedral_coeff @dihedral:48-48-109-13 opls 0.205 -0.531 0.0 0.0
+ dihedral_coeff @dihedral:48-48-109-46 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:48-48-109-109 opls 1.241 3.353 -0.286 0.0
+ dihedral_coeff @dihedral:X-50-50-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:3-50-50-3 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:13-50-50-13 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:13-50-50-46 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:13-50-50-47 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:46-50-50-46 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:46-50-50-47 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:47-50-50-47 opls 1.423 4.055 0.858 0.0
+ dihedral_coeff @dihedral:13-50-109-13 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:13-50-109-109 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:46-50-109-13 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:46-50-109-46 opls 0.0 0.0 0.3 0.0
+ dihedral_coeff @dihedral:46-50-109-109 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:47-50-109-13 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:47-50-109-46 opls 0.0 0.0 -0.372 0.0
+ dihedral_coeff @dihedral:47-50-109-109 opls 1.423 4.055 0.858 0.0
+ dihedral_coeff @dihedral:13-53-82-61 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:48-53-82-61 opls 0.0 2.1 0.0 0.0
+ dihedral_coeff @dihedral:45-55-59-X opls 0.0 2.03 0.0 0.0
+ dihedral_coeff @dihedral:13-56-56-13 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:13-56-56-48 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-56-56-48 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-56-59-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-56-59-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-56-60-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-56-62-X opls 0.0 10.0 0.0 0.0
+ dihedral_coeff @dihedral:X-56-82-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-56-86-48 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-56-86-86 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-57-60-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:45-57-60-X opls 0.0 5.0 0.0 0.0
+ dihedral_coeff @dihedral:X-57-61-X opls 0.0 10.0 0.0 0.0
+ dihedral_coeff @dihedral:X-57-62-X opls 0.0 10.0 0.0 0.0
+ dihedral_coeff @dihedral:X-57-81-X opls 0.0 3.05 0.0 0.0
+ dihedral_coeff @dihedral:X-57-82-X opls 0.0 4.65 0.0 0.0
+ dihedral_coeff @dihedral:X-57-82-49 opls 0.0 10.0 0.0 0.0
+ dihedral_coeff @dihedral:45-57-82-X opls 0.0 5.0 0.0 0.0
+ dihedral_coeff @dihedral:X-57-84-X opls 0.0 2.8 0.0 0.0
+ dihedral_coeff @dihedral:45-57-84-X opls 0.0 5.0 0.0 0.0
+ dihedral_coeff @dihedral:61-57-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:84-57-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:X-60-60-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-60-61-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-60-80-X opls 0.0 3.35 0.0 0.0
+ dihedral_coeff @dihedral:X-60-81-X opls 0.0 6.0 0.0 0.0
+ dihedral_coeff @dihedral:X-60-87-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-60-87-84 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:60-60-87-84 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-61-61-X opls 0.0 10.0 0.0 0.0
+ dihedral_coeff @dihedral:X-61-62-X opls 0.0 10.0 0.0 0.0
+ dihedral_coeff @dihedral:X-61-82-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-61-82-49 opls 0.0 10.0 0.0 0.0
+ dihedral_coeff @dihedral:83-61-82-16 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:88-61-82-16 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:88-61-82-20 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-61-83-X opls 0.0 4.8 0.0 0.0
+ dihedral_coeff @dihedral:82-61-83-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:82-61-83-84 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-61-84-X opls 0.0 10.0 0.0 0.0
+ dihedral_coeff @dihedral:X-61-88-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:82-61-88-84 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-80-84-X opls 0.0 13.05 0.0 0.0
+ dihedral_coeff @dihedral:X-82-84-X opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:16-82-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:20-82-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:57-82-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:61-82-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:X-82-87-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-83-84-X opls 0.0 10.75 0.0 0.0
+ dihedral_coeff @dihedral:X-83-84-49 opls 0.0 10.75 0.0 0.0
+ dihedral_coeff @dihedral:49-83-84-X opls 0.0 10.75 0.0 0.0
+ dihedral_coeff @dihedral:49-83-84-16 opls 0.0 10.75 0.0 0.0
+ dihedral_coeff @dihedral:49-83-84-49 opls 0.0 10.75 0.0 0.0
+ dihedral_coeff @dihedral:61-83-84-16 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:61-83-84-20 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:61-83-84-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-83-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:61-83-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:61-83-87-X opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:84-83-87-X opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:X-84-84-X opls 0.0 10.75 0.0 0.0
+ dihedral_coeff @dihedral:X-84-84-49 opls 0.0 10.75 0.0 0.0
+ dihedral_coeff @dihedral:16-84-84-49 opls 0.0 10.75 0.0 0.0
+ dihedral_coeff @dihedral:49-84-84-49 opls 0.0 10.75 0.0 0.0
+ dihedral_coeff @dihedral:X-84-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:16-84-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:20-84-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:57-84-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:X-84-87-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-84-87-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-84-87-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-84-88-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:16-84-88-49 opls 0.0 10.75 0.0 0.0
+ dihedral_coeff @dihedral:16-84-88-61 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:20-84-88-61 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-84-88-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:49-84-88-61 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:48-86-86-48 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:48-86-86-56 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:48-86-87-X opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:48-86-88-X opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:48-86-88-61 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:56-86-88-X opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:X-87-87-20 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:X-87-87-57 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:X-87-87-87 opls 0.0 2.17 0.0 0.0
+ dihedral_coeff @dihedral:49-87-87-49 opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:4-89-90-13 opls 0.0 6.089 0.0 0.0
+ dihedral_coeff @dihedral:4-89-90-45 opls 0.0 4.9 0.0 0.0
+ dihedral_coeff @dihedral:4-89-90-48 opls 0.0 6.089 0.0 0.0
+ dihedral_coeff @dihedral:4-89-90-91 opls 0.0 20.0 0.0 0.0
+ dihedral_coeff @dihedral:91-89-90-13 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:91-89-90-45 opls 0.0 4.9 0.0 0.0
+ dihedral_coeff @dihedral:91-89-90-48 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:91-89-90-91 opls 2.3 6.089 0.0 0.0
+ dihedral_coeff @dihedral:X-89-91-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:4-89-91-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:4-89-91-91 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:90-89-91-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:90-89-91-91 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-90-91-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-90-91-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-90-91-91 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-91-91-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-91-91-24 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-91-91-13 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-91-91-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-91-91-46 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:46-91-91-91 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:91-91-91-91 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:X-109-109-X opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:13-109-109-13 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:13-109-109-46 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:13-109-109-48 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:13-109-109-50 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:13-109-109-109 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:46-109-109-46 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:46-109-109-48 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:46-109-109-50 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:46-109-109-109 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:48-109-109-48 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:48-109-109-50 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:48-109-109-109 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:50-109-109-50 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:50-109-109-109 opls 0.0 14.0 0.0 0.0
+ dihedral_coeff @dihedral:109-109-109-109 opls 1.423 4.055 0.858 0.0
+ dihedral_coeff @dihedral:24-3-13-53 opls 1.816 1.222 1.581 0.0
+ dihedral_coeff @dihedral:52-3-13-24 opls 0.0 0.82 0.0 0.0
+ dihedral_coeff @dihedral:3-13-13-53 opls 1.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:3-13-13-83 opls -1.697 -0.456 0.585 0.0
+ dihedral_coeff @dihedral:3-13-13-84 opls -1.697 -0.456 0.585 0.0
+ dihedral_coeff @dihedral:3-13-13-85 opls -1.697 -0.456 0.585 0.0
+ dihedral_coeff @dihedral:5-13-13-53 opls 6.28 -1.467 2.03 0.0
+ dihedral_coeff @dihedral:15-13-13-53 opls 1.428 0.086 0.029 0.0
+ dihedral_coeff @dihedral:16-13-13-53 opls 1.428 0.086 0.029 0.0
+ dihedral_coeff @dihedral:13-13-13-55 opls 2.732 -0.229 0.485 0.0
+ dihedral_coeff @dihedral:24-13-13-83 opls 0.845 -0.962 0.713 0.0
+ dihedral_coeff @dihedral:53-13-13-83 opls 1.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:24-13-13-84 opls 0.845 -0.962 0.713 0.0
+ dihedral_coeff @dihedral:53-13-13-84 opls 1.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:24-13-13-85 opls 0.845 -0.962 0.713 0.0
+ dihedral_coeff @dihedral:46-13-13-85 opls 0.0 0.0 0.462 0.0
+ dihedral_coeff @dihedral:53-13-13-85 opls 1.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:3-13-53-13 opls 1.438 -0.124 0.264 0.0
+ dihedral_coeff @dihedral:3-13-53-54 opls 0.0 0.0 0.347 0.0
+ dihedral_coeff @dihedral:13-13-53-54 opls 0.0 0.0 0.347 0.0
+ dihedral_coeff @dihedral:46-13-55-54 opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-85-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:13-13-85-57 opls 1.7 -0.6 0.0 0.0
+ dihedral_coeff @dihedral:46-13-85-X opls 0.0 0.0 0.0 0.0
+ dihedral_coeff @dihedral:55-48-55-54 opls 0.0 3.9 0.0 0.0
+ dihedral_coeff @dihedral:X-48-81-X opls 0.0 7.25 0.0 0.0
+ dihedral_coeff @dihedral:X-57-85-X opls 0.0 5.0 0.0 0.0
+ dihedral_coeff @dihedral:X-85-85-X opls 0.0 10.75 0.0 0.0
+ dihedral_coeff @dihedral:13-13-13-20 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
+ } #(end of dihedral_coeffs)
+
+ 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*
+ @dihedral:1-2-2-2 @atom:*_b*_a*_d1_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i*
+ @dihedral:1-2-2-6 @atom:*_b*_a*_d1_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d6_i*
+ @dihedral:2-2-2-2 @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i*
+ @dihedral:2-2-2-6 @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d6_i*
+ @dihedral:2-2-2-10 @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d10_i*
+ @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-2-65 @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d65_i*
+ @dihedral:6-2-2-6 @atom:*_b*_a*_d6_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d6_i*
+ @dihedral:6-2-2-65 @atom:*_b*_a*_d6_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d65_i*
+ @dihedral:10-2-2-10 @atom:*_b*_a*_d10_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d10_i*
+ @dihedral:2-2-5-7 @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d7_i*
+ @dihedral:6-2-5-7 @atom:*_b*_a*_d6_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d7_i*
+ @dihedral:10-2-5-7 @atom:*_b*_a*_d10_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d7_i*
+ @dihedral:X-2-10-2 @atom:* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d10_i* @atom:*_b*_a*_d2_i*
+ @dihedral:2-2-10-2 @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d10_i* @atom:*_b*_a*_d2_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:6-2-20-2 @atom:*_b*_a*_d6_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d2_i*
+ @dihedral:6-2-20-6 @atom:*_b*_a*_d6_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d6_i*
+ @dihedral:4-3-3-4 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d4_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:4-3-3-24 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i*
+ @dihedral:4-3-3-46 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d46_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:24-3-3-46 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d46_i*
+ @dihedral:46-3-3-46 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d46_i*
+ @dihedral:3-3-5-7 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d7_i*
+ @dihedral:4-3-5-7 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d7_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:24-3-5-7 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d7_i*
+ @dihedral:46-3-5-7 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d7_i*
+ @dihedral:48-3-5-7 @atom:*_b*_a*_d48_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:4-3-20-48 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d48_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:3-3-24-45 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_i*
+ @dihedral:4-3-24-5 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d5_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-45 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_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:4-3-24-48 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d48_i*
+ @dihedral:4-3-24-91 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d91_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:5-3-24-45 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_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:20-3-24-45 @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_i*
+ @dihedral:24-3-24-3 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_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:24-3-24-45 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_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:46-3-24-45 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_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:48-3-24-45 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_i*
+ @dihedral:48-3-24-48 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d48_i*
+ @dihedral:48-3-24-84 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d84_i*
+ @dihedral:48-3-24-87 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d87_i*
+ @dihedral:84-3-24-48 @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d48_i*
+ @dihedral:84-3-24-84 @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d84_i*
+ @dihedral:84-3-24-87 @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d87_i*
+ @dihedral:87-3-24-45 @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_i*
+ @dihedral:87-3-24-48 @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d48_i*
+ @dihedral:87-3-24-84 @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d84_i*
+ @dihedral:87-3-24-87 @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d87_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:4-3-48-48 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i*
+ @dihedral:5-3-48-48 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_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:20-3-48-48 @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i*
+ @dihedral:24-3-48-48 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i*
+ @dihedral:46-3-48-48 @atom:*_b*_a*_d46_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:46-3-56-X @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d56_i* @atom:*
+ @dihedral:46-3-56-45 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d45_i*
+ @dihedral:X-3-60-X @atom:* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d60_i* @atom:*
+ @dihedral:4-3-60-X @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d60_i* @atom:*
+ @dihedral:4-3-82-X @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d82_i* @atom:*
+ @dihedral:4-3-82-57 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d57_i*
+ @dihedral:4-3-82-61 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i*
+ @dihedral:82-3-82-57 @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d57_i*
+ @dihedral:82-3-82-61 @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i*
+ @dihedral:4-3-84-20 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d20_i*
+ @dihedral:4-3-84-87 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d87_i*
+ @dihedral:84-3-84-20 @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d20_i*
+ @dihedral:84-3-84-87 @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d87_i*
+ @dihedral:48-3-86-48 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:X-3-87-X @atom:* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d87_i* @atom:*
+ @dihedral:4-3-87-84 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d84_i*
+ @dihedral:4-3-87-87 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d87_i*
+ @dihedral:24-3-87-84 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d84_i*
+ @dihedral:24-3-87-87 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d87_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:4-3-109-109 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i*
+ @dihedral:5-3-109-109 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i*
+ @dihedral:X-4-106-X @atom:* @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d106_i* @atom:*
+ @dihedral:7-5-10-2 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d10_i* @atom:*_b*_a*_d2_i*
+ @dihedral:7-5-10-6 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d10_i* @atom:*_b*_a*_d6_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-44-45 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d45_i*
+ @dihedral:7-5-24-3 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i*
+ @dihedral:7-5-24-45 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_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-48-48 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i*
+ @dihedral:7-5-51-20 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d51_i* @atom:*_b*_a*_d20_i*
+ @dihedral:7-5-56-3 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d3_i*
+ @dihedral:7-5-64-4 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d64_i* @atom:*_b*_a*_d4_i*
+ @dihedral:7-5-64-5 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d64_i* @atom:*_b*_a*_d5_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:7-5-79-23 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d23_i*
+ @dihedral:7-5-79-48 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d48_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:17-15-48-X @atom:*_b*_a*_d17_i* @atom:*_b*_a*_d15_i* @atom:*_b*_a*_d48_i* @atom:*
+ @dihedral:17-15-48-48 @atom:*_b*_a*_d17_i* @atom:*_b*_a*_d15_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_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:84-16-82-X @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d82_i* @atom:*
+ @dihedral:84-16-82-61 @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i*
+ @dihedral:82-16-84-49 @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d49_i*
+ @dihedral:82-16-84-83 @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d83_i*
+ @dihedral:82-16-84-88 @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d88_i*
+ @dihedral:X-16-91-X @atom:* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d91_i* @atom:*
+ @dihedral:19-18-48-X @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d18_i* @atom:*_b*_a*_d48_i* @atom:*
+ @dihedral:19-18-48-48 @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d18_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_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:18-18-56-46 @atom:*_b*_a*_d18_i* @atom:*_b*_a*_d18_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d46_i*
+ @dihedral:X-19-19-X @atom:* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d19_i* @atom:*
+ @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:46-19-19-109 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d109_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:3-20-48-48 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_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:64-20-48-48 @atom:*_b*_a*_d64_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_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:X-20-64-52 @atom:* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d64_i* @atom:*_b*_a*_d52_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:48-20-64-4 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d64_i* @atom:*_b*_a*_d4_i*
+ @dihedral:84-20-82-61 @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i*
+ @dihedral:82-20-84-88 @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d88_i*
+ @dihedral:84-20-84-49 @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d49_i*
+ @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*
+ @dihedral:45-24-48-48 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i*
+ @dihedral:59-24-48-48 @atom:*_b*_a*_d59_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i*
+ @dihedral:82-24-48-48 @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i*
+ @dihedral:84-24-48-48 @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i*
+ @dihedral:X-24-59-X @atom:* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d59_i* @atom:*
+ @dihedral:X-24-59-49 @atom:* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d59_i* @atom:*_b*_a*_d49_i*
+ @dihedral:45-24-59-X @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d59_i* @atom:*
+ @dihedral:X-24-60-X @atom:* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d60_i* @atom:*
+ @dihedral:X-24-79-23 @atom:* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d23_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:45-24-79-48 @atom:*_b*_a*_d45_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:45-24-82-16 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d16_i*
+ @dihedral:45-24-82-20 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d20_i*
+ @dihedral:45-24-82-61 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i*
+ @dihedral:48-24-82-16 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d16_i*
+ @dihedral:48-24-82-20 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d20_i*
+ @dihedral:48-24-82-61 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i*
+ @dihedral:X-24-84-X @atom:* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d84_i* @atom:*
+ @dihedral:3-24-84-84 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d84_i*
+ @dihedral:45-24-84-16 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d16_i*
+ @dihedral:45-24-84-20 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d20_i*
+ @dihedral:48-24-84-16 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d16_i*
+ @dihedral:48-24-84-20 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d20_i*
+ @dihedral:3-24-86-48 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:3-24-86-56 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d56_i*
+ @dihedral:3-24-86-86 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d86_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:X-24-87-X @atom:* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d87_i* @atom:*
+ @dihedral:X-24-88-X @atom:* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d88_i* @atom:*
+ @dihedral:3-24-91-46 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d46_i*
+ @dihedral:3-24-91-89 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d89_i*
+ @dihedral:3-24-91-91 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i*
+ @dihedral:45-24-91-46 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d46_i*
+ @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: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-X @atom:* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*
+ @dihedral:X-48-48-13 @atom:* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d13_i*
+ @dihedral:X-48-48-48 @atom:* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i*
+ @dihedral:X-48-48-49 @atom:* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d49_i*
+ @dihedral:1-48-48-48 @atom:*_b*_a*_d1_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i*
+ @dihedral:1-48-48-49 @atom:*_b*_a*_d1_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d49_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:21-48-48-48 @atom:*_b*_a*_d21_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i*
+ @dihedral:21-48-48-49 @atom:*_b*_a*_d21_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d49_i*
+ @dihedral:44-48-48-49 @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d49_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-48-48 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i*
+ @dihedral:48-48-48-49 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d49_i*
+ @dihedral:48-48-48-50 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d50_i*
+ @dihedral:48-48-48-55 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d55_i*
+ @dihedral:48-48-48-60 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d60_i*
+ @dihedral:48-48-48-65 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d65_i*
+ @dihedral:48-48-48-66 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d66_i*
+ @dihedral:48-48-48-86 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i*
+ @dihedral:48-48-48-109 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d109_i*
+ @dihedral:49-48-48-49 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d49_i*
+ @dihedral:49-48-48-50 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d50_i*
+ @dihedral:49-48-48-60 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d60_i*
+ @dihedral:49-48-48-65 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d65_i*
+ @dihedral:49-48-48-66 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d66_i*
+ @dihedral:49-48-48-86 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i*
+ @dihedral:49-48-48-109 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d109_i*
+ @dihedral:56-48-48-86 @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i*
+ @dihedral:48-48-50-46 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d46_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-46 @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d46_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:48-48-53-54 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d54_i*
+ @dihedral:X-48-55-45 @atom:* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d45_i*
+ @dihedral:48-48-55-45 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d45_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:55-48-55-45 @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d45_i*
+ @dihedral:60-48-55-45 @atom:*_b*_a*_d60_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d45_i*
+ @dihedral:X-48-56-X @atom:* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d56_i* @atom:*
+ @dihedral:48-48-56-48 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d48_i*
+ @dihedral:49-48-56-48 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d48_i*
+ @dihedral:X-48-60-X @atom:* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d60_i* @atom:*
+ @dihedral:X-48-79-23 @atom:* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d23_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:48-48-79-24 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d24_i*
+ @dihedral:48-48-86-48 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:48-48-86-56 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d56_i*
+ @dihedral:48-48-86-86 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d86_i*
+ @dihedral:49-48-86-48 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:49-48-86-56 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d56_i*
+ @dihedral:49-48-86-86 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d86_i*
+ @dihedral:56-48-86-48 @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:56-48-86-86 @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d86_i*
+ @dihedral:49-48-88-49 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d88_i* @atom:*_b*_a*_d49_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-102-103 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d102_i* @atom:*_b*_a*_d103_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:48-48-109-46 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d46_i*
+ @dihedral:48-48-109-109 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i*
+ @dihedral:X-50-50-49 @atom:* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d49_i*
+ @dihedral:3-50-50-3 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d3_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-46 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d46_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:46-50-109-46 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d46_i*
+ @dihedral:46-50-109-109 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_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:48-53-82-61 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i*
+ @dihedral:45-55-59-X @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d59_i* @atom:*
+ @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:48-56-56-48 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d48_i*
+ @dihedral:X-56-59-X @atom:* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d59_i* @atom:*
+ @dihedral:X-56-59-49 @atom:* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d59_i* @atom:*_b*_a*_d49_i*
+ @dihedral:X-56-60-X @atom:* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d60_i* @atom:*
+ @dihedral:X-56-62-X @atom:* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d62_i* @atom:*
+ @dihedral:X-56-82-X @atom:* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d82_i* @atom:*
+ @dihedral:48-56-86-48 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:48-56-86-86 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d86_i*
+ @dihedral:X-57-60-X @atom:* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d60_i* @atom:*
+ @dihedral:45-57-60-X @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d60_i* @atom:*
+ @dihedral:X-57-61-X @atom:* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d61_i* @atom:*
+ @dihedral:X-57-62-X @atom:* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d62_i* @atom:*
+ @dihedral:X-57-81-X @atom:* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d81_i* @atom:*
+ @dihedral:X-57-82-X @atom:* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d82_i* @atom:*
+ @dihedral:X-57-82-49 @atom:* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d49_i*
+ @dihedral:45-57-82-X @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d82_i* @atom:*
+ @dihedral:X-57-84-X @atom:* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d84_i* @atom:*
+ @dihedral:45-57-84-X @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d84_i* @atom:*
+ @dihedral:61-57-86-48 @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:84-57-86-48 @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:X-60-60-X @atom:* @atom:*_b*_a*_d60_i* @atom:*_b*_a*_d60_i* @atom:*
+ @dihedral:X-60-61-X @atom:* @atom:*_b*_a*_d60_i* @atom:*_b*_a*_d61_i* @atom:*
+ @dihedral:X-60-80-X @atom:* @atom:*_b*_a*_d60_i* @atom:*_b*_a*_d80_i* @atom:*
+ @dihedral:X-60-81-X @atom:* @atom:*_b*_a*_d60_i* @atom:*_b*_a*_d81_i* @atom:*
+ @dihedral:X-60-87-X @atom:* @atom:*_b*_a*_d60_i* @atom:*_b*_a*_d87_i* @atom:*
+ @dihedral:48-60-87-84 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d60_i* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d84_i*
+ @dihedral:60-60-87-84 @atom:*_b*_a*_d60_i* @atom:*_b*_a*_d60_i* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d84_i*
+ @dihedral:X-61-61-X @atom:* @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d61_i* @atom:*
+ @dihedral:X-61-62-X @atom:* @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d62_i* @atom:*
+ @dihedral:X-61-82-X @atom:* @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d82_i* @atom:*
+ @dihedral:X-61-82-49 @atom:* @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d49_i*
+ @dihedral:83-61-82-16 @atom:*_b*_a*_d83_i* @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d16_i*
+ @dihedral:88-61-82-16 @atom:*_b*_a*_d88_i* @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d16_i*
+ @dihedral:88-61-82-20 @atom:*_b*_a*_d88_i* @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d20_i*
+ @dihedral:X-61-83-X @atom:* @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d83_i* @atom:*
+ @dihedral:82-61-83-49 @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d83_i* @atom:*_b*_a*_d49_i*
+ @dihedral:82-61-83-84 @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d83_i* @atom:*_b*_a*_d84_i*
+ @dihedral:X-61-84-X @atom:* @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d84_i* @atom:*
+ @dihedral:X-61-88-X @atom:* @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d88_i* @atom:*
+ @dihedral:82-61-88-84 @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d88_i* @atom:*_b*_a*_d84_i*
+ @dihedral:X-80-84-X @atom:* @atom:*_b*_a*_d80_i* @atom:*_b*_a*_d84_i* @atom:*
+ @dihedral:X-82-84-X @atom:* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d84_i* @atom:*
+ @dihedral:16-82-86-48 @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:20-82-86-48 @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:57-82-86-48 @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:61-82-86-48 @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:X-82-87-X @atom:* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d87_i* @atom:*
+ @dihedral:X-83-84-X @atom:* @atom:*_b*_a*_d83_i* @atom:*_b*_a*_d84_i* @atom:*
+ @dihedral:X-83-84-49 @atom:* @atom:*_b*_a*_d83_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d49_i*
+ @dihedral:49-83-84-X @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d83_i* @atom:*_b*_a*_d84_i* @atom:*
+ @dihedral:49-83-84-16 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d83_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d16_i*
+ @dihedral:49-83-84-49 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d83_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d49_i*
+ @dihedral:61-83-84-16 @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d83_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d16_i*
+ @dihedral:61-83-84-20 @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d83_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d20_i*
+ @dihedral:61-83-84-49 @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d83_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d49_i*
+ @dihedral:X-83-86-48 @atom:* @atom:*_b*_a*_d83_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:61-83-86-48 @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d83_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:61-83-87-X @atom:*_b*_a*_d61_i* @atom:*_b*_a*_d83_i* @atom:*_b*_a*_d87_i* @atom:*
+ @dihedral:84-83-87-X @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d83_i* @atom:*_b*_a*_d87_i* @atom:*
+ @dihedral:X-84-84-X @atom:* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d84_i* @atom:*
+ @dihedral:X-84-84-49 @atom:* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d49_i*
+ @dihedral:16-84-84-49 @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d49_i*
+ @dihedral:49-84-84-49 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d49_i*
+ @dihedral:X-84-86-48 @atom:* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:16-84-86-48 @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:20-84-86-48 @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:57-84-86-48 @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:X-84-87-X @atom:* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d87_i* @atom:*
+ @dihedral:X-84-87-49 @atom:* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d49_i*
+ @dihedral:49-84-87-49 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d49_i*
+ @dihedral:X-84-88-49 @atom:* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d88_i* @atom:*_b*_a*_d49_i*
+ @dihedral:16-84-88-49 @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d88_i* @atom:*_b*_a*_d49_i*
+ @dihedral:16-84-88-61 @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d88_i* @atom:*_b*_a*_d61_i*
+ @dihedral:20-84-88-61 @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d88_i* @atom:*_b*_a*_d61_i*
+ @dihedral:49-84-88-X @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d88_i* @atom:*
+ @dihedral:49-84-88-61 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d88_i* @atom:*_b*_a*_d61_i*
+ @dihedral:48-86-86-48 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i*
+ @dihedral:48-86-86-56 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d56_i*
+ @dihedral:48-86-87-X @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d87_i* @atom:*
+ @dihedral:48-86-88-X @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d88_i* @atom:*
+ @dihedral:48-86-88-61 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d88_i* @atom:*_b*_a*_d61_i*
+ @dihedral:56-86-88-X @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d88_i* @atom:*
+ @dihedral:X-87-87-20 @atom:* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d20_i*
+ @dihedral:X-87-87-57 @atom:* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d57_i*
+ @dihedral:X-87-87-87 @atom:* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d87_i*
+ @dihedral:49-87-87-49 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d87_i* @atom:*_b*_a*_d49_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:4-89-90-45 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d89_i* @atom:*_b*_a*_d90_i* @atom:*_b*_a*_d45_i*
+ @dihedral:4-89-90-48 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d89_i* @atom:*_b*_a*_d90_i* @atom:*_b*_a*_d48_i*
+ @dihedral:4-89-90-91 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d89_i* @atom:*_b*_a*_d90_i* @atom:*_b*_a*_d91_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:91-89-90-45 @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d89_i* @atom:*_b*_a*_d90_i* @atom:*_b*_a*_d45_i*
+ @dihedral:91-89-90-48 @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d89_i* @atom:*_b*_a*_d90_i* @atom:*_b*_a*_d48_i*
+ @dihedral:91-89-90-91 @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d89_i* @atom:*_b*_a*_d90_i* @atom:*_b*_a*_d91_i*
+ @dihedral:X-89-91-X @atom:* @atom:*_b*_a*_d89_i* @atom:*_b*_a*_d91_i* @atom:*
+ @dihedral:4-89-91-46 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d89_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d46_i*
+ @dihedral:4-89-91-91 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d89_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i*
+ @dihedral:90-89-91-46 @atom:*_b*_a*_d90_i* @atom:*_b*_a*_d89_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d46_i*
+ @dihedral:90-89-91-91 @atom:*_b*_a*_d90_i* @atom:*_b*_a*_d89_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i*
+ @dihedral:X-90-91-X @atom:* @atom:*_b*_a*_d90_i* @atom:*_b*_a*_d91_i* @atom:*
+ @dihedral:X-90-91-46 @atom:* @atom:*_b*_a*_d90_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d46_i*
+ @dihedral:X-90-91-91 @atom:* @atom:*_b*_a*_d90_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i*
+ @dihedral:X-91-91-X @atom:* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i* @atom:*
+ @dihedral:X-91-91-24 @atom:* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d24_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:46-91-91-46 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d46_i*
+ @dihedral:46-91-91-91 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i*
+ @dihedral:91-91-91-91 @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i*
+ @dihedral:X-109-109-X @atom:* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* @atom:*
+ @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:46-109-109-46 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d46_i*
+ @dihedral:46-109-109-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d48_i*
+ @dihedral:46-109-109-50 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d50_i*
+ @dihedral:46-109-109-109 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i*
+ @dihedral:48-109-109-48 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d48_i*
+ @dihedral:48-109-109-50 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d50_i*
+ @dihedral:48-109-109-109 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i*
+ @dihedral:50-109-109-50 @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d50_i*
+ @dihedral:50-109-109-109 @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i*
+ @dihedral:109-109-109-109 @atom:*_b*_a*_d109_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:55-48-55-54 @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d54_i*
+ @dihedral:X-48-81-X @atom:* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d81_i* @atom:*
+ @dihedral:X-57-85-X @atom:* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d85_i* @atom:*
+ @dihedral:X-85-85-X @atom:* @atom:*_b*_a*_d85_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)
+
+
+ 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
+ improper_coeff @improper:X-X-24-X harmonic 2.5 180.0
+ improper_coeff @improper:X-X-47-X harmonic 15.0 180.0
+ improper_coeff @improper:X-X-48-X harmonic 2.5 180.0
+ } #(end of improper_coeffs)
+
+ 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
+ @improper:X-X-24-X @atom:* @atom:* @atom:*_b*_a*_d*_i24 @atom:*
+ @improper:X-X-47-X @atom:* @atom:* @atom:*_b*_a*_d*_i47 @atom:*
+ @improper:X-X-48-X @atom:* @atom:* @atom:*_b*_a*_d*_i48 @atom:*
+ } #(end of impropers by type)
+
+
+ # -------- (descriptive comment) --------
+ # ---- biologically relevant atom types: ----
+ # 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
+ # ---------- (end of comment) ----------
+
+
+ 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
+
+} # OPLSAA
+
+
+
+
+
+
+############################### NOTES ####################################
+#
+# This file was generated 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
+# (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
+# help reduce the number of atom types, which can help with visualization,
+# and in some cases may also improve performance.)
+#
+# The following 1-2, 1-3, and 1-4 weighting parameters were ASSUMED:
+# 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: 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.
+##########################################################################
+
diff --git a/tools/moltemplate/src/moltemplate_force_fields/oplsaa/AUTHOR.TXT b/tools/moltemplate/src/moltemplate_force_fields/oplsaa/AUTHOR.TXT
new file mode 100644
index 000000000..a46bd51d4
--- /dev/null
+++ b/tools/moltemplate/src/moltemplate_force_fields/oplsaa/AUTHOR.TXT
@@ -0,0 +1,3 @@
+OPLSAA force-field conversion tools provided by
+Jason Lambert, Sebastian Echeverri, and Andrew Jewett
+
diff --git a/tools/moltemplate/common/oplsaa/README.TXT b/tools/moltemplate/src/moltemplate_force_fields/oplsaa/README.TXT
similarity index 100%
rename from tools/moltemplate/common/oplsaa/README.TXT
rename to tools/moltemplate/src/moltemplate_force_fields/oplsaa/README.TXT
diff --git a/tools/moltemplate/src/moltemplate_force_fields/oplsaa/loplsaa_ext.prm b/tools/moltemplate/src/moltemplate_force_fields/oplsaa/loplsaa_ext.prm
new file mode 100644
index 000000000..ff0e3e445
--- /dev/null
+++ b/tools/moltemplate/src/moltemplate_force_fields/oplsaa/loplsaa_ext.prm
@@ -0,0 +1,87 @@
+ ###########################################################################
+ ## 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 used with "tinkerparm2lt.py" to create "loplsaa.lt" ##
+ ###########################################################################
+
+atom 80L 13L CT "Alkane CH3- (LOPLS CT_CH3)" 6 12.011 4
+atom 81L 13L CT "Alkane -CH2- (LOPLS CT_CH2)" 6 12.011 4
+atom 85LCH3 46 HC "Alkane H-C CH3 (LOPLS HC_CH3)" 1 1.008 1
+atom 85LCH2 46 HC "Alkane H-C CH2 (LOPLS HC_CH2)" 1 1.008 1
+atom 87L 47L CM "Alkene RH-C= (LOPLS CM_CH)" 6 12.011 3
+atom 89L 46 HC "Alkene H-C= (LOPLS HC_CH)" 1 1.008 1
+atom 86L 47L CM "Alkene R2-C= (LOPLS)" 6 12.011 3
+atom 88L 47L CM "Alkene H2-C= (LOPLS)" 6 12.011 3
+atom 169L 47L CM "Chloroalkene Cl-CH= (LOPLS)" 6 12.011 3
+atom 266L 47L CM "Uracil & Thymine C5 (LOPLS)" 6 12.011 3
+atom 267L 47L CM "Uracil & Thymine C6 (LOPLS)" 6 12.011 3
+atom 280L 47L CM "Cytosine C5 (LOPLS)" 6 12.011 3
+atom 281L 47L CM "Cytosine C6 (LOPLS)" 6 12.011 3
+atom 324L 47L CM "CytosineH+ C5 (LOPLS)" 6 12.011 3
+atom 325L 47L CM "CytosineH+ C6 (LOPLS)" 6 12.011 3
+atom 340L 47L CM "Trifluorothymine CF3- (LOPLS)" 6 12.011 4
+atom 342L 47L CM "Chloroalkene Cl2-C= (LOPLS)" 6 12.011 3
+atom 458L 47L CM "Vinyl Ether =CH-OR (LOPLS)" 6 12.011 3
+atom 459L 47L CM "Vinyl Ether =CR-OR (LOPLS)" 6 12.011 3
+atom 649L 47L CM "Cl..CH3..Cl- Sn2 TS (LOPLS)" 6 12.011 5
+atom 900L 47L CM "Allene/Ketene H2C=C=X (LOPLS)" 6 12.011 3
+atom 901L 47L CM "Allene/Ketene HRC=C=X (LOPLS)" 6 12.011 3
+atom 902L 47L CM "Allene/Ketene R2C=C=X (LOPLS)" 6 12.011 3
+
+vdw 80L 3.5000 0.0660
+vdw 81L 3.5000 0.0660
+vdw 85LCH3 2.5000 0.0300
+vdw 85LCH2 2.5000 0.026290630975
+vdw 87L 3.5500 0.0760
+vdw 89L 2.4200 0.0300
+vdw 86L 3.5500 0.0760
+vdw 88L 3.5500 0.0760
+vdw 169L 3.5500 0.0760
+vdw 266L 3.5000 0.0800
+vdw 267L 3.5000 0.0800
+vdw 280L 3.5000 0.0800
+vdw 281L 3.5000 0.0800
+vdw 324L 3.5000 0.0800
+vdw 325L 3.5000 0.0800
+vdw 340L 3.5000 0.0800
+vdw 342L 3.5500 0.0760
+vdw 458L 3.5500 0.0760
+vdw 459L 3.5500 0.0760
+vdw 649L 3.5500 0.0760
+vdw 900L 3.3000 0.0860
+vdw 901L 3.3000 0.0860
+vdw 902L 3.3000 0.0860
+
+# New torsion angle parameters
+# Taken from table 2 of
+# Sui, Pluhackova, Böckmann, J.Chem.Theory.Comp (2012), 8, 1459
+torsion 13L 13L 13L 13L 0.6446926386 0 1 -0.2143420172 180 2 0.1782194073 0 3 0 180 4 # offset V0=-0.0731209369
+torsion 0 47L 47L 0 0.0 0 1 12.2502629063 180 2 0.0 0 3 0 180 4 # offset V0=0.0
+torsion 47L 47L 13L 13L -0.8050121893 0 1 0.3218905354 180 2 -0.1032768881 0 3 0 180 4 # offset V0=-0.3574832696
+torsion 13L 13L 13L 47L 0.4821902486 0 1 0.1343683078 180 2 0.1777461759 0 3 0 180 4 # offset V0=0.4405726577
+
+charge 80L -0.222 #"Alkane CH3- (LOPLS)" "CT_CH3" 3.50 0.0660
+charge 81L -0.148 #"Alkane -CH2- (LOPLS)" "CT_CH2" 3.50 0.0660
+charge 85LCH3 0.074 #"Alkane H-C CH3 (LOPLS)" "HC_CH3" 2.50 0.0300
+charge 85LCH2 0.074 #"Alkane H-C CH2 (LOPLS)" "HC_CH2" 2.50 0.0263
+charge 87L -0.160 #"Alkene RH-C= (LOPLS)" "CM_CH" 3.55 0.0760
+charge 89L 0.160 #"Alkene H-C= (LOPLS)" "HC_CH" 2.42 0.0300
+charge 86L 0.0000
+charge 88L -0.2300
+charge 169L 0.0050
+charge 266L -0.0700
+charge 267L 0.0800
+charge 280L -0.0600
+charge 281L 0.1000
+charge 324L -0.0600
+charge 325L 0.1000
+charge 340L 0.1800
+charge 342L 0.1200
+charge 458L -0.0300
+charge 459L 0.0850
+charge 649L -0.3440
+charge 900L -0.2500
+charge 901L -0.1000
+charge 902L 0.0500
diff --git a/tools/moltemplate/common/spce.lt b/tools/moltemplate/src/moltemplate_force_fields/spce.lt
similarity index 100%
rename from tools/moltemplate/common/spce.lt
rename to tools/moltemplate/src/moltemplate_force_fields/spce.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/moltemplate_files/spce_ice_rect16.lt b/tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect16.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/moltemplate_files/spce_ice_rect16.lt
rename to tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect16.lt
diff --git a/tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/moltemplate_files/spce_ice_rect32.lt b/tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect32.lt
similarity index 100%
rename from tools/moltemplate/examples/all_atom_examples/force_field_explicit/ice_crystal/moltemplate_files/spce_ice_rect32.lt
rename to tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect32.lt
diff --git a/tools/moltemplate/common/spce_ice_rect8.lt b/tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect8.lt
similarity index 100%
rename from tools/moltemplate/common/spce_ice_rect8.lt
rename to tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect8.lt
diff --git a/tools/moltemplate/common/tip3p_1983.lt b/tools/moltemplate/src/moltemplate_force_fields/tip3p_1983.lt
similarity index 100%
rename from tools/moltemplate/common/tip3p_1983.lt
rename to tools/moltemplate/src/moltemplate_force_fields/tip3p_1983.lt
diff --git a/tools/moltemplate/common/tip3p_1983_charmm.lt b/tools/moltemplate/src/moltemplate_force_fields/tip3p_1983_charmm.lt
similarity index 100%
rename from tools/moltemplate/common/tip3p_1983_charmm.lt
rename to tools/moltemplate/src/moltemplate_force_fields/tip3p_1983_charmm.lt
diff --git a/tools/moltemplate/common/tip3p_2004.lt b/tools/moltemplate/src/moltemplate_force_fields/tip3p_2004.lt
similarity index 100%
rename from tools/moltemplate/common/tip3p_2004.lt
rename to tools/moltemplate/src/moltemplate_force_fields/tip3p_2004.lt
diff --git a/tools/moltemplate/common/trappe1998.lt b/tools/moltemplate/src/moltemplate_force_fields/trappe1998.lt
similarity index 100%
rename from tools/moltemplate/common/trappe1998.lt
rename to tools/moltemplate/src/moltemplate_force_fields/trappe1998.lt
diff --git a/tools/moltemplate/common/watmw.lt b/tools/moltemplate/src/moltemplate_force_fields/watmw.lt
similarity index 100%
rename from tools/moltemplate/common/watmw.lt
rename to tools/moltemplate/src/moltemplate_force_fields/watmw.lt
diff --git a/tools/moltemplate/src/oplsaa_moltemplate.py b/tools/moltemplate/src/moltemplate_scripts_depreciated/oplsaa_moltemplate.py
similarity index 95%
rename from tools/moltemplate/src/oplsaa_moltemplate.py
rename to tools/moltemplate/src/moltemplate_scripts_depreciated/oplsaa_moltemplate.py
index fd590a3fd..059aacaaf 100755
--- a/tools/moltemplate/src/oplsaa_moltemplate.py
+++ b/tools/moltemplate/src/moltemplate_scripts_depreciated/oplsaa_moltemplate.py
@@ -1,466 +1,489 @@
#! /usr/bin/env python
#
# The purpose of this script is to create a moltemplate lt file for the oplsaa.
# forcefield. This will assist researchers in building complex simulations using
# this OPLS-UA and the OPLS-AA forcefields.
__author__="Jason Lambert"
-# (some additional corrections by Miguel Gonzalez and Andrew Jewett)
-__version__="0.20"
+# (some additional corrections by Miguel Gonzalez, Yue Chun Chiu, and Andrew Jewett)
+__version__="0.21"
import sys
import os
from operator import itemgetter
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
# lines beginning with the word \"atoms\" should be deleted.
# (Leave the other sections of this file alone.)
#""")
if sys.version > '3':
import io
else:
import cStringIO
try:
if sys.version < '2.7':
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.7 or later).')
except Exception as err:
sys.stderr.write('\n\n'+str(err)+'\n')
sys.exit(-1)
#input data from file containing oplsaa force field parameters.
try:
f=open(sys.argv[1],"r")
except:
sys.stderr.write("Error: \n"
" You need to specify a file name as an input argument:\n"
" python oplsaa_moltemplate.py <forcefield file name>\n"
" (or the file name is specified incorrectly)\n")
sys.exit()
sys.stderr.write(g_program_name+", version "+__version__+"\n"
"Reading parameter file...\n")
#output lt file
g=open("oplsaa.lt","w")
lines = f.readlines()
# Ignore/Comment out lines before the "## Atom Type Definitions ##" section.
for i in range(0, len(lines)):
if (lines[i].find("## Atom Type Definitions ##") != -1):
break
else:
lines[i] = '# ' + lines[i]
# 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
# 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('#')
if ic != -1:
line = (line[:ic]).strip()
else:
line = line.strip()
# now look for lines beginning with the word "atom"
tokens = line.split()
if ((len(tokens)>2) and (tokens[0] == "atom")):
num_atomTypes += 1
if (int(tokens[1]) > max_atomType):
max_atomType = int(tokens[1])
if num_atomTypes > 25:
sys.stderr.write("\n"
"(Note: If your computer freezes while running "+g_program_name+",\n"
" it could be because you forgot to edit the .prm file.\n"
" The original \"oplsaa.prm\" file distributed with TINKER has over 900 atom\n"
" types. If you run "+g_program_name+" on this file, it may freeze or\n"
" crash. Instead, run "+g_program_name+" on a SUBSET of the OPLS atoms\n"
" relevant to your problem. To do that, delete the lines from the .prm\n"
" file beginning with \"atom\" which you do not need.)\n\n")
#temporary storage file
atom_lookup={} #this dictionary contains all the atom ffid's as a key and the number of atoms with that key
#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 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 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)
#atom[][2]=atom_mass
#atom[][3]=partial charge
#atom[][4]=non_bonding sigma
#atom[][5]=non_bonding epsilon
#atom[][6]=atom comment
bond=[]
#bond contains the following data
#bond[0]=atom 1 ffid
#bond[1]=atom 2 ffid
#bond[2]=bond spring constant(OPLS-aa compatible)
#bond[3]=equilibrium bond distance(Angstrom)
angle=[]
#angle contains the following data
#angle[0]=atom 1 ffid
#angle[1]=atom 2 ffid
#angle[2]=atom 3 ffid
#angle[3]=spring constant
#angle[4]=equilibrium angle (degrees)
dihedral=[]
#dihedral contains the following data
#dihedral[0]=atom 1 ffid
#dihedral[1]=atom 2 ffid
#dihedral[2]=atom 3 ffid
#dihedral[3]=atom 4 ffid
#dihedral[4]=v1
#dihedral[5]=v2
#dihedral[6]=v3
#dihedral[7]=v4
improper=[]
#improper[0]=atom 1 ffid
#improper[1]=atom 2 ffid(central atom)
#improper[2]=atom 3 ffid
#improper[3]=atom 4 ffid
#improper[4]=spring coefficient
#improper[5]=equilibrium angle
#This section gets all the parameters from the force field file
for line in lines:
# skip over text after a # comment character
ic = line.find('#')
if ic != -1:
line = (line[:ic]).strip()
else:
line = line.strip()
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])]
elif line.find("vdw") == 0:
line=line.split()
#vdw_temp.append([float(line[1]),float(line[2]),float(line[3])])
if (int(line[1]) <= max_atomType):
vdw_by_type[int(line[1])] = (float(line[2]),float(line[3]))
elif line.find("bond") == 0:
line=line.split()
bond.append([int(line[1]),int(line[2]),float(line[3]),float(line[4])])
elif line.find("angle") == 0:
line=line.split()
angle.append([int(line[1]),int(line[2]),int(line[3]),
float(line[4]),float(line[5])])
elif line.find("torsion") == 0:
line=line.split()
dihedral.append([int(line[1]),int(line[2]),int(line[3]),int(line[4]),
float(line[5]),float(line[8]), float(line[11]), 0.0])
elif line.find("charge") == 0:
line=line.split()
#charge_temp.append([int(line[1]),float(line[2])])
if (int(line[1]) <= max_atomType):
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]),
int(line[3]), int(line[4]), float(line[5]), float(line[6])])
#if len(atom) > 600:
# sys.stderr.write("WARNING: The number of atom types in your file exceeds 600\n"
# " (You were supposed to edit out the atoms you don't need.\n"
# " Not doing this may crash your computer.)\n"
# "\n"
# " Proceed? (Y/N): ")
# reply = sys.stdin.readline()
# if find(reply.strip().lower(), 'y') != 0:
# exit(0)
#adding the charge and Lennard Jones parameters to
#to each atom type.
#----------------------------------------------#
+
+system_is_charged = False
+
for i in range(0,len(atom)):
atom_type_num = atom[i][0]
#q = charge_by_type.get(atomTypeNum)
#if q:
# atom[i][3] = q
if atom_type_num != -10000:
q = charge_by_type[atom_type_num]
atom[i][3] = q
+ if q != 0.0:
+ # the system has some charged atoms
+ system_is_charged = True
for i in range(0,len(atom)):
atom_type_num = atom[i][0]
#vdw_params = vdw_by_type.get(atomTypeNum)
#if vdw_params:
# atom[i][4] = vdw_params[0]
# atom[i][5] = vdw_params[1]
if atom_type_num != -10000:
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)
+
+
+if system_is_charged:
+ pair_style = "lj/cut/coul/long"
+ pair_style_params = "10.0 10.0"
+ kspace_style = " kspace_style pppm 0.0001\n"
+else:
+ pair_style = "lj/cut"
+ pair_style_params = "10.0"
+ kspace_style = ""
+
+pair_style_command = " pair_style hybrid "+pair_style+" "+pair_style_params+"\n"
+
+
+
#----------------------------------------------------------#
#begin writing content to lt file
g.write("# NOTE: This file was created automatically using:\n"
"# "+g_program_name+" \""+sys.argv[1]+"\"\n\n\n")
g.write("OPLSAA {\n\n" )
#write out the atom masses
#----------------------------------------------------------#
g.write(" write_once(\"Data Masses\"){\n")#checked with gaff
for i,x in enumerate(atom):
if x[0] != -10000:
g.write(" @atom:{} {} #{} partial charge={}\n".format(
x[0],x[2],x[6],x[3]))
g.write(" } #(end of atom masses)\n\n")
#----------------------------------------------------------#
#write out the pair coefficients
#----------------------------------------------------------#
g.write(" write_once(\"In Settings\"){\n")#checked with gaff
for i,x in enumerate(atom):
if x[0] != -10000:
- g.write(" pair_coeff @atom:{0} @atom:{0} lj/cut/coul/long {1} {2}\n".format(x[0],x[5],x[4]))
+ fmt = " pair_coeff @atom:{0} @atom:{0} "+pair_style+" {1} {2}\n"
+ g.write(fmt.format(x[0],x[5],x[4]))
g.write(" } #(end of pair coeffs)\n\n")
g.write(" write_once(\"In Charges\"){\n")#checked with gaff
for i,x in enumerate(atom):
if x[0] != -10000:
g.write(" set type @atom:{0} charge {1}\n".format(x[0],x[3]))
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
# 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
# and improper assignment.
#------------------------------------------------------------#
atom=sorted(atom,key=itemgetter(1))
atom_ffid=0
for x in atom:
if x[1]==atom_ffid:
atom_lookup[x[1]].append(x[0])
elif x[1]>atom_ffid:
atom_lookup[x[1]]=[x[0]]
atom_ffid=x[1]
atom_lookup[0]=["*"]
#-------------------------------------------------------------#
#writing out the bond coefficients and bond parameters#
#-------------------------------------------------------------#
# First check if the atoms in system can potentially form bonds
might_have_bonds = False
for x in bond:
for y in atom_lookup.get(x[0],[]):
for z in atom_lookup.get(x[1],[]):
might_have_bonds = True
if might_have_bonds:
h=open("temp.txt","w+")
g.write(" write_once(\"In Settings\") {\n")
index1=0
for x in bond:
for y in atom_lookup.get(x[0],[]):
for z in atom_lookup.get(x[1],[]):
#g.write(" bond_coeff @bond:{}-{} harmonic {} {}\n".format(y,z,x[2]/2,x[3]))
# Miguel Gonzales corrected this line to:
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)
g.write(" write_once(\"Data Bonds By Type\") {\n")
for line in h.readlines():
g.write(line)
g.write(" } #(end of bonds by type)\n\n")
del(bond)
h.close()
#-----------------------------------------------------------#
#writing out angle coefficients and angles by type.---------#
#-----------------------------------------------------------#
# First check if the atoms in system can potentially form angle interactions
might_have_angles = False
for x in angle:
for y in atom_lookup.get(x[0],[]):
for z in atom_lookup.get(x[1],[]):
for u in atom_lookup.get(x[2],[]):
might_have_angles = True
if might_have_angles:
h=open("temp.txt","w+")
g.write(" write_once(\"Data Angles By Type\"){\n")
for x in angle:
for y in atom_lookup.get(x[0],[]):
for z in atom_lookup.get(x[1],[]):
for u in atom_lookup.get(x[2],[]):
#print(y,z,u,x)
#h.write(" angle_coeff @angle:{}-{}-{} harmonic {} {}\n".format(y,z,u,x[3]/2.0,x[4]))
# Miguel Gonzales corrected this line:
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")
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)
h.close()
#----------------------------------------------------------#
#writing dihedrals by type and dihedral coefficients-------#
#----------------------------------------------------------#
# First check if the atoms in system can potentially form dihedral interactions
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 v in atom_lookup.get(x[3],[]):
might_have_dihedrals = True
if might_have_dihedrals:
h=open("temp.txt","w+")
g.write(" write_once(\"Data Dihedrals By Type\") {\n")
#print(atom_lookup)
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 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))
h.write(" dihedral_coeff @dihedral:{}-{}-{}-{} opls {} {} {} {}\n".format(y,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}-{3} @atom:{0} @atom:{1} @atom:{2} @atom:{3}\n".format(
y,z,u,v))
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]))
del(dihedral)
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------------#
#-----------------------------------------------------------------------#
# First check if the atoms in system can potentially form improper interactions
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 v in atom_lookup.get(x[3],[]):
might_have_impropers = True
if might_have_impropers:
h=open("temp.txt","w+")
g.write(" write_once(\"Data Impropers By Type (opls_imp.py)\") {\n")
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 v in atom_lookup.get(x[3],[]):
# 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
# treats the third atom ("K") as the central atom.
# After checking the code, it appears that the improper angle is
# calculated as the angle between the I,J,K and the J,K,L planes
if x[0]==0 and x[1]==0 and x[3]==0:
g.write(" @improper:0-0-{2}-0 @atom:{0} @atom:{1} @atom:{2} @atom:{3}\n".format(y,z,u,v))
h.write(" improper_coeff @improper:0-0-{2}-0 harmonic {4} {5} \n".format(y,z,u,v,x[4]/2,180))
else:
g.write(" @improper:0-0-{2}-{3} @atom:{0} @atom:{1} @atom:{2} @atom:{3}\n".format(y,z,u,v))
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")
for line in h.readlines():
g.write(line)
g.write(" } #(end of improp_coeffs)\n\n")
h.close()
#-----------------------------------------------------------------------#
#This section writes out the input parameters required for an opls-aa simulation
# lammps.
+
+
g.write(" write_once(\"In Init\") {\n")
g.write(" units real\n")
g.write(" atom_style full\n")
g.write(" bond_style hybrid harmonic\n")
g.write(" angle_style hybrid harmonic\n")
g.write(" dihedral_style hybrid opls\n")
g.write(" improper_style hybrid harmonic\n")
-#g.write(" pair_style hybrid lj/cut/coul/cut 10.0 10.0\n")
-g.write(" pair_style hybrid lj/cut/coul/long 10.0 10.0\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(" kspace_style pppm 0.0001\n")
+g.write(kspace_style)
g.write(" } #end of init parameters\n\n")
g.write("} # OPLSAA\n")
f.close()
g.close()
os.remove("temp.txt")
sys.stderr.write("...finished.\n")
diff --git a/tools/moltemplate/src/nbody_by_type.py b/tools/moltemplate/src/nbody_by_type.py
old mode 100755
new mode 100644
diff --git a/tools/moltemplate/src/nbody_by_type_lib.py b/tools/moltemplate/src/nbody_by_type_lib.py
old mode 100755
new mode 100644
diff --git a/tools/moltemplate/src/nbody_fix_ttree_assignments.py b/tools/moltemplate/src/nbody_fix_ttree_assignments.py
old mode 100755
new mode 100644
diff --git a/tools/moltemplate/src/nbody_graph_search.py b/tools/moltemplate/src/nbody_graph_search.py
old mode 100755
new mode 100644
diff --git a/tools/moltemplate/src/nbody_reorder_atoms.py b/tools/moltemplate/src/nbody_reorder_atoms.py
old mode 100755
new mode 100644
diff --git a/tools/moltemplate/src/pdbsort.py b/tools/moltemplate/src/pdbsort.py
old mode 100755
new mode 100644
diff --git a/tools/moltemplate/src/postprocess_input_script.py b/tools/moltemplate/src/postprocess_input_script.py
old mode 100755
new mode 100644
diff --git a/tools/moltemplate/src/raw2data.py b/tools/moltemplate/src/raw2data.py
old mode 100755
new mode 100644
diff --git a/tools/moltemplate/src/remove_duplicate_atoms.py b/tools/moltemplate/src/remove_duplicate_atoms.py
old mode 100755
new mode 100644
diff --git a/tools/moltemplate/src/remove_duplicates_nbody.py b/tools/moltemplate/src/remove_duplicates_nbody.py
old mode 100755
new mode 100644
diff --git a/tools/moltemplate/src/renumber_DATA_first_column.py b/tools/moltemplate/src/renumber_DATA_first_column.py
old mode 100755
new mode 100644
diff --git a/tools/moltemplate/src/tinkerparm2lt.py b/tools/moltemplate/src/tinkerparm2lt.py
new file mode 100644
index 000000000..03367b1cf
--- /dev/null
+++ b/tools/moltemplate/src/tinkerparm2lt.py
@@ -0,0 +1,581 @@
+#! /usr/bin/env python
+#
+# The purpose of this script is to create a moltemplate lt file for the opls.
+# and oplsaa forcefields.
+
+__author__ = 'Jason Lambert and Andrew Jewett'
+# (some additional corrections by Miguel Gonzalez, Yue Chun Chiu and others)
+__version__ = '0.1'
+__date__ = '2016-11-20'
+
+
+
+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
+
+
+
+
+
+
+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
+ dihedral_style_name = "fourier"
+ 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 not in ('fourier','opls'):
+ 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")
+
+except Exception as err:
+ sys.stderr.write('\n\n'+str(err)+'\n')
+ sys.exit(1)
+
+
+
+
+
+
+
+
+#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"
+else:
+ pair_style_name = "lj/cut"
+ pair_style_params = "10.0"
+ kspace_style = ""
+
+pair_style_command = " pair_style hybrid "+pair_style_name+" "+pair_style_params+"\n"
+
+bond_style_name = "harmonic"
+angle_style_name = "harmonic"
+improper_style_name = "harmonic"
+
+
+
+
+
+
+
+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(" 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(" write_once(\"In Settings\") {\n")
+for atype in atom2vdw_e:
+ assert(atype in atom2vdw_s)
+ assert(atype in atom2ffid)
+
+ 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")
+
+
+
+sys.stdout.write(" # ------- force-field-IDs for bonded interaction lookup -------\n")
+sys.stdout.write(" # (First append the \"force-field-ID\" to the atom type name.\n")
+sys.stdout.write(" # Later use these expanded names for force-field lookup.)\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(" #(end of force-field-IDs)\n\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(" 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")
+
+
+
+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(" 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")
+
+
+
+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(" 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")
+
+
+
+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(" 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")
+
+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")
+
+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("} # "+ffname+"\n\n")
+
+
+
+
+#sys.stderr.write(" done.\n")
+
+if filename_in != "":
+ file_in.close()
+
diff --git a/tools/moltemplate/src/ttree.py b/tools/moltemplate/src/ttree.py
old mode 100755
new mode 100644
index cc4aa2011..87c385f27
--- a/tools/moltemplate/src/ttree.py
+++ b/tools/moltemplate/src/ttree.py
@@ -1,5071 +1,5383 @@
#!/usr/bin/env python
# Authors: Andrew Jewett (jewett.aij at g mail)
+# http://www.moltemplate.org
# 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.
"""
-ttree Ttree is a simple program for recursively composing and generating
- large redundant text files from small template files.
+ ttree.py is a simple program for recursively generating large redundant
+ text files (such as data files read by molecular simulation programs)
+ from small (non-redundant) text files (such as molecule definitions
+ and force-field parameters).
By default, the large number of unique template variables generated
in the process are automatically substituted with integers
(or other numeric counters, all of which can be overridden),
rendered, and the rendered templates are written to a file.
- ttree was designed to be useful for generating input files for
- molecular simulation software like LAMMPS or NAMD.
-
BasicUI This section of the code contains the user interface for ttree
when run as a stand-alone program, as described above. (This
section of code contains the "if __name__ == __main__:" code block.)
-- Data Types --
StaticObj Static nodes are data structures used to store ttree class definitions.
(Static nodes are useful for defining molecule types or
namespaces in LAMMPS or other molecular simulation programs.)
The nodes themselves are stored in a tree of nested class definitions.
Static variables (such as "@atom:C") are also associated with
StaticObjs.
InstanceObj Instance nodes are created when a user creates one (or many)
copies of a class, using the "new" command.
These classes in turn may instantiate other classes.
(Example: A user may manually instantiate several copies of a
molecule, such as a protein, however each of those
molecules may contain molecular subunits, such as
amino acids, which are automatically instantiated.)
Instance variables (such as "$atom:CA") are also associated with
InstanceObjs.
"""
import sys
from collections import defaultdict
import operator
import random
#import gc
try:
unicode
except NameError:
# Python 3
basestring = unicode = str
# -- ttree_lex.py --
-# TtreeShlex is a backwards-compatible version of python's standard shlex module.
+# TtreeShlex is a backwards-compatible version of python's standard shlex module
# It has the additional member: "self.wordterminators", which overrides
# the "self.wordchars" member. This enables better handling of unicode
# characters by allowing a much larger variety of characters to appear
# in words or tokens parsed by TtreeShlex. Otherwise it is identical to shlex.
from ttree_lex import *
if sys.version < '2.6':
raise InputError('Error: Using python '+sys.version+'\n'
' Alas, you must upgrade to a newer version of python (2.7 or later).')
elif sys.version < '2.7':
sys.stderr.write('--------------------------------------------------------\n'
'----------------- WARNING: OLD PYTHON VERSION ----------\n'
' This program is untested on your python version ('+sys.version+').\n'
' PLEASE LET ME KNOW IF THIS PROGRAM CRASHES (and upgrade python).\n'
- ' -Andrew 2014-11-28\n'
+ ' -Andrew 2016-9-21\n'
'--------------------------------------------------------\n'
'--------------------------------------------------------\n')
from ordereddict import OrderedDict
else:
from collections import OrderedDict
if sys.version > '3':
import io
else:
import cStringIO
# We keep track of the program name and version.
# (This is only used for generating error messages.)
#g_filename = 'ttree.py'
g_filename = __file__.split('/')[-1]
g_module_name = g_filename
if g_filename.rfind('.py') != -1:
g_module_name = g_filename[:g_filename.rfind('.py')]
-g_date_str = '2015-10-14'
-g_version_str = '0.81'
+g_date_str = '2016-9-21'
+g_version_str = '0.84'
class ClassReference(object):
""" Every class defined by the user (stored in an StaticObj data structure)
may contain references to other classes (ie. other StaticObjs).
(Note: All of these StaticObjs are stored in the same tree, the
global static tree.)
Examples:
Whenever an instance of a class is created, this may automatically spawn
the creation of additional classes (which are instantiated because a 'new'
command appeared within the first class's definition). These are stored in
the "StaticObj.instance_commands[i].class_ref" attribute.
Similarly, each class (StaticObj) can optionally inherit some of its
traits (consisting of write() and new commands) from one or more
"class_parents" (also StaticObjs). A list of these parents is stored in the
"StaticObj.class_parents" attribute. In both cases (self.instance_commands
- or self.class_parents) we need to storea pointer to the StaticObj(s)
+ or self.class_parents) we need to store a pointer to the StaticObj(s)
corresponding to the instance-childen or class-parents.
(This stored in self.statobj).
However, for the purposes of debugging and interactivity, it is also
convenient to permanently keep track of the string that the user used to
specify the name/location of that class/StaticObj
(stored in self.statobj_str), in addition to the location
in the file where that string occurs (stored in self.srcloc)."""
__slots__=["statobj_str","srcloc","statobj"]
def __init__(self,
statobj_str=None,
srcloc=None,
statobj=None):
self.statobj_str = statobj_str
if srcloc is None:
self.srcloc = OSrcLoc('', -1)
else:
self.srcloc = srcloc
self.statobj = statobj
#def __repr__(self):
# return repr((self.statobj_str, self.srcloc))
# "Command"s are tasks to carry out.
# (...either immediately, or later during instantiation)
# Commands are used to write to files, create new instances, delete instances,
# or custom commands to modify an instance of a class.
# (For example "instance = new Class.move(1,0,0).rot(45,0,0,1)"
# The ".move(1,0,0)" and ".rot(45,0,0,1)" commands are "stackable" and
# have similar syntax to member functions in C++, JAVA, Python.)
class Command(object):
__slots__=["srcloc"]
def __init__(self, srcloc=None):
self.srcloc = srcloc
# COMMENTING OUT: "COUNT" AND "ORDER" ARE NO LONGER NEEDED
#count = 0
#def __init__(self, srcloc=None):
# self.srcloc = srcloc
# # The "order" member is a counter that keeps track of the order
# # in which the Command data types are created (issued by the user).
# Command.count += 1
# self.order = Command.count
#def __lt__(self, x):
# return self.order < x.order
class WriteFileCommand(Command):
""" WriteFileCommand
filename This is the name of the file that will be written to
when the command is executed.
tmpl_list This is the contents of what will be written to the file.
Text strings are often simple strings, however more
generally, they can be strings which include other variables
(ie templates). In general, templates are lists of alternating
TextBlocks and VarRefs, (with additional tags and data to
identify where they occur in in the original user's files).
"""
__slots__=["filename", "tmpl_list"]
def __init__(self,
filename = None,
tmpl_list = None,
srcloc = None):
self.filename = filename
if tmpl_list is None:
self.tmpl_list = []
else:
Command.__init__(self, srcloc)
self.tmpl_list = tmpl_list
def __str__(self):
if self.filename:
return 'WriteFileCommand(\"'+self.filename+'\")'
else:
return 'WriteFileCommand(NULL)'
def __copy__(self):
tmpl_list = []
CopyTmplList(self.tmpl_list, tmpl_list) #CHECK:IS_MEMORY_WASTED_HERE?
return WriteFileCommand(self.filename, tmpl_list, self.srcloc)
class InstantiateCommand(Command):
""" InstantiateCommand is a simple tuple-like datatype used to
store pairs of names (strings, stored in self.name),
and ClassReferences (see above, stored in self.class_ref).n
The "suffix" argument is an optional string which may contain
additional instructions how to instantiate the object.
"""
__slots__=["name",
"class_ref",
"instobj"]
def __init__(self,
name = None,
class_ref = None,
srcloc = None,
instobj = None):
Command.__init__(self, srcloc)
self.name = name
#if class_ref is None:
# self.class_ref = ClassReference()
#else:
self.class_ref = class_ref
self.instobj = instobj
def __str__(self):
return 'InstantiateCommand('+self.name+')'
def __copy__(self):
return InstantiateCommand(self.name,
self.class_ref,
self.srcloc,
self.instobj)
class DeleteCommand(Command):
__slots__=[]
def __init__(self,
srcloc = None):
Command.__init__(self, srcloc)
def __str__(self):
return 'DeleteCommand()'
def __copy__(self):
return DeleteCommand(self.srcloc)
class StackableCommand(Command):
""" StackableCommand is a class for storing commands
that effect the environment of the object being created.
The combined effect of these commands can be thought of as a "stack"
Commands can be pushed on the stack, or popped off
The actual commands themselves are represented by the "contents" member
which is usually a text string.
ttree.py does not attempt to understand the content of these commands.
That job is left up to the __main___ module. (IE. whatever script that
happens to be importing ttree.py. If there is no script, and
ttree.py IS the main module, then it simply ignores these commands.)
"""
__slots__=["context_node"]
def __init__(self,
srcloc,
context_node=None):
Command.__init__(self, srcloc)
self.context_node = context_node # if multiple stacks are present, then use "context_node"
# as a key to identify which stack you want
# the command to modify
class PushCommand(StackableCommand):
__slots__=["contents"]
def __init__(self,
contents,
srcloc,
context_node=None):
StackableCommand.__init__(self, srcloc, context_node)
self.contents = contents
def __copy__(self):
return PushCommand(self.contents, self.srcloc, self.context_node)
def __str__(self):
return 'PushCommand('+str(self.contents)+')'
class PushRightCommand(PushCommand):
__slots__=[]
def __init__(self,
contents,
srcloc,
context_node=None):
PushCommand.__init__(self, contents, srcloc, context_node)
def __copy__(self):
return PushRightCommand(self.contents, self.srcloc, self.context_node)
def __str__(self):
return 'PushRightCommand('+str(self.contents)+')'
class PushLeftCommand(PushCommand):
__slots__=[]
def __init__(self,
contents,
srcloc,
context_node=None):
PushCommand.__init__(self, contents, srcloc, context_node)
def __copy__(self):
return PushLeftCommand(self.contents, self.srcloc, self.context_node)
def __str__(self):
return 'PushLeftCommand('+str(self.contents)+')'
class PopCommand(StackableCommand):
__slots__=["partner"]
def __init__(self,
partner,
srcloc,
context_node=None):
StackableCommand.__init__(self, srcloc, context_node)
self.partner = partner
def __copy__(self):
return PopCommand(self.partner, self.srcloc, self.context_node)
def __str__(self):
return 'PopCommand('+str(self.partner.contents)+')'
class PopRightCommand(PopCommand):
__slots__=[]
def __init__(self,
partner,
srcloc,
context_node=None):
PopCommand.__init__(self, partner, srcloc, context_node)
assert((partner is None) or isinstance(partner, PushRightCommand))
def __copy__(self):
return PopRightCommand(self.partner, self.srcloc, self.context_node)
def __str__(self):
return 'PopRightCommand('+str(self.partner.contents)+')'
class PopLeftCommand(PopCommand):
__slots__=[]
def __init__(self,
partner,
srcloc,
context_node=None):
PopCommand.__init__(self, partner, srcloc, context_node)
assert((partner is None) or isinstance(partner, PushLeftCommand))
def __copy__(self):
return PopLeftCommand(self.partner, self.srcloc, self.context_node)
def __str__(self):
return 'PopLeftCommand('+str(self.partner.contents)+')'
# The ScopeCommand, ScopeBegin, and ScopeEnd commands are useful to designate
# which commands belong to a particular class definition (or class instance).
# (This is useful later on, when a linear list of commands has been created.)
# They are simply markers an do not do anything. These classes can be ignored.
class ScopeCommand(Command):
__slots__=["node"]
def __init__(self,
node,
srcloc):
Command.__init__(self, srcloc)
self.node = node
#self.srcloc = srcloc
def __copy__(self):
return ScopeCommand(self.node, self.srcloc)
def __str__(self):
if self.node:
return 'ScopeCommand('+self.node.name+')'
else:
return 'ScopeCommand(None)'
class ScopeBegin(ScopeCommand):
__slots__=[]
def __init__(self, node, srcloc):
ScopeCommand.__init__(self, node, srcloc)
def __copy__(self):
return ScopeBegin(self.node, self.srcloc)
def __str__(self):
if self.node:
return 'ScopeBegin('+NodeToStr(self.node)+')'
else:
return 'ScopeBegin(None)'
class ScopeEnd(ScopeCommand):
__slots__=[]
def __init__(self, node, srcloc):
ScopeCommand.__init__(self, node, srcloc)
def __copy__(self):
return ScopeEnd(self.node, self.srcloc)
def __str__(self):
if self.node:
return 'ScopeEnd('+NodeToStr(self.node)+')'
else:
return 'ScopeEnd(None)'
# COMMENTING OUT: NOT NEEDED AT THE MOMENT
#class VarAssignCommand(Command):
# """ VarAssignCommand
#
# This class is used whenever the user makes an explicit request to assign
# a variable to a value (values are text strings).
#
# var_ref The variable name (tecnically speaking, I call this
# a variable descriptor string and it includes at least one of
# the following: the name of a leaf node, a category node name,
# and category name)
# the location in the file where variable appears, and (eventually
# after subsequent lookup), references to the leaf_node, cat_node,
# "Category", and "VarBinding" data structures associated with it.
# text_tmpl Text strings are often simple strings, however more
# generally, they can be strings which include other variables
# (ie templates). In general, templates are lists of alternating
# TextBlocks and VarRefs, (with additional tags and data to
# identify where they occur in in the original user's files).
#
# """
# __slots__=["var_ref","text_tmpl"]
#
# def __init__(self,
# #command_name = '=', <-- ?!?
# var_ref = None,
# text_tmpl=None):
# Command.__init__(self, srcloc)
# self.var_ref = var_ref
# self.text_tmpl = text_tmpl
class ModCommand(object):
__slots__=["command","multi_descr_str"]
def __init__(self,
command,
multi_descr_str):
self.command = command
self.multi_descr_str = multi_descr_str
def __str__(self):
return 'ModCommand('+str(self.command)+')'
def __copy__(self):
return ModCommand(self.command.__copy__(), self.multi_descr_str)
def CopyTmplList(source_tmpl_list, dest_cpy):
for entry in source_tmpl_list:
if isinstance(entry, TextBlock):
dest_cpy.append(entry) # Then make a shallow copy
# (pointer assignment) to the text
# block (Text blocks do not change
# during instantiation.)
elif isinstance(entry, VarRef):
assert(len(entry.prefix)>0)
if entry.prefix[0] == '@': # '@' vars refer to static data
dest_cpy.append(entry) # Then make a shallow copy
# pointer assignment) to the static
# variable. (Static variables do
# not change during instantiation.)
elif entry.prefix[0] == '$': # new '$' vars are created
# during every instantiation.
# var_refs do change when you instantiate them. So
# create a new VarRef object, and copy the attributes.
var_ref = VarRef(entry.prefix,
entry.descr_str,
entry.suffix,
entry.srcloc)
# Note: for instance variables ('$' vars)
# "entry.nptr" should not contain
# any data yet, so we just ignore it.
# I assert this below:
assert((entry.nptr.cat_node is None) and
(entry.nptr.leaf_node is None))
dest_cpy.append(var_ref)
else:
assert(False) # prefix[0] should be either '@' or '$'
else:
assert(False) # type(entry) should be either TextBlock or VarRef
def RecursiveJoin(tokens_expr, delimiter = ''):
""" RecursiveJoin() converts a tree-like list/tuple of tokens, for example:
['a ', ('tree', '-', ['like', 'container']), [[' '], 'of'], ' strings']
to an ordinary string, eg:
'a tree-like container of strings'
This behavees similarly to "reduce(lambda a, b: a+b, tokens)",
except that it works with arbitrarily nested lists/tuples."""
text = ''
if isinstance(tokens_expr, basestring):
return tokens_expr
else:
text_lstr = []
for i in range(0, len(tokens_expr)):
text.append( TokensToStr(tokens_expr[i]) )
return ''.join(text_lstr, delimiter)
#----------------------------------------------------------
#----------------------------------------------------------
# The following code is specific to ttree.
#
# (Up until this point, we have only defined
# a few simple general text parsing routines.)
#----------------------------------------------------------
#----------------------------------------------------------
def PtknsToStr(path_tokens):
"""
There are three ways to store paths:
As a single string: '/Protein/Phe/Ca' <- the format entered by the user
As a list of tokens ['Protein', 'Phe', 'Ca'] <- split into tokens
As a list of nodes in a tree (pointers to nodes in a tree hierarchy)
This function converts between the first two formats.
"""
text = ''
if len(path_tokens) > 0:
text = path_tokens[0]
for i in range(1, len(path_tokens)):
text += '/' + path_tokens[i]
else:
text = ''
return text
def StrToPtkns(path_string):
""" The inverse of PtknsToStr(), this function splits a string like
'/usr/local/../bin/awk' into ['usr','local','..','bin','awk'].
For illustrative purposes only. Use text.split('/') directly instead."""
return orig_text.split('/')
def FindChild(name, node, dbg_loc):
""" FindChild looks over the list of node.children to find a child
which matches the name given in the first argument.
If it is not found, it returns None.
Note: I have not yet specified what kind of nodes FindChild() operates
on. Both StaticObjs and InstanceObjs have self.children and self.parent.
However only StaticObjs have "self.class_parents".
("class_parents" are "parents" in the object-oriented sense.)
If "node" (2nd argument) happens t be an StaticObj, this means it also
We must search over the children of these class_parents as well.
Terminology used here differs from Object Oriented Programming
Children in node.children are not children in the object-oriented
programming sense. However, in OOP, "children" are objects that share all
of the traits of their ancestors (and may have additionl traits as well).
I have implemented OOP style children and parents, but this informtion
is stored in "node.class_parents", instead of "node.parents".
For comparison, instantiated nodes (InstanceObjs) are different. Altough
instantiated classes (InstanceObjs) have access to the attributes of the
class_parents of the StaticObjs that define them, they do not remember the
ownership of that data. (It just gets merged with their own member data,
including their .children.)
Hence we must treat StaticObjs carefully because their are two ways we can
access child data. We should loop over both of them. We do that below:
"""
child = node.children.get(name)
if child:
return child
if isinstance(node, StaticObj):
# The object-oriented inheritance stuff appears here.
# If you don't care about OOP or inheritance,
# then comment out the loop that follows:
# Search recursively over the "children" (ie attributes or members)
# belonging to any OOP ancestors of this node.
for class_parent in node.class_parents:
child = FindChild(name, class_parent, dbg_loc)
if child != None:
return child
for namespace_node in node.namespaces:
child = FindChild(name, namespace_node, dbg_loc)
if child != None:
return child
else:
assert(isinstance(node, InstanceObjBasic))
# Otherwise, a child name match was not found
return None
def FollowPath(path_tokens, starting_node, dbg_loc):
""" FollowPath() returns the "last_node", a node whose position in the
tree is indicated by a list of path_tokens, describing the names
of nodes connecting "starting_node" to "last_node".
If it one of the strings in the list of path_tokens turns out
not to match then names of classes in the tree, then this function
returns the last_node that did match before the error occurred,
as well as an integer which stores the number of tokens in
the path_tokens list which were successfully processed.
In other words, the list of node naes is not a full path, but the
relative path that takes you from one node (not necessarily the root)
to another. Return Value:
Ideally, each node in the list should be a parent or a child of the
previous node. (See comment for PathTokensToStr(), for more details.)
This function returns the number of path_tokens successfully
parsed. Under normal termination, this is len(path_tokens).
If the path can not be followed (because at some point, a child
or parent does not exist), then this function returns a number
smaller than len(path_tokens).
We let the caller handle undefined paths. """
#print(' FollowPath() invoked on: ', path_tokens)
if len(path_tokens) == 0:
return 0, starting_node
node = starting_node
# Is this path a relative path, or a full path?
# If the path-string began with '/', then it's a full path. This means
# that after processing by split('/'), the first token will be ''
# Example: path_tokens='/Prot/Alanine'.split('/')
# --> path_tokens[0] == ''
if path_tokens[0] == '':
# In that case, then take us to the root node:
while node.parent != None:
node = node.parent
#sys.stdout.write('FollowPath(): Retreating to node \"'+node.name+'\"\n')
i0 = 1 # <- We've just processed the first token. Skip over it later.
else:
i0 = 0
i = i0
while i < len(path_tokens):
if path_tokens[i] == '..':
if node.parent is None:
return i, node # <-return the index into the token list
# Caller will know that something went awry
# if the return value is not equal to the
# length of the token list
else:
node = node.parent
i += 1
elif path_tokens[i] == '...':
node_before_ellipsis = node
if i == len(path_tokens)-1:
return i, node_before_ellipsis
search_target = path_tokens[i+1]
# Now search over the "children" of this node
# for one who's name matches path_tokens[i].
# If not found, then move up to the parent node's children.
# (This is not an exhaustive tree search. Only the nodes which
# are immediate children of this node's parents are searched.)
while node != None:
child = FindChild(search_target, node, dbg_loc)
if child is None:
node = node.parent
else:
node = child
break
if node is None:
# Caller will know that something went awry if the return
# value is not equal to the length of the token list.
return i, node_before_ellipsis
i += 2
elif path_tokens[i] in ('','.'): # <-Note we ignore empty tokens from now on.
# (Same convention is used in specifying a
# directory in a filesystem, eg. using /usr/local
# or /usr//local or /usr/./local. These are all equivalent.)
i += 1
else:
# Now search over the "children" of this
# node for one who's name matches path_tokens[i].
child = FindChild(path_tokens[i], node, dbg_loc)
if child is None:
# In that case, return with the node_list incomplete.
# Let the caller check to see if something went wrong.
return i, node # <-return the index into the token list (i)
# Caller will know that something went awry
# if the return value is not equal to the
# length of the token list
else:
node = child
i += 1
if node.IsDeleted():
#sys.stderr.write('(debug_msg: encountered deleted node: \"'+node.name+'\")\n')
break
return len(path_tokens), node
def PtknsToNode(path_tokens, starting_node, dbg_loc):
""" PtknsToNode() is identical to def FollowPath() except
that it raises syntax-error exceptions if the path is undefined."""
i_last_ptkn, last_node = FollowPath(path_tokens, starting_node, dbg_loc)
if i_last_ptkn < len(path_tokens):
#assert(isinstance(last_node,StaticObj)) <--why did I assert this? seems wrong
if (last_node.parent is None) and (path_tokens[i_last_ptkn] == '..'):
#In that case, we tried to back out beyond the root of the tree.
raise InputError('Error('+g_module_name+'.PtknsToNode()):\n'
' Invalid variable/class name:\n'
' \"'+PtknsToStr(path_tokens)+'\" located near '+ErrorLeader(dbg_loc.infile, dbg_loc.lineno)+'\n'
' There are too many \"..\" tokens in the path string.')
elif path_tokens[i_last_ptkn] == '...':
if i_last_ptkn+1 == len(path_tokens):
raise InputError('Error('+g_module_name+'.PtknsToNode()):\n'
' Error in '+ErrorLeader(dbg_loc.infile, dbg_loc.lineno)+'\n'
' Expected name following \"...\"\n')
else:
search_target = path_tokens[i_last_ptkn+1]
#In that case, we were unable to find the node referenced by "..."
raise InputError('Error('+g_module_name+'.PtknsToNode()):\n'
' Class or variable \"'+search_target+'\" not found\n'
' in this context: \"'+PtknsToStr(path_tokens)+'\"\n'
' located near '+ErrorLeader(dbg_loc.infile, dbg_loc.lineno))
else:
#Then the reason is: The string in path_tokens[i_last_ptkn]
#was supposed to be a child of last_node but a child
#of that name was not found.
err_msg = 'Error('+g_module_name+'.PtknsToNode()):\n'+\
' Undefined variable/class name:\n'+\
' \"'+PtknsToStr(path_tokens)+'\",\n'+\
' This occured near or before '+ErrorLeader(dbg_loc.infile, dbg_loc.lineno)+'\n'+\
' (Specifically \"'+path_tokens[i_last_ptkn]+\
'\" is not a subordinate of \"'+MaxLenStr(last_node.name,'/')+'\".)\n'+\
' This may be due to a typo located here or earlier.\n'+\
' It may also occur if you deleted the object earlier. (Referring to a\n'+\
' deleted object is only forgiven when using [0-9] or [0:10] notation.)\n'+\
' If this object refers to an array you must use brackets []\n'+\
' to explicitly specify the element(s) you want from that array.\n'+\
' (To select multiple elements, you can use [*] or [0-9] or [0:10].)\n'
if (path_tokens[i_last_ptkn] in NodeToPtkns(last_node)):
err_msg += '\nIn this case:\n'+\
' It seems like you may have omitted a } character somewhere before:\n'+\
' '+ErrorLeader(dbg_loc.infile, dbg_loc.lineno)
raise InputError(err_msg)
assert(False) # One of the two conditions above should be true.
return last_node
def StrToNode(obj_name, starting_node, dbg_loc):
path_tokens = obj_name.split('/')
return PtknsToNode(path_tokens, starting_node, dbg_loc)
def NodeListToPtkns(node_list, dbg_loc=None):
assert(len(node_list) > 0) #The path must contain at least the starting node
path_tokens = [node_list[0].name]
for i in range(1, len(node_list)):
if node_list[i] == node_list[i-1].parent:
path_tokens.append('..')
else:
path_tokens.append(node_list[i].name)
# Now check to make sure the user supplied consistent information:
if (node_list[i] not in node_list[i-1].children.values()):
raise InputError('Error('+g_module_name+'.NodeListToPtkns()):\n'
' Undefined variable/class name:\n'
' \"'+PtknsToStr(path_tokens)+'\" located near '+ErrorLeader(dbg_loc.infile, dbg_loc.lineno)+'\n'
' (\"'+path_tokens[i]+'\" is not subordinate to \"'+MaxLenStr(node_list[i-1].name,'/')+'\")\n'
' This could be an internal error.')
return path_tokens
def NodeListToStr(node_list, dbg_loc=None):
assert(len(node_list) > 0) #The path must contain at least the starting node
path_str = node_list[0].name
for i in range(1, len(node_list)):
if node_list[i] == node_list[i-1].parent:
path_str += '/..'
else:
path_str += '/' + node_list[i].name
# Now check to make sure the user supplied consistent information:
if (node_list[i] not in node_list[i-1].children.values()):
err_msg = 'Error('+g_module_name+'.NodeListToStr()):\n'+\
' Invalid variable/class name:\n' +\
' \"'+PtknsToStr(path_tokens)+'\"'
if dbg_loc != None:
err_msg += ' located near '+ErrorLeader(dbg_loc.infile, dbg_loc.lineno)
err_msg += '\n' +\
' (\"'+node_list[i].name+'\" is not a subordinate of \"'+MaxLenStr(node_list[i-1].name,'/')+'\")\n'+\
' This could be an internal error.'
raise InputError(err_msg)
return path_str
def NodeToPtkns(node):
ptkns = []
nd = node
while nd != None:
ptkns.append(nd.name)
nd = nd.parent
ptkns.reverse()
return ptkns
def NodeToStr(node):
ptkns = NodeToPtkns(node)
assert(len(ptkns) > 0)
if node.parent is None:
assert(node.name == '')
return '/'
path_str = ptkns[0]
i = 1
while i < len(ptkns):
path_str += '/'+ptkns[i]
i += 1
return path_str
def CatLeafNodesToTkns(cat_name, cat_node, leaf_node, dbg_loc):
assert((cat_node != None) and (leaf_node != None))
assert((cat_name != None) and (cat_name != ''))
# Determine the path of the cat node
cat_node_ptkns = NodeToPtkns(cat_node)
cat_node_ptkns.append(cat_name+':')
# Determine the path of the leaf node (which should inherit from cat)
deleted = False
leaf_node_ptkns = []
if cat_node != leaf_node:
node = leaf_node
while node.parent != None:
if node.IsDeleted():
deleted = True
leaf_node_ptkns.append('DELETED_'+node.name)
break
leaf_node_ptkns.append(node.name)
if node.parent == cat_node:
break
node = node.parent
leaf_node_ptkns.reverse()
if not deleted:
# Check that leaf inherits from cat. If not, print error.
if ((node.parent != cat_node) and (node != cat_node)):
err_msg = 'Error('+g_module_name+'.CatLeafNodesToPtkns()):\n'+\
' Invalid variable (category:leaf) pair\n'
if dbg_loc != None:
cat_node_str = NodeToStr(cat_node)
leaf_node_str = NodeToStr(leaf_node)
err_msg += ' located near '+ErrorLeader(dbg_loc.infile, dbg_loc.lineno)+'\n'+\
' (\"'+leaf_node.name+'\" is not in the scope of \"'+cat_node_str+'/'+cat_name+':\")\n'+\
' This will happen if you used the \"category\" command to manually\n'+\
' create a category/counter which is not defined globally.\n'+\
'\n'+\
' Note: Using the analogy of a unix style file system, \n'+\
' the problem is that \"'+leaf_node_str+'\"\n'+\
' is not a subdirectory of \"'+cat_node_str+'\".\n'+\
'\n'+\
' Note: This often occurs when \".../\" is used. In that case, you may\n'+\
' be able to avoid this error by referring to your variable explicitly\n'+\
' by using chains of \"../\" tokens in the path instead of \".../\".\n'
#' Make sure that your variable you are using is defined in \n'+\
#' an environment (currently \"'+leaf_node_str+'\")\n'+\
#' which lies WITHIN the environment where the category was defined.\n'+\
#' (currently \"'+cat_node_str+'\").\n'
raise InputError(err_msg)
else:
err_msg = 'Warning: Strange variable path'
if dbg_loc != None:
err_msg += ' near '+ErrorLeader(dbg_loc.infile, dbg_loc.lineno)
err_msg += '\n' +\
' The category and leaf nodes for variable \"'+cat_name+':'+leaf_node.name+'\" are the same.\n'+\
' Check to see that this variable is behaving the way you intended.\n'+\
' (It\'s possible this could be an internal error in the program.)\n'
sys.stderr.write(err_msg)
# Merge the list of strings together into a single string:
return cat_node_ptkns + leaf_node_ptkns
def CanonicalCatName(cat_name, cat_node, dbg_loc=None):
# Determine the path of the cat node
tkns = NodeToPtkns(cat_node)
tkns.append(cat_name)
#full_cat_name = tkns[0]
#for i in range(1,len(tkns)):
# full_cat_name += '/'+tkns[i]
# better way:
return '/'.join(tkns)
def CanonicalDescrStr(cat_name, cat_node, leaf_node, dbg_loc=None):
tkns = CatLeafNodesToTkns(cat_name, cat_node, leaf_node, dbg_loc)
descr_str = tkns[0]
for i in range(1, len(tkns)):
if (len(descr_str)>0) and (descr_str[-1] == ':'):
descr_str += tkns[i]
else:
descr_str += '/'+tkns[i]
return descr_str
def CollapsePath(path_tokens):
"""
CollapsePath() takes a list of Strings argument representing a
directory-like path string
(for example '/SUB1A/Sub2A/../Sub2B/sub3b/../sub3c/entry'),
and replaces it with a version which should contain no '..' patterns.
(In the example above, it returns /SUB1A/Sub2B/sub3c/entry')
"""
new_ptkns = []
ndelete = 0
i = len(path_tokens)-1
while i >= 0:
if path_tokens[i] == '..':
ndelete += 1
else:
if (ndelete > 0) and (path_tokens[i] != ''):
# Note: "path_tokens[i] != '')" means "/a/b//c" <-> "/a/b/c"
ndelete -= 1
else:
if len(path_tokens[i]) > 0:
new_ptkns.append(path_tokens[i])
i -= 1
new_ptkns.reverse()
if ndelete > 0:
return ndelete # <-- useful to let caller know an error ocurred
return new_ptkns
def FindCatNode(category_name, current_node, srcloc):
""" Search upwards (toward the ancester nodes), looking for a node
containing a category matching category_name (first argument).
Useful when the user specifies a category name, but neglects to
specify which node it was defined in.
Note: there is no gaurantee that the category node returned by this function
contains an entry in it's "categories" list corresponding to this
category name. You must check for this condition and handle it."""
cat_node = None
node = current_node
while True:
if category_name in node.categories:
cat_node = node
break
elif node.parent != None:
node = node.parent
else:
# node.parent is None, ... we're done
break
if cat_node is None:
assert(node.parent is None)
#sys.stderr.write('Warning near ' +
# ErrorLeader(srcloc.infile,
# srcloc.lineno)+'\n'+
# ' no category named \"'+category_name+'\" found.\n'+
# ' Creating a new global category: /'+
# category_name+':\n')
cat_node = node # the global node
assert(cat_node != None)
return cat_node
def RemoveNullTokens(in_ptkns):
"""This function just gets rid of useless empty tokens in the path ('', '.')
(However if '' appears at the beginning of a path, we leave it alone.)
"""
out_ptkns = []
for i in range(0,len(in_ptkns)):
if ((in_ptkns[i] != '.') and
((in_ptkns[i] != '') or (i==0))):
out_ptkns.append(in_ptkns[i])
# (I'm sure there are ways to write this in python
# using fewer lines of code. Sigh.)
return out_ptkns
def DescrToCatLeafPtkns(descr_str, dbg_loc):
"""
Review: Variables in this program have three parts:
1) A variable category name (designating the type of variable).
2) A variable category path, which consists of a node which is an ancestor
of the variable leaf (1) in the tree
3) A variable name ("leaf"), which refers to a node in the tree
(either a static type tree or instance tree)
DescrToCatLeafPtkns() takes a string describing a variable,
as it appears in a template (ie, a write() command, once it has been
stripped of it's '$' or '@' prefix, and surrounding {} brackets)
...and divides it into strings which specify the location of that leaf in
a static or instance tree, in addition to the name and location of the
category node. Descriptor examples for atoms in water:
"AtomType:/Water/O", There are only 2 --types-- of atoms in
"AtomType:/Water/H", a water molecule. We identify them this way.
"AtomID:O" However each water molecule has 3 atoms, and we
"AtomID:H1" can give each atom in each water molecule a unique
"AtomID:H2" AtomID number. "AtomID:H2" is the id number of the
second hydrogen atom in the current water molecule.
---- Output: This function returns a 3-tuple: ----
leaf_ptkns The name of the variable's leaf node, as well as the list of
tokens denoting the path (named list of nodes) which lead to it.
cat_name The name of the variable category (no path information)
cat_ptkns A --suggestion-- for where to find the node containing the
category mentioned in "cat_name". Same format as leaf_ptkns.
Examples:
"AtomType:/Water/O" cat_name='AtomType', cat_path=[], leaf_ptkns=['','Water','O']
"AtomType:/Water/H" cat_name='AtomType', cat_path=[], leaf_ptkns=['','Water','H']
"AtomID:O" cat_name='AtomID', cat_path=[], leaf_ptkns=['O']
"AtomID:H1" cat_name='AtomID', cat_path=[], leaf_ptkns=['H1']
"AtomID:H2" cat_name='AtomID', cat_path=[], leaf_ptkns=['H2']
"mol:/" cat_name='mol', cat_path=[], leaf_ptkns=['']
"mol:" cat_name='mol', cat_path=[], leaf_ptkns=[]
"mol:../" cat_name='mol', cat_path=[], leaf_ptkns=['..']
"../mol" cat_name='mol', cat_path=[], leaf_ptkns=['..']
"$/peptide[3]/ResID:res[25]" cat_name='ResID', cat_path=['', 'peptide[3]'], leaf_ptkns=['res[25]']
"""
split_colon = descr_str.split(':')
if len(split_colon) > 2:
raise InputError('Error('+g_module_name+'.DescrToCatLeafPtkns())\n'
' Error near '+ErrorLeader(dbg_loc.infile, dbg_loc.lineno)+'\n\n'
' Bad variable descriptor: \"'+descr_str+'\"\n'+
' There can be at most one \':\' character in a variable descriptor.\n')
# ---- Are we using colon syntax (example '$atom:H1')?
elif len(split_colon) == 2:
# The category name = text after the last '/' (if present)and before ':'
cat_ptkns = split_colon[0].split('/')
cat_name = cat_ptkns[-1]
# The text before that is the suggested (category) path
cat_ptkns = cat_ptkns[:-1]
# if len(cat_ptkns) == 0:
# cat_ptkns.append('.')
# The remaining text is the path leading to the leaf node.
if split_colon[1] != '':
leaf_ptkns = split_colon[1].split('/')
else:
leaf_ptkns = []
if (cat_name == ''):
raise InputError('Error('+g_module_name+'.DescrToCatLeafPtkns()):\n'
' Error near '+ErrorLeader(dbg_loc.infile, dbg_loc.lineno)+'\n\n'
' Bad variable descriptor: \"'+descr_str+'\"\n')
else:
# ---- Are we using colon-less syntax (example: "$../mol") ?
ptkns = split_colon[0].split('/')
cat_name = ptkns[-1] # last token (eg. "mol") is the cat_name
leaf_ptkns = ptkns[:-1] # the rest is the leaf's path ("..")
if len(leaf_ptkns) == 0:
leaf_ptkns.append('.')
#cat_ptkns = ptkns[:-1] # the same goes for the cat path suggestion
#if len(cat_ptkns) == 0:
# cat_ptkns.append('.')
cat_ptkns = []
# On 2012-8-22, I commented out this line:
#return cat_name, RemoveNullTokens(cat_ptkns), RemoveNullTokens(leaf_ptkns)
# and replaced it with:
return cat_name, RemoveNullTokens(cat_ptkns), leaf_ptkns
def DescrToCatLeafNodes(descr_str,
context_node,
dbg_loc,
create_missing_nodes=False):
"""
Variables in ttree correspond to nodes in a tree
(and also categories to which they belong).
DescrToCatLeafNodes() reads the name of a variable,
(its descriptor) and determines where in the tree
does this variable reside, and what is it's category?
This function is the heart of ttree because it is
the function used to interpret ttree variable syntax.
(It is very messy right now. I will clean up the code later. AJ 2011-9-06)
Arguments:
descr_str The complete name that the user gave
to the variable. (Excluding '$' or '@')
context_node The class (node) in which the variable
was used. descr_str is interpeted
relative to this context. (This argument
is similar to the current directory
in which a command was issued in unix.)
dbg_loc The location in the user's input file(s)
where this variable is referred to.
create_missing_nodes
If we lookup a variable whose leaf node
does not exist yet, should we create it?
Setting this argument to "True" allows
us to augment the tree to add nodes
corresponding to variables.
-- Here is a greatly simplified version of DescrToCatLeafNodes(): --
def DescrToCatLeafNodes(descr_str, context_node, dbg_loc):
cat_name, cat_ptkns, leaf_ptkns = DescrToCatLeafPtkns(descr_str, dbg_loc)
cat_node = PtknsToNode(cat_ptkns, context_node, dbg_loc)
if len(cat_ptkns) > 0:
leaf_node = PtknsToNode(leaf_ptkns, cat_node, dbg_loc)
else:
leaf_node = PtknsToNode(leaf_ptkns, context_node, dbg_loc)
return cat_name, cat_node, leaf_node
(This version works, but it does not handle "..." corectly,
and it does not create missing nodes when needed.)
-- Here is a (probably unnecessary) review of terminology: --
Descriptor String:
The first argument ("descr_str") is a descriptor string.
A descriptor string typically contains ":" and "/"
characters to to divide the string into pieces in order
to identify a category name, category node, and leaf node.
Conceptually, the variable's NAME is the leaf node.
The variable's TYPE is the category (node and name).
Node:
Nodes are used to represent both class objects and variable names
1) class objects
Each type of class objects is represented by an StaticObj.
Each instantiated object is represented by an InstanceObj.
2) variable names (leaf nodes)
However variable names are also represented using either
StaticObjs (for @ static variables) or
InstanceObjs (for $ instance variables)
Again, all variables in ttree are members of a class object.
In this case, the name of the node corresponds to the variable's
name, and it's position in the tree refers to the class to which
it belongs.
However "leaf nodes" do not uniquely identify the
actual variable itself. A single node can refer to two different
variables if they are in different categories.
All 3 identifiers (leaf node, category node, category name)
are needed to uniquely identify a ttree variable. See below.
Ptkn (Path Token)
Strings containing multiple '/' characters are typically used
to identify the location of the category and leaf nodes in the
tree (ie the path to the node). The '/' characters are
delimiters which break up the string into small pieces, (which
are usually the names of classes).
These pieces are called "path tokens" or "ptkns"
Leaf Node:
It exists as a node in a tree (instead of a simple string)
because, just like member variables in a class in an
object oriented programming language (or in a C struct)
language, variables in ttree belong to the class in
which they are defined. The node's location in the
tree represents which class it belongs to.
If a variable's leaf node name
refers to a node which does no exist yet, then we create it
(assuming the "create_missing_nodes" argument is "True").
Category Node/Name:
Categories are a peculiar feature of ttree. Categories
are groups of variables that share the same counter when
numeric values are automatically given to each variable.
So you can think of a category as a counter with a name.
Variables in different categories have different counters,
and are assigned numeric values independently.
Consequently two variables in different categories
may be assigned the same number. But two variables
in the same category are always given unique values.
Counters are typically global, but can have local scope.
(ie, only defined within a Class, or an instantiated
class, and whatever other classes are nested or
instantiated beneath it.)
Therefore to identify a counter/category you must specify
both a name AND a node. The node identifies the class where
the scope is defined. It is assumed that the Leaf Node
(see above) lies within this scope (ie. somewhere after
it in the tree).
Example: local counters are used to keep track of the
residues within in a protein chain. If we use a class to
represent the protein, we can create a local residue-
counter (category) within that protein. Then when we
instantiate the protein multiple times, this counter
is reset for every new instance of of the protein.
"""
cat_name, cat_ptkns, leaf_ptkns = DescrToCatLeafPtkns(descr_str, dbg_loc)
# ---- ellipsis hack ----
#
# Search for class:
# Most users expect ttree.py to behave like a
# standard programming language: If the class they are
# instantiating was not defined in this specific
# location, they expect ttree.py to search for
# it outwards, first in the parent's environment,
# and then in the parent's parent's environment,
# and so on, until the object is found.
# For example, most users expect this to work:
# class Res{
# write("Atoms") {
# $atom:CA @atom:CA 0.123 1.234 2.345
# $atom:CB @atom:CB 1.234 2.345 3.456
# }
# }
# class Protein{
# write_once("AnglesByType") {
# @angle:backbone @atom:Res/CA @atom:Res/CA @atom:Res/CA
# }
# Notice that in class Protein, we did not have to specify
# where "Res" was defined because it is defined in the parent
# environment (ie. immediately outside Proteins's environment).
# The general way to do this in ttree.py, is to
# use ellipsis syntax "@atom:.../Res/CA" symbol. The
# ellipsis ".../" tells ttree.py to search upwards
# for the object to the right of it ("Res")
# In order to make ttree.py behave the way
# most users are expecting, we artificially insert a
# ".../" before the class name here. (Later on, the
# code that processes the ".../" symbol will take
# care of finding A. We don't have to worry about
# about doing that now.)
#
# I think we only want to do this for variables with path information
# such as "@atom:Res/CA" (which means that leaf_ptkns = ['Res', 'CA']).
# For simple variables like "@atom:CA", we don't automatically look upwards
# unless the user eplicitly requests it.
# (That's why we check to make sure that len(leaf_ptkns) > 1 below
# before we insert '...' into the leaf_ptkns.)
# In other words, the two variables "@atom:CA" below are treated differently
#
# A {
# write("Atoms") {
# @atom:CA
# }
# class B {
# write("Atoms") {
# @atom:CA
# }
# }
# }
#
if ((descr_str.find(':') != -1) and
#(not ((len(leaf_ptkns) == 1) and
# (leaf_ptkns[0] == context_node.name))) and
#(len(leaf_ptkns) > 0) and
(len(leaf_ptkns) > 1) and
(len(leaf_ptkns[0]) > 0) and
(leaf_ptkns[0][0] not in ('.','*','?'))):
leaf_ptkns.insert(0, '...')
# ---- Done with "ellipsis hack" -----
#sys.stderr.write(' DescrToCatLeafNodes(): (cat_ptkns, cat_name, lptkns) = ('+
# str(cat_ptkns)+', \"'+cat_name+'\", '+str(leaf_ptkns)+')\n')
cat_node = None
cat_start_node = context_node
leaf_start_node = context_node
if (len(cat_ptkns) > 0):
if cat_ptkns[-1] == '...':
# The "..." in this position means trace the path from the
# current node (context_node) up to cat_ptkns[:-1].
cat_start_node = PtknsToNode(cat_ptkns[:-1], context_node, dbg_loc)
# Later on, we will search upwards until we find an ancestor
# node containing a category matching cat_name. This will
# be taken care of later. (See "if cat_node is None:" below.)
else:
# In this case, the user supplied an explicit path
# for the category node. Find it now.
cat_node = PtknsToNode(cat_ptkns, context_node, dbg_loc)
# Whenever the user supplies an explicit path, then
# the cat node should be the starting location from
# which the leaf path is interpreted. This nearly
# insures that the leaf node will be an ancestor
# of the category node, which is what we want.
leaf_start_node = cat_node
if cat_node is None:
# Otherwise, the user did not indicate where the category
# node is defined, but only supplied the category name.
# (This is the most common scenario.)
# In this case, climb up the tree to the parent
# until you find an ancestor with a category whose
# name matches cat_name.
cat_node = FindCatNode(cat_name, cat_start_node, dbg_loc)
if (cat_name not in cat_node.categories):
if create_missing_nodes:
# If this is the first time we encountered a variable in this
# category (ie if it's the first time we encountered a variable
# with this category's name and node), then we must create a
# new entry in the cat_node.categories associative container
# (using cat_name as the dictionary key).
cat_node.categories[cat_name] = Category(cat_name)
else:
raise InputError('Error('+g_module_name+'.DescrToCatLeafNodes()):\n'
' Error near '+ErrorLeader(dbg_loc.infile, dbg_loc.lineno)+'\n'
' Category named \"'+cat_name+'\" not found at\n'
' position '+NodeToStr(cat_node)+'\n')
# ---------- Now look up the leaf node -----------
if (len(leaf_ptkns) > 0) and (leaf_ptkns[-1] == 'query()'):
# Special case: "query()"
# Variables named "query()" are not really variables.
# (They are a way for users to query a category's counter.)
# But we treat them as such internally. Consequently we
# give them unique names to avoid clashes (just in case
# "query()" appears multiple times in the same context).
#leaf_ptkns[-1] = '__query__'+dbg_loc.infile+'_'+str(dbg_loc.lineno)
leaf_ptkns[-1] = '__query__' + str(dbg_loc.order)
# Lookup the path for the leaf:
#
# Often, the leaf that the path refers to does not
# exist yet. For example, it is common for a template to
# contain a reference to "$atom:CA". If the current context_node
# is "/protein1/res22", this means that the leaf should be
# at "/protein1/res22/CA". (However in this example, "CA"
# is not a class that has been defined yet. It is the name
# of a variable which which may not have even been mentioned
# before. Think of "CA" as a variable placeholder.
#
# So we follow the path tokens as far as we can:
i_last_ptkn, last_node = FollowPath(leaf_ptkns,
leaf_start_node,
dbg_loc)
# Did we find the node?
if i_last_ptkn == len(leaf_ptkns):
leaf_node = last_node
else:
# If we are here, then we did not find the node.
# The unrecognized token is stored in
# leaf_ptkns[i_last_ptkn]
if leaf_ptkns[i_last_ptkn] == '...':
# ----------------------------------------------
# ---- UGHH I hate dealing with '...' ----
# ----(Messy code to follow in this section)----
# ----------------------------------------------
# The "..." means different things depending on
# whether or not it is the last token in leaf_ptkns.
if i_last_ptkn+1 < len(leaf_ptkns):
# If "..." is NOT the last token in leaf_ptkns, we
# should search for an ancestor of this node who has
# a child whose name matches a the requested target
# string (located in leaf_ptkns[i_last_ptkn+1])
search_target = leaf_ptkns[i_last_ptkn+1]
# If such an ancestor exists, then FollowPath()
# should have already found it for us.
# This means it was not found.
# So if there is only one more token in the
# list of tokens, then create the needed node
if (create_missing_nodes and
(i_last_ptkn+1 == len(leaf_ptkns)-1)):
# Create a new leaf node and link it:
new_leaf_name = leaf_ptkns[-1]
parent_node = last_node
# Is this parent_node an StaticObj? (..or inherit from StaticObj?)
if isinstance(parent_node, StaticObj):
parent_node.children[new_leaf_name] = StaticObj(new_leaf_name, parent_node)
elif isinstance(parent_node, InstanceObj):
parent_node.children[new_leaf_name] = InstanceObjBasic(new_leaf_name, parent_node)
else:
assert(False) # (only 2 types of nodes are possible)
# Now assign the pointer
leaf_node = parent_node.children[new_leaf_name]
else:
#In that case, we were unable to find the node referenced by "..."
raise InputError('Error('+g_module_name+'.DescrToCatLeafNodes()):\n'
' Broken path.\n' # containing ellipsis (...)\n'
' class/variable \"'+search_target+'\" not found in this\n'
' context: \"'
#+var_ref.prefix + var_ref.descr_str + var_ref.suffix+'\"\n'
+descr_str+'\"\n'
' located near '+ErrorLeader(dbg_loc.infile, dbg_loc.lineno))
else: # if i_last_ptkn+1 < len(leaf_ptkns):
# If "..." IS the last token, then it means:
# we want to search for the CATEGORY NAME,
# This is very different.
# It means we need to:
# search backwards up the ancestor tree until
# we find an ancestor variable (of last_node)
# which has the right category, (ie until you
# find an ancestor node with a variable (VarRef)
# pointing to it with belonging to the correct
# category node and name (determined above).)
# If not found, then use the current context_node.
assert(cat_name in cat_node.categories)
var_bindings = cat_node.categories[cat_name].bindings
node = last_node
while (node != None):
# Recall that cat_node.categories[cat_name]
# is a dictionary whose keys are leaf nodes
# corresponding to the variables in this category.
if node in var_bindings:
# then we found it, and we're done
break
else:
node = node.parent
if node != None:
leaf_node = node
else:
# If not found, have it point to the
# current (context) node.
leaf_node = context_node
# -----------------------------------------------
# -- Finished dealing with '...' in leaf_ptkns --
# -----------------------------------------------
elif (create_missing_nodes and
((i_last_ptkn == len(leaf_ptkns)-1) or
HasWildCard('/'.join(leaf_ptkns)))):
#elif (create_missing_nodes and
# (i_last_ptkn == len(leaf_ptkns)-1)):
# Again, another reason the leaf-node was not found is
# that it refers to a leaf node which has not yet been
# created. If the path was valid until up to the last
# token, then we sould create a new node with this name.
# -- This is a common scenario. --
# -- This is how all new variables are created. --
# Anyway, we handle that here:
# Create a new leaf node and link it:
new_leaf_name = leaf_ptkns[-1]
new_leaf_name = '/'.join(leaf_ptkns[i_last_ptkn:])
parent_node = last_node
# Is this parent_node an StaticObj? (..or does it inherit from StaticObj?)
if isinstance(parent_node, StaticObj):
parent_node.children[new_leaf_name] = StaticObj(new_leaf_name, parent_node)
elif isinstance(parent_node, InstanceObj):
parent_node.children[new_leaf_name] = InstanceObjBasic(new_leaf_name, parent_node)
else:
assert(False) # (only 2 types of nodes are possible)
# Now assign the pointer
leaf_node = parent_node.children[new_leaf_name]
else:
# Otherwise, the user made a mistake in the path.
# Figure out which kind of mistake and print an error.
if (last_node.parent is None) and (leaf_ptkns[i_last_ptkn] == '..'):
#In that case, we tried to back out beyond the root of the tree.
raise InputError('Error('+g_module_name+'.DescrToCatLeafNodes()):\n'
' Broken path in variable:\n'
#' \"'+var_ref.prefix + var_ref.descr_str + var_ref.suffix+'\"\n'
' \"'+ descr_str + '\"\n'
' located near '+
ErrorLeader(dbg_loc.infile,
dbg_loc.lineno)+'\n'
' There are too many \"..\" tokens in the path string.')
else:
#Then the reason is: The string in leaf_ptkns[i_last_ptkn]
#was supposed to be a child of last_node but a child
#of that name was not found.
raise InputError('Error('+g_module_name+'.DescrToCatLeafNodes()):\n'
' Broken path / Undefined variable:\n'
#' \"'+var_ref.prefix + var_ref.descr_str + var_ref.suffix+'\"\n'
' \"'+ descr_str + '\"\n'
' located near '+
ErrorLeader(dbg_loc.infile,
dbg_loc.lineno)+'\n'
' Undefined: \"'+PtknsToStr(leaf_ptkns)+'\"\n'
' (Specifically \"'+leaf_ptkns[i_last_ptkn]+
'\" is not a subordinate of \"'+MaxLenStr(last_node.name,'/')+'\")')
#'\n This could be a typo or spelling error.')
return cat_name, cat_node, leaf_node
-
-
def DescrToVarBinding(descr_str, context_node, dbg_loc):
""" DescrToVarBinding() is identical to LookupVar(), but it has a name
that is harder to remember. See comment for LookupVar() below.
"""
cat_name, cat_node, leaf_node = DescrToCatLeafNodes(descr_str,
context_node,
dbg_loc)
if cat_name in cat_node.categories:
category = cat_node.categories[cat_name]
var_bindings = category.bindings
if leaf_node in var_bindings:
var_binding = var_bindings[leaf_node]
else:
raise InputError('Error('+g_module_name+'.DescrToVarBinding()):\n'
' Error near '+ErrorLeader(dbg_loc.infile, dbg_loc.lineno)+'\n'
' Bad variable reference: \"'+descr_str+'\". There is\n'
' There no category named \"'+cat_name+'\" defined for "'+NodeToStr(cat_node)+'\".\n')
else:
raise InputError('Error('+g_module_name+'.DescrToVarBinding()):\n'
' Error near '+ErrorLeader(dbg_loc.infile, dbg_loc.lineno)+'\n'
' Bad variable reference: \"'+descr_str+'\". There is\n'
' no category named \"'+cat_name+'\" defined for "'+NodeToStr(cat_node)+'\".\n')
return var_binding
# Wrappers:
def LookupVar(descr_str, context_node, dbg_loc):
""" LookupVar() looks up a string (a variable descriptor, which is the
variable's name, excluding the '$', '@' prefixes and any '{}' brackets.)
This function returns the variable's "VarBinding" (the variable-name:value
pair). This is useful for querying or changing the value of a variable.
Because nearly all variables are local, you must specify the starting
node (ie. the node corresponding to the class in which this class
or variable was referred to). This is typically the global node.
"""
return DescrToVarBinding(descr_str, context_node, dbg_loc)
def LookupNode(obj_name, starting_node, dbg_loc):
""" LookupNode() parses through a string like
'../ClassA/NestedClassB'
and returns the corresponding node.
Nodes are data types used for representing a class or class instance.
They are also used for storing variables.
'ClassA/NestedClassB/VariableC'
Because nearly all variables are local, you must specify the starting
node (ie. the node corresponding to the class in which this class
or variable was referred to). This is typically the global node.
"""
return StrToNode(obj_name, starting_node, dbg_loc)
class SimpleCounter(object):
__slots__=["n","nincr"]
# static data attributes:
default_n0 = 1
default_nincr = 1
def __init__(self, n0 = None, nincr = None):
if n0 == None:
n0 = SimpleCounter.default_n0
if nincr == None:
nincr = SimpleCounter.default_nincr
self.n = n0 - nincr
self.nincr = nincr
def query(self):
return self.n
def incr(self):
self.n += self.nincr
def __copy__(self): #makes a (deep) copy of the counter in its current state
return SimpleCounter(self.n + self.nincr, self.nincr)
class Category(object):
"""
Category contains a list of all of the variables which belong
to the same category, as well as some supporting information.
Attributes:
name The name of the category (a string)
bindings An OrderedDict() containing leaf_node:VarBinding
(key:value) pairs. Variables are looked up by their leaf node.
The actual variable name (which simply refers to the leaf node)
and values are both stored in the VarBinding data structure.
counter A counter object like "SimpleCounter". Each time counter.incr()
is invoked it should return a unique string (typically this is
simply a string representing an integer which is incremented).
"""
__slots__=["name","bindings","counter","manual_assignments","reserved_values"]
def __init__(self,
name = '',
bindings = None,
counter = None,
manual_assignments = None,
reserved_values = None):
self.name = name
if bindings is None:
self.bindings = OrderedDict()
else:
self.bindings = bindings
if counter is None:
self.counter = SimpleCounter()
else:
self.counter = counter
if manual_assignments is None:
self.manual_assignments = OrderedDict()
else:
self.manual_assignments = manual_assignments
if reserved_values is None:
self.reserved_values = OrderedDict()
else:
self.reserved_values = reserved_values
class StaticObj(object):
""" StaticObjs and InstanceObjs:
The state of the system is stored in two different trees:
1) The static tree:
StaticObj trees are similar "class" definitions in an OOP language.
These trees contains class definitions, and their nested classes,
and instructions for how to create new instances (copies) of this class.
Nodes in this tree are stored using StaticObjs:
2) The instance tree:
This tree contains classes that have been instantiated, and any sub-
classes (members or attributes) that are instantiated as a result.
This tree is automatically generated by instantiating the root
StaticObj. Nodes in this tree are stored using InstanceObjs.
StaticObjs and InstanceObjs both contain
"commands" (commands which usually involve instructions
for writing templates)
"categories" (local counters used to assign variables. See below.)
"children" (Nested class definitions -NOT- OOP child classes. See below.)
StaticObjs also contain
"instance_commands"
"instance_categories"
These three members contain information to create a new instance/copy
of this class (how to construct an InstanceObj from an StaticObj).
StaticObj contains the member function Parse() which builds the global static
tree by parsing the contents of a text file supplied by the user.
The external function BuildInstanceTree(), creates the global instance tree
from the global static tree (a tree of StaticObjs).
----- CLASS MEMBERS OF StaticObj: ----
0) Name:
Every class (object type) has a name. It is stored in self.name.
To make it easier to distinguish the names of classes from the names of
individual instances of that class, I recommend using a capital letter
for the name of a class type (and lower-case letters for instances).
1) Commands
Commands are usually instructions for writing templates.
Templates are blocks of ordinary text which contain variables.
(Variables in this program consist of variable names, categories,
and (eventually) bound values (usually generated automatically),
which will be substituted into the template to generate a text file.)
A class can contain multiple templates, each one having a unique name
which also happens to be the name of the file that will be created when
the template is written.
Variants:
self.commands:
Some templates are written immediate after the class is defined
(stored in "self.commands").
Example: The "write_once()" command.
self.instance_commands:
Other templates are written when an instance/copy of the class is created
(stored in "self.instance_commands".
Example: The "write()" command.
2) Children
self.children:
Class definitions can be defined from within the definition of other
("parent") classes. These nested classes are referred to as "children".
These sub-classes are not "children" in the OOP sense of the word at
all (they do not have any of the the traits of their "parents").
However in the source code I refer to them as "children" because here
they are implemented as "child" nodes (branches) in the tree-like
data-structure used to store class definitions (the static tree).
3) Categories
This is a new concept and is difficult to explain.
Recall that each class contains a list of templates containing raw text,
interspersed with variables (whose values will determined later).
In most cases, variables are assigned to integer values which are
automatically generated by incrementing a counter. Simply put,
"categories" are collections of variables which share the same counter.
Within a category, the goal is to assign a unique integer (or other
symbol) to each distinct variable in this category.
To avoid name-clashes, variable names have local "scope".
This scope is the "leaf_token"
Categories can be specific to a particular class (node), and any of the
classes (nodes) which are nested within it, but by default are global.
(This means they "belong" to the global (outermost) node by default.)
All the various categories which are defined within a particular
StaticObj are stored in self.categories.
Static variables (ie. variables with a '@' prefix) are stored this way.
"self.categories"
If a class contains a new category, it means that if any nested
classes defined within that class definition contain (static, '@')
variables whose categories match the category name, their values will
be determined by looking up the couter associated with this category
stored locally (here) in self.categories. All variables belonging
to this category are stored in "self.categories[category_name]".
"self.instance_categories"
Recall that creating a new copy (instance) of a class automatically
creates an InstanceObj in the instance-tree. InstanceObj's have a
".categories" attribute of their own, the contents of which are
copied from this StaticObj's "self.instance_categories" attribute.
Instantiating a new class also spawns the instantiation of any
sub-classes.
If any of these "instance children" contain variables whose category
names match a category stored in the parent InstanceObj's .categories
dictionary, then their values will be determined by that InstanceObj's
counter for that category name.
4) Parent:
A link to the parent StaticObj is stored in self.parent.
"""
__slots__=["name",
"parent",
"children",
"categories",
"commands",
"srcloc_begin",
"srcloc_end",
"deleted",
"class_parents",
"namespaces",
"instname_refs",
"instance_categories",
"instance_commands_push",
"instance_commands",
"instance_commands_pop"]
def __init__(self,
name='',
parent=None):
"""
The members/attributes of StaticObj are defined in the comment
for StaticObj above. """
# The following members are shared by both InstanceObj and StaticObj:
self.name = name
self.parent = parent #For traversing the global static template tree
self.children = OrderedDict() # Nested class definitions.
self.categories=OrderedDict() #<- new variable categories that are only defined
# in the context of this molecule's type definition
self.commands=[] # Commands to carry out (only once)
##vb##self.var_bindings=[] # List of variables assigned to this object.
self.srcloc_begin = None # Keep track of location in user files
self.srcloc_end = None # (useful for error message reporting)
self.deleted = False # Users can delete static objects?
# (why not?)
# The following members are not shared with InstanceObj:
self.class_parents = [] # classes we inherit traits from (this is
# similar to the parent/child relationship
# in an object-oriented-programming language)
self.namespaces = [] # A list of classes we also look in when searching
# for other static nodes or variables. (similar to
# class_parents, but only used for searches.)
self.instname_refs = {} # <-- used for debugging to insure that
# two instances do not have the same name
self.instance_categories=OrderedDict()#<-new variable categories that are defined
#within the scope of this molecule's instance
self.instance_commands_push=[] #1)process these commands first by adding
# these commands to InstanceObj.commands
# (before you deal with class_parents)
self.instance_commands=[] #2) then add this to InstanceObj.commands
self.instance_commands_pop=[] #3) finally add these commands
def DeleteSelf(self):
for child in self.children.values():
child.DeleteSelf()
self.deleted = True
def IsDeleted(self):
return self.deleted
##vb##def AddVarBinding(self, var_binding):
##vb## if self.var_bindings is None:
##vb## self.var_bindings = [var_binding]
##vb## else:
##vb## self.var_bindings.append(var_binding)
def Parse(self, lex):
""" Parse() builds a static tree of StaticObjs by parsing text file.
-The "lex" argument is a file or input stream which has been converted
to a "TemplateLexer" object (similar to the python's built-in shlex lexer).
"""
+ # The next two variables store a stack of commands the user wants
+ # to manually add to the list of stackable instance_commands.
+ # (Allowing the users to directly manipulate the transformation stack
+ # is an experimental feature as of 2015- Most users don't need this.)
+ user_push_left_commands = []
+ user_push_right_commands = []
+
#sys.stdout.write(' -- Parse() invoked --\n')
# Keep track of the location in the users' input files where this
# class object is first defined. (Keep in mind that the user might
# augment their original class definition, adding new content to an
# existing class. In that case self.srcloc_begin will have already
# been assigned. We don't want to overwrite it in that case.)
if self.srcloc_begin is None: # <-- not defined yet?
self.srcloc_begin = lex.GetSrcLoc()
while True:
cmd_token = lex.get_token()
#print('Parse(): token = \"'+cmd_token+'\", '+lex.error_leader())
if cmd_token == lex.eof:
#print('Parse(): EOF encountered\n')
break
if ((cmd_token == 'write') or
(cmd_token == 'write_once') or
(cmd_token == 'create_var') or
- (cmd_token == 'create_vars')):
+ (cmd_token == 'replace')):
open_paren = lex.get_token()
#print('Parse(): open_paren=\"'+open_paren+'\"')
if open_paren=='{':
# ..then the user neglected to specify the "dest" file-name
# argument. In that case, supply the default, ''.
# (which is shorthand for the standard out in this case)
open_curly = open_paren[0]
open_paren = ''
close_paren = ''
- tmpl_filename = ''
+ tmpl_filename = ''
srcloc = lex.GetSrcLoc()
else:
tmpl_filename = lex.get_token()
if tmpl_filename == ')':
tmpl_filename = ''
close_paren = ')'
else:
close_paren = lex.get_token()
open_curly = lex.get_token()
srcloc = lex.GetSrcLoc()
- if ((cmd_token == 'create_var') or
- (cmd_token == 'create_vars')):
+ if (cmd_token == 'create_var'):
tmpl_filename = None
# This means: define the template without attaching
# a file name to it. (IE., don't write the contents
# of what's enclosed in the curly brackets { } to a file.)
+
+ if (cmd_token == 'replace'):
+ tmpl_filename = "ttree_replacements.txt"
if ((open_curly != '{') or
((open_paren == '') and (close_paren != '')) or
((open_paren == '(') and (close_paren != ')'))):
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error in '+lex.error_leader()+'\n\n'
'Syntax error at the beginning of the \"'+cmd_token+'\" command.')
if tmpl_filename != None:
tmpl_filename = RemoveOuterQuotes(tmpl_filename, lex.quotes)
# ( The previous line is similar to:
# tmpl_filename = tmpl_filename.strip(lex.quotes) )
tmpl_contents = lex.ReadTemplate()
StaticObj.CleanupReadTemplate(tmpl_contents, lex)
#sys.stdout.write(' Parse() after ReadTemplate, tokens:\n\n')
#print(tmpl_contents)
#sys.stdout.write('\n----------------\n')
- if cmd_token == 'write_once':
+ if (cmd_token == 'write_once' or
+ cmd_token == 'replace'):
+
# Check for a particular bug:
# Ordinary instance variables (preceded by a '$')
# should never appear in a write_once() statement.
for entry in tmpl_contents:
if (isinstance(entry, VarRef) and
(entry.prefix[0]=='$')):
- raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
+ err_msg = ('Error('+g_module_name+'.StaticObj.Parse()):\n'+
' Error near '+ErrorLeader(entry.srcloc.infile,
- entry.srcloc.lineno)+'\n'
- ' Illegal variable: \"'+entry.prefix+entry.descr_str+entry.suffix+'\"\n'
- ' All variables in a \"write_once()\" statement must be statically\n'
- ' defined, and hence they must begin with a \'@\' prefix character.\n'
- ' (not a \'$\' character).\n'
- ' Suggestion: Use the \"write()\" command instead.\n')
+ entry.srcloc.lineno)+'\n'+
+ ' Illegal variable: \"'+entry.prefix+entry.descr_str+entry.suffix+'\"\n'+
+ ' All variables in a \"'+cmd_token+'\" statement must be statically\n'+
+ ' defined, and hence they must begin with a \'@\' prefix character.\n'+
+ ' (not a \'$\' character).\n')
+ if (cmd_token == 'write_once'):
+ err_msg += ' Suggestion: Use the \"write()\" command instead.\n'
+ raise InputError(err_msg)
if cmd_token == 'write':
commands = self.instance_commands
- elif cmd_token == 'write_once':
+ elif (cmd_token == 'write_once' or
+ cmd_token == 'replace'):
commands = self.commands
- elif ((cmd_token == 'create_var') or
- (cmd_token == 'create_vars')):
+ elif (cmd_token == 'create_var'):
commands = self.instance_commands
else:
assert(False)
command = WriteFileCommand(tmpl_filename,
tmpl_contents,
srcloc)
commands.append(command)
# end of "if (cmd_token == 'write') or (cmd_token == 'write_once'):"
elif cmd_token == 'delete':
instobj_descr_str = lex.get_token()
instobj_srcloc = lex.GetSrcLoc()
delete_command = DeleteCommand(instobj_srcloc)
mod_command = ModCommand(delete_command,
instobj_descr_str)
self.instance_commands.append(mod_command)
elif cmd_token == 'using':
namespacecom_str = lex.get_token()
if namespacecom_str != 'namespace':
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
' The \"'+cmd_token+'\" command must be followed by the \"namespace\" keyword.')
namespace_str = lex.get_token()
stnode = StrToNode(namespace_str,
self,
lex.GetSrcLoc())
self.namespaces.append(stnode)
elif cmd_token == 'category':
cat_name = lex.get_token()
cat_count_start = 1
cat_count_incr = 1
open_paren = lex.get_token()
if (open_paren == '('):
token = lex.get_token()
if token == ',':
token = lex.get_token()
if token != ')':
# Interpret token as an integer, float, or string
try:
cat_count_start = int(token)
except ValueError:
try:
cat_count_start = float(token)
except ValueError:
cat_count_start = RemoveOuterQuotes(token, '\'\"')
token = lex.get_token()
if token == ',':
token = lex.get_token()
if token != ')':
# Interpret token as an integer,float,or string
try:
cat_count_incr = int(token)
except ValueError:
try:
cat_count_incr = float(token)
except ValueError:
cat_count_incr = RemoveOuterQuotes(token, '\'\"')
token = lex.get_token()
if token != ')':
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
' \"'+cmd_token+' '+cat_name+'...\" has too many arguments,\n'
' or lacks a close-paren \')\'.\n')
else:
lex.push_token(open_paren)
if (isinstance(cat_count_start, basestring) or
isinstance(cat_count_incr, basestring)):
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
' \"'+cmd_token+' '+cat_name+'('+
str(cat_count_start)+','+
str(cat_count_incr)+')\"\n'
' Only numeric counters are currently supported.\n')
# check for really stupid and unlikely errors:
if type(cat_count_start) is not type(cat_count_incr):
if ((isinstance(cat_count_start, int) or
isinstance(cat_count_start, float))
and
(isinstance(cat_count_incr, int) or
isinstance(cat_count_incr, float))):
cat_count_start = float(cat_count_start)
cat_count_incr = float(cat_count_incr)
else:
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
' Problem with \"'+cmd_token+'\" command.\n')
prefix = cat_name[0]
cat_name = cat_name[1:]
# Add this category to the list.
if prefix == '@':
self.categories[cat_name] = Category(cat_name)
self.categories[cat_name].counter=SimpleCounter(cat_count_start,
cat_count_incr)
elif prefix == '$':
self.instance_categories[cat_name] = Category(cat_name)
self.instance_categories[cat_name].counter=SimpleCounter(cat_count_start,
cat_count_incr)
else:
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
' category name = \"'+cat_name+'\" lacks a \'$\' or \'&\' prefix.\n'
' This one-character prefix indicates whether the variables in this\n'
' new category will be static or dynamics variables\n')
elif (cmd_token == '}') or (cmd_token == ''):
# a '}' character means we have reached the end of our scope.
# Stop parsing and let the caller deal with the remaining text.
# (And a '' means we reached the end of the file... I think.)
break
#elif (cmd_token == 'include'):
# "include filename" loads a file (adds it to the file stack)
# The "TtreeShlex" class (from which "lex" inherits) handles
# "include" statements (ie. "source" statements) automatically.
+ elif ((cmd_token == 'push') or
+ (cmd_token == 'push_left') or
+ (cmd_token == 'push_right')):
+
+ push_cmd_src_loc = lex.GetSrcLoc()
+ push_cmd_text = lex.GetParenExpr()
+ if ((len(push_cmd_text) < 2) or
+ (push_cmd_text[0] != '(') or
+ (push_cmd_text[-1] != ')')):
+ raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
+ ' Error near '+lex.error_leader()+'\n'
+ ' Bad \"push\" command. Expected an expression in parenthesis.\n')
+ push_cmd_text = push_cmd_text[1:-1]
+
+ if (cmd_token == 'push_right'):
+ push_command = PushRightCommand(push_cmd_text,
+ push_cmd_src_loc)
+ user_push_right_commands.append(push_command)
+ else:
+ push_command = PushLeftCommand(push_cmd_text,
+ push_cmd_src_loc)
+ user_push_left_commands.append(push_command)
+ self.instance_commands.append(push_command)
+
+ elif ((cmd_token == 'pop') or
+ (cmd_token == 'pop_left') or
+ (cmd_token == 'pop_right')):
+
+ pop_cmd_text = lex.GetParenExpr()
+ pop_cmd_src_loc = lex.GetSrcLoc()
+ if (cmd_token == 'pop_right'):
+ if len(user_push_right_commands) > 0:
+ push_command = user_push_right_commands.pop()
+ else:
+ raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
+ ' Error near '+lex.error_leader()+'\n'
+ ' Too many \"pop_right\" commands.\n')
+ pop_command = PopRightCommand(push_command,
+ pop_cmd_src_loc)
+ else:
+ if len(user_push_left_commands) > 0:
+ push_command = user_push_left_commands.pop()
+ else:
+ raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
+ ' Error near '+lex.error_leader()+'\n'
+ ' Too many pop, (or pop_left) commands.\n')
+ pop_command = PopLeftCommand(push_command,
+ pop_cmd_src_loc)
+ self.instance_commands.append(pop_command)
+
+
+
else:
+
# Otherwise, 'cmd_token' is not a command at all.
# Instead it's the name of an object which needs to be
# defined or instantiated.
# First, let's figure out which.
# (small detail: The "class" keyword is optional
# and can be skipped.)
if cmd_token == 'class':
object_name = lex.get_token()
else:
object_name = cmd_token
next_symbol = lex.get_token()
#print('Parse(): next_token=\"'+next_symbol+'\"')
class_parents = []
if next_symbol == 'inherits':
# Then read in the list of classes which are parents of
# of this class. (Multiple inheritance is allowed.)
# (We don't yet check to insure that these are valid class
# names. We'll do this later in LookupStaticRefs().)
syntax_err_inherits = False
while True:
next_symbol = lex.get_token()
if ((next_symbol == '{') or
(next_symbol == lex.eof)):
break
elif (next_symbol == '='):
syntax_err_inherits = True
break
else:
class_parents.append(StrToNode(next_symbol,
self,
lex.GetSrcLoc()))
if len(class_parents) == 0:
syntax_err_inherits = True
if syntax_err_inherits:
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
' \"inherits\" should be followed by one or more class names.\n')
if next_symbol == '{':
child_name = object_name
# Check to see if this class has already been defined.
# (IE. check if it present in the list of children.)
# If the name (child_name) matches another class (child),
# then the contents of the new class will be appended to
# the old. This way, class definitions can be augmented
# later. (This is the way "namespaces" work in C++.)
child = self.children.get(child_name)
# If found, we refer to it as "child".
# If not, then we create a new StaticObj named "child".
if child is None:
child = StaticObj(child_name, self)
self.children[child_name] = child
assert(child.name == child_name)
# Either way we invoke child.Parse(), to
# add contents (class commands) to child.
child.Parse(lex)
child.class_parents += class_parents
elif next_symbol == '=':
next_symbol = lex.get_token()
if next_symbol == 'new':
base_name = object_name
base_srcloc = lex.GetSrcLoc()
array_slice_str = ''
if base_name.find('/') != -1:
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+ErrorLeader(base_srcloc.infile,
base_srcloc.lineno)+'\n'
' (You can not instantiate some other object\'s members.)\n'
' Invalid instance name: \"'+base_name+'\"\n')
elif base_name in self.instname_refs:
ref_srcloc = self.instname_refs[base_name]
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Duplicate class/array \"'+base_name+'\"\n'
' This occurs near:\n'
' '+ErrorLeader(ref_srcloc.infile,
ref_srcloc.lineno)+'\n'
' and also near:\n'
' '+ErrorLeader(base_srcloc.infile,
base_srcloc.lineno)+'\n')
else:
self.instname_refs[base_name] = base_srcloc
# Check for syntax allowing the user to instantiate
# PART of an array. For example, check for this syntax:
# "monomers[20-29] = new ...". This only fills in a
# portion of the array from: monomers[20]...monomers[29]
#
# We also have to deal with multidimensional syntax
# like this: "cells[3][2-3][1][4-7] = new..."
# Split the "cells[3][2-3][2][4-7][2]" string into
# "cells[3][", "][1][", and "]".
# Later, we will instantiate InstanceObjs with names:
# "cells[3][2][1][4]"
# "cells[3][2][1][5]"
# "cells[3][2][1][6]"
# "cells[3][2][1][7]"
# "cells[3][3][1][4]"
# "cells[3][3][1][5]"
# "cells[3][3][1][6]"
# "cells[3][3][1][7]"
p1 = base_name.find('[')
if p1 == -1:
p1 = len(base_name)
else:
p1 += 1
array_name_tkns = [ base_name[0:p1] ]
array_name_offsets = []
p2 = -1
p4 = p1
while p4 < len(base_name):
p3 = base_name.find(']', p1)
if p3 == -1:
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Expected a \']\' character following:\n'
' \"'+base_name[0:p1]+'\", located near:\n'
' '+ErrorLeader(ref_srcloc.infile,
ref_srcloc.lineno)+'\n')
# Search for a '-', ':', or '*' character between []
# For example "monomers[20-29] = "
# If present, the user wants us to fill a range
# inside an array. This could be a multi-dimensional
# array, (eg "cells[3][2-6][4-11] = "), so we must
# figure out which entries in the array the user
# wants us to fill (in this case, "[2-6][4-11]")
p2 = base_name.find('-', p1)
if p2 == -1:
p2 = len(base_name)
if p2 > p3:
p2 = base_name.find(':', p1)
if p2 == -1:
p2 = len(base_name)
if p2 > p3:
p2 = base_name.find('*', p1)
if p2 == -1:
p2 = len(base_name)
p4 = p3 + 1
if p4 < len(base_name):
if base_name[p4] == '[':
p4 += 1 # skip over it
else:
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Expected a \'[\' character forllowing a \']\' character in\n'
' \"'+base_name[0:p2+1]+'\", located near:\n'
' '+ErrorLeader(ref_srcloc.infile,
ref_srcloc.lineno)+'\n')
if p2 > p3:
# Then no '-', ':', or '*' character was found
# between '[' and the subsequent ']' character
# In that case, ignore this token
token = base_name[p1:p4]
# append all this text to the previous token
if len(array_name_tkns) == 0:
array_name_tkns.append(token)
else:
array_name_tkns[-1] = array_name_tkns[-1]+token
array_slice_str = 'slice '
else:
assert((p1 < p2) and (p2 < p3))
index_offset_str = base_name[p1:p2]
if len(index_offset_str) == 0:
index_offset = 0
elif (not str.isdigit(index_offset_str)):
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Expected a nonnegative integer preceding the \''+base_name[p2]+'\' character in:\n'
' \"'+base_name[0:p2+1]+'\", located near:\n'
' '+ErrorLeader(ref_srcloc.infile,
ref_srcloc.lineno)+'\n')
else:
index_offset = int(index_offset_str)
token=base_name[p3:p4]
array_name_tkns.append(token)
array_name_offsets.append(index_offset)
p1 = p4
# If the statobj_str token contains a ']' character
# then this means the user wants us to make multiple
# copies of this template. The number of copies
# to instantiate is enclosed in the [] characters
# (Example wat = new Water[3000] creates
# 3000 instantiations of the Water template
# named wat[1], wat[2], wat[3], ... wat[3000]).
# Note: Here '[' and ']' have a special meaning.
# So lex.get_token() should not treat them as
# ordinary word characters. To prevent this:
orig_wordterminators = lex.wordterminators
lex.wordterminators += '[],'
class_name_str = lex.get_token()
if ((class_name_str == lex.eof) or
(class_name_str == '}')):
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
'Class ends prematurely. (Incomplete \"new\" statement.)')
assert(len(class_name_str) > 0)
if (class_name_str[0] == '['):
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
' new '+class_name_str+'\n'
'Bracketed number should be preceeded by a class name.')
class_names = []
weights = []
num_by_type = []
if class_name_str == 'random':
class_names, weights, num_by_type = self._ParseRandom(lex)
tmp_token = lex.get_token()
if len(tmp_token)>0:
if tmp_token[0]=='.':
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
' \"'+tmp_token+'\" should not follow random()\n'
'\n'
' Coordinate transformations and other commands (such as \"'+tmp_token+'\")\n'
' should appear after each class name inside the random() statement,\n'
' not after it. For example, do not use:\n'
' \"lipids=new random([DPPC,DLPC],[0.5,0.5]).move(0,0,23.6)\"\n'
' Use this instead:\n'
' \"lipids=new random([DPPC.move(0,0,23.6),DLPC.move(0,0,23.6)],[0.5,0.5])\"\n')
lex.push_token(tmp_token)
else:
class_name, class_suffix, class_suffix_srcloc = \
self._ProcessClassName(class_name_str, lex)
array_size = []
array_suffixes = []
array_srclocs = []
# A general "new" statement could look like this:
# "m = new Mol.scale(3) [2].trans(0,4.5,0).rotate(30,0,0,1)
# [3].trans(0,0,4.5)"
# So far we have processed "m = new Mol.scale(3)".
# Now, we need to deal with:
# "[2].trans(0,4.5,0).rotate(30,0,0,1) [3].trans(0,0,4.5)"
while True:
new_token = lex.get_token()
#if ((new_token == '') or (new_token == lex.eof)):
# break
if new_token == '[':
number_str = lex.get_token()
close_bracket = lex.get_token()
if ((not str.isdigit(number_str)) or
(close_bracket != ']')):
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error in \"new\" statement near '+lex.error_leader()+'\n'
' A \'[\' character should be followed by a number and a \']\' character.')
array_size.append(int(number_str))
suffix = lex.get_token()
if ((suffix == '') or (suffix == lex.eof)):
array_suffixes.append('')
array_srclocs.append(base_srcloc)
break
if suffix[0] == '.':
lex.push_token(suffix[1:])
suffix_func = lex.GetParenExpr()
suffix = '.' + suffix_func
array_suffixes.append(suffix)
array_srclocs.append(lex.GetSrcLoc())
else:
array_suffixes.append('')
array_srclocs.append(base_srcloc)
lex.push_token(suffix)
if suffix != '[':
break
else:
lex.push_token(new_token)
break
srcloc_final = lex.GetSrcLoc()
lex.wordterminators = orig_wordterminators
assert(len(array_size) == len(array_suffixes))
if len(array_size) > 0:
if len(array_name_offsets) == 0:
assert(len(array_name_tkns) == 1)
array_name_offsets = [0] * len(array_size)
array_name_tkns[0] = array_name_tkns[0] + '['
for d in range(0, len(array_size)-1):
array_name_tkns.append('][')
array_name_tkns.append(']')
if len(array_name_offsets) != len(array_size):
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error in \"new\" statement near/before '+lex.error_leader()+'\n'
' Array '+array_slice_str+'dimensionality on the left side of the \'=\' character ('+str(len(array_name_offsets))+')\n'
' does not match the array dimensionality on the right side ('+str(len(array_size))+').\n')
# If the user wants us to instantiate a
# multidimensional array of class instances
# then we must loop through this multidimensional
# array and create a new instance for each entry.
# For example fill a 3 dimensional volume
# with 1000 water molecules
# Example 1:
# solvent = new Water [10][10][10]
# (The coordinates must be read separately.)
# In this example array_size = [10,10,10]
# array_suffixes = ['','','']
# Example 2:
# solvent = new Water.transcm(0,0,0)
# [10].trans(0,0,4)
# [10].trans(0,4,0).rot(45,0,0,1)
# [10].trans(4,0,0)
# (This command generates a 10x10x10 lattice
# simple cubic lattice of regularly spaced
# water molecules pointing the same direction.)
# In this example array_size = [10,10,10]
# and
# class_suffix = 'transcm(0,0,0)'
# and
# array_suffixes = ['trans(0,0,4)',
# 'trans(0,4,0).rot(45,0,0,1)',
# 'trans(4,0,0)']
# Note that tree ignores the "trans()"
# commands, it stores them so that inherited
# classes can attempt to process them.
D = len(array_size)
if D > 0:
i_elem = 0 #(used to look up selection_list[])
if len(num_by_type) > 0:
selection_list = []
for i in range(0, len(num_by_type)):
selection_list += [i]*num_by_type[i]
random.shuffle(selection_list)
num_elements = 1
for d in range(0,D):
num_elements *= array_size[d]
err_msg_str = str(array_size[0])
for d in range(1,D):
err_msg_str += '*'+str(array_size[d])
if num_elements != len(selection_list):
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near or before '+lex.error_leader()+'\n'
' The sum of the numbers in the \"new random([],[])\" command ('+str(len(selection_list))+')\n'
' does not equal the number of elements in the array ('+err_msg_str+')\n')
digits = [0 for d in range(0, D)]
table_filled = False
pushed_commands = []
while (not table_filled):
instance_name = array_name_tkns[0]
for d in range(0, D):
i = digits[d]
instance_name+=str(i+
array_name_offsets[d])+\
array_name_tkns[d+1]
# Does the user want us to select
# a class at random?
if len(class_names) > 0:
if len(num_by_type) > 0:
class_name_str = class_names[selection_list[i_elem]]
else:
class_name_str = RandomSelect(class_names,
weights)
class_name, class_suffix, class_suffix_srcloc= \
self._ProcessClassName(class_name_str, lex)
if class_suffix != '':
class_suffix_command = \
PushRightCommand(class_suffix.lstrip('.'),
class_suffix_srcloc)
self.instance_commands.append(class_suffix_command)
command = \
InstantiateCommand(instance_name,
ClassReference(class_name,
base_srcloc),
base_srcloc)
self.instance_commands.append(command)
if class_suffix != '':
command = \
PopRightCommand(class_suffix_command,
srcloc_final)
self.instance_commands.append(command)
# Now go to the next entry in the table.
# The indices of this table are similar to
# a D-digit integer. We increment this d-digit number now.
d_carry = D-1
while True:
digits[d_carry] += 1
if digits[d_carry] >= array_size[d_carry]:
digits[d_carry] = 0
if array_suffixes[d_carry] != '':
for i in range(0, array_size[d_carry]-1):
partner = pushed_commands.pop()
command = PopRightCommand(partner,
srcloc_final)
self.instance_commands.append(command)
d_carry -= 1
else:
if array_suffixes[d_carry] != '':
command = PushRightCommand(array_suffixes[d_carry].lstrip('.'),
array_srclocs[d_carry])
pushed_commands.append(command)
self.instance_commands.append(command)
break
if d_carry < 0:
table_filled = True
break
i_elem += 1 #(used to look up selection_list[])
pass
else:
if len(class_names) > 0:
assert(len(num_by_type) == 0)
#if len(num_by_type) > 0:
# class_name_str = class_names[selection_list[i_elem]]
#else:
# class_name_str = RandomSelect(class_names,
# weights)
class_name_str = RandomSelect(class_names,
weights)
class_name, class_suffix, class_suffix_srcloc= \
self._ProcessClassName(class_name_str, lex)
if class_suffix != '':
class_suffix_command = \
PushRightCommand(class_suffix.lstrip('.'),
class_suffix_srcloc)
self.instance_commands.append(class_suffix_command)
command = \
InstantiateCommand(base_name,
ClassReference(class_name,
base_srcloc),
base_srcloc)
self.instance_commands.append(command)
if class_suffix != '':
command = \
PopRightCommand(class_suffix_command,
srcloc_final)
self.instance_commands.append(command)
else:
# Now check for commands using this syntax:
#
# "MolNew = MolOld.rot(45,1,0,0).scale(100.0)"
# /|\ /|\ `-----------.------------'
# | | |
# child_name parent_name optional suffix
child_name = object_name
parent_name_str = next_symbol
child = StaticObj(child_name, self)
parent_name, suffix, suffix_srcloc = \
self._ProcessClassName(parent_name_str, lex)
child.class_parents.append(StrToNode(parent_name,
self,
lex.GetSrcLoc()))
if suffix != '':
# Assume the command is a StackableCommand. (This
# way it will enclose the commands of the parents.)
# Stackable commands come in (Push...Pop) pairs.
push_command = PushLeftCommand(suffix,
suffix_srcloc)
pop_command = PopLeftCommand(push_command,
suffix_srcloc)
push_mod_command = ModCommand(push_command, './')
pop_mod_command = ModCommand(pop_command, './')
child.instance_commands_push.append(push_mod_command)
child.instance_commands_pop.insert(0,pop_mod_command)
#sys.stderr.write('child.instance_commands_push = '+str(child.instance_commands_push)+'\n')
#sys.stderr.write('child.instance_commands_pop = '+str(child.instance_commands_pop)+'\n')
# Check to see if this class has already been defined.
if self.children.get(child_name) is not None:
if self.children[i].IsDeleted():
del self.children[child_name]
else:
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
' The name \"'+child_name+'\" is already in use.')
self.children[child_name] = child
else:
# Otherwise hopefully this is a post-instance command
# (a command applied to a class which has been instantiated)
# In that case, the object_name would be followed by
# a dot and a function-call containing a '(' paren (which
# would have ended up stored in the next_symbol variable).
open_paren_encountered = False
if (next_symbol == '('):
open_paren_encountered = True
lex.push_token(next_symbol) #put '(' back in the stream
i_dot = object_name.rfind('.')
i_slash = object_name.rfind('/')
dot_encountered = ((i_dot != -1) and
((i_slash == -1) or (i_slash < i_dot)))
if (open_paren_encountered and dot_encountered and
(object_name[:1] != '[')):
obj_descr_str, suffix, suffix_srcloc = \
self._ExtractSuffix(object_name, lex)
path_tokens = obj_descr_str.split('/')
i_last_ptkn, staticobj = FollowPath(path_tokens,
self,
lex.GetSrcLoc())
instobj_descr_str = './'+'/'.join(path_tokens[i_last_ptkn:])
# I still support the "object_name.delete()" syntax for
# backwards compatibility. (However newer input files
# use this equivalent syntax: "delete object_name")
if suffix == 'delete()':
delete_command = DeleteCommand(suffix_srcloc)
mod_command = ModCommand(delete_command,
instobj_descr_str)
staticobj.instance_commands.append(mod_command)
else:
push_command = PushLeftCommand(suffix,
suffix_srcloc,
'.')
pop_command = PopLeftCommand(push_command,
suffix_srcloc,
'.')
push_mod_command = ModCommand(push_command,
instobj_descr_str)
pop_mod_command = ModCommand(pop_command,
instobj_descr_str)
if instobj_descr_str != './':
#sys.stderr.write('DEBUG: Adding '+str(push_command)+' to '+
# staticobj.name+'.instance_commands\n')
staticobj.instance_commands.append(push_mod_command)
staticobj.instance_commands.append(pop_mod_command)
else:
#sys.stderr.write('DEBUG: Adding '+str(push_command)+' to '+
# staticobj.name+'.instance_commands_push\n')
- # CONTINUEHERE: should I make these PushRight commands and
+ # Question: Should I make these PushRight commands and
# append them in the opposite order?
# If so I also have to worry about the case above.
staticobj.instance_commands_push.append(push_mod_command)
staticobj.instance_commands_pop.insert(0,pop_mod_command)
else:
# Otherwise, the cmd_token is not any of these:
- # "write", "write_once", "create_vars"
+ # "write", "write_once", "replace", "create_vars"
# "delete", or "category".
# ... and it is ALSO not any of these:
# the name of a class (StaticObj), or
# the name of an instance (InstanceObj)
# followed by either a '.' or "= new"
#
# In that case, it is a syntax error:
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Syntax error at or before '+lex.error_leader()+'\n'
' \"'+object_name+' '+next_symbol+'\".')
# Keep track of the location in the user's input files
# where the definition of this object ends.
self.srcloc_end = lex.GetSrcLoc()
+
+ # Finally, if there are any remaining user_push_left_commands or
+ # user_push_right_commands, deal with them (by popping them).
+ for push_command in user_push_left_commands:
+ push_command = user_push_left_commands.pop()
+ pop_command = PopLeftCommand(push_command,
+ self.srcloc_end)
+ self.instance_commands.append(pop_command)
+
+ for push_command in user_push_right_commands:
+ push_command = user_push_right_commands.pop()
+ pop_command = PopRightCommand(push_command,
+ self.srcloc_end)
+ self.instance_commands.append(pop_command)
+
+
+
@staticmethod
def CleanupReadTemplate(tmpl_contents, lex):
#1) Remove any newlines at the beginning of the first text block
# in tmpl_content.(Sometimes they cause ugly extra blank lines)
assert(len(tmpl_contents) > 0)
if isinstance(tmpl_contents[0], TextBlock):
first_token_strip = tmpl_contents[0].text.lstrip(' ')
if ((len(first_token_strip) > 0) and
(first_token_strip[0] in lex.newline)):
tmpl_contents[0].text = first_token_strip[1:]
tmpl_contents[0].srcloc.lineno += 1
#2) Remove any trailing '}' characters, and complain if absent.
# The last token
assert(isinstance(tmpl_contents[-1], TextBlock))
assert(tmpl_contents[-1].text in ['}',''])
if tmpl_contents[-1].text == '}':
del tmpl_contents[-1]
else:
tmpl_begin = None
if isinstance(tmpl_contents[0], TextBlock):
tmpl_begin = tmpl_contents[0].srcloc
elif isinstance(tmpl_contents[0], VarRef):
tmpl_begin = tmpl_contents[0].srcloc
else:
assert(False)
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n\n'
' Premature end to template.\n'
'(Missing terminator character, usually a \'}\'.) The\n'
'incomplete template begins near '+ErrorLeader(tmpl_begin.infile, tmpl_begin.lineno)+'\n')
#3) Finally, if there is nothing but whitespace between the
# last newline and the end, then strip that off too.
if isinstance(tmpl_contents[-1], TextBlock):
i = len(tmpl_contents[-1].text)-1
if i >= 0:
while ((i >= 0) and
(tmpl_contents[-1].text[i] in lex.whitespace) and
(tmpl_contents[-1].text[i] not in lex.newline)):
i -= 1
if (tmpl_contents[-1].text[i] in lex.newline):
tmpl_contents[-1].text = tmpl_contents[-1].text[0:i+1]
def LookupStaticRefs(self):
""" Whenever the user requests to instantiate a new copy of a class,
the name of that class is stored in self.instance_commands.
This name is stored as a string. After all of the classes have been
defined, then we go back through the tree and replace these names
with pointers to actual StaticObjs which correspond to those classes.
(This was deferred until all of the classes have been defined so
that users can refer to classes that they will define later on.)
"""
# Now do the same for any children which
# are created during instantiation:
for command in self.instance_commands:
# Does this command create/instantiate a new copy of a class?
if isinstance(command, InstantiateCommand):
# If so, figure out which statobj is referred to by statobj_str.
assert(isinstance(command.class_ref.statobj_str, basestring))
command.class_ref.statobj = StrToNode(command.class_ref.statobj_str,
self,
command.class_ref.srcloc)
# Now recursively resolve StaticObj pointers for the "children"
# (in this case, "children" refers to classes whose definitions
# are nested within this one).
for child in self.children.values():
child.LookupStaticRefs()
def _ExtractSuffix(self, class_name_str, lex):
"""
This ugly function helps process "new" commands such as:
mola = new ForceFieldA/../MoleculeA.move(30,0,0).rot(45,0,0,1)
This function expects a string,
(such as "ForceFieldA/../MoleculeA.move(30,0,0).rot(45,0,0,1)")
It extracts the class name "ForceFieldA/../MoleculeA"
and suffix "move(30,0,0).rot(45,0,0,1)"
"""
# Dots in class names can appear for 2 reasons:
# 1) as part of a path like "../" describing the location
# where this class was defined relative to the caller.
# In that case it will be preceeded or followed by
# either another dot '.', or a slash '/'
# 2) as part of a "suffix" which appears after the name
# containing instructions which modify how to
# instantiate that class.
# Case 1 is handled elsewhere. Case 2 is handled here.
i_dot = 0
while i_dot < len(class_name_str):
i_dot = class_name_str.find('.', i_dot)
if i_dot == -1:
break
# Is the '.' character followed by another '.', as in ".."?
# If so, it's part of a path such as "../Parent/Mol', (if
# so, it's not what we're looking for, so keep searching)
if i_dot < len(class_name_str)-1:
if class_name_str[i_dot+1] == '.':
i_dot += 1
#otherwise, check to see if it is followed by a '/'?
elif class_name_str[i_dot+1] != '/':
# if not, then it must be part of a function name
break;
class_suffix = ''
class_name = class_name_str
class_suffix_srcloc = None
if ((i_dot != -1) and
(i_dot < len(class_name_str))):
class_suffix = class_name_str[i_dot:]
class_name = class_name_str[:i_dot]
if class_name_str[-1] != ')':
# If it does not already contains the parenthesis?
class_suffix += lex.GetParenExpr()
class_suffix_srcloc = lex.GetSrcLoc()
#sys.stderr.write(' splitting class name into class_name.suffix\n'
# ' class_name=\"'+class_name+'\"\n'
# ' suffix=\"'+class_suffix+'\"\n')
return class_name, class_suffix.lstrip('.'), class_suffix_srcloc
def _ProcessClassName(self, class_name_str, lex):
"""
This function does some additional
processing (occasionaly inserting "..." before class_name).
"""
class_name, class_suffix, class_suffix_srcloc = \
self._ExtractSuffix(class_name_str, lex)
# ---- ellipsis hack ----
# (Note-to-self 2012-4-15)
# Most users expect ttree.py to behave like a
# standard programming language: If the class they are
# instantiating was not defined in this specific
# location, they expect ttree.py to search for
# it outwards, first in the parent's environment,
# and then in the parent's parent's environment,
# and so on, until the object is found.
# For example, most users expect this to work:
# class A{
# <definition_of_a_goes_here...>
# }
# class B{
# a = new A
# }
# Notice in the example above we did not have to specify where "A"
# was defined, because it is defined in the parent's
# environment (ie. immediately outside B's environment).
#
# One can obtain the equivalent behavior in ttree.py
# using ellipsis syntax: "a = new .../A" symbol.
# The ellipsis ".../" tells ttree.py to search upwards
# for the object to the right of it ("A")
# In order to make ttree.py behave the way
# most users are expecting, we artificially insert a
# ".../" before the class name here. (Later on, the
# code that processes the ".../" symbol will take
# care of finding A.)
if (len(class_name)>0) and (class_name[0] not in ('.','/','*','?')):
class_name = '.../' + class_name
return class_name, class_suffix, class_suffix_srcloc
def _ParseRandom(self, lex):
bracket1 = lex.get_token()
bracket2 = lex.get_token()
if ((bracket1 != '(') and (bracket1 != '[')):
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
'Expected a \"([\" following '+class_name+'.')
class_names = []
token = ''
prev_token = '['
while True:
token = lex.get_token()
if (token == '('):
lex.push_token(token)
token = lex.GetParenExpr()
if (prev_token not in (',','[','(')):
assert(len(class_names) > 0)
class_names[-1] = prev_token + token
prev_token = prev_token + token
else:
class_names.append(token)
prev_token = token
else:
if ((token == ']') or
(token == lex.eof) or
(token == '}') or
((token in lex.wordterminators) and
(token != ','))):
if (prev_token in (',','[','(')):
class_names.append('')
break
if token != ',':
class_names.append(token)
elif (prev_token in (',','[','(')):
class_names.append('')
prev_token = token
token_comma = lex.get_token()
bracket1 = lex.get_token()
if ((token != ']') or
(token_comma != ',') or
(bracket1 != '[')):
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
'Expected a list of class names enclosed in [] brackets, followed by\n'
'a comma, and then a list of probabilities also enclosed in [] brackets.\n'
'(A random-seed following another comma is optional.)')
weights = []
while True:
token = lex.get_token()
if ((token == ']') or
(token == lex.eof) or
(token == '}') or
((token in lex.wordterminators) and
(token != ','))):
break
if token != ',':
try:
weight = float(token)
except ValueError:
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
' \"'+token+'\"\n'
'Expected a list of numbers enclosed in [] brackets.')
if (weight < 0.0):
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
' Negative numbers are not allowed in \"random(\" argument list.\n')
weights.append(weight)
bracket2 = lex.get_token()
if ((token != ']') or
(bracket2 not in (')',','))):
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
'Expected a \")\" or a \",\" following the list of numeric weights.')
if len(class_names) != len(weights):
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
'Unequal number of entries in object list and probability list.\n')
# Are all the entries in the "weights" array integers?
# If they are then, treat them as molecule counters,
# ot probabilities
num_by_type = []
for i in range(0, len(weights)):
# are the weights all positive integers?
n = int(weights[i])
if n == weights[i]:
num_by_type.append(n)
if len(num_by_type) < len(weights):
num_by_type = []
tot_weight = sum(weights)
if (tot_weight <= 0.0):
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
' The numbers in the \"random(\" argument list can not all be zero.\n')
for i in range(0,len(weights)):
weights[i] /= tot_weight
if bracket2 == ',':
try:
token = lex.get_token()
seed = int(token)
random.seed(seed)
except ValueError:
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
' \"'+token+'\"\n'
'Expected an integer (a seed) following the list of weights.')
bracket2 = lex.get_token()
if (bracket2 != ')'):
raise InputError('Error('+g_module_name+'.StaticObj.Parse()):\n'
' Error near '+lex.error_leader()+'\n'
' \"'+token+'\"\n'
'Expected a \")\".')
else:
random.seed()
return (class_names, weights, num_by_type)
def BuildCommandList(self, command_list):
"""
Search the commands in the tree and make a linear list of commands
in the order they should be carried out.
"""
if self.IsDeleted():
return
# Add a special note to the list of commands to indicate which object
# the commands refer to. (This might be useful one day.)
# Later we can loop through this command list and still be able to tell
# whether or not we are within the scope of a particular class or instance
# (by seeing if we are between a "ScopeBegin" and "ScopeEnd" pair).
command_list.append(ScopeBegin(self, self.srcloc_begin))
# We want to append commands to the command_list in the same order
# that these commands appear in the user's input files.
# Unfortunately the commands may be interspersed with the creation of
# new StaticObjs which have their own commands which we have to explore
# recursively.
# Fortunately each child (StaticObj) has a srcloc_begin member, so we
# can infer the correct order of all the commands belonging to the
# children and correctly insert them into the correct place in between
# the commands of the parent.
srcloc2command_or_child = {}
for command in self.commands:
srcloc2command_or_child[command.srcloc] = command
for child in self.children.values():
srcloc = child.srcloc_begin
# special case: Some children do not have a srcloc because
# they were generated automatically. These children should
# not have any commands either so we can ignore them.
if srcloc != None:
srcloc2command_or_child[srcloc] = child
else:
assert(len(child.commands) == 0)
for srcloc in sorted(srcloc2command_or_child.keys()):
entry = srcloc2command_or_child[srcloc]
if isinstance(entry, StaticObj):
child = entry
child_commands = []
child.BuildCommandList(child_commands)
command_list += child_commands
else:
command_list.append(entry)
command_list.append(ScopeEnd(self, self.srcloc_end))
def __str__(self):
out_str = self.name
if len(self.children) > 0:
out_str += '('
i = 0
for child in self.children.values():
if i+1 < len(self.children):
out_str += str(child)+', '
else:
out_str += str(child)+')'
i += 1
return out_str
def RandomSelect(entries, weights):
""" Return an entry from a list at random using
a (normalized) list of probabilities. """
assert(len(entries) == len(weights))
x = random.random()
i = 0
tot_probability = 0.0
while i < len(weights)-1:
tot_probability += weights[i]
if x <= tot_probability:
break
i += 1
return entries[i]
class InstanceObjBasic(object):
""" A simplified version of InstanceObj.
See the documentation/comments for InstanceObj for more details.
(Leaf nodes (variables) are typically stored as InstanceObjBasic objects
More general, non-leaf nodes are stored using InstanceObj objects.)
"""
__slots__=["name","parent"]
def __init__(self,
name = '',
parent = None):
self.parent = parent # the environment/object which created this object
# Example:
# Suppose this "molecule" is an amino acid monomer
# belonging to a protein. The "parent" refers to
# the InstanceObj for the protein. ".parent" is
# useful for traversing the global instance tree.
# (use InstanceObj.statobj.parent for
# traversing the global static tree)
self.name = name # A string uniquely identifying this object in
# in it's "parent" environment.
# (It is always the same for every instance
# of the parent object. It would save memory to
# get rid of this member. Andrew 2012/9/13)
#self.deleted = False
##vb##self.var_bindings=None # List of variables assigned to this object
##vb## # or None (None takes up less space than an
##vb## # empty list.)
##vb##def AddVarBinding(self, var_binding):
##vb## if self.var_bindings is None:
##vb## self.var_bindings = [var_binding]
##vb## else:
##vb## self.var_bindings.append(var_binding)
#def DeleteSelf(self):
# self.deleted = True
def DeleteSelf(self):
#self.Dealloc()
self.parent = self # This condition (normally never true)
# flags the node as "deleted". (Nodes are never
# actually deleted, just flagged.)
# I used to have a separate boolean member variable
# which was set True when deleted, but I started
# eliminated unnecessary data members to save space.
#def IsDeleted(self):
# return self.deleted
def IsDeleted(self):
# Return true if self.deleted == True or self.parent == self
# for this node (or for any ancestor node).
node = self
while node.parent != None:
if hasattr(node, 'deleted'):
if node.deleted:
return True
elif node.parent == node:
return True
node = node.parent
return False
#def Dealloc(self):
# pass
##vb##if self.var_bindings is None:
##vb## return
##vb##N = len(self.var_bindings)-1
##vb##for i in range(0,len(self.var_bindings)):
##vb## vb = self.var_bindings[N-i]
##vb## cat = vb.category
##vb## assert(self in cat.bindings)
##vb## del cat.bindings[self]
##vb## del self.var_bindings[N-i]
##vb##self.var_bindings = None
class InstanceObj(InstanceObjBasic):
""" InstanceObjs are used to store nodes in the global
"instance tree", the tree of all classes (molecules) which have
been instantiated. Recall that whenever a class is instantiated,
it's members will be instantiated as well. Since these
members can also be classes, this relationship is hierarchical,
and can be represented as a tree.
"InstanceObjs" are the data type used to store the nodes in that tree."""
__slots__=["statobj",
"children",
"categories",
"commands",
"commands_push",
"commands_pop",
"srcloc_begin",
"srcloc_end",
"deleted"]
#"LookupMultiDescrStr",
##"Dealloc",
##"DeleteSelf",
##"IsDeleted",
##"UndeleteSelf",
##"DeleteProgeny",
#"BuildInstanceTree",
#"ProcessCommand",
#"ProcessContextNodes",
#"BuildCommandList"]
def __init__(self,
name = '',
parent = None):
InstanceObjBasic.__init__(self, name, parent)
self.statobj = None # The statobj node refered to by this instance
self.children = {} # A list of statobjs corresponding to
# constituent parts (members) of the
# current class instance.
# The typical example is to consider the
# multiple amino acids (child-molecules)
# which must be created in order to create a
# new protein (instance) to which they belong
# (which would be "self" in this example)
self.categories = {} # This member stores the same data as the
# Instance variables (ie. variables
# with a '$' prefix) are stored in a
# category belonging to node.categories
# where "node" is of type InstanceObj.
# (There is a long explanation of
# "categories" in the comments
# of class StaticObj.)
self.commands = [] # An ordered list of commands to carry out
# during instantiation
self.commands_push = [] # Stackable commands to carry out (first, before children)
self.commands_pop = [] # Stackable commands to carry out (last, after children)
self.srcloc_begin = None # Keep track of location in user files
self.srcloc_end = None # (useful for error message reporting)
self.deleted = False
def LookupMultiDescrStr(self,
multi_descr_str,
srcloc,
null_list_warning=False,
null_list_error=False):
"""
Post-Instance (PI) modifiers/commands are commands which modify
an instance of a class after it has already been instantiated.
Simple Example:
class A {
...
}
class B {
a = new A.command_1()
a.command_2()
}
In the example above "command_2()" is a ModCommand, and
"a" is the multi_descr_str (string describing the correspond InstanceObj).
The "command_2()" command will be retroactively pushed onto the
list of commands to execute once "a" is instantiated.
(This is somewhat counter-intuitive.)
When array brackets [] and wildcards are used, a single ModCommand
can modify many different instances, for example suppose:
a = new A [2][5][3]
then "a[1][2][*].command_3()" is equivalent to
a[0][2][0].command_3()
a[0][2][1].command_3()
a[0][2][2].command_3()
In this example "a[1][2][*]" is the multi_descr_str
"a[*][3][*].command_4()" is equivalent to
a[0][3][0].command_4()
a[0][3][1].command_4()
a[1][3][0].command_4()
a[1][3][1].command_4()
In this function, we interpret strings like "a" and "a[*][3][*]"
in the examples above, and figure out which InstanceObjs they refer to,
and push the corresponding command into that InstanceObjs instance
command stack retroactively.
In addition to [*], you can use [a-b] and [a:b] syntax. For example:
"a[0][1-2][0-1].command_3()" and
"a[0][1:3][0:2].command_3()" are both equivalent to:
a[0][1][0].command_3()
a[0][1][1].command_3()
a[0][2][0].command_3()
a[0][2][1].command_3()
"""
pattern_str = multi_descr_str
# Suppose pattern_str = 'a[1][*][3]/b[**][2]'
# We want to split this string into a list of string fragments
# which omits the '*' characters: [ 'a[', '][3]/b', '][2]' ]
# However, we only want to do this when * is enclosed in [].
pattern_fragments = []
ranges_ab = []
i_close_prev = 0
i_close = 0
i_open = 0
while True:
i_open = pattern_str.find('[', i_open+1)
if i_open == -1:
pattern_fragments.append(pattern_str[i_close_prev:])
break
else:
i_close = pattern_str.find(']', i_open+1)
if i_close == -1:
pattern_fragments.append(pattern_str[i_close_prev:])
break
# If there is a '*' or a ':' character between
# the [] brackets, then split the string at '['
# (at i_open) and resume reading again at ']'
# (at i_close) (and create a new entry in the
# pattern_fragments[] and ranges_ab[] lists)
wildcard_here = True
range_ab = [0,-1]
for j in range(i_open+1, i_close):
if ((pattern_str[j] == ':') or
((pattern_str[j] == '-') and (j > i_open+1)) or
(pattern_str[j] == '*')):
i_wildcard = len(pattern_fragments)
range_a_str = pattern_str[i_open+1 : j]
range_b_str = pattern_str[j+1 : i_close]
if (range_a_str != ''):
if str.isdigit(range_a_str):
range_ab[0] = int(range_a_str)
else:
raise InputError('Error near '+
ErrorLeader(srcloc.infile,
srcloc.lineno)+'\n'
' Expected colon-separated integers.\n')
if (range_b_str != ''):
if str.isdigit(range_b_str):
range_ab[1] = int(range_b_str)
# special case: When [a-b] type syntax is
# used, it selects from a to b inclusive.
# (IE. b is not a strict upper bound.)
if pattern_str[j] == '-':
range_ab[1] += 1
else:
raise InputError('Error near '+
ErrorLeader(srcloc.infile,
srcloc.lineno)+'\n'
' Expected colon-separated integers.\n')
break
elif j == i_close-1:
wildcard_here = False
if wildcard_here:
pattern_fragments.append(pattern_str[i_close_prev:i_open+1])
ranges_ab.append(range_ab)
i_close_prev = i_close
assert(len(pattern_fragments)-1==len(ranges_ab))
# Now figure out which InstanceObj or InstanceObjs correspond to
# the name or set of names suggested by the multi_descr_str,
# (after wildcard characters have been substituted with integers).
instobj_list = []
if len(pattern_fragments) == 1:
# commenting out:
# instobj_list.append(StrToNode(pattern_str, self, srcloc))
#
# Line above will print an error message if the node is not found.
# However sometimes we don't want this. Use this code instead:
path_tokens = pattern_str.split('/')
i_last_ptkn, instobj = FollowPath(path_tokens,
self,
srcloc)
# If found add to instobj_list
if ((i_last_ptkn == len(path_tokens))
and (not instobj.IsDeleted())):
instobj_list.append(instobj)
else:
# num_counters equals the number of bracket-enclosed wildcards
num_counters= len(pattern_fragments)-1
multi_counters = [ranges_ab[i][0] for i in range(0, num_counters)]
all_matches_found = False
d_carry = 0
while d_carry < num_counters:
# Find the next InstanceObj in the set of InstanceObjs which
# satisfy the wild-card pattern in pattern_fragments.
while d_carry < num_counters:
candidate_descr_str = ''.join([pattern_fragments[i] +
str(multi_counters[i])
for i in range(0,num_counters)] \
+ \
[pattern_fragments[num_counters]])
#sys.stderr.write('DEBUG: /'+self.name+
# '.LookupMultiDescrStr()\n'
# ' looking up \"'+
# candidate_descr_str+'\"\n')
path_tokens = candidate_descr_str.split('/')
i_last_ptkn, instobj = FollowPath(path_tokens,
self,
srcloc)
# If there is an InstanceObj with that name,
# then add it to the list of InstanceObjs to
# which we will apply this modifier function,
# and increment the counters
# If found (and if the counter is within the range)...
if ((i_last_ptkn == len(path_tokens)) and
((ranges_ab[d_carry][1] == -1) or
(multi_counters[d_carry]<ranges_ab[d_carry][1]))):
# (make sure it has not yet been "deleted")
if (not instobj.IsDeleted()):
instobj_list.append(instobj)
d_carry = 0
multi_counters[0] += 1
#sys.stderr.write('DEBUG: InstanceObj found.\n')
break
# If there is no InstanceObj with that name,
# then perhaps it is because we have incremented
# the counter too high. If there are multiple
# counters, increment the next most significant
# counter, and reset this counter to 0.
# Keep looking
# (We only do this if the user neglected to explicitly
# specify an upper bound --> ranges_ab[d_carry[1]==-1)
elif ((ranges_ab[d_carry][1] == -1) or
(multi_counters[d_carry]>=ranges_ab[d_carry][1])):
#sys.stderr.write('DEBUG: InstanceObj not found.\n')
multi_counters[d_carry] = ranges_ab[d_carry][0]
d_carry += 1
if d_carry >= num_counters:
break
multi_counters[d_carry] += 1
else:
# Object was not found but we keep going. Skip
# to the next entry in the multi-dimensional list.
d_carry = 0
multi_counters[0] += 1
break
if (null_list_warning and (len(instobj_list) == 0)):
sys.stderr.write('WARNING('+g_module_name+'.LookupMultiDescrStr()):\n'
' Potential problem near '+
ErrorLeader(srcloc.infile,
srcloc.lineno)+'\n'
' No objects (yet) matching name \"'+pattern_str+'\".\n')
if (null_list_error and
(len(instobj_list) == 0)):
if len(pattern_fragments) == 1:
raise InputError('Error('+g_module_name+'.LookupMultiDescrStr()):\n'
' Syntax error near '+
ErrorLeader(srcloc.infile,
srcloc.lineno)+'\n'
' No objects matching name \"'+pattern_str+'\".')
else:
sys.stderr.write('WARNING('+g_module_name+'.LookupMultiDescrStr()):\n'
' Potential problem near '+
ErrorLeader(srcloc.infile,
srcloc.lineno)+'\n'
' No objects (yet) matching name \"'+pattern_str+'\".\n')
return instobj_list
def __str__(self):
out_str = self.name
if len(self.children) > 0:
out_str += '('
i = 0
for child in self.children.values():
if i+1 < len(self.children):
out_str += str(child)+', '
else:
out_str += str(child)+')'
i += 1
return out_str
def DeleteSelf(self):
self.deleted = True
# COMMENT1: Don't get rid of pointers to yourself. Knowing which
# objects you instantiated and destroyed might be useful
# in case you want to apply multiple delete [*] commands
# COMMENT2: Don't delete all the child nodes, and commands. These are
# needed later (so that text-templates containing references
# to these nodes don't cause moltemplate to crash.)
#def UndeleteSelf(self):
# self.deleted = False
#
#
#def DeleteProgeny(self):
# for child in self.children.values():
# if hasattr(child, 'DeleteProgeny'):
# child.DeleteProgeny()
# else:
# child.DeleteSelf()
# self.DeleteSelf();
def BuildInstanceTree(self,
statobj,
class_parents_in_use):
"""
This takes care of the details of copying relevant data from an StaticObj
into a newly-created InstanceObj. It allocates space for and performs
a deep-copy of any instance variables (and new instance categories), but
it performs a shallow copy of everything else (template text, etc..).
This is done recursively for every child that this class instantiates.
"""
if self.IsDeleted():
return
#sys.stderr.write(' DEBUG: '+self.name+
# '.BuildInstanceTree('+statobj.name+')\n')
#instance_refs = {}
# Keep track of which line in the file (and which file) we were
# in when we began parsing the class which defines this instance,
# as well as when we stopped parsing.
# (Don't do this if you are recusively searching class_parents because
# in that case you would be overwritting .statobj with with the parent.)
if len(class_parents_in_use) == 0:
self.statobj = statobj
self.srcloc_begin = statobj.srcloc_begin
self.srcloc_end = statobj.srcloc_end
# Make copies of the class_parents' StaticObj data.
# First deal with the "self.instance_commands_push"
# These commands should be carried out before any of the commands
# in "self.instance_commands".
for command in statobj.instance_commands_push:
#self.commands.append(command)
self.ProcessCommand(command)
# Then deal with class parents
for class_parent in statobj.class_parents:
# Avoid the "Diamond of Death" multiple inheritance problem
if class_parent not in class_parents_in_use:
#sys.stderr.write(' DEBUG: '+self.name+'.class_parent = '+
# class_parent.name+'\n')
self.BuildInstanceTree(class_parent,
class_parents_in_use)
class_parents_in_use.add(class_parent)
# Now, deal with the data in THIS object and its children
assert((self.commands != None) and (self.categories != None))
# "instance_categories" contains a list of new "categories" (ie new
# types of variables) to create whenever this class is instantiated.
# (This is used whenever we create a local counter variable: Suppose we
# want to count the residues within a particular protein, when there
# are multiple copies of the same protein in the simulation.)
for cat_name, cat in statobj.instance_categories.items():
assert(len(cat.bindings) == 0)
self.categories[cat_name] = Category(cat_name)
self.categories[cat_name].counter = cat.counter.__copy__()
# Note: Later on we will generate leaf nodes corresponding to
# variables, and put references to them in this category.
# Deal with the "instance_commands",
for command in statobj.instance_commands:
#self.commands.append(command)
self.ProcessCommand(command)
# Finally deal with the "self.instance_commands_pop"
# These commands should be carried out after all of the commands
# in "self.instance_commands".
for command in statobj.instance_commands_pop:
#self.commands.append(command)
self.ProcessCommand(command)
def ProcessCommand(self, command):
if isinstance(command, ModCommand):
sys.stderr.write(' processing command \"'+str(command)+'\"\n')
mod_command = command
instobj_list = self.LookupMultiDescrStr(mod_command.multi_descr_str,
mod_command.command.srcloc)
if isinstance(mod_command.command, DeleteCommand):
# Delete any objects we have created so far
# whose name matches mod_command.multi_descr_str:
for instobj in instobj_list:
instobj.DeleteSelf()
#instobj.DeleteProgeny()
elif len(instobj_list) == 0:
raise InputError('Error('+g_module_name+'.ProcessCommand()):\n'
' Syntax error at or before '+
ErrorLeader(mod_command.command.srcloc.infile,
mod_command.command.srcloc.lineno)+'\n'
' No objects matching name \"'+
mod_command.multi_descr_str+'\"\n'
' (If the object is an array, include brackets. Eg. \"molecules[*][*][*]\")')
else:
for instobj in instobj_list:
assert(not isinstance(mod_command.command, DeleteCommand))
command = mod_command.command.__copy__()
self.ProcessContextNodes(command)
if isinstance(command, PushCommand):
instobj.commands_push.append(command)
elif isinstance(mod_command.command, PopCommand):
instobj.commands_pop.insert(0, command)
else:
# I don't know if any other types commands will ever
# occur but I handle them below, just in case...
assert(not isinstance(command, InstantiateCommand))
instobj.commands.append(command.__copy__())
return # ends "if isinstance(command, ModCommand):"
# Otherwise:
command = command.__copy__()
self.ProcessContextNodes(command)
if isinstance(command, InstantiateCommand):
sys.stderr.write(' processing command \"'+str(command)+'\"\n')
self.commands.append(command) #<- useful later to keep track of the
# order that children were created
# check to make sure no child of that name was previously defined
prev_child = self.children.get(command.name)
if ((prev_child != None) and (not prev_child.IsDeleted())):
raise InputError('Error near '+
ErrorLeader(command.srcloc.infile,
command.srcloc.lineno)+'\n'
' Object \"'+command.name+'\" is already defined.\n')
child = InstanceObj(command.name, self)
command.instobj = child
if command.class_ref.statobj_str == '':
child.DeleteSelf()
# Why? This if-then check handles the case when the user
# wants to create an array of molecules with random vacancies.
# When this happens, some of the instance commands will
# contain instructions to create a copy of a molecule with
# an empty molecule-type-string (class_ref.statobj_str).
# Counter-intuitively, ...
# ...we DO want to create something here so that the user can
# safely loop over the array without generating an error.
# (Such as to delete elements, or move the remaining
# members in the array.) We just want to mark it as
# 'deleted'. (That's what "DeleteSelf()" does.)
else:
# This is the heart of "BuildInstanceTree()"
# (which implements object composition)
new_class_parents_in_use = set([])
child.BuildInstanceTree(command.class_ref.statobj,
new_class_parents_in_use)
self.children[child.name] = child
elif isinstance(command, WriteFileCommand):
#sys.stderr.write(' processing command \"'+str(command)+'\"\n')
self.commands.append(command)
for var_ref in command.tmpl_list:
# Process the VarRef entries in the tmpl_list,
# (and check they have the correct prefix: either '$' or '@')
# Ignore other entries (for example, ignore TextBlocks).
if (isinstance(var_ref, VarRef) and (var_ref.prefix[0] == '$')):
if (var_ref.descr_str[:4] == 'mol:'):
pass
var_ref.nptr.cat_name, var_ref.nptr.cat_node, var_ref.nptr.leaf_node = \
DescrToCatLeafNodes(var_ref.descr_str,
self,
var_ref.srcloc,
True)
categories = var_ref.nptr.cat_node.categories
# "categories" is a dictionary storing "Category" objects
# indexed by category names.
# Note to self: Always use the ".categories" member,
# (never the ".instance_categories" member.
# ".instance_categories" are only used temporarilly before
# we instantiate, ie. before we build the tree of InstanceObjs.)
category = categories[var_ref.nptr.cat_name]
# "category" is a Category object containing a
# dictionary of VarBinding objects, and an internal counter.
var_bindings = category.bindings
# "var_bindings" is a dictionary storing "VarBinding"
# objects, indexed by leaf nodes. Each leaf node
# corresponds to a unique variable in this category.
# --- Now update "var_bindings" ---
# Search for the "VarBinding" object that
# corresponds to this leaf node.
# If not found, then create one.
if var_ref.nptr.leaf_node in var_bindings:
var_binding = var_bindings[var_ref.nptr.leaf_node]
# "var_binding" stores the information for a variable,
# including pointers to all of the places the variable
# is rerefenced, the variable's (full) name, and value.
#
# Keep track of all the places that varible is
# referenced by updating the ".refs" member
var_binding.refs.append(var_ref)
else:
# Not found, so we create a new binding.
var_binding = VarBinding()
# var_binding.refs contains a list of all the places
# this variable is referenced. Start with this var_ref:
var_binding.refs = [var_ref]
# keep track of the cat_node, cat_name, leaf_node:
var_binding.nptr = var_ref.nptr
# "var_binding.full_name" stores a unique string like
# '@/atom:Water/H' or '$/atom:water[1423]/H2',
# which contains the full path for the category and leaf
# nodes, and uniquely identifies this variable globally.
# Thus these strings correspond uniquely (ie. in a
# one-to-one fashion) with the nodes they represent.
var_binding.full_name = var_ref.prefix[0] + \
CanonicalDescrStr(var_ref.nptr.cat_name,
var_ref.nptr.cat_node,
var_ref.nptr.leaf_node,
var_ref.srcloc)
# (These names can always be generated later when needed
# but it doesn't hurt to keep track of it here too.)
# Now add this binding to the other
# bindings in this category:
var_bindings[var_ref.nptr.leaf_node] = var_binding
##vb## var_ref.nptr.leaf_node.AddVarBinding(var_binding)
var_binding.category = category
# It's convenient to add a pointer in the opposite direction
# so that later if we find the var_ref, we can find its
# binding and visa-versa. (Ie. two-way pointers)
var_ref.binding = var_binding
assert(var_ref.nptr.leaf_node in var_bindings)
else:
# Otherwise, we don't know what this command is yet.
# Append it to the list of commands and process it/ignore it later.
self.commands.append(command)
def ProcessContextNodes(self, command):
if hasattr(command, 'context_node'):
# Lookup any nodes pointers to instobjs
if command.context_node != None:
if type(command.context_node) is str:
command.context_node = StrToNode(command.context_node,
self,
command.srcloc)
# (Otherwise, just leave it as None)
def BuildCommandList(self, command_list):
"""
Search the commands in the tree and make a linear list of commands
in the order they should be carried out.
"""
if self.IsDeleted():
return
if (len(self.commands) == 0):
assert(len(self.children) == 0)
# To save memory don't generate any commands
# for trivial (leaf) nodes
return
# Add a special note to the list of commands to indicate which object
# the commands refer to. (This might be useful one day.)
# Later we can loop through this command list and still be able to tell
# whether or not we are within the scope of a particular class or instance
# (by seeing if we are between a "ScopeBegin" and "ScopeEnd" pair).
command_list.append(ScopeBegin(self, self.srcloc_begin))
# Note:
# The previous version looped over all commands in this node, and then
# recursively invoke BuildCommandList() on all the children of this node
# We don't do that anymore because it does not take into account the
# order that various child objects were created/instantiated
# which potentially could occur in-between other commands. Instead,
# now we loop through the command_list and recursively visit child
# nodes only when we encounter them in the command list.
for command in self.commands_push:
assert(isinstance(command, InstantiateCommand) == False)
command_list.append(command)
for command in self.commands:
if isinstance(command, InstantiateCommand):
#child = self.children[command.name]
# the above line does not work because you may have
# deleted that child after you created and then
# replaced it by somebody else. Store the node.
child = command.instobj
child.BuildCommandList(command_list)
else:
command_list.append(command)
for command in self.commands_pop:
assert(isinstance(command, InstantiateCommand) == False)
command_list.append(command)
command_list.append(ScopeEnd(self, self.srcloc_begin))
+
def AssignTemplateVarPtrs(tmpl_list, context_node):
"""
Now scan through all the variables within the templates defined
for this context_node (either static or dynamic depending on var_filter).
Each reference to a variable in the template has a descriptor which
indicates the variable's type, and in which molecule it is defined (ie
where it is located in the molecule instance tree or type definition tree).
(See comments for "class VarNPtr(object):" above for details.)
Eventually we want to assign a value to each variable.
This same variable (node) may appear multiple times in diffent templates.
So we also create a place to store this variable's value, and also assign
(two-way) pointers from the VarRef in the template, to this storage area so
that later on when we write out the contents of the template to a file, we
can substitute this variable with it's value, in all the places it appears.
"""
for var_ref in tmpl_list:
# Process the VarRef entries in the tmpl_list,
# (and check they have the correct prefix: either '$' or '@')
# Ignore other entries (for example, ignore TextBlocks).
if (isinstance(var_ref, VarRef) and
((isinstance(context_node, StaticObj) and
(var_ref.prefix[0] == '@'))
or
(isinstance(context_node, InstanceObjBasic) and
(var_ref.prefix[0] == '$')))):
var_ref.nptr.cat_name, var_ref.nptr.cat_node, var_ref.nptr.leaf_node = \
DescrToCatLeafNodes(var_ref.descr_str,
context_node,
var_ref.srcloc,
True)
categories = var_ref.nptr.cat_node.categories
# "categories" is a dictionary storing "Category" objects
# indexed by category names.
# Note to self: Always use the ".categories" member,
# (never the ".instance_categories" member.
# ".instance_categories" are only used temporarilly before
# we instantiate, ie. before we build the tree of InstanceObjs.)
category = categories[var_ref.nptr.cat_name]
# "category" is a Category object containing a
# dictionary of VarBinding objects, and an internal counter.
var_bindings = category.bindings
# "var_bindings" is a dictionary storing "VarBinding"
# objects, indexed by leaf nodes. Each leaf node
# corresponds to a unique variable in this category.
# --- Now update "var_bindings" ---
# Search for the "VarBinding" object that
# corresponds to this leaf node.
# If not found, then create one.
if var_ref.nptr.leaf_node in var_bindings:
var_binding = var_bindings[var_ref.nptr.leaf_node]
# "var_binding" stores the information for a variable,
# including pointers to all of the places the variable
# is rerefenced, the variable's (full) name, and value.
#
# Keep track of all the places that varible is
# referenced by updating the ".refs" member
var_binding.refs.append(var_ref)
else:
# Not found, so we create a new binding.
var_binding = VarBinding()
# var_binding.refs contains a list of all the places
# this variable is referenced. Start with this var_ref:
var_binding.refs = [var_ref]
# keep track of the cat_node, cat_name, leaf_node:
var_binding.nptr = var_ref.nptr
# "var_binding.full_name" stores a unique string like
# '@/atom:Water/H' or '$/atom:water[1423]/H2',
# which contains the full path for the category and leaf
# nodes, and uniquely identifies this variable globally.
# Thus these strings correspond uniquely (ie. in a
# one-to-one fashion) with the nodes they represent.
var_binding.full_name = var_ref.prefix[0] + \
CanonicalDescrStr(var_ref.nptr.cat_name,
var_ref.nptr.cat_node,
var_ref.nptr.leaf_node,
var_ref.srcloc)
# (These names can always be generated later when needed
# but it doesn't hurt to keep track of it here too.)
# Now add this binding to the other
# bindings in this category:
var_bindings[var_ref.nptr.leaf_node] = var_binding
##vb## var_ref.nptr.leaf_node.AddVarBinding(var_binding)
var_binding.category = category
# It's convenient to add a pointer in the opposite direction
# so that later if we find the var_ref, we can find its
# binding and visa-versa. (Ie. two-way pointers)
var_ref.binding = var_binding
assert(var_ref.nptr.leaf_node in var_bindings)
def AssignStaticVarPtrs(context_node, search_instance_commands = False):
#sys.stdout.write('AssignVarPtrs() invoked on node: \"'+NodeToStr(context_node)+'\"\n')
if search_instance_commands:
assert(isinstance(context_node, StaticObj))
commands = context_node.instance_commands
else:
# Note: Leaf nodes contain no commands, so skip them
if (not hasattr(context_node, 'commands')):
return
# Otherwise process their commands
commands = context_node.commands
for command in commands:
if isinstance(command, WriteFileCommand):
AssignTemplateVarPtrs(command.tmpl_list, context_node)
# Recursively invoke AssignVarPtrs() on all (non-leaf) child nodes:
for child in context_node.children.values():
AssignStaticVarPtrs(child, search_instance_commands)
def AssignVarOrderByCommand(command_list, prefix_filter):
"""
For each category in context_node, and each variable in that category,
set the order of each variable according to the position of the
write(), write_once(), or other command that created it.
Only variables with the correct prefix ('$' or '@') are affected.
"""
count = 0
for command in command_list:
if isinstance(command, WriteFileCommand):
tmpl_list = command.tmpl_list
for var_ref in tmpl_list:
if isinstance(var_ref, VarRef):
if var_ref.prefix in prefix_filter:
count += 1
if ((var_ref.binding.order is None) or
(var_ref.binding.order > count)):
var_ref.binding.order = count
#def AssignVarOrderByFile(command_list, prefix_filter):
# """
# For each category in context_node, and each variable in that category,
# set the order of each variable equal to the position of that variable
# in the user's input file.
#
# """
#
# for command in command_list:
# if isinstance(command, WriteFileCommand):
# tmpl_list = command.tmpl_list
# for var_ref in tmpl_list:
# if isinstance(var_ref, VarRef):
# if var_ref.prefix in prefix_filter:
# if ((var_ref.binding.order is None) or
# (var_ref.binding.order > var_ref.srcloc.order)):
# var_ref.binding.order = var_ref.srcloc.order
def AssignVarOrderByFile(context_node, prefix_filter, search_instance_commands=False):
"""
For each category in context_node, and each variable in that category,
set the order of each variable equal to the position of that variable
in the user's input file.
"""
commands = context_node.commands
if search_instance_commands:
assert(isinstance(context_node, StaticObj))
commands.append(context_node.instance_commands_push + \
context_node.instance_commands + \
context_node.instance_commands_pop)
for command in commands:
if isinstance(command, WriteFileCommand):
tmpl_list = command.tmpl_list
for var_ref in tmpl_list:
if (isinstance(var_ref, VarRef) and
(var_ref.prefix in prefix_filter)):
if ((var_ref.binding.order == -1) or
(var_ref.binding.order > var_ref.srcloc.order)):
var_ref.binding.order = var_ref.srcloc.order
for child in context_node.children.values():
AssignVarOrderByFile(child, prefix_filter, search_instance_commands)
def AutoAssignVals(cat_node,
sort_variables,
reserved_values = None,
ignore_prior_values = False):
"""
- This function automatically assigns all the variables
+ This function automatically assigns values to all the variables
belonging to all the categories in cat_node.categories.
Each category has its own internal counter. For every variable in that
category, query the counter (which usually returns an integer),
and assign the variable to it. Exceptions can be made if the integer
is reserved by some other variable, or if it has been already assigned.
Afterwards, we recursively search the child nodes recursively
(in a depth-first-search order).
sort_variables: Sorting the variables according to their "binding.order"
counters is optional.
"""
if (not hasattr(cat_node, 'categories')):
# (sometimes leaf nodes lack a 'categories' member, to save memory)
return
# Search the tree in a depth-first-search manner.
# For each node, examine the "categories" associated with that node
# (ie the list of variables whose counters lie within that node's scope).
for cat_name, cat in cat_node.categories.items():
# Loop through all the variables in this category.
if sort_variables:
# Sort the list of variables according to var_binding.order
# First, print a progress indicator (this could be slow)
prefix = '$'
# Is this parent_node an StaticObj? (..or inherit from StaticObj?)
if isinstance(cat_node, StaticObj):
prefix = '@'
sys.stderr.write(' sorting variables in category: '+prefix+
CanonicalCatName(cat_name, cat_node)+':\n')
var_bind_iter = iter(sorted(cat.bindings.items(),
key=operator.itemgetter(1)))
else:
# Just iterate through them in the order that they were added
# to the category list. (This happens to be the same order as
# we found it earlier when searching the tree.)
var_bind_iter = iter(cat.bindings.items())
for leaf_node,var_binding in var_bind_iter:
if ((var_binding.value is None) or ignore_prior_values):
if var_binding.nptr.leaf_node.name[:9] == '__query__':
# -- THE "COUNT" HACK --
# '__query__...' variables are not really variables.
# They are a mechanism to allow the user to query the
# category counter without incrementing it.
var_binding.value = str(cat.counter.query())
elif HasWildCard(var_binding.full_name):
# -- The wildcard hack ---
# Variables containing * or ? characters in their names
# are not allowed. These are not variables, but patterns
# to match with other variables. Represent them by the
# (full-path-expanded) string containing the * or ?.
var_binding.value = var_binding.full_name
else:
- if (not var_binding.nptr.leaf_node.IsDeleted()):
+ if ((not var_binding.nptr.leaf_node.IsDeleted()) and
+ (len(var_binding.refs) > 0)):
# For each (regular) variable, query this category's counter
# (convert it to a string), and see if it is already in use
# (in this category). If not, then set this variable's value
# to the counter's value. Either way, increment the counter.
while True:
cat.counter.incr()
value = str(cat.counter.query())
if ((reserved_values is None) or
((cat, value) not in reserved_values)):
break
var_binding.value = value
# Recursively invoke AssignVarValues() on all child nodes
for child in cat_node.children.values():
AutoAssignVals(child,
sort_variables,
reserved_values,
ignore_prior_values)
# Did the user ask us to reformat the output string?
# This information is encoded in the variable's suffix.
def ExtractFormattingCommands(suffix):
if (len(suffix) <= 1):
return None, None
if suffix[-1] == '}': # Get rid of any trailing '}' characters
suffix = suffix[:-1]
if suffix[-1] != ')': # Format functions are always followed by parens
return None, None
else:
idot = suffix.find('.') # Format functions usually preceeded by '.'
ioparen = suffix.find('(')
icparen = suffix.find(')')
format_fname = suffix[idot+1:ioparen]
args = suffix[ioparen+1:icparen]
args = args.split(',')
for i in range(0, len(args)):
args[i] = RemoveOuterQuotes(args[i].strip(), '\"\'')
return format_fname, args
def Render(tmpl_list, substitute_vars=True):
"""
This function converts a TextBlock,VarRef list into a string.
It is invoked by WriteTemplatesValue() in order to print
out the templates stored at each node of the tree.
"""
out_str_list = []
i = 0
while i < len(tmpl_list):
entry = tmpl_list[i]
if isinstance(entry, VarRef):
var_ref = entry
var_bindings = var_ref.nptr.cat_node.categories[var_ref.nptr.cat_name].bindings
#if var_ref.nptr.leaf_node not in var_bindings:
#assert(var_ref.nptr.leaf_node in var_bindings)
if var_ref.nptr.leaf_node.IsDeleted():
raise InputError('Error near '+
ErrorLeader(var_ref.srcloc.infile,
var_ref.srcloc.lineno)+'\n'
' The variable you referred to does not exist:\n\n'
' '+var_ref.prefix+var_ref.descr_str+var_ref.suffix+'\n\n'
' (You probably deleted it or something it belonged to earlier.)\n')
else:
if substitute_vars:
value = var_bindings[var_ref.nptr.leaf_node].value
format_fname, args = ExtractFormattingCommands(var_ref.suffix)
if format_fname == 'ljust':
if len(args) == 1:
value = value.ljust(int(args[0]))
else:
value = value.ljust(int(args[0]), args[1])
elif format_fname == 'rjust':
if len(args) == 1:
value = value.rjust(int(args[0]))
else:
value = value.rjust(int(args[0]), args[1])
out_str_list.append(value)
else:
out_str_list.append(var_ref.prefix +
SafelyEncodeString(var_bindings[var_ref.nptr.leaf_node].full_name[1:]) +
var_ref.suffix)
else:
assert(isinstance(entry, TextBlock))
out_str_list.append(entry.text)
i += 1
return ''.join(out_str_list)
+def IgnoreThis(a):
+ pass
+
+
+
+
+def FindReplacementVarPairs(context_node,
+ replace_var_pairs):
+ #search_instance_commands = False):
+
+ #####################
+ #if search_instance_commands:
+ # assert(isinstance(context_node, StaticObj))
+ # commands = context_node.instance_commands
+ #else:
+ # # Note: Leaf nodes contain no commands, so skip them
+ # if (not hasattr(context_node, 'commands')):
+ # return
+ # # Otherwise process their commands
+ # commands = context_node.commands
+ #####################
+
+ commands = context_node.commands
+
+ for command in commands:
+
+ if (isinstance(command, WriteFileCommand) and
+ command.filename == 'ttree_replacements.txt'):
+ tmpl_list = command.tmpl_list
+ var_alias = None
+ for entry in tmpl_list:
+ # Each successive pair of variables indicates a
+ # variable you wish to replace.
+ # (Any ordinary text in between variable names is ignored.)
+ if isinstance(entry, VarRef):
+ if var_alias == None:
+ var_alias = (entry.nptr.cat_name,
+ entry.nptr.cat_node,
+ entry.nptr.leaf_node)
+ else:
+ var_replace = (entry.nptr.cat_name,
+ entry.nptr.cat_node,
+ entry.nptr.leaf_node)
+
+ replace_var_pairs[var_alias] = var_replace
+ var_alias = None
+
+ # Recursively invoke AssignVarPtrs() on all (non-leaf) child nodes:
+ for child in context_node.children.values():
+ FindReplacementVarPairs(child,
+ replace_var_pairs)
+ #search_instance_commands)
+
+
+
+
+
+def ReplaceVars(context_node,
+ replace_var_pairs,
+ search_instance_commands = False):
+
+ if len(replace_var_pairs) == 0:
+ return
+
+ #sys.stdout.write('AssignVarPtrs() invoked on node: \"'+NodeToStr(context_node)+'\"\n')
+
+ if search_instance_commands:
+ assert(isinstance(context_node, StaticObj))
+ commands = context_node.instance_commands
+ else:
+ # Note: Leaf nodes contain no commands, so skip them
+ if (not hasattr(context_node, 'commands')):
+ return
+ # Otherwise process their commands
+ commands = context_node.commands
+
+
+ if len(replace_var_pairs) > 0:
+ for command in commands:
+ if isinstance(command, WriteFileCommand):
+ ReplaceVarsInTmpl(command.tmpl_list,
+ replace_var_pairs)
+
+ # Recursively invoke ReplaceVars() on all (non-leaf) child nodes:
+ for child in context_node.children.values():
+ ReplaceVars(child,
+ replace_var_pairs,
+ search_instance_commands)
+
+
+
+def ReplaceVarsInTmpl(tmpl_list, replace_var_pairs):
+ """ replace any references to specific variables with other variables """
+
+ if len(replace_var_pairs) == 0:
+ return
+
+ i = 0
+ while i < len(tmpl_list):
+ entry = tmpl_list[i]
+ if isinstance(entry, VarRef):
+ var_ref = entry
+ #full_name = var_bindings[var_ref.nptr.leaf_node].full_name
+ if (var_ref.nptr.cat_name,
+ var_ref.nptr.cat_node,
+ var_ref.nptr.leaf_node) in replace_var_pairs:
+ # optional: (since we will eventually delete the variable)
+ # delete the reference to this variable from "bindings"
+
+ nptr_old = var_ref.nptr
+
+ # swap the old variable with the new one
+ (nptr_new_cat_name, nptr_new_cat_node, nptr_new_leaf_node) = \
+ replace_var_pairs[(nptr_old.cat_name,
+ nptr_old.cat_node,
+ nptr_old.leaf_node)]
+
+ var_bindings = var_ref.nptr.cat_node.categories[nptr_old.cat_name].bindings
+
+ assert(nptr_new_leaf_node in var_bindings)
+
+ # Copy the things we need from the old variable.
+ # References to the old variable should be added to the new one
+ # (since they are the same variable)
+ #for ref in var_bindings[nptr_old.leaf_node].refs:
+ # ref.nptr.cat_name = nptr_new_cat_name
+ # ref.nptr.cat_node = nptr_new_cat_node
+ # ref.nptr.leaf_node = nptr_new_leaf_node
+ if nptr_old.leaf_node in var_bindings:
+ var_bindings[nptr_new_leaf_node].refs += var_bindings[nptr_old.leaf_node].refs
+ del var_bindings[nptr_old.leaf_node]
+
+ var_ref.nptr.cat_name = nptr_new_cat_name
+ var_ref.nptr.cat_node = nptr_new_cat_node
+ var_ref.nptr.leaf_node = nptr_new_leaf_node # <-- this will...
+ # ... update all places where that nptr is used, including
+ # all of the varrefs from the old variable. In other words,
+ # there is no need to manually update the leaf_nodes in
+ # the var_bindings[nptr_new_leaf_node].refs
+ # (It's better to do it this way instead.)
+
+ #var_ref.prefix = (...no need to modify)
+ #var_ref.suffix = (...no need to modify)
+
+ var_ref.descr_str = \
+ CanonicalDescrStr(var_ref.nptr.cat_name,
+ var_ref.nptr.cat_node,
+ var_ref.nptr.leaf_node,
+ var_ref.srcloc)
+
+ var_bindings[nptr_new_leaf_node].full_name = var_ref.prefix[0] + var_ref.descr_str
+
+ i += 1
+
def MergeWriteCommands(command_list):
""" Write commands are typically to the same file.
We can improve performance by appending all of
commands that write to the same file together before
- carrying out the write commands.
+ carrying out the write operation.
"""
file_templates = defaultdict(list)
for command in command_list:
if isinstance(command, WriteFileCommand):
if command.filename != None:
file_templates[command.filename] += \
command.tmpl_list
return file_templates
def WriteTemplatesValue(file_templates):
""" Carry out the write() and write_once() commands (which
write out the contents of the templates contain inside them).
"""
for filename, tmpl_list in file_templates.items():
if filename == '':
out_file = sys.stdout
else:
out_file = open(filename, 'a')
out_file.write(Render(tmpl_list, substitute_vars=True))
if filename != '':
out_file.close()
# Alternate (old method):
#for command in command_list:
# if isinstance(command, WriteFileCommand):
# if command.filename != None:
# if command.filename == '':
# out_file = sys.stdout
# else:
# out_file = open(command.filename, 'a')
#
# out_file.write(Render(command.tmpl_list))
#
# if command.filename != '':
# out_file.close()
def WriteTemplatesVarName(file_templates):
""" Carry out the write() and write_once() commands (which
write out the contents of the templates contain inside them).
However variables within the templates are represented by their
full name instead of their assigned value.
"""
for filename, tmpl_list in file_templates.items():
if filename != '':
out_file = open(filename + '.template', 'a')
out_file.write(Render(tmpl_list, substitute_vars=False))
out_file.close()
def EraseTemplateFiles(command_list):
filenames = set([])
for command in command_list:
if isinstance(command, WriteFileCommand):
if (command.filename != None) and (command.filename != ''):
if command.filename not in filenames:
filenames.add(command.filename)
# Openning the files (in mode 'w') and closing them again
# erases their contents.
out_file = open(command.filename, 'w')
out_file.close()
out_file = open(command.filename + '.template', 'w')
out_file.close()
#def ClearTemplates(file_templates):
# for filename in file_templates:
# if filename != '':
# out_file = open(filename, 'w')
# out_file.close()
# out_file = open(filename + '.template', 'w')
# out_file.close()
def WriteVarBindingsFile(node):
""" Write out a single file which contains a list of all
of the variables defined (regardless of which class they
were defined in). Next to each variable name is the corresponding
information stored in that variable (a number) that variable.
"""
if (not hasattr(node, 'categories')):
# (sometimes leaf nodes lack a 'categories' member, to save memory)
return
out = open('ttree_assignments.txt', 'a')
for cat_name in node.categories:
var_bindings = node.categories[cat_name].bindings
for nd, var_binding in var_bindings.items():
if nd.IsDeleted():
continue # In that case, skip this variable
+ if len(var_binding.refs) == 0: #check2016-6-07
+ continue
+
#if type(node) is type(nd):
if ((isinstance(node, InstanceObjBasic) and isinstance(nd, InstanceObjBasic))
or
(isinstance(node, StaticObj) and isinstance(nd, StaticObj))):
# Now omit variables whos names contain "*" or "?"
# (these are actually not variables, but wildcard patterns)
if not HasWildCard(var_binding.full_name):
if len(var_binding.refs) > 0:
usage_example = ' #'+\
ErrorLeader(var_binding.refs[0].srcloc.infile, \
var_binding.refs[0].srcloc.lineno)
else:
usage_example = ''
out.write(SafelyEncodeString(var_binding.full_name) +' '+
SafelyEncodeString(var_binding.value)
+usage_example+'\n')
out.close()
for child in node.children.values():
WriteVarBindingsFile(child)
+
+
+
def CustomizeBindings(bindings,
- g_objectdefs,
- g_objects):
+ objectdefs,
+ objects):
var_assignments = set()
for name,vlpair in bindings.items():
prefix = name[0]
var_descr_str = name[1:]
value = vlpair.val
dbg_loc = vlpair.loc
if prefix == '@':
var_binding = LookupVar(var_descr_str,
- g_objectdefs,
+ objectdefs,
dbg_loc)
+
elif prefix == '$':
var_binding = LookupVar(var_descr_str,
- g_objects,
+ objects,
dbg_loc)
else:
# If the user neglected a prefix, this should have generated
# an error earlier on.
assert(False)
# Change the assignment:
var_binding.value = value
var_assignments.add((var_binding.category, value))
#sys.stderr.write(' CustomizeBindings: descr=' + var_descr_str +
# ', value=' + value + '\n')
return var_assignments
+def ReplaceVarsInCustomBindings(bindings,
+ objectdefs,
+ objects,
+ replace_var_pairs):
+
+ if len(replace_var_pairs) == 0:
+ return
+
+ list_of_pairs = bindings.items()
+
+ for name,vlpair in list_of_pairs:
+
+ prefix = name[0]
+ var_descr_str = name[1:]
+
+ value = vlpair.val
+ dbg_loc = vlpair.loc
+
+ if prefix == '@':
+ # At this point, we have probably already binding associated
+ # with any replaced variables. Instead lookup the nodes directly:
+
+ cat_name, cat_node, leaf_node = DescrToCatLeafNodes(var_descr_str,
+ objectdefs,
+ dbg_loc)
+ # If this triplet corresponds to a variable we want to replace
+ # then lookup the corrected triplet
+ if (cat_name, cat_node, leaf_node) in replace_var_pairs:
+ (new_cat_name,
+ new_cat_node,
+ new_leaf_node) = replace_var_pairs[(cat_name,
+ cat_node,
+ leaf_node)]
+
+ # now reconstruct the string representing that variable
+ new_name = prefix + CanonicalDescrStr(new_cat_name,
+ new_cat_node,
+ new_leaf_node)
+ bindings[new_name] = bindings[name]
+ del bindings[name]
+
##############################################################
##################### BasicUI functions #####################
# These functions are examples of how to use the StaticObj
# and InstanceObj data structures above, and to read a ttree file.
# These are examples only. New programs based on ttree_lib.py
# will probably require their own settings and functions.
##############################################################
def BasicUIReadBindingsFile(bindings_so_far, filename):
try:
f = open(filename, 'r')
except IOError:
sys.stderr.write('Error('+g_filename+'):\n'' : unable to open file\n'
'\n'
' \"'+filename+'\"\n'
' for reading.\n'
'\n'
' (If you were not trying to open a file with this name, then this could\n'
' occur if you forgot to enclose your command-line-argument in quotes,\n'
' For example, use: \'$atom:wat[2]/H1 20\' or "\$atom:wat[2]/H1 to 20"\n'
' to set the variable $atom:wat[2]/H1 to 20.)\n')
sys.exit(1)
BasicUIReadBindingsStream(bindings_so_far, f, filename)
f.close()
def BasicUIReadBindingsText(bindings_so_far, text, source_name=''):
if sys.version > '3':
in_stream = io.StringIO(text)
else:
in_stream = cStringIO.StringIO(text)
return BasicUIReadBindingsStream(bindings_so_far, in_stream, source_name)
class ValLocPair(object):
__slots__=["val","loc"]
def __init__(self,
val = None,
loc = None):
self.val = val
self.loc = loc
def BasicUIReadBindingsStream(bindings_so_far, in_stream, source_name=''):
# EXAMPLE (simple version)
# The simple version of this function commented out below
# does not handle variable whose names or values
# contain strange or escaped characters, quotes or whitespace.
# But I kept it in for illustrative purposes:
#
#for line in f:
# line = line.strip()
# tokens = line.split()
# if len(tokens) == 2:
# var_name = tokens[0]
# var_value = tokens[1]
# var_assignments[var_name] = var_value
#f.close()
lex = TemplateLexer(in_stream, source_name)
tmpllist = lex.ReadTemplate()
i = 0
if isinstance(tmpllist[0], TextBlock):
i += 1
while i+1 < len(tmpllist):
# process one line at a time (2 entries per line)
var_ref = tmpllist[i]
text_block = tmpllist[i+1]
assert(isinstance(var_ref, VarRef))
if (not isinstance(text_block, TextBlock)):
raise InputError('Error('+g_filename+'):\n'
' This is not a valid name-value pair:\n'
' \"'+var_ref.prefix+var_ref.descr_str+' '+text_block.text.rstrip()+'\"\n'
' Each variable asignment should contain a variable name (beginning with\n'
' @ or $) followed by a space, and then a string you want to assign to it.\n'
' (Surrounding quotes are optional and will be removed.)\n')
# Variables in the ttree_assignments.txt file use "full-path" style.
# In other words, the full name of the variable, (including all
# path information) is stored var_ref.descr_str,
# and the first character of the prefix stores either a @ or $
var_name = var_ref.prefix[:1] + var_ref.descr_str
text = SplitQuotedString(text_block.text.strip())
var_value = EscCharStrToChar(RemoveOuterQuotes(text, '\'\"'))
bindings_so_far[var_name] = ValLocPair(var_value, lex.GetSrcLoc())
i += 2
class BasicUISettings(object):
"""
BasicUISettings() contains several run-time user customisations
for ttree. (These effect the order and values assigned to variables
in a ttreee file).
This object, along with the other "UI" functions below are examples only.
(New programs based on ttree_lib.py will probably have their own settings
and functions.)
Members:
user_bindings
user_bindings_x
These are lists containing pairs of variable names,
and the string values they are bound to (which are typically numeric).
Values specified in the "user_bindings_x" list are "exclusive".
This means their values are reserved, so that later on, when other
variables (in the same category) are automatically assigned to values, care
care will be taken to avoid duplicating the values in user_bindings_x.
However variables in the "user_bindings" list are assigned without regard
to the values assigned to other variables, and may or may not be unique.
order_method
The order_method specifies the order in which values will be automatically
assigned to variables. (In the context of building molecular simulation
input files, this helps the user to insure that the order of the atoms
created by the ttree file matches the order they appear in other files
created by other programs.)
"""
def __init__(self,
user_bindings_x=None,
user_bindings=None,
order_method='by_command',
lex=None):
if user_bindings_x:
self.user_bindings_x = user_bindings_x
else:
self.user_bindings_x = OrderedDict()
if user_bindings:
self.user_bindings = user_bindings
else:
self.user_bindings = OrderedDict()
self.order_method = order_method
self.lex = lex
def BasicUIParseArgs(argv, settings):
"""
BasicUIParseArgs()
The following function contains part of the user interface for a
typical ttree-based program. This function processes an argument list
and extracts the common ttree user settings.
This function, along with the other "UI" functions below are examples only.
(New programs based on ttree_lib.py will probably have their own UI.)
"""
#argv = [arg for arg in orig_argv] # (make a deep copy of "orig_argv")
# This error message is used in multiple places:
bind_err_msg = 'should either be followed by a 2-column\n'+\
' file (containing variable-value pairs on each line).\n'+\
' --OR-- a quoted string (such as \"@atom:x 2\")\n'+\
' with the full variable name and its desired value.'
bind_err_msg_var = 'Missing value, or space needed separating variable\n'+\
' and value. (Remember to use quotes to surround the argument\n'+\
' containing the variable name, and it\'s assigned value.)'
i = 1
while i < len(argv):
#sys.stderr.write('argv['+str(i)+'] = \"'+argv[i]+'\"\n')
if argv[i] == '-a':
if ((i+1 >= len(argv)) or (argv[i+1][:1] == '-')):
raise InputError('Error('+g_filename+'):\n'
' Error in -a \"'+argv[i+1]+' argument.\"\n'
' The -a flag '+bind_err_msg)
if (argv[i+1][0] in '@$'):
#tokens = argv[i+1].strip().split(' ')
tokens = SplitQuotedString(argv[i+1].strip())
if len(tokens) < 2:
raise InputError('Error('+g_filename+'):\n'
' Error in -a \"'+argv[i+1]+'\" argument.\n'
' '+bind_err_msg_var)
BasicUIReadBindingsText(settings.user_bindings_x,
argv[i+1],
'__command_line_argument__')
else:
BasicUIReadBindingsFile(settings.user_bindings_x,
argv[i+1])
#i += 2
del(argv[i:i+2])
elif argv[i] == '-b':
if ((i+1 >= len(argv)) or (argv[i+1][:1] == '-')):
raise InputError('Error('+g_filename+'):\n'
' Error in -b \"'+argv[i+1]+' argument.\"\n'
' The -b flag '+bind_err_msg)
if (argv[i+1][0] in '@$'):
#tokens = argv[i+1].strip().split(' ')
tokens = SplitQuotedString(argv[i+1].strip())
if len(tokens) < 2:
raise InputError('Error('+g_filename+'):\n'
' Error in -b \"'+argv[i+1]+'\" argument.\n'
' '+bind_err_msg_var)
BasicUIReadBindingsText(settings.user_bindings,
argv[i+1],
'__command_line_argument__')
else:
BasicUIReadBindingsFile(settings.user_bindings,
argv[i+1])
#i += 2
del(argv[i:i+2])
elif argv[i] == '-order-command':
settings.order_method = 'by_command'
#i += 1
del(argv[i:i+1])
elif argv[i] == '-order-file':
settings.order_method = 'by_file'
#i += 1
del(argv[i:i+1])
elif ((argv[i] == '-order-tree') or (argv[i] == '-order-dfs')):
settings.order_method = 'by_tree'
del(argv[i:i+1])
elif ((argv[i] == '-importpath') or
(argv[i] == '-import-path') or
(argv[i] == '-import_path')):
if ((i+1 >= len(argv)) or (argv[i+1][:1] == '-')):
raise InputError('Error('+g_filename+'):\n'
' Error in \"'+argv[i]+'\" argument.\"\n'
' The \"'+argv[i]+'\" argument should be followed by the name of\n'
' an environment variable storing a path for including/importing files.\n')
TtreeShlex.custom_path = RemoveOuterQuotes(argv[i+1])
del(argv[i:i+2])
elif ((argv[i][0] == '-') and (__name__ == "__main__")):
#elif (__name__ == "__main__"):
raise InputError('Error('+g_filename+'):\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('+g_filename+'):\n'
' This program requires at least one argument\n'
' 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:
sys.stderr.write('Error('+g_filename+'):\n'
' 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 ('+g_filename+'):\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 BasicUI(settings,
static_tree_root,
instance_tree_root,
static_commands,
instance_commands):
"""
BasicUI()
This function loads a ttree file and optional custom bindings for it,
creates a "static" tree (of defined ttree classes),
creates an "instance" tree (of instantiated ttree objects),
automatically assigns values to unbound variables,
substitutes them into text templates (renders the template).
The actual writing of the templates to a file is not handled here.
"""
# Parsing, and compiling is a multi-pass process.
# Step 1: Read in the StaticObj (class) defintions, without checking
# whether or not the instance_children refer to valid StaticObj types.
sys.stderr.write('parsing the class definitions...')
static_tree_root.Parse(settings.lex)
#gc.collect()
#sys.stderr.write('static = ' + str(static_tree_root) + '\n')
# Step 2: Now that the static tree has been constructed, lookup
# any references to classes (StaticObjs), contained within
# the instance_children or class_parents of each node in
# static_tree_root. Replace them with (pointers to)
# the StaticObjs they refer to (and check validity).
# (Note: Variables stored within the templates defined by write()
# and write_once() statements may also refer to StaticObjs in
# the tree, but we leave these references alone. We handle
# these assignments later using "AssignVarPtrs()" below.)
sys.stderr.write(' done\nlooking up classes...')
static_tree_root.LookupStaticRefs()
#gc.collect()
# Step 3: Now scan through all the (static) variables within the templates
# and replace the (static) variable references to pointers
# to nodes in the StaticObj tree:
sys.stderr.write(' done\nlooking up @variables...')
- # Here we assign pointers for variables in "write_once(){text}" templates:
+
+ # Step 3a)
+ # Here we assign pointers for @variables in "write_once(){text}" templates:
AssignStaticVarPtrs(static_tree_root, search_instance_commands=False)
- # Here we assign pointers for variables in "write(){text}" templates:
+
+ # Step 3b) Replace any @variables with their equivalents (if applicable)
+ replace_var_pairs = {}
+ FindReplacementVarPairs(static_tree_root, replace_var_pairs)
+ ReplaceVars(static_tree_root, replace_var_pairs,
+ search_instance_commands=False)
+
+ # Step 3c)
+ # Here we assign pointers for @variables in "write(){text}" templates:
AssignStaticVarPtrs(static_tree_root, search_instance_commands=True)
+ ReplaceVars(static_tree_root, replace_var_pairs,
+ search_instance_commands=True)
+
sys.stderr.write(' done\nconstructing the tree of class definitions...')
sys.stderr.write(' done\n\nclass_def_tree = ' + str(static_tree_root) + '\n\n')
#gc.collect()
# Step 4: Construct the instance tree (the tree of instantiated
# classes) from the static tree of type definitions.
sys.stderr.write('constructing the instance tree...\n')
class_parents_in_use = set([])
instance_tree_root.BuildInstanceTree(static_tree_root, class_parents_in_use)
#sys.stderr.write('done\n garbage collection...')
#gc.collect()
sys.stderr.write(' done\n')
#sys.stderr.write('instance_tree = ' + str(instance_tree_root) + '\n')
# Step 5: The commands must be carried out in a specific order.
# (for example, the "write()" and "new" commands).
# Search through the tree, and append commands to a command list.
# Then re-order the list in the order the commands should have
# been executed in. (We don't carry out the commands yet,
# we just store them and sort them.)
class_parents_in_use = set([])
static_tree_root.BuildCommandList(static_commands)
instance_tree_root.BuildCommandList(instance_commands)
#sys.stderr.write('static_commands = '+str(static_commands)+'\n')
#sys.stderr.write('instance_commands = '+str(instance_commands)+'\n')
- # Step 6: We are about to assign numbers to the variables.
+ # Step 6: Replace any $variables with their equivalents (if applicable)
+ ReplaceVars(instance_tree_root, replace_var_pairs)
+
+
+ # Step 7: We are about to assign numbers to the variables.
# We need to decide the order in which to assign them.
# By default static variables (@) are assigned in the order
# they appear in the file.
# And, by default instance variables ($)
# are assigned in the order they are created during instantiation.
#sys.stderr.write(' done\ndetermining variable count order...')
AssignVarOrderByFile(static_tree_root, '@', search_instance_commands=True)
AssignVarOrderByCommand(instance_commands, '$')
- # Step 7: Assign the variables.
+ # Step 8: Assign the variables.
# (If the user requested any customized variable bindings,
# load those now.)
if len(settings.user_bindings_x) > 0:
+ if len(replace_var_pairs) > 0:
+ ReplaceVarsInCustomBindings(settings.user_bindings_x,
+ static_tree_root,
+ instance_tree_root,
+ replace_var_pairs)
reserved_values = CustomizeBindings(settings.user_bindings_x,
static_tree_root,
instance_tree_root)
else:
reserved_values = None
sys.stderr.write('sorting variables...\n')
AutoAssignVals(static_tree_root,
(settings.order_method != 'by_tree'),
reserved_values)
AutoAssignVals(instance_tree_root,
(settings.order_method != 'by_tree'),
reserved_values)
if len(settings.user_bindings) > 0:
+ if len(replace_var_pairs) > 0:
+ ReplaceVarsInCustomBindings(settings.user_bindings,
+ static_tree_root,
+ instance_tree_root,
+ replace_var_pairs)
CustomizeBindings(settings.user_bindings,
static_tree_root,
instance_tree_root)
sys.stderr.write(' done\n')
if __name__ == "__main__":
"""
This is is a "main module" wrapper for invoking ttree.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).
"""
####### Main Code Below: #######
g_program_name = g_filename
sys.stderr.write(g_program_name+' v'+g_version_str+' '+g_date_str+' ')
sys.stderr.write('\n(python version '+str(sys.version)+')\n')
try:
settings = BasicUISettings()
BasicUIParseArgs(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 write the files
# (Finally carry out the "write()" and "write_once()" commands.)
# Optional: Multiple commands to write to the same file can be merged to
# reduce the number of times the file is openned and closed.
sys.stderr.write('writing templates...\n')
# Erase the files that will be written to:
EraseTemplateFiles(g_static_commands)
EraseTemplateFiles(g_instance_commands)
g_static_commands = MergeWriteCommands(g_static_commands)
g_instance_commands = MergeWriteCommands(g_instance_commands)
# Write the files with the original variable names present
WriteTemplatesVarName(g_static_commands)
WriteTemplatesVarName(g_instance_commands)
# Write the files with the variable names substituted by values
WriteTemplatesValue(g_static_commands)
WriteTemplatesValue(g_instance_commands)
sys.stderr.write(' done\n')
# Step 11: 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)
diff --git a/tools/moltemplate/src/ttree_lex.py b/tools/moltemplate/src/ttree_lex.py
old mode 100755
new mode 100644
index 1e77c074b..a8bb10a73
--- a/tools/moltemplate/src/ttree_lex.py
+++ b/tools/moltemplate/src/ttree_lex.py
@@ -1,2076 +1,2088 @@
# -*- coding: iso-8859-1 -*-
# 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.
"""A lexical analyzer class for simple shell-like syntaxes.
This version has been modified slightly to work better with unicode.
It was forked from the version of shlex that ships with python 3.2.2.
A few minor features and functions have been added. """
# Module and documentation by Eric S. Raymond, 21 Dec 1998
# Input stacking and error message cleanup added by ESR, March 2000
# push_source() and pop_source() made explicit by ESR, January 2001.
# Posix compliance, split(), string arguments, and
# iterator interface by Gustavo Niemeyer, April 2003.
# ("wordterminators" (unicode support) hack by Andrew Jewett September 2011)
import os.path
import sys
from collections import deque
import re, fnmatch
import string
#import gc
try:
from cStringIO import StringIO
except ImportError:
try:
from StringIO import StringIO
except ImportError:
from io import StringIO
__all__ = ["TtreeShlex",
"split",
"LineLex",
"SplitQuotedString",
"EscCharStrToChar",
"SafelyEncodeString",
"RemoveOuterQuotes",
"MaxLenStr",
"HasWildCard",
#"IsRegex",
"InputError",
"ErrorLeader",
"SrcLoc",
"OSrcLoc",
"TextBlock",
"VarRef",
"VarNPtr",
"VarBinding",
"SplitTemplate",
"SplitTemplateMulti",
"TableFromTemplate",
"ExtractCatName",
#"_TableFromTemplate",
#"_DeleteLineFromTemplate",
"DeleteLinesWithBadVars",
"TemplateLexer"]
class TtreeShlex(object):
""" A lexical analyzer class for simple shell-like syntaxes.
TtreeShlex is a backwards-compatible version of python's standard shlex
module. It has the additional member: "self.wordterminators", which
overrides the "self.wordchars" member. This enables better handling of
unicode characters by allowing a much larger variety of characters to
appear in words or tokens parsed by TtreeShlex.
"""
custom_path = None
def __init__(self,
instream=None,
infile=None,
custom_include_path=None,
posix=False):
if isinstance(instream, str):
instream = StringIO(instream)
if instream is not None:
self.instream = instream
self.infile = infile
else:
self.instream = sys.stdin
self.infile = None
self.posix = posix
if posix:
self.eof = None
else:
self.eof = ''
self.commenters = '#'
self.wordchars = ('abcdfeghijklmnopqrstuvwxyz'
'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_')
if self.posix:
self.wordchars += ('ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ'
'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ')
self.wordterminators = set([]) #WORDTERMINATORS
self.prev_space_terminator = '' #WORDTERMINATORS
self.whitespace = ' \t\r\f\n'
self.whitespace_split = False
self.quotes = '\'"'
self.escape = '\\'
self.escapedquotes = '"'
self.state = ' '
self.pushback = deque()
self.lineno = 1
self.debug = 0
self.token = ''
self.filestack = deque()
# self.source_triggers
# are tokens which allow the seamless insertion of other
# files into the file being read.
self.source_triggers=set(['source'])
self.source_triggers_x=set([])
#Note: self.source_triggers_x
# This is a subset of self.source_triggers.
# In this case file inclusion is exclusive.
# In other words, if one of these tokens
# is encountered, the file is only included
# if it has not been included already.
self.source_files_restricted = set([])
self.include_path = []
if TtreeShlex.custom_path:
include_path_list = TtreeShlex.custom_path.split(':')
self.include_path += [d for d in include_path_list if len(d)>0]
if 'TTREE_PATH' in os.environ:
include_path_list = os.environ['TTREE_PATH'].split(':')
self.include_path += [d for d in include_path_list if len(d)>0]
if self.debug:
print('TtreeShlex: reading from %s, line %d' \
% (self.instream, self.lineno))
self.end_encountered = False
@staticmethod #WORDTERMINATORS
def _belongs_to(char, include_chars, exclude_chars): #WORDTERMINATORS
if ((not exclude_chars) or (len(exclude_chars)==0)): #WORDTERMINATORS
return char in include_chars #WORDTERMINATORS
else: #WORDTERMINATORS
return char not in exclude_chars #WORDTERMINATORS
def push_raw_text(self, text):
"""Push a block of text onto the stack popped by the ReadLine() method.
(If multiple lines are present in the text, (which is determined by
self.line_terminators), then the text is split into multiple lines
and each one of them is pushed onto this stack individually.
The "self.lineno" counter is also adjusted, depending on the number
of newline characters in "line".
Do not strip off the newline, or other line terminators
at the end of the text block before using push_raw_text()!
"""
if self.debug >= 1:
print("TtreeShlex: pushing token " + repr(text))
for c in reversed(text): #WORDTERMINATORS
self.pushback.appendleft(c) #WORDTERMINATORS
if c == '\n': #WORDTERMINATORS
self.lineno -= 1 #WORDTERMINATORS
if len(text) > 0: #WORDTERMINATORS
self.end_encountered = False #WORDTERMINATORS
def push_token(self, text):
"Push a token onto the stack popped by the get_token method"
self.push_raw_text(text+self.prev_space_terminator)
def push_source(self, newstream, newfile=None):
"Push an input source onto the lexer's input source stack."
if isinstance(newstream, str):
newstream = StringIO(newstream)
self.filestack.appendleft((self.infile, self.instream, self.lineno))
self.infile = newfile
self.instream = newstream
self.lineno = 1
if self.debug:
if newfile is not None:
print('TtreeShlex: pushing to file %s' % (self.infile,))
else:
print('TtreeShlex: pushing to stream %s' % (self.instream,))
def pop_source(self):
"Pop the input source stack."
self.instream.close()
(self.infile, self.instream, self.lineno) = self.filestack.popleft()
if self.debug:
print('TtreeShlex: popping to %s, line %d' \
% (self.instream, self.lineno))
self.state = ' '
def get_token(self):
"Get a token from the input stream (or from stack if it's nonempty)"
#### #CHANGING: self.pushback is now a stack of characters, not tokens #WORDTERMINATORS
#### if self.pushback: #WORDTERMINATORS
#### tok = self.pushback.popleft() #WORDTERMINATORS
#### if self.debug >= 1: #WORDTERMINATORS
#### print("TtreeShlex: popping token " + repr(tok)) #WORDTERMINATORS
#### return tok #WORDTERMINATORS
#### No pushback. Get a token. #WORDTERMINATORS
raw = self.read_token()
# Handle inclusions
if self.source_triggers is not None:
while raw in self.source_triggers:
fname=self.read_token()
spec = self.sourcehook(fname)
if spec:
(newfile, newstream) = spec
if ((raw not in self.source_triggers_x) or
(newfile not in self.source_files_restricted)):
self.push_source(newstream, newfile)
if raw in self.source_triggers_x:
self.source_files_restricted.add(newfile)
else:
if self.debug >= 1:
sys.stderr.write('\ndebug warning: duplicate attempt to import file:\n \"'+newfile+'\"\n')
raw = self.get_token()
# Maybe we got EOF instead?
while raw == self.eof:
if not self.filestack:
return self.eof
else:
self.pop_source()
raw = self.get_token()
# Neither inclusion nor EOF
if self.debug >= 1:
if raw != self.eof:
print("TtreeShlex: token=" + repr(raw))
else:
print("TtreeShlex: token=EOF")
if raw == self.eof: #WORDTERMINATORS
self.end_encountered = True #WORDTERMINATORS
return raw
def read_char(self):
if self.pushback: #WORDTERMINATORS
nextchar = self.pushback.popleft() #WORDTERMINATORS
assert((type(nextchar) is str) and (len(nextchar)==1)) #WORDTERMINATORS
else: #WORDTERMINATORS
nextchar = self.instream.read(1) #WORDTERMINATORS
return nextchar
def read_token(self):
self.prev_space_terminator = '' #WORDTERMINATORS
quoted = False
escapedstate = ' '
while True:
#### self.pushback is now a stack of characters, not tokens #WORDTERMINATORS
nextchar = self.read_char()
if nextchar == '\n':
self.lineno = self.lineno + 1
if self.debug >= 3:
print("TtreeShlex: in state", repr(self.state), \
"I see character:", repr(nextchar))
if self.state is None:
self.token = '' # past end of file
break
elif self.state == ' ':
if not nextchar:
self.state = None # end of file
break
elif nextchar in self.whitespace:
if self.debug >= 2:
print("TtreeShlex: I see whitespace in whitespace state")
if self.token or (self.posix and quoted):
# Keep track of which whitespace
# character terminated the token.
self.prev_space_terminator = nextchar #WORDTERMINATORS
break # emit current token
else:
continue
elif nextchar in self.commenters:
self.instream.readline()
self.lineno = self.lineno + 1
elif self.posix and nextchar in self.escape:
escapedstate = 'a'
self.state = nextchar
elif TtreeShlex._belongs_to(nextchar, #WORDTERMINATORS
self.wordchars, #WORDTERMINATORS
self.wordterminators):#WORDTERMINATORS
self.token = nextchar
self.state = 'a'
elif nextchar in self.quotes:
if not self.posix:
self.token = nextchar
self.state = nextchar
elif self.whitespace_split:
self.token = nextchar
self.state = 'a'
else:
self.token = nextchar
if self.token or (self.posix and quoted):
break # emit current token
else:
continue
elif self.state in self.quotes:
quoted = True
if not nextchar: # end of file
if self.debug >= 2:
print("TtreeShlex: I see EOF in quotes state")
# XXX what error should be raised here?
raise ValueError("Error at or before "+self.error_leader()+"\n"
" No closing quotation.")
if nextchar == self.state:
if not self.posix:
self.token = self.token + nextchar
self.state = ' '
break
else:
self.state = 'a'
elif self.posix and nextchar in self.escape and \
self.state in self.escapedquotes:
escapedstate = self.state
self.state = nextchar
else:
self.token = self.token + nextchar
elif self.state in self.escape:
if not nextchar: # end of file
if self.debug >= 2:
print("TtreeShlex: I see EOF in escape state")
# XXX what error should be raised here?
raise ValueError("No escaped character")
# In posix shells, only the quote itself or the escape
# character may be escaped within quotes.
if escapedstate in self.quotes and \
nextchar != self.state and nextchar != escapedstate:
self.token = self.token + self.state
self.token = self.token + nextchar
self.state = escapedstate
elif self.state == 'a':
if not nextchar:
self.state = None # end of file
break
elif nextchar in self.whitespace:
if self.debug >= 2:
print("TtreeShlex: I see whitespace in word state")
self.state = ' '
if self.token or (self.posix and quoted):
# Keep track of which whitespace
# character terminated the token.
self.prev_space_terminator = nextchar #WORDTERMINATORS
break # emit current token
else:
continue
elif nextchar in self.commenters:
comment_contents = self.instream.readline()
self.lineno = self.lineno + 1
if self.posix:
self.state = ' '
if self.token or (self.posix and quoted):
# Keep track of which character(s) terminated
# the token (including whitespace and comments).
self.prev_space_terminator = nextchar + comment_contents #WORDTERMINATORS
break # emit current token
else:
continue
elif self.posix and nextchar in self.quotes:
self.state = nextchar
elif self.posix and nextchar in self.escape:
escapedstate = 'a'
self.state = nextchar
elif (TtreeShlex._belongs_to(nextchar, #WORDTERMINATORS
self.wordchars, #WORDTERMINATORS
self.wordterminators)#WORDTERMINATORS
or (nextchar in self.quotes) #WORDTERMINATORS
or (self.whitespace_split)): #WORDTERMINATORS
self.token = self.token + nextchar
else:
self.pushback.appendleft(nextchar)
if self.debug >= 2:
print("TtreeShlex: I see punctuation in word state")
self.state = ' '
if self.token:
break # emit current token
else:
continue
result = self.token
self.token = ''
if self.posix and not quoted and result == '':
result = None
if self.debug > 1:
if result:
print("TtreeShlex: raw token=" + repr(result))
else:
print("TtreeShlex: raw token=EOF")
return result
def sourcehook(self, newfile):
"Hook called on a filename to be sourced."
newfile = RemoveOuterQuotes(newfile)
# This implements cpp-like semantics for relative-path inclusion.
if isinstance(self.infile, str) and not os.path.isabs(newfile):
newfile_full = os.path.join(os.path.dirname(self.infile), newfile)
try:
f = open(newfile_full, "r")
except IOError:
# If not found,
err = True
# ...then check to see if the file is in one of the
# directories in the self.include_path list.
for d in self.include_path:
newfile_full = os.path.join(d, newfile)
try:
f = open(newfile_full, "r")
err = False
break
except IOError:
err=True
if err:
raise InputError('Error at '+self.error_leader()+'\n'
' unable to open file \"'+newfile+'\"\n'
' for reading.\n')
return (newfile, f)
def error_leader(self, infile=None, lineno=None):
"Emit a C-compiler-like, Emacs-friendly error-message leader."
if infile is None:
infile = self.infile
if lineno is None:
lineno = self.lineno
return "\"%s\", line %d: " % (infile, lineno)
def __iter__(self):
return self
def __next__(self):
token = self.get_token()
if token == self.eof:
raise StopIteration
return token
def __bool__(self):
return not self.end_encountered
# For compatibility with python 2.x, I must also define:
def __nonzero__(self):
return self.__bool__()
# The split() function was originally from shlex
# It is included for backwards compatibility.
def split(s, comments=False, posix=True):
lex = TtreeShlex(s, posix=posix)
lex.whitespace_split = True
if not comments:
lex.commenters = ''
return list(lex)
##################### NEW ADDITIONS (may be removed later) #################
#"""
# -- linelex.py --
#linelex.py defines the LineLex class, which inherits from, and further
#augments the capabilities of TtreeShlex by making it easier to parse
#individual lines one at a time. (The original shlex's "source" inclusion
#ability still works when reading entire lines, and lines are still counted.)
#
#"""
#import sys
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)
def ErrorLeader(infile, lineno):
return '\"'+infile+'\", line '+str(lineno)
class SrcLoc(object):
""" SrcLoc is essentially nothing more than a 2-tuple containing the name
of a file (str) and a particular line number inside that file (an integer).
"""
__slots__=["infile","lineno"]
def __init__(self, infile='', lineno=-1):
self.infile = infile
self.lineno = lineno
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 EscCharStrToChar(s_in, escape='\\'):
"""
EscCharStrToChar() replaces any escape sequences
in a string with their 1-character equivalents.
"""
assert(len(escape) > 0)
out_lstr = []
escaped_state = False
for c in s_in:
if escaped_state:
if (c == 'n'):
out_lstr.append('\n')
elif (c == 't'):
out_lstr.append('\t')
elif (c == 'r'):
out_lstr.append('\r')
elif (c == 'f'):
out_lstr.append('\f')
elif (c == '\''):
out_lstr.append('\'')
elif (c == '\"'):
out_lstr.append('\"')
elif c in escape:
out_lstr.append(c)
else:
out_lstr.append(escape+c) # <- keep both characters
escaped_state = False
else:
if c in escape:
escaped_state = True
else:
out_lstr.append(c)
return ''.join(out_lstr)
def SafelyEncodeString(in_str,
quotes='\'\"',
delimiters=' \t\r\f\n',
escape='\\',
comment_char='#'):
"""
SafelyEncodeString(in_str) scans through the input string (in_str),
and returns a new string in which probletic characters
(like newlines, tabs, quotes, etc), are replaced by their two-character
backslashed equivalents (like '\n', '\t', '\'', '\"', etc).
The escape character is the backslash by default, but it too can be
overridden to create custom escape sequences
(but this does not effect the encoding for characters like '\n', '\t').
"""
assert(len(escape) > 0)
out_lstr = []
use_outer_quotes = False
for c in in_str:
if (c == '\n'):
c = '\\n'
elif (c == '\t'):
c = '\\t'
elif (c == '\r'):
c = '\\r'
elif (c == '\f'):
c = '\\f'
elif c in quotes:
c = escape[0]+c
elif c in escape:
c = c+c
elif c in delimiters:
use_outer_quotes = True
# hmm... that's all that comes to mind. Did I leave anything out?
out_lstr.append(c)
if use_outer_quotes:
out_lstr = ['\"'] + out_lstr + ['\"']
return ''.join(out_lstr)
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 MaxLenStr(s1, s2):
if len(s2) > len(s1):
return s2
else:
return s1
#def IsRegex(pat):
# """
# Check to see if string (pat) is bracketed by slashes.
#
# """
# return (len(pat)>=2) and (pat[0]=='/') and (pat[-1] == '/')
def HasWildCard(pat):
"""
Returns true if a string (pat) contains a '*' or '?' character.
"""
return (pat.find('*') != -1) or (pat.find('?') != -1)
#def HasWildCard(pat):
# """
# Returns true if a string (pat) contains a non-backslash-protected
# * or ? character.
#
# """
# N=len(pat)
# i=0
# while i < N:
# i = pat.find('*', i, N)
# if i == -1:
# break
# elif (i==0) or (pat[i-1] != '\\'):
# return True
# i += 1
# i=0
# while i < N:
# i = pat.find('?', i, N)
# if i == -1:
# break
# elif (i==0) or (pat[i-1] != '\\'):
# return True
# i += 1
# return False
def MatchesPattern(s, pattern):
if type(pattern) is str:
#old code:
#if ((len(s) > 1) and (s[0] == '/') and (s[-1] == '/'):
# re_string = p[1:-1] # strip off the slashes '/' and '/'
# if not re.search(re_string, s):
# return False
#new code:
# uses precompiled regular expressions (See "pattern.search" below)
if HasWildCard(pattern):
if not fnmatch.fnmatchcase(s, pattern):
return False
elif s != pattern:
return False
else:
#assert(type(p) is _sre.SRE_Match)
# I assume pattern = re.compile(some_reg_expr)
if not pattern.search(s):
return False
return True
def MatchesAll(multi_string, pattern):
assert(len(multi_string) == len(pattern))
for i in range(0, len(pattern)):
if not MatchesPattern(multi_string[i], pattern[i]):
return False
return True
class LineLex(TtreeShlex):
""" This class extends the TtreeShlex module (a slightly modified
version of the python 3.2.2 version of shlex). LineLex has the
ability to read one line at a time (in addition to one token at a time).
(Many files and scripts must be parsed one line at a time instead of one
token at a time. In these cases, the whitespace position also matters.)
Arguably, this class might not be necessary.
I could get rid of this class completely. That would be nice. To do that
we would need to augment and generalize shlex's get_token() member function
to make it read lines, not just tokens. Of course, you can always
change the wordchars (or wordterminators). Even so, there are two other
difficulties using the current version of shlex.get_token() to read lines:
1) File inclusion happen whenever the beginning of a line/token matches one
of the "source_triggers" (not the whole line as required by get_token()).
2) Lines ending in a special character (by default the backslash character)
continue on to the next line.
This code seems to work on our test files, but I'm sure there are bugs.
Andrew 2012-3-25
"""
def __init__(self,
instream=None,
infile=None,
posix=False):
TtreeShlex.__init__(self, instream, infile, posix)
self.line_terminators = '\n'
self.line_extend_chars = '\\'
self.skip_comments_during_readline = True
def _StripComments(self, line):
if self.skip_comments_during_readline:
for i in range(0, len(line)):
if ((line[i] in self.commenters) and
((i==0) or (line[i-1] not in self.escape))):
return line[:i]
return line
def _ReadLine(self,
recur_level=0):
"""
This function retrieves a block of text, halting at a
terminal character. Escape sequences are respected.
The self.lineno (newline counter) is also maintained.
The main difference between Readline and get_token()
is the way they handle the "self.source_triggers" member.
Both Readline() and get_token() insert text from other files when they
encounter a string in "self.source_triggers" in the text they read.
However ReadLine() ONLY inserts text from other files if the token which
matches with self.source_triggers appears at the beginning of the line.
get_token() inserts text only if lex.source matches the entire token.
comment-to-self:
At some point, once I'm sure this code is working, I should replace
shlex.get_token() with the code from ReadLine() which is more general.
It would be nice to get rid of "class LineLex" entirely. ReadLine()
is the only new feature that LineLex which was lacking in shlex.
To do this I would need to add a couple optional arguments to
"get_token()", allowing it to mimic ReadLine(), such as:
"override_wordterms" argument (which we can pass a '\n'), and
"token_extender" argument (like '\' for extending lines)
"""
first_token=''
line = ''
escaped_state = False
found_space = False
while True:
nextchar = self.read_char()
#sys.stderr.write('nextchar=\"'+nextchar+'\"\n')
while nextchar == '':
if not self.filestack:
return self._StripComments(line), '', first_token, found_space
else:
self.pop_source()
nextchar = self.read_char()
if nextchar == '\n':
self.lineno += 1
if escaped_state:
escaped_state = False
else:
if nextchar in self.escape:
line += nextchar
escaped_state = True
else:
escaped_state = False
if not escaped_state:
if (nextchar in self.whitespace):
found_space = True
while first_token in self.source_triggers:
fname = RemoveOuterQuotes(self.get_token())
if (fname == '') or (fname in self.source_triggers):
raise InputError('Error: near '+self.error_leader()+'\n'
' Nonsensical file inclusion request.\n')
if self.debug >= 0:
sys.stderr.write( (' ' * recur_level) +
'reading file \"'+fname+'\"\n')
spec = self.sourcehook(fname)
if spec:
(fname, subfile) = spec
if ((first_token not in self.source_triggers_x) or
(fname not in self.source_files_restricted)):
self.push_source(subfile, fname)
if first_token in self.source_triggers_x:
self.source_files_restricted.add(fname)
else:
if self.debug >= 0:
sys.stderr.write('\nWarning at '+self.error_leader()+':\n'
' duplicate attempt to import file:\n \"'+fname+'\"\n')
line, nextchar, first_token, found_space = \
self._ReadLine(recur_level+1)
if nextchar in self.line_terminators:
line_nrw = line.rstrip(self.whitespace)
#sys.stderr.write('line_nrw=\"'+line_nrw+'\"\n')
if ((len(line_nrw) > 0) and
(line_nrw[-1] in self.line_extend_chars) and
((len(line_nrw) < 2) or (line_nrw[-2] not in self.escape))):
line = line_nrw[:-1] #delete the line_extend character
# from the end of that line and keep reading...
else:
return self._StripComments(line), nextchar, first_token, found_space
else:
line += nextchar
if not found_space:
first_token += nextchar
def ReadLine(self, recur_level=0):
line, nextchar, first_token, found_space = \
self._ReadLine(recur_level)
if nextchar == self.eof:
self.end_encountered = True
return line + nextchar
@staticmethod
def TextBlock2Lines(text, delimiters, keep_delim=True):
""" This splits a string into a list of sub-strings split by delimiter
characters. This function is different from the standard str.split()
function: The string is split at every character which belongs to the
"delimiters" argument (which can be a string or some other container).
This character is included at the end of every substring. Example:
TextBlock2Lines('\nabc\nde^fg\nhi j\n', '^\n')
returns:
['\n', 'abc\n', 'de^', 'fg\n', 'hi j\n']
"""
ls = []
i = 0
i_prev = 0
while i < len(text):
if text[i] in delimiters:
if keep_delim:
ls.append(text[i_prev:i+1])
else:
ls.append(text[i_prev:i])
i_prev = i+1
i += 1
if (i_prev < len(text)):
ls.append(text[i_prev:i+1])
return ls
def __iter__(self):
return self
def __next__(self):
line = self.ReadLine()
if line == self.eof:
raise StopIteration
return line
class OSrcLoc(object):
""" OSrcLoc is barely more than a 2-tuple containing the name of a file
(a string) and a particular line number inside that file (an integer).
These objects are passed around and stored in the nodes of
every tree, so that if a syntax error or broken link in that node
is discovered, an error message can be provided to the user.
"""
__slots__ = ["infile","lineno","order"]
count = 0
def __init__(self, infile='', lineno=-1):
self.infile = infile
self.lineno = lineno
OSrcLoc.count += 1
- self.order = OSrcLoc.count
+ self.order = OSrcLoc.count # keep track of how many times it was called
def __lt__(self, x):
return self.order < x.order
#def __repr__(self):
# return repr((self.infile, self.lineno, self.order))
class TextBlock(object):
"""TextBlock is just a 3-tuple consisting of a string, and an OSrcLoc
to help locate it in the original file from which it was read."""
__slots__=["text","srcloc"]
def __init__(self, text, srcloc): #srcloc_end):
self.text = text
if srcloc == None:
self.srcloc = OSrcLoc()
else:
self.srcloc = srcloc
#if srcloc_end == None:
# self.srcloc_end = OSrcLoc()
#else:
# self.srcloc_end = srcloc_end
def __repr__(self):
return '\"'+self.text+'\"'
class VarRef(object):
"""VarRef stores variable names, and paths, and other attribute information,
as well as a "OSrcLoc" to keep track of the file it was defined in."""
__slots__=["prefix","descr_str","suffix","srcloc","binding","nptr"]
def __init__(self,
prefix = '', # '$' or '${'
descr_str = '', # <- descriptor string: "cpath/category:lpath"
suffix = '', # '}'
srcloc = None,# location in file where defined
binding = None,# a pointer to a tuple storing the value
nptr = None):# <- see class VarNPtr
self.prefix = prefix #Any text before the descriptor string goes here
self.suffix = suffix #Any text after the descriptor string goes here
self.descr_str = descr_str
if srcloc == None: # <- Location in text file where variable appears
self.srcloc = OSrcLoc()
else:
self.srcloc = srcloc
self.binding = binding
if nptr == None:
self.nptr = VarNPtr()
else:
self.nptr = nptr
def __lt__(self, x):
return self.order < x.order
#def __repr__(self):
# return repr((self.prefix + self.descr_str + self.suffix, srcloc))
class VarNPtr(object):
"""
- Every time a variable appears in a template, it has has a "descritpor".
+ Every time a variable appears in a template, it has has a "descriptor".
For example, consider the variable
"$atom:CA"
This is a string which encodes 3 pieces of information.
1) the category name: This is essentialy indicates the variable's type.
(ie "atom", in the example above)
2) the category node: Some TYPES have limited scope. Users can
specify the root node of the portion of the tree
in which this variable's type makes sense.
If this node is the root node, then that category
is relevant everywhere, and is not molecule or class
specific. All variables have a category node, which
is often not explicitly defined to by the user.
- It must be inferred/determined.)
(Category node = the root "/", in the example above.)
3) the leaf node: This is a node whose ".name" member matches the name
of a variable. This node is created for this purpose
and it's position in the tree is a reflection of
that variable's intended scope.
In a molecule this "name" might be the name
of a type of atom, or an atom ID, or a bond type,
which is found in a particular molecule.
(Leaf node would be named "CA" in the example above.)
The VarNPtr class is simply a 3-tuple which
keeps these 3 pieces of data together.
"""
__slots__=["cat_name","cat_node","leaf_node"]
def __init__(self, cat_name='', cat_node=None, leaf_node=None):
self.cat_name = cat_name
self.cat_node = cat_node
self.leaf_node = leaf_node
#def __repr__(self):
# return repr((self.cat_name, self.cat_node.name, self.leaf_node.name))
class VarBinding(object):
""" VarBinding is essentially a tuple consistng of (full_name, binding, refs):
"self.full_name" is canonical name for this variable. This is a string
which specifies full path leading to the category node (beginning with '/'),
the category name (followed by a ':'),
as well as the leaf node (including the path leading up to it from cat_node)
This triplet identifies the variable uniquely.
"self.value" is the data that the variable refers to (usually a string).
"self.refs" stores a list of VarRefs which mention the same variable
from the various places inside various templates in the tree.
"""
__slots__=["full_name","nptr","value","refs","order","category"]
def __init__(self,
full_name = '',
nptr = None,
value = None,
refs = None,
order = -1,
category = None):
self.full_name = full_name
self.nptr = nptr
self.value = value
self.refs = refs
self.order = order
self.category = category
def __lt__(self, x):
return self.order < x.order
def __repr__(self):
return repr((self.full_name, self.value, self.order))
def ExtractCatName(descr_str):
""" When applied to a VarRef's "descr_str" member,
this function will extract the "catname" of it's corresponding
"nptr" member. This can be useful for error reporting.
(I use it to insure that the user is using the correct counter
variable types at various locations in their input files.)
"""
ib = descr_str.find(':')
if ib == -1:
ib = len(descr_str)
ia = descr_str.rfind('/')
if ia == -1:
ia = 0
return descr_str[ia:ib]
else:
str_before_colon = descr_str[0:ib]
ia = str_before_colon.rfind('/')
if ia == -1:
return str_before_colon
else:
return str_before_colon[ia+1:]
def _DeleteLineFromTemplate(tmpl_list,
i_entry, # index into tmpl_list
newline_delimiter='\n'):
""" Delete a single line from tmpl_list.
tmpl_list is an alternating list of VarRefs and TextBlocks.
To identify the line, the index corresponding to one of the
entries in the tmpl_list is used. (Usually it is a VarRef)
The text after the preceeding newline, and the text up to the next newline
(starting from the beginning of the current entry, if a TextBlock)
is deleted, including any VarRef (variables) located in between.
It returns the index corresponding to the next
entry in the list (after deletion).
"""
i_prev_newline = i_entry
while i_prev_newline >= 0:
entry = tmpl_list[i_prev_newline]
if isinstance(entry, TextBlock):
i_char_newline = entry.text.rfind(newline_delimiter)
if i_char_newline != -1: # then newline found
# Delete the text after this newline
entry.text = entry.text[:i_char_newline+1]
break
i_prev_newline -= 1
first_var = True
#i_next_newline = i_entry
i_next_newline = i_prev_newline+1
while i_next_newline < len(tmpl_list):
entry = tmpl_list[i_next_newline]
if isinstance(entry, TextBlock):
i_char_newline = entry.text.find(newline_delimiter)
if i_char_newline != -1: # then newline found
# Delete the text before this newline (including the newline)
entry.text = entry.text[i_char_newline+1:]
break
# Invoke DeleteSelf() on the first variables on this line. This will
# insure that it is deleted from the ttree_assignments.txt file.
elif isinstance(entry, VarRef):
if first_var:
entry.nptr.leaf_node.DeleteSelf()
first_var = False
i_next_newline += 1
del tmpl_list[i_prev_newline + 1 : i_next_newline]
return i_prev_newline + 1
def DeleteLinesWithBadVars(tmpl_list,
delete_entire_template = False,
newline_delimiter = '\n'):
"""
Loop through the entries in a template,
an alternating list of TextBlocks and VarRefs (tmpl_list).
If a VarRef points to a leaf_node which no longer exists
(ie. no longer in the corresponding category's .bindings list).
Then delete the line it came from from the template (tmpl_list).
"""
out_str_list = []
i = 0
while i < len(tmpl_list):
entry = tmpl_list[i]
if isinstance(entry, VarRef):
var_ref = entry
var_bindings = var_ref.nptr.cat_node.categories[var_ref.nptr.cat_name].bindings
#if var_ref.nptr.leaf_node not in var_bindings:
if var_ref.nptr.leaf_node.IsDeleted():
if delete_entire_template:
del tmpl_list[:]
return 0
else:
i = _DeleteLineFromTemplate(tmpl_list,
i,
newline_delimiter)
else:
i += 1
else:
i += 1
def SplitTemplate(ltmpl, delim, delete_blanks = False):
"""
Split a template "ltmpl" into a list of "tokens" (sub-templates)
using a single delimiter string "delim".
INPUT arguments:
"ltmpl" should be an list of TextBlocks and VarRefs.
"delim" should be a simple string (type str)
"delete_blanks" should be a boolean True/False value.
When true, successive occurrences of the delimiter
should not create blank entries in the output list.
OUTPUT:
A list of tokens.
Each "token" is either a TextBlock, a VarRef,
or a (flat, 1-dimensional) list containing more than one of these objects.
The number of "tokens" returned equals the number of times the delimiter
is encountered in any of the TextBlocks in the "ltmpl" argument, plus one.
(... Unless "delete_blanks" is set to True.
Again, in that case, empty entries in this list are deleted.)
"""
assert(type(delim) is str)
if not hasattr(ltmpl, '__len__'):
ltmpl = [ltmpl]
tokens_lltmpl = []
token_ltmpl = []
i = 0
while i < len(ltmpl):
entry = ltmpl[i]
if isinstance(entry, TextBlock):
#if hasattr(entry, 'text'):
prev_src_loc = entry.srcloc
tokens_str = entry.text.split(delim)
lineno = entry.srcloc.lineno
j = 0
while j < len(tokens_str):
token_str = tokens_str[j]
delim_found = False
if (j < len(tokens_str)-1):
delim_found = True
if token_str == '':
if delete_blanks:
if delim == '\n':
lineno += 1
if len(token_ltmpl) > 0:
if len(token_ltmpl) == 1:
tokens_lltmpl.append(token_ltmpl[0])
else:
tokens_lltmpl.append(token_ltmpl)
del token_ltmpl
token_ltmpl = []
j += 1
continue
new_src_loc = OSrcLoc(prev_src_loc.infile, lineno)
new_src_loc.order = prev_src_loc.order
for c in token_str:
# Reminder to self: c != delim (so c!='\n' if delim='\n')
# (We keep track of '\n' characters in delimiters above.)
if c == '\n':
lineno +=1
new_src_loc.lineno = lineno
text_block = TextBlock(token_str,
new_src_loc)
prev_src_loc = new_src_loc
if len(token_ltmpl) == 0:
if delim_found:
tokens_lltmpl.append(text_block)
del token_ltmpl
token_ltmpl = []
else:
token_ltmpl.append(text_block)
else:
if delim_found:
if len(token_str) > 0:
token_ltmpl.append(text_block)
tokens_lltmpl.append(token_ltmpl)
del token_ltmpl
token_ltmpl = []
else:
assert(not delete_blanks)
if (isinstance(token_ltmpl[-1], VarRef)
and
((j>0)
or
((j == len(tokens_str)-1) and
(i == len(ltmpl)-1))
)):
# In that case, this empty token_str corresponds
# to a delimiter which was located immediately
# after the variable name,
# AND
# -there is more text to follow,
# OR
# -we are at the end of the template.
token_ltmpl.append(text_block)
if len(token_ltmpl) == 1:
tokens_lltmpl.append(token_ltmpl[0])
else:
tokens_lltmpl.append(token_ltmpl)
del token_ltmpl
token_ltmpl = []
else:
token_ltmpl.append(text_block)
if (delim_found and (delim == '\n')):
lineno += 1
j += 1
elif isinstance(entry, VarRef):
#elif hasattr(entry, 'descr_str'):
lineno = entry.srcloc.lineno
if ((len(token_ltmpl) == 1) and
isinstance(token_ltmpl[0], TextBlock) and
(len(token_ltmpl[0].text) == 0)):
# special case: if the previous entry was "", then it means
# the delimeter appeared at the end of the previous text block
# leading up to this variable. It separates the variable from
# the previous text block. It is not a text block of length 0.
token_ltmpl[0] = entry
else:
token_ltmpl.append(entry)
elif entry == None:
token_ltmpl.append(entry)
else:
assert(False)
i += 1
# Append left over remains of the last token
if len(token_ltmpl) == 1:
tokens_lltmpl.append(token_ltmpl[0])
elif len(token_ltmpl) > 1:
tokens_lltmpl.append(token_ltmpl)
del token_ltmpl
return tokens_lltmpl
def SplitTemplateMulti(ltmpl, delims, delete_blanks=False):
"""
Split a template "ltmpl" into a list of templates using a
single one or more delimiter strings "delim_list".
If multiple delimiter strings are provided, splitting
begins using the first delimiter string in the list.
Then each token in the resulting list of templates
is split using the next delimiter string
and so on until we run out of delimiter strings.
"ltmpl" should be an list of TextBlocks and VarRefs.
"delims" should be a simple string (type str) or a list of strings
"delete_blanks" is either True or False
If True, then any blank entries in the resulting list of
tokens (sub-templates) will be deleted.
"""
if hasattr(delims, '__len__'): # then it hopefully is a list of strings
delim_list = delims
else:
delim_list = [delims] # then it hopefully is a string
tokens = [ltmpl]
for delim in delim_list:
assert(type(delim) is str)
tokens_il = []
for t in tokens:
sub_tokens = SplitTemplate(t, delim, delete_blanks)
for st in sub_tokens:
if hasattr(st, '__len__'):
if (len(st) > 0) or (not delete_blanks):
tokens_il.append(st)
else:
tokens_il.append(st)
tokens = tokens_il
del tokens_il
return tokens
def _TableFromTemplate(d, ltmpl, delimiters, delete_blanks):
"""
See the docstring for the TableFromTemplate() function for an explanation.
(This _TableFromTemplate() and SplitTemplate() are the workhorse functions
for TableFromTemplate().)
"""
output = SplitTemplateMulti(ltmpl, delimiters[d], delete_blanks[d])
if d > 0:
i = 0
while i < len(output):
output[i] = _TableFromTemplate(d-1,
output[i],
delimiters,
delete_blanks)
# Delete empty LISTS?
if (delete_blanks[d] and
hasattr(output[i], '__len__') and
(len(output[i]) == 0)):
del output[i]
else:
i += 1
return output
def TableFromTemplate(ltmpl, delimiters, delete_blanks=True):
"""
This function can be used to split a template
(a list containing TextBlocks and VarRefs) into a table
into a multidimensional table, with an arbitrary number of dimensions.
Arguments:
ltmpl
An alternating list of TextBlocks and VarRefs containing
the contents of this text template.
delimiters
The user must supply a list or tuple of delimiters: one delimiter for
each dimension in the table, with low-priority delimiters
(such as spaces ' ') appearing first, and higher-priority delimiters
(sich as newlines '\n') appearing later on in the list.
This function will divide the entire "ltmpl" into an n-dimensional
table. Initially the text is split into a list of text using the
highest-priority delimiter. Then each entry in the resulting list is
split into another list according to the next highest-priority delimiter.
This continues until all of the delimiters are used up and an
n-dimensional list-of-lists is remaining.
delete_blanks
The optional "delete_blanks" argument can be used to indicate whether
or not to delete blank entries in the table (which occur as a result
of placing two delimiters next to each other). It should be either
None (default), or it should be an array of booleans matching the
size of the "delimiters" argument. This allows the caller to customize
the merge settings separately for each dimension (for example: to allow
merging of whitespace within a line, without ignoring blank lines).
---- Details: ----
1) Multi-character delimiters ARE allowed (like '\n\n').
2) If a delimiter in the "delimiters" argument is not a string
but is a tuple (or a list) of strings, then the text is split according
to any of the delimiters in that tuple/list (starting from the last entry).
This way, users can use this feature to split text according to multiple
different kinds of whitespace characters (such as ' ' and '\t'), for
example, buy setting delimiters[0] = (' ','\t'). If, additionally,
delete_blanks[0] == True, then this will cause this function to
divide text in without regard to whitespace on a given line (for example).
Detailed example:
table2D = TableFromTmplList(ltmpl,
delimiters = ((' ','\t'), '\n'),
delete_blanks = (True, False))
This divides text in a similar way that the "awk" program does by default,
ie, by ignoring various kinds of whitespace between text fields, but NOT
ignoring blank lines.
3) Any text contained in variable-names is ignored.
"""
# Make a copy of ltmpl
# (The workhorse function "_TableFromTemplate()" makes in-place changes to
# its "ltmpl" argument. I don't want to modify "ltmpl", so I make a copy
# of it before I invoke "_TableFromTemplate()" on it.)
output = [ltmpl[i] for i in range(0, len(ltmpl))]
d = len(delimiters) - 1
output = _TableFromTemplate(d, output, delimiters, delete_blanks)
return output
class TemplateLexer(TtreeShlex):
""" This class extends the standard python lexing module, shlex, adding a
new member function (ReadTemplate()), which can read in a block of raw text,
(halting at an (non-escaped) terminal character), and split the text into
alternating blocks of text and variables. (As far as this lexer is
concerned, "variables" are simply tokens preceeded by $ or @ characters,
and surrounded by optional curly-brackets {}.)
"""
def __init__(self,
instream=None,
infile=None,
posix=False):
TtreeShlex.__init__(self, instream, infile, posix)
self.var_delim = '$@' #characters which can begin a variable name
self.var_open_paren = '{' #optional parenthesis surround a variable
self.var_close_paren = '}' #optional parenthesis surround a variable
self.newline = '\n'
self.comment_skip_var = '#'
# Which characters belong in words?
#
# We want to allow these characters:
# ./$@&%^!*~`-_:;?<>[]()
# to appear inside the tokens that TtreeShlex.get_token()
# retrieves (TtreeShlex.get_token() is used to read class
# names, and instance names, and variable names)
#
# settings.lex.wordchars+='./$@&%^!*~`-_+:;?<>[]' #Allow these chars
#
# Ommisions:
# Note: I left out quotes, whitespace, comment chars ('#'), and escape
# characters ('\\') because they are also dealt with separately.
# Those characters should not overlap with settings.lex.wordchars.
#
# Enabling unicode support requires that we override this choice
# by specifying "lex.wordterminators" instead of "wordchars".
#
# lex.wordterminators should be the (printable) set inverse of lex.wordchars
# I'm not sure which ascii characters are NOT included in the string above
# (We need to figure that out, and put them in settings.lex.wordterminators)
# To figure that out, uncomment the 8 lines below:
#
#self.wordterminators=''
#for i in range(0,256):
# c = chr(i)
# if c not in self.wordchars:
# self.wordterminators += c
#sys.stderr.write('-------- wordterminators = --------\n')
#sys.stderr.write(self.wordterminators+'\n')
#sys.stderr.write('-----------------------------------\n')
#
# Here is the result:
- self.wordterminators = '(),={|}' + \
+ self.wordterminators = '(){|}' + \
self.whitespace + \
self.quotes + \
self.escape + \
self.commenters
# Note:
# self.whitespace = ' \t\r\f\n'
# self.quotes = '\'"'
# self.escape = '\\'
# self.commenters = '#'
+ # Note: I do not terminate on these characters: +-=*'"`
+ # because they appear in the names of atom types in many force-fields.
+ # Also * characters are needed for variables containing wildcards
+ # in the name (which will be dealt with later).
+
self.source_triggers=set(['include','import'])
self.source_triggers_x=set(['import'])
def GetSrcLoc(self):
return OSrcLoc(self.infile, self.lineno)
def ReadTemplate(self,
simplify_output=False,
terminators='}',
other_esc_chars='{',
keep_terminal_char = True):
"""
ReadTemplate() reads a block of text (between terminators)
and divides it into variables (tokens following a '$' or '@' character)
and raw text. This is similar to pythons string.Template(),
however it reads from streams (files), not strings, and it allows use
of more complicated variable names with multiple variable delimiters
(eg '$' and '@').
This readline()-like member function terminates when reaching a
user-specified terminator character character (second argument),
or when variable (eg: "$var"$ is encountered). The result is
a list of variable-separated text-blocks (stored in the first
argument). For example, the string:
"string with $var1 and $var2 variables.}" contains:
"string with ",
$var1,
" and ",
$var2,
" variables.}"
This simplifies the final process of rendering
(substituting text into) the text blocks later on.
Output:
This function returns a list of (alternating) blocks of
text, and variable names. Each entry in the list is either:
1) a text block:
Raw text is copied from the source, verbatim, along with
some additional data (filename and line numbers), to
help retroactively identify where the text came from
(in case a syntax error in the text is discovered later).
In this case, the list entry is stored as a list
The format (TextBlock) is similar to:
[text_string, ((filenameA,lineBegin), (filenameB,lineEnd))],
where the tuples, (filenameA,lineBegin) and (filenameB,lineEnd)
denote the source file(s) from which the text was read, and
line number at the beginning and ending of the text block.
(This information is useful for generating helpful error
messages. Note that the "TtreeShlex" class allows users to
combine multiple files transparently into one stream using
the "source" (or "sourcehook()") member. For this reason, it
is possible, although unlikely, that the text-block
we are reading could span multiple different files.)
2) a variable (for example "$var" or "${var}"):
In this case, the list entry is stored in the "VarRef" format
which is essentialy shown below:
[[var_prefix, var_nptr, var_suffix], (filename,lineno)]
where var_prefix and var_suffix are strings containing brackets
and other text enclosing the variable name (and may be empty).
As an example, we consider a file named "datafile" which
contains the text containing 2 text blocks and 1 variable:
"some\n text\n before ${var}. Text after\n".
ReadTemplate() will read this and return a list with 3 entries:
[ ['some\n text\n before', (('datafile', 1), ('datafile', 3))],
[['${', 'var', '}'], ('datafile', 3, 3)],
['Text after\n', (('datafile', 3), ('datafile', 4))] ]
Note that while parsing the text, self.lineno counter is
incremented whenever a newline character is encountered.
(Also: Unlike shlex.get_token(), this function does not
delete commented text, or insert text from other files.)
Exceptional Cases:
Terminator characters are ignored if they are part of a variable
reference. (For example, the '}' in "${var}", is used to denote a
bracketed variable, and does not cause ReadTemplate() to stop reading)
OR if they are part of a two-character escape sequence
(for example, '}' in "\}" does not cause terminate parsing).
In that case, the text is considered normal text. (However the
'\' character is also stripped out. It is also stripped out if it
preceeds any characters in "other_esc_chars", which is
the second argument. Otherwise it is left in the text block.)
"""
#print(' ReadTemplate('+terminators+') invoked at '+self.error_leader())
# The main loop of the parser reads only one variable at time.
# The following variables keep track of where we are in the template.
reading_var=False # Are we currently reading in the name of a variable?
prev_char_delim=False #True iff we just read a var_delim character like '$'
escaped_state=False #True iff we just read a (non-escaped) esc character '\'
commented_state=False #True iff we are in a region of text where vars should be ignored
var_paren_depth=0 # This is non-zero iff we are inside a
# bracketed variable's name for example: "${var}"
var_terminators = self.whitespace + self.newline + self.var_delim + '{}'
tmpl_list = [] # List of alternating tuples of text_blocks and
# variable names (see format comment above)
# This list will be returned to the caller.
#sys.stderr.write('report_progress='+str(report_progress))
prev_filename = self.infile
prev_lineno = self.lineno
var_prefix = ''
var_descr_plist = []
var_suffix = ''
text_block_plist = []
done_reading = False
while not done_reading:
terminate_text = False
terminate_var = False
#delete_prior_escape = False
nextchar = self.read_char()
#print(' ReadTemplate() nextchar=\''+nextchar+'\' at '+self.error_leader()+' esc='+str(escaped_state)+', pvar='+str(prev_char_delim)+', paren='+str(var_paren_depth))
# Count newlines:
if nextchar in self.newline:
commented_state = False
self.lineno += 1
elif ((nextchar in self.comment_skip_var) and
(not escaped_state)):
commented_state = True
# Check for end-of-file:
if nextchar == '':
if escaped_state:
raise InputError('Error: in '+self.error_leader()+'\n\n'
'No escaped character.')
if reading_var:
terminate_var = True
else:
terminate_text = True
done_reading = True
# --- Now process the character: ---
# What we do next depends on which "mode" we are in.
# If we are reading a regular text block (reading_var == False),
# then we keep appending characters onto the end of "text_block",
# checking for terminal characters, or variable delimiters.
# If we are reading a variable name (reading_var == True),
# then we append characters to the end of "var_descr_plist[]",
# checking for variable terminator characters, as well as
# parenthesis (some variables are surrounded by parenthesis).
elif reading_var:
if nextchar in terminators:
#sys.stdout.write(' ReadTemplate() readmode found terminator.\n')
if escaped_state:
# In this case, the '\' char was only to prevent terminating
# string prematurely, so delete the '\' character.
#delete_prior_escape = True
if not (nextchar in self.var_close_paren):
del var_descr_plist[-1]
var_descr_plist.append(nextchar)
elif not ((var_paren_depth>0) and (nextchar in self.var_close_paren)):
terminate_var = True
done_reading = True
if nextchar in self.var_open_paren: # eg: nextchar == '{'
#sys.stdout.write(' ReadTemplate() readmode found {.\n')
if escaped_state:
# In this case, the '\' char was only to prevent
# interpreting '{' as a variable prefix
#delete_prior_escape=True # so delete the '\' character
del var_descr_plist[-1]
var_descr_plist.append(nextchar)
else:
# "${var}" is a valid way to refer to a variable
if prev_char_delim:
var_prefix += nextchar
var_paren_depth = 1
# "${{var}}" is also a valid way to refer to a variable,
# (although strange), but "$va{r}" is not.
# Parenthesis (in bracketed variable names) must
# immediately follow the '$' character (as in "${var}")
elif var_paren_depth > 0:
var_paren_depth += 1
elif nextchar in self.var_close_paren:
#sys.stdout.write(' ReadTemplate() readmode found }.\n')
if escaped_state:
# In this case, the '\' char was only to prevent
# interpreting '}' as a variable suffix,
#delete_prior_escape=True #so skip the '\' character
if (nextchar not in terminators):
del var_descr_plist[-1]
var_descr_plist.append(nextchar)
else:
if var_paren_depth > 0:
var_paren_depth -= 1
if var_paren_depth == 0:
var_suffix = nextchar
terminate_var = True
elif nextchar in var_terminators:
#sys.stdout.write(' ReadTemplate() readmode found var_terminator \"'+nextchar+'\"\n')
if (escaped_state or (var_paren_depth>0)):
# In this case, the '\' char was only to prevent
# interpreting nextchar as a variable terminator
#delete_prior_escape = True # so skip the '\' character
del var_descr_plist[-1]
var_descr_plist.append(nextchar)
else:
terminate_var = True
elif nextchar in self.var_delim: # such as '$'
#sys.stdout.write(' ReadTemplate() readmode found var_delim.\n')
if escaped_state:
# In this case, the '\' char was only to prevent
# interpreting '$' as a new variable name
#delete_prior_escape = True # so skip the '\' character
del var_descr_plist[-1]
var_descr_plist.append(nextchar)
else:
prev_var_delim = True
# Then we are processing a new variable name
terminate_var = True
else:
var_descr_plist.append(nextchar)
prev_char_delim = False
else: # begin else clause for "if reading_var:"
# Then we are reading a text_block
if nextchar in terminators:
if escaped_state:
# In this case, the '\' char was only to prevent terminating
# string prematurely, so delete the '\' character.
#delete_prior_escape = True
del text_block_plist[-1]
text_block_plist.append(nextchar)
elif commented_state:
text_block_plist.append(nextchar)
else:
terminate_text = True
done_reading = True
elif nextchar in self.var_delim: # such as '$'
if escaped_state:
# In this case, the '\' char was only to prevent
# interpreting '$' as a variable prefix.
#delete_prior_escape=True #so delete the '\' character
del text_block_plist[-1]
text_block_plist.append(nextchar)
elif commented_state:
text_block_plist.append(nextchar)
else:
prev_char_delim = True
reading_var = True
var_paren_depth = 0
terminate_text = True
else:
text_block_plist.append(nextchar)
#TO DO: use "list_of_chars.join()" instead of '+='
prev_char_delim = False # the previous character was not '$'
# Now deal with "other_esc_chars"
#if escaped_state and (nextchar in other_esc_chars):
if escaped_state and (nextchar in other_esc_chars):
if reading_var:
#sys.stdout.write(' ReadTemplate: var_descr_str=\''+''.join(var_descr_plist)+'\'\n')
assert(var_descr_plist[-2] in self.escape)
del var_descr_plist[-2]
else:
#sys.stdout.write(' ReadTemplate: text_block=\''+''.join(text_block_plist)+'\'\n')
assert(text_block_plist[-2] in self.escape)
del text_block_plist[-2]
if terminate_text:
#sys.stdout.write('ReadTemplate() appending: ')
#sys.stdout.write(text_block)
#tmpl_list.append( [text_block,
# ((prev_filename, prev_lineno),
# (self.infile, self.lineno))] )
if simplify_output:
tmpl_list.append(''.join(text_block_plist))
else:
tmpl_list.append(TextBlock(''.join(text_block_plist),
OSrcLoc(prev_filename, prev_lineno)))
#, OSrcLoc(self.infile, self.lineno)))
if not done_reading:
# The character that ended the text block
# was a variable delimiter (like '$'), in which case
# we should put it (nextchar) in the variable's prefix.
var_prefix = nextchar
else:
var_prefix = ''
var_descr_plist = []
var_suffix = ''
prev_filename = self.infile
prev_lineno = self.lineno
del text_block_plist
text_block_plist = []
#gc.collect()
elif terminate_var:
# Print an error if we terminated in the middle of
# an incomplete variable name:
if prev_char_delim:
raise InputError('Error: near '+self.error_leader()+'\n\n'
'Null variable name.')
if var_paren_depth > 0:
raise InputError('Error: near '+self.error_leader()+'\n\n'
'Incomplete bracketed variable name.')
var_descr_str = ''.join(var_descr_plist)
# Now check for variable format modifiers,
# like python's ".rjust()" and ".ljust()".
# If present, then put these in the variable suffix.
if ((len(var_descr_plist)>0) and (var_descr_plist[-1]==')')):
#i = len(var_descr_plist)-1
#while i >= 0:
# if var_descr_plist[i] == '(':
# break
# i -= 1
i = var_descr_str.rfind('(')
if (((i-6) >= 0) and
((var_descr_str[i-6:i] == '.rjust') or
(var_descr_str[i-6:i] == '.ljust'))):
var_suffix =''.join(var_descr_plist[i-6:])+var_suffix
#var_descr_plist = var_descr_plist[:i-6]
var_descr_str = var_descr_str[:i-6]
# Process any special characters in the variable name
var_descr_str = EscCharStrToChar(var_descr_str)
#tmpl_list.append( [[var_prefix, var_descr_str, var_suffix],
# (self.infile, self.lineno)] )
if simplify_output:
tmpl_list.append(var_prefix + var_descr_str + var_suffix)
else:
tmpl_list.append( VarRef(var_prefix, var_descr_str, var_suffix,
OSrcLoc(self.infile, self.lineno)) )
#if report_progress:
#sys.stderr.write(' parsed variable '+var_prefix+var_descr_str+var_suffix+'\n')
#sys.stdout.write('ReadTemplate() appending: ')
#print(var_prefix + var_descr_str + var_suffix)
del var_descr_plist
del var_descr_str
prev_filename = self.infile
prev_lineno = self.lineno
var_prefix = ''
var_descr_plist = []
var_suffix = ''
# Special case: Variable delimiters like '$'
# terminate the reading of variables,
# but they also signify that a new
# variable is being read.
if nextchar in self.var_delim:
# Then we are processing a new variable name
prev_var_delim = True
reading_var = True
var_paren_depth = 0
var_prefix = nextchar
elif nextchar in self.var_close_paren:
del text_block_plist
text_block_plist = []
#gc.collect()
prev_var_delim = False
reading_var = False
else:
# Generally, we don't want to initialize the next text block
# with the empty string. Consider that whatever character
# caused us to stop reading the previous variable and append
# it to the block of text that comes after.
del text_block_plist
text_block_plist = [nextchar]
#gc.collect()
prev_var_delim = False
reading_var = False
# If we reached the end of the template (and the user requests it),
# then the terminal character can be included in the list
# of text_blocks to be returned to the caller.
if done_reading and keep_terminal_char:
#sys.stdout.write('ReadTemplate() appending: \''+nextchar+'\'\n')
# Here we create a new text block which contains only the
# terminal character (nextchar).
#tmpl_list.append( [nextchar,
# ((self.infile, self.lineno),
# (self.infile, self.lineno))] )
if simplify_output:
tmpl_list.append(nextchar)
else:
tmpl_list.append(TextBlock(nextchar,
OSrcLoc(self.infile, self.lineno)))
#, OSrcLoc(self.infile, self.lineno)))
if escaped_state:
escaped_state = False
else:
if nextchar in self.escape:
escaped_state = True
#print("*** TMPL_LIST0 = ***", tmpl_list)
return tmpl_list # <- return value stored here
def GetParenExpr(self, prepend_str='', left_paren='(', right_paren=')'):
""" GetParenExpr() is useful for reading in strings
with nested parenthesis and spaces.
This function can read in the entire string:
.trans(0, 10.0*sin(30), 10.0*cos(30))
(Because I was too lazy to write this correctly...)
Spaces are currently stripped out of the expression.
(...unless surrounded by quotes) The string above becomes:
".trans(0,10.0*sin(30),10.0*cos(30))"
Sometimes the caller wants to prepend some text to the beginning
of the expression (which may contain parenthesis). For this
reason, an optional first argument ("prepend_str") can be
provided. By default it is empty.
"""
+
+ src_loc_begin = SrcLoc(self.infile, self.lineno)
orig_wordterm = self.wordterminators
self.wordterminators = self.wordterminators.replace(left_paren,'').replace(right_paren,'')
token = self.get_token()
if ((token == '') or
(token == self.eof)):
return prepend_str
expr_str = prepend_str + token
#if (expr_str.find(left_paren) == -1):
# raise InputError('Error near or before '+self.error_leader()+'\n'
# 'Expected an open-paren (\"'+prepend_str+left_paren+'\") before this point.\n')
# return expr_str
paren_depth = expr_str.count(left_paren) - expr_str.count(right_paren)
while ((len(expr_str) == 0) or (paren_depth > 0)):
token = self.get_token()
if ((type(token) is not str) or
(token == '')):
- raise InputError('Error near or before '+self.error_leader()+'\n'
- 'Invalid expression: \"'+expr_str+'\"')
+ raise InputError('Error somewhere between '+
+ self.error_leader(src_loc_begin.infile,
+ src_loc_begin.lineno)
+ + 'and ' + self.error_leader()+'\n'
+ 'Invalid expression: \"'+expr_str[0:760]+'\"')
expr_str += token
paren_depth = expr_str.count(left_paren) - expr_str.count(right_paren)
if (paren_depth != 0):
- raise InputError('Error near or before '+self.error_leader()+'\n'
- 'Invalid expression: \"'+expr_str+'\"')
+ raise InputError('Error somewhere between '+
+ self.error_leader(src_loc_begin.infile,
+ src_loc_begin.lineno)
+ + 'and ' + self.error_leader()+'\n'
+ 'Invalid expression: \"'+expr_str[0:760]+'\"')
self.wordterminators = orig_wordterm
return expr_str
if __name__ == '__main__':
if len(sys.argv) == 1:
lexer = TtreeShlex()
else:
file = sys.argv[1]
lexer = TtreeShlex(open(file), file)
while 1:
tt = lexer.get_token()
if tt:
print("Token: " + repr(tt))
else:
break
diff --git a/tools/moltemplate/src/ttree_render.py b/tools/moltemplate/src/ttree_render.py
old mode 100755
new mode 100644
diff --git a/tools/msi2lmp/frc_files/README b/tools/msi2lmp/frc_files/README
index ee6749f40..a453e3966 100644
--- a/tools/msi2lmp/frc_files/README
+++ b/tools/msi2lmp/frc_files/README
@@ -1,10 +1,10 @@
Set the environment variable MSI2LMP_LIBRARY or copy cvff.frc and cff9*.frc
or any other *.frc files (which you have license to use) to this directory
for use with msi2lmp.
Note that LAMMPS does not distribute Accelrys (or old BioSym)
force field files, since they are proprietary. All the
files in this directory that are part of the LAMMPS distribution
-are are openly available files that are in the public domain.
+are openly available files that are in the public domain.

Event Timeline