aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Lecher <jlec@gentoo.org>2014-11-11 10:38:40 +0100
committerJustin Lecher <jlec@gentoo.org>2014-11-11 16:48:11 +0100
commitd843b3412dbe403c8e628c3c521c32d57022a243 (patch)
treead2578caea7633adbaa5d4aeef51981dd9f4b4a9 /sci-chemistry
parentremove redundant patch (diff)
downloadsci-d843b3412dbe403c8e628c3c521c32d57022a243.tar.gz
sci-d843b3412dbe403c8e628c3c521c32d57022a243.tar.bz2
sci-d843b3412dbe403c8e628c3c521c32d57022a243.zip
sci-chemistry/ambertools: Drop old and large patches; apply all upstream patches until bugfix.38
Package-Manager: portage-2.2.14
Diffstat (limited to 'sci-chemistry')
-rw-r--r--sci-chemistry/ambertools/ChangeLog11
-rw-r--r--sci-chemistry/ambertools/Manifest2
-rw-r--r--sci-chemistry/ambertools/ambertools-1.5-r4.ebuild159
-rw-r--r--sci-chemistry/ambertools/ambertools-12_p38.ebuild (renamed from sci-chemistry/ambertools/ambertools-12.ebuild)56
-rw-r--r--sci-chemistry/ambertools/files/ambertools-1.5-bugfix_1-21.patch5330
-rw-r--r--sci-chemistry/ambertools/files/ambertools-1.5-bugfix_22-27.patch3343
-rw-r--r--sci-chemistry/ambertools/files/ambertools-1.5-bugfix_28.patch23
-rw-r--r--sci-chemistry/ambertools/files/ambertools-1.5-gentoo2.patch1068
-rw-r--r--sci-chemistry/ambertools/files/ambertools-1.5-overflow.patch30
-rw-r--r--sci-chemistry/ambertools/files/ambertools-12-bugfix_14-26.patch14856
-rw-r--r--sci-chemistry/ambertools/files/ambertools-12-gentoo.patch55
11 files changed, 89 insertions, 24844 deletions
diff --git a/sci-chemistry/ambertools/ChangeLog b/sci-chemistry/ambertools/ChangeLog
index c46b0af1f..aa04ed0ed 100644
--- a/sci-chemistry/ambertools/ChangeLog
+++ b/sci-chemistry/ambertools/ChangeLog
@@ -1,7 +1,16 @@
# ChangeLog for sci-chemistry/ambertools
-# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
+# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/sci-chemistry/ambertools/ChangeLog,v 1.2 2011/08/02 14:42:37 alexxy Exp $
+ 11 Nov 2014; Justin Lecher <jlec@gentoo.org> -ambertools-1.5-r4.ebuild,
+ -ambertools-12.ebuild, +ambertools-12_p38.ebuild,
+ -files/ambertools-1.5-bugfix_1-21.patch,
+ -files/ambertools-1.5-bugfix_22-27.patch,
+ -files/ambertools-1.5-bugfix_28.patch, -files/ambertools-1.5-gentoo2.patch,
+ -files/ambertools-1.5-overflow.patch,
+ -files/ambertools-12-bugfix_14-26.patch, files/ambertools-12-gentoo.patch:
+ Drop old and large patches; apply all upstream patches until bugfix.38
+
28 Jun 2013; Christoph Junghans <ottxor@gentoo.org> ambertools-12.ebuild:
fixed deps
diff --git a/sci-chemistry/ambertools/Manifest b/sci-chemistry/ambertools/Manifest
index 5ccd71741..14e4eacd0 100644
--- a/sci-chemistry/ambertools/Manifest
+++ b/sci-chemistry/ambertools/Manifest
@@ -1,2 +1,2 @@
-DIST AmberTools-1.5.tar.bz2 121062582 SHA256 0c7d397d2e91603bb9123ae68e91af3525269e60800ced360f68c13350651d7c SHA512 3366bfe6d0ee1f9b5b99b1d6aad4111093919fe43ab5e9753c62ae815dca958bfc660a3af9db83de71690624869ee5e47af51a6c8412c6bdcb32aecbefb01677 WHIRLPOOL 192f027f5480807cd36693c6c7d8e3b809f4032ecb1a1bf97df888bd02974fbd2bc8da4ea0e9d52062dce10e969bb72cc2f1ba9c4d627f6097492175ab025120
DIST AmberTools12.tar.bz2 89175545 SHA256 aff5dbc29b5b5b29a85ae465d3e250e225cd85deb2bce828833c2dc769e81009 SHA512 4c34d460fdedf00ade847040856d4bf7df65e7370d4a696dd858fdd3612c192ddc13dabde559bc1a7ae4068ba8040ee159479e247b2c1e59ed976a5aa6344970 WHIRLPOOL 3bc134875482d00d0d1861e9d87f4fef9fdebd1f6860b2c4623f48c23f6f8673df4b23069f3e9374ef9814d500f23f986250a1bcae093597c9e0a0c9d40d6c86
+DIST ambertools-bugfixes-12_p38.tar.xz 88340 SHA256 f130e18b256869ddbb81488c92354b94a762735541fcc070b0696a54d332f9ed SHA512 485123d81e689e06f2a1affc9f17d99e9ba18f92e464beb8fb9c835897693a1bd7d330a8bf9d3526c91eadb32a9b58692185e218c61002f0eeab22ff6efbbb08 WHIRLPOOL c830441291a1d58dcb02913cd89533c255a7c558e2a25806f11e89d89a4d6e7c2e92809fe5627105a096b2b4db98f73c4f9c4fdef6264e5c00edb52215b5d03f
diff --git a/sci-chemistry/ambertools/ambertools-1.5-r4.ebuild b/sci-chemistry/ambertools/ambertools-1.5-r4.ebuild
deleted file mode 100644
index 8eee31ca5..000000000
--- a/sci-chemistry/ambertools/ambertools-1.5-r4.ebuild
+++ /dev/null
@@ -1,159 +0,0 @@
-# Copyright 1999-2014 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-
-EAPI=4
-
-inherit eutils fortran-2 multilib toolchain-funcs
-
-DESCRIPTION="A suite for carrying out complete molecular mechanics investigations"
-HOMEPAGE="http://ambermd.org/#AmberTools"
-SRC_URI="
- AmberTools-${PV}.tar.bz2"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="~amd64 ~x86 ~amd64-linux"
-IUSE="openmp X"
-
-RESTRICT="fetch"
-
-RDEPEND="
- virtual/cblas
- virtual/lapack
- sci-libs/clapack
- sci-libs/arpack
- sci-libs/cifparse-obj
- sci-chemistry/mopac7
- sci-libs/netcdf
- sci-libs/fftw:2.1
- sci-chemistry/reduce
- virtual/fortran"
-DEPEND="${RDEPEND}
- dev-util/byacc
- dev-libs/libf2c
- sys-devel/ucpp"
-S="${WORKDIR}/amber11"
-
-pkg_nofetch() {
- einfo "Go to ${HOMEPAGE} and get ${A}"
- einfo "Place it in ${DISTDIR}"
-}
-
-pkg_setup() {
- fortran-2_pkg_setup
- if use openmp; then
- tc-has-openmp || \
- die "Please select an openmp capable compiler like gcc[openmp]"
- fi
- AMBERHOME="${S}"
-}
-
-src_prepare() {
- epatch \
- "${FILESDIR}/${P}-bugfix_1-21.patch" \
- "${FILESDIR}/${P}-bugfix_22-27.patch" \
- "${FILESDIR}/${P}-bugfix_28.patch" \
- "${FILESDIR}/${P}-gentoo2.patch" \
- "${FILESDIR}/${P}-overflow.patch"
- cd "${S}"/AmberTools/src
- rm -r \
- arpack \
- blas \
- byacc \
- lapack \
- fftw-2.1.5 \
- fftw-3.2.2 \
- c9x-complex \
- cifparse \
- netcdf \
- pnetcdf \
- reduce \
- ucpp-1.3 \
- || die
-}
-
-src_configure() {
- cd "${S}"/AmberTools/src
- sed -e "s:\\\\\$(LIBDIR)/arpack.a:-larpack:g" \
- -e "s:\\\\\$(LIBDIR)/lapack.a:$($(tc-getPKG_CONFIG) lapack --libs) -lclapack:g" \
- -e "s:\\\\\$(LIBDIR)/blas.a:$($(tc-getPKG_CONFIG) blas cblas --libs):g" \
- -e "s:\\\\\$(LIBDIR)/libdrfftw.a:${EPREFIX}/usr/$(get_libdir)/libdrfftw.a:g" \
- -e "s:\\\\\$(LIBDIR)/libdfftw.a:${EPREFIX}/usr/$(get_libdir)/libdrfftw.a:g" \
- -e "s:GENTOO_CFLAGS:${CFLAGS} -DBINTRAJ :g" \
- -e "s:GENTOO_CXXFLAGS:${CXXFLAGS}:g" \
- -e "s:GENTOO_FFLAGS:${FFLAGS}:g" \
- -e "s:GENTOO_LDFLAGS:${LDFLAGS}:g" \
- -e "s:fc=g77:fc=$(tc-getFC):g" \
- -e "s:\$netcdflib:$($(tc-getPKG_CONFIG) netcdf --libs):g" \
- -e "s:NETCDF=\$netcdf:NETCDF=netcdf.mod:g" \
- -i configure || die
- sed -e "s:arsecond_:arscnd_:g" \
- -i sff/time.c \
- -i sff/sff.h \
- -i sff/sff.c || die
- sed -e "s:\$(NAB):\$(NAB) -lrfftw:g" \
- -i nss/Makefile || die
-
- local myconf
-
- use X || myconf="${myconf} -noX11"
-
- use openmp && myconf="${myconf} -openmp"
-
- ./configure \
- ${myconf} \
- -nobintraj \
- -nomdgx \
- -nomtkpp \
- -nopython \
- -nosleap \
- gnu
-}
-
-src_compile() {
- cd "${S}"/AmberTools/src
- emake || die
-}
-
-src_test() {
- cd "${S}"/AmberTools/test
- make test || die
-}
-
-src_install() {
- rm -r bin/chemistry bin/MMPBSA_mods
- rm bin/ante-MMPBSA.py bin/extractFrcmod.py
-
- for x in bin/*
- do dobin ${x} || die
- done
-
- dobin AmberTools/src/antechamber/mopac.sh
- sed -e "s:\$AMBERHOME/bin/mopac:mopac7:g" \
- -i "${ED}/usr/bin/mopac.sh" || die
-
- # Make symlinks untill binpath for amber will be fixed
- dodir /usr/share/${PN}/bin
- cd "${ED}/usr/bin"
- for x in *
- do dosym /usr/bin/${x} /usr/share/${PN}/bin/${x}
- done
- cd "${S}"
-
- dodoc doc/AmberTools.pdf doc/leap_pg.pdf
- dolib.a lib/*
- insinto /usr/include/${PN}
- doins include/*
- insinto /usr/share/${PN}
- doins -r dat
- cd AmberTools
- doins -r benchmarks
- doins -r examples
- doins -r test
-
- cat >> "${T}"/99ambertools <<- EOF
- AMBERHOME="${EPREFIX}/usr/share/ambertools"
- EOF
- doenvd "${T}"/99ambertools
-}
diff --git a/sci-chemistry/ambertools/ambertools-12.ebuild b/sci-chemistry/ambertools/ambertools-12_p38.ebuild
index fe192dcba..55acf2be1 100644
--- a/sci-chemistry/ambertools/ambertools-12.ebuild
+++ b/sci-chemistry/ambertools/ambertools-12_p38.ebuild
@@ -9,7 +9,8 @@ inherit eutils fortran-2 multilib toolchain-funcs
DESCRIPTION="A suite for carrying out complete molecular mechanics investigations"
HOMEPAGE="http://ambermd.org/#AmberTools"
SRC_URI="
- AmberTools${PV}.tar.bz2"
+ AmberTools${PV%_p*}.tar.bz2
+ http://dev.gentoo.org/~jlec/distfiles/${PN}-bugfixes-${PV}.tar.xz"
LICENSE="GPL-2"
SLOT="0"
@@ -37,8 +38,9 @@ DEPEND="${RDEPEND}
S="${WORKDIR}/amber12"
pkg_nofetch() {
- einfo "Go to ${HOMEPAGE} and get ${A}"
- einfo "Place it in ${DISTDIR}"
+ einfo "Go to ${HOMEPAGE} and get AmberTools${PV%_p*}.tar.bz2"
+ einfo "and download http://dev.gentoo.org/~jlec/distfiles/${PN}-bugfixes-${PV}.tar.xz"
+ einfo "Place both into ${DISTDIR}"
}
pkg_setup() {
@@ -52,9 +54,9 @@ pkg_setup() {
src_prepare() {
epatch \
- "${FILESDIR}/${P}-bugfix_14-26.patch" \
- "${FILESDIR}/${P}-gentoo.patch"
- cd "${S}"/AmberTools/src
+ "${FILESDIR}"/${PN}-12-gentoo.patch \
+ "${WORKDIR}"/bugfixes/bugfix.{14..38}
+ cd "${S}"/AmberTools/src || die
rm -r \
arpack \
blas \
@@ -70,7 +72,7 @@ src_prepare() {
}
src_configure() {
- cd "${S}"/AmberTools/src
+ cd "${S}"/AmberTools/src || die
sed \
-e "s:\\\\\$(LIBDIR)/arpack.a:-larpack:g" \
-e "s:\\\\\$(LIBDIR)/lapack.a:$($(tc-getPKG_CONFIG) lapack --libs) -lclapack:g" \
@@ -87,10 +89,10 @@ src_configure() {
-e "s:\$netcdfflag:$($(tc-getPKG_CONFIG) netcdf --libs):g" \
-e "s:NETCDF=\$netcdf:NETCDF=netcdf.mod:g" \
-i configure2 || die
- sed -e "s:arsecond_:arscnd_:g" \
- -i sff/time.c \
- -i sff/sff.h \
- -i sff/sff.c || die
+
+ sed \
+ -e "s:arsecond_:arscnd_:g" \
+ -i sff/time.c sff/sff.h sff/sff.c || die
local myconf="--no-updates"
@@ -98,12 +100,17 @@ src_configure() {
use openmp && myconf="${myconf} -openmp"
- cd "${S}"
+ cd "${S}" || die
+
+ sed \
+ -e '/patch_amber.py/d' \
+ -i configure || die
+
./configure \
${myconf} \
-nobintraj \
-nomtkpp \
- gnu
+ gnu || die
}
src_test() {
@@ -115,8 +122,14 @@ src_test() {
emake test
}
+src_compile() {
+ emake \
+ CC=$(tc-getCC) \
+ FC=$(tc-getFC)
+}
+
src_install() {
- rm bin/*.py
+ rm bin/*.py || die
for x in bin/*
do
@@ -124,16 +137,17 @@ src_install() {
done
dobin AmberTools/src/antechamber/mopac.sh
- sed -e "s:\$AMBERHOME/bin/mopac:mopac7:g" \
+ sed \
+ -e "s:\$AMBERHOME/bin/mopac:mopac7:g" \
-i "${ED}/usr/bin/mopac.sh" || die
# Make symlinks untill binpath for amber will be fixed
dodir /usr/share/${PN}/bin
- cd "${ED}/usr/bin"
+ cd "${ED}/usr/bin" || die
for x in *
- do dosym /usr/bin/${x} /usr/share/${PN}/bin/${x}
+ do dosym /usr/bin/${x} ../share/${PN}/bin/${x}
done
- cd "${S}"
+ cd "${S}" || die
dodoc doc/AmberTools12.pdf
dolib.a lib/*
@@ -141,10 +155,8 @@ src_install() {
doins include/*
insinto /usr/share/${PN}
doins -r dat
- cd AmberTools
- doins -r benchmarks
- doins -r examples
- doins -r test
+ cd AmberTools || die
+ doins -r benchmarks examples test
cat >> "${T}"/99ambertools <<- EOF
AMBERHOME="${EPREFIX}/usr/share/ambertools"
diff --git a/sci-chemistry/ambertools/files/ambertools-1.5-bugfix_1-21.patch b/sci-chemistry/ambertools/files/ambertools-1.5-bugfix_1-21.patch
deleted file mode 100644
index 911bc4dec..000000000
--- a/sci-chemistry/ambertools/files/ambertools-1.5-bugfix_1-21.patch
+++ /dev/null
@@ -1,5330 +0,0 @@
-diff -urN amber11.orig/AmberTools/src/configure amber11/AmberTools/src/configure
---- amber11.orig/AmberTools/src/configure 2011-04-14 15:30:55.000000000 +0300
-+++ amber11/AmberTools/src/configure 2011-10-25 15:01:28.222288537 +0300
-@@ -650,7 +650,7 @@
- if [ "$cuda" = 'yes' -o "$cuda_SPSP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
- pmemd_cu_includes='-I$(CUDA_HOME)/include -IB40C -IB40C/KernelCommon'
- pmemd_cu_defines='-DCUDA'
-- pmemd_cu_libs='-L$(CUDA_HOME)/lib64 -L$(CUDA_HOME)/lib -lcufft -lcudart ./cuda/cuda.a'
-+ pmemd_cu_libs='-L$(CUDA_HOME)/lib64 -L$(CUDA_HOME)/lib -lcurand -lcufft -lcudart ./cuda/cuda.a'
- if [ "$optimise" = 'no' ]; then
- nvcc='$(CUDA_HOME)/bin/nvcc -use_fast_math -O0 -gencode arch=compute_13,code=sm_13 -gencode arch=compute_20,code=sm_20'
- else
-@@ -909,7 +909,7 @@
-
- pmemd_cu_includes='-I$(CUDA_HOME)/include -IB40C -IB40C/KernelCommon'
- pmemd_cu_defines='-DCUDA'
-- pmemd_cu_libs='-L$(CUDA_HOME)/lib64 -L$(CUDA_HOME)/lib -lcufft -lcudart ./cuda/cuda.a'
-+ pmemd_cu_libs='-L$(CUDA_HOME)/lib64 -L$(CUDA_HOME)/lib -lcurand -lcufft -lcudart ./cuda/cuda.a'
- if [ "$optimise" = 'yes' ]; then
- nvcc='$(CUDA_HOME)/bin/nvcc -use_fast_math -O3 -gencode arch=compute_13,code=sm_13 -gencode arch=compute_20,code=sm_20'
- else
-@@ -2111,21 +2111,21 @@
- echo "Change to \$AMBERHOME/src/ and type 'make clean' followed by"
- echo "'make parallel_win'."
- elif [ "$cuda" = 'yes' -o "$cuda_SPSP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
-- echo "The next step is to cd to ../../src and type 'make install'"
-+ echo "The next step is to cd to ../../src and type 'make $installtype'"
- else
- echo "If you have amber11, the most common next step is to "
-- echo "'cd ../../src; make clean; make install'. See the Users' Manual"
-+ echo "'cd ../../src; make clean; make $installtype'. See the Users' Manual"
- echo "for information on building a parallel version of AmberTools"
- fi
- elif [ "$cuda" = 'yes' -o "$cuda_SPSP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
-- echo "The next step is to cd to ../../src and type 'make install'"
-+ echo "The next step is to cd to ../../src and type 'make $installtype'"
- elif [ "$windows" = 'yes' ]; then
- echo "The next step is to switch to a dos shell with ifort enabled."
- echo "Change to \$AMBERHOME/src/ and type 'make serial_win'."
- elif [ "$openmp" = 'yes' ]; then
- echo "The next step is to type 'make nabonly'"
- else
-- echo "The next step is to type 'make install'"
-+ echo "The next step is to type 'make $installtype'"
- fi
- echo " "
-
-@@ -2149,7 +2149,7 @@
- echo " NOTE: after installing AmberTools, if you want to compile"
- echo " Amber11 using AmberTools 1.5, you must run the "
- echo " AT15_Amber11.py script first, e.g.:"
-- echo " cd $AMBERHOME; ./AT15_Amber11.py; make $installtype"
-+ echo " cd $AMBERHOME; ./AT15_Amber11.py; cd src; make $installtype"
- echo " (See the Amber11 Users' Manual for full instructions,"
- echo " and be sure to have a backup, since the AT15_Amber11.py"
- echo " script will modify your Amber11 files.)"
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Action_Center.cpp amber11/AmberTools/src/cpptraj/src/Action_Center.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/Action_Center.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Action_Center.cpp 2011-10-25 15:01:28.108288642 +0300
-@@ -72,7 +72,7 @@
- // else
- // mass = NULL;
-
-- if (!origin && P->ifbox==0) {
-+ if (!origin && P->BoxType==0) {
- mprintf(" Error: Center::setup: Box center specified but no box information.\n");
- //fprintf(stdout," Centering on origin.\n");
- return 1;
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Action_Closest.cpp amber11/AmberTools/src/cpptraj/src/Action_Closest.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/Action_Closest.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Action_Closest.cpp 2011-10-25 15:01:28.108288642 +0300
-@@ -181,8 +181,8 @@
- // NOTE: Should box be figured out from read-in coords?
- imageType = 0;
- if (!noimage) {
-- imageType = P->ifbox;
-- if (P->ifbox==0) {
-+ imageType = P->BoxType;
-+ if (P->BoxType==0) {
- mprintf(" Warning: Closest::setup: ");
- mprintf(" Imaging specified but no box information in prmtop %s\n",P->parmName);
- mprintf(" No imaging can occur..\n");
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Action_Distance.cpp amber11/AmberTools/src/cpptraj/src/Action_Distance.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/Action_Distance.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Action_Distance.cpp 2011-10-25 15:01:28.194288563 +0300
-@@ -57,8 +57,6 @@
- mprintf(" DISTANCE: %s to %s",Mask1.maskString, Mask2.maskString);
- if (noimage)
- mprintf(", non-imaged");
-- else
-- mprintf(", imaged");
- if (useMass)
- mprintf(", center of mass");
- else
-@@ -68,6 +66,11 @@
- return 0;
- }
-
-+/*
-+ * Distance::setup()
-+ * Determine what atoms each mask pertains to for the current parm file.
-+ * Also determine whether imaging should be performed.
-+ */
- int Distance::setup() {
-
- if ( Mask1.SetupMask(P,debug) ) return 1;
-@@ -89,11 +92,19 @@
- // Check imaging - check box based on prmtop box
- imageType = 0;
- if (!noimage) {
-- imageType = P->ifbox;
-- if (P->ifbox==0 && debug>0) {
-+ imageType = P->BoxType;
-+ if (P->BoxType==0 && debug>0) {
- mprintf(" Warning: No box info in %s, disabling imaging.\n",P->parmName);
- }
- }
-+
-+ // Print imaging info for this parm
-+ mprintf(" DISTANCE: %s to %s",Mask1.maskString, Mask2.maskString);
-+ if (imageType > 0)
-+ mprintf(", imaged");
-+ else
-+ mprintf(", imaging off");
-+ mprintf(".\n");
-
- return 0;
- }
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Action_DSSP.cpp amber11/AmberTools/src/cpptraj/src/Action_DSSP.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/Action_DSSP.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Action_DSSP.cpp 2011-10-25 15:01:28.195288561 +0300
-@@ -76,7 +76,7 @@
- int selected, atom, res;
- Residue RES;
-
-- // Set up mask
-+ // Set up mask for this parm
- if ( Mask.SetupMask(P,debug) ) return 1;
- if ( Mask.None() ) {
- mprintf(" Error: DSSP::setup: Mask has no atoms.\n");
-@@ -90,25 +90,25 @@
- Nres=P->nres;
- //mprintf(" DSSP: Setting up for %i residues.\n",Nres);
-
-- // Free up SecStruct if previously allocated.
-- // NOTE: In action setup, should check if Parm has really changed...
-- SecStruct.clear();
-+ // Set up for each residue of the current Parm if not already set-up.
- for (res = 0; res < Nres; res++) {
-- RES.sstype=SECSTRUCT_NULL;
-- RES.isSelected=false;
-- RES.C=-1;
-- RES.O=-1;
-- RES.N=-1;
-- RES.H=-1;
-- RES.CO_HN_Hbond.assign( Nres, 0 );
-- RES.SSprob[0]=0.0;
-- RES.SSprob[1]=0.0;
-- RES.SSprob[2]=0.0;
-- RES.SSprob[3]=0.0;
-- RES.SSprob[4]=0.0;
-- RES.SSprob[5]=0.0;
-- RES.SSprob[6]=0.0;
-- SecStruct.push_back(RES);
-+ if (res>=(int)SecStruct.size()) {
-+ RES.sstype=SECSTRUCT_NULL;
-+ RES.isSelected=false;
-+ RES.C=-1;
-+ RES.O=-1;
-+ RES.N=-1;
-+ RES.H=-1;
-+ RES.CO_HN_Hbond.assign( Nres, 0 );
-+ RES.SSprob[0]=0.0;
-+ RES.SSprob[1]=0.0;
-+ RES.SSprob[2]=0.0;
-+ RES.SSprob[3]=0.0;
-+ RES.SSprob[4]=0.0;
-+ RES.SSprob[5]=0.0;
-+ RES.SSprob[6]=0.0;
-+ SecStruct.push_back(RES);
-+ }
- }
-
- // Go through all atoms in mask. Set up a residue for each C, O, N, and H atom
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Action_Image.cpp amber11/AmberTools/src/cpptraj/src/Action_Image.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/Action_Image.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Action_Image.cpp 2011-10-25 15:01:28.110288640 +0300
-@@ -98,14 +98,14 @@
- useMass = false;
- }
-
-- if (P->ifbox==0) {
-+ if (P->BoxType==0) {
- mprintf(" Error: Image::setup: Parm %s does not contain box information.\n",
- P->parmName);
- return 1;
- }
-
- ortho = false;
-- if (P->ifbox==1 && triclinic==OFF) ortho=true;
-+ if (P->BoxType==1 && triclinic==OFF) ortho=true;
-
- if (triclinic == FAMILIAR) {
- if (ComMask!=NULL) {
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Action_Outtraj.cpp amber11/AmberTools/src/cpptraj/src/Action_Outtraj.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/Action_Outtraj.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Action_Outtraj.cpp 2011-10-25 15:01:28.129288623 +0300
-@@ -6,6 +6,9 @@
- // CONSTRUCTOR
- Outtraj::Outtraj() {
- //fprintf(stderr,"Outtraj Con\n");
-+ min=0.0;
-+ max=0.0;
-+ Dset=NULL;
- }
-
- // DESTRUCTOR
-@@ -13,11 +16,40 @@
-
- /*
- * Outtraj::init()
-- * Action wrapper for trajout
-+ * Action wrapper for trajout.
-+ * Expected call: outtraj <filename> [ trajout args ]
-+ * [maxmin <dataset> min <min> max <max>
- */
- int Outtraj::init() {
-+ char *datasetName;
-+
-+#ifdef MPI
-+ mprintf("ERROR: OUTTRAJ currently not functional with MPI.\n");
-+ return 1;
-+#endif
-+
-+ mprintf(" OUTTRAJ: Will write to [%s]\n",A->Arg(1));
-+ outtraj.SetDebug(debug);
-+ // If maxmin, get the name of the dataset as well as the max and min values.
-+ datasetName = A->getKeyString("maxmin",NULL);
-+ if (datasetName!=NULL) {
-+ Dset = DSL->Get(datasetName);
-+ if (Dset==NULL) {
-+ mprintf("Error: Outtraj maxmin: Could not get dataset %s\n",datasetName);
-+ return 1;
-+ } else {
-+ // Currently dont allow for string datasets
-+ if (Dset->Type()==STRING) {
-+ mprintf("Error: Outtraj maxmin: String dataset (%s) not supported.\n",datasetName);
-+ return 1;
-+ }
-+ max = A->getKeyDouble("max",0.0);
-+ min = A->getKeyDouble("min",0.0);
-+ mprintf(" maxmin: Printing trajectory frames based on %lf <= %s <= %lf\n",
-+ min, datasetName, max);
-+ }
-+ }
-
-- mprintf(" OUTTRAJ: [%s]\n",A->ArgLine());
- return ( outtraj.Add(A,PFL,worldsize) );
- }
-
-@@ -33,8 +65,32 @@
- * Outtraj::action()
- */
- int Outtraj::action() {
-+ double dVal;
-+ int iVal;
-
-- return ( outtraj.Write(currentFrame, F, P) );
-+ // If dataset defined, check if frame is within max/min
-+ if (Dset!=NULL) {
-+ if (Dset->Type() == DOUBLE) {
-+ if (Dset->Get(&dVal, currentFrame)) return 1;
-+ } else if (Dset->Type() == INT) {
-+ if (Dset->Get(&iVal, currentFrame)) return 1;
-+ dVal = (double) iVal;
-+ } else
-+ return 1;
-+ //mprintf("DBG: maxmin: dVal = %lf\n",dVal);
-+ // If value from dataset not within min/max, exit now.
-+ if (dVal < min || dVal > max) return 0;
-+ }
-+ if ( outtraj.Write(currentFrame, F, P) != 0 ) return 1;
-+ return 0;
- }
-
-+/*
-+ * Outtraj::print()
-+ * Close trajectory.
-+ */
-+void Outtraj::print() {
-+ mprintf(" OUTTRAJ: [%s] Wrote %i frames.\n",A->Arg(1),outtraj.front()->CurrentFrame());
-+ outtraj.Close();
-+}
-
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Action_Outtraj.h amber11/AmberTools/src/cpptraj/src/Action_Outtraj.h
---- amber11.orig/AmberTools/src/cpptraj/src/Action_Outtraj.h 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Action_Outtraj.h 2011-10-25 15:01:28.129288623 +0300
-@@ -6,6 +6,9 @@
-
- class Outtraj: public Action {
- TrajoutList outtraj;
-+ double max;
-+ double min;
-+ DataSet *Dset;
- public:
- Outtraj();
- ~Outtraj();
-@@ -13,5 +16,6 @@
- int init();
- //int setup();
- int action();
-+ void print();
- };
- #endif
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Action_Rms2d.cpp amber11/AmberTools/src/cpptraj/src/Action_Rms2d.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/Action_Rms2d.cpp 1970-01-01 03:00:00.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Action_Rms2d.cpp 2011-10-25 15:01:28.074288674 +0300
-@@ -0,0 +1,71 @@
-+// Rms2d
-+#include "Action_Rms2d.h"
-+#include "CpptrajStdio.h"
-+
-+// CONSTRUCTOR
-+Rms2d::Rms2d() {
-+ //fprintf(stderr,"Rms2d Con\n");
-+ nofit=false;
-+ useMass=false;
-+}
-+
-+// DESTRUCTOR
-+Rms2d::~Rms2d() { }
-+
-+/*
-+ * Rms2d::init()
-+ * Expected call: rms2d <mask> <refmask> [rmsout filename] [mass] [nofit]
-+ * Dataset name will be the last arg checked for. Check order is:
-+ * 1) Keywords
-+ * 2) Masks
-+ * 3) Dataset name
-+ */
-+int Rms2d::init() {
-+ char *mask0, *maskRef;
-+
-+ // Get keywords
-+ nofit = A->hasKey("nofit");
-+ useMass = A->hasKey("mass");
-+ rmsdFile = A->getKeyString("rmsout",NULL);
-+
-+ // Get the RMS mask string for frames
-+ mask0 = A->getNextMask();
-+ FrameMask.SetMaskString(mask0);
-+ // Get RMS mask string for reference
-+ maskRef = A->getNextMask();
-+ // If no reference mask specified, make same as RMS mask
-+ if (maskRef==NULL) maskRef=mask0;
-+ RefMask.SetMaskString(maskRef);
-+
-+ mprintf(" RMS2D: (%s) to (%s)",FrameMask.maskString,RefMask.maskString);
-+ if (nofit)
-+ mprintf(" (no fitting)");
-+ if (useMass)
-+ mprintf(" (mass-weighted)");
-+ if (rmsdFile!=NULL)
-+ mprintf(" output to %s",rmsdFile);
-+ mprintf("\n");
-+
-+ return 0;
-+}
-+
-+/*
-+ * Rms2d::setup()
-+ * Not important for Rms2d, initial pass is only for storing frames.
-+ */
-+int Rms2d::setup() {
-+ return 0;
-+}
-+
-+/*
-+ * Rms2d::action()
-+ * Store current frame as a reference frame.
-+ */
-+int Rms2d::action() {
-+
-+ ReferenceFrames.Add(F,P);
-+
-+ return 0;
-+}
-+
-+
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Action_Rms2d.h amber11/AmberTools/src/cpptraj/src/Action_Rms2d.h
---- amber11.orig/AmberTools/src/cpptraj/src/Action_Rms2d.h 1970-01-01 03:00:00.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Action_Rms2d.h 2011-10-25 15:01:28.075288673 +0300
-@@ -0,0 +1,21 @@
-+#ifndef INC_ACTION_RMS2D_H
-+#define INC_ACTION_RMS2D_H
-+// Rms2d
-+#include "Action.h"
-+
-+class Rms2d: public Action {
-+ FrameList ReferenceFrames;
-+ bool nofit;
-+ bool useMass;
-+ AtomMask RefMask;
-+ AtomMask FrameMask;
-+ char *rmsdFile;
-+ public:
-+ Rms2d();
-+ ~Rms2d();
-+
-+ int init();
-+ int setup();
-+ int action();
-+};
-+#endif
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Action_Rmsd.cpp amber11/AmberTools/src/cpptraj/src/Action_Rmsd.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/Action_Rmsd.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Action_Rmsd.cpp 2011-10-25 15:01:28.229288531 +0300
-@@ -256,6 +256,7 @@
- PerResRMSD=new DataSetList();
- resName[4]='\0';
- for (it=ResRange.begin(); it!=ResRange.end(); it++) {
-+ //res = *it - 1; // res is the internal resnumber, *it the user resnumber
- // Get corresponding reference resnum - if none specified use current res
- if (RefRange.empty())
- refRes = (*it);
-@@ -263,7 +264,18 @@
- refRes = RefRange.front();
- RefRange.pop_front();
- }
-- //res = *it - 1; // res is the internal resnumber, *it the user resnumber
-+
-+ // Check if either the residue num or the reference residue num out of range.
-+ if ( (*it) < 1 || (*it) > P->nres) {
-+ mprintf(" Warning: Rmsd: perres: Specified residue # %i is out of range.\n",*it);
-+ continue;
-+ }
-+ if ( refRes < 1 || refRes > P->nres ) {
-+ mprintf(" Warning: Rmsd: perres: Specified reference residue # %i is out of range.\n",
-+ refRes);
-+ continue;
-+ }
-+
- // Setup Dataset Name to be name of this residue
- P->ResName(resName,(*it)-1);
-
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/AmberNetcdf.cpp amber11/AmberTools/src/cpptraj/src/AmberNetcdf.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/AmberNetcdf.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/AmberNetcdf.cpp 2011-10-25 15:01:28.131288621 +0300
-@@ -49,6 +49,7 @@
- * and close calls.
- */
- void AmberNetcdf::close() {
-+ if (ncid<0) return;
- checkNCerr(nc_close(ncid),"Closing netcdf file.");
- if (debug>0) rprintf("Successfully closed ncid %i\n",ncid);
- ncid=-1;
-@@ -92,8 +93,10 @@
- * Open the netcdf file, read all dimension and variable IDs, close.
- */
- int AmberNetcdf::SetupRead() {
-- char *attrText; // For checking conventions and version
-- int spatial; // For checking spatial dimensions
-+ char *attrText; // For checking conventions and version
-+ int spatial; // For checking spatial dimensions
-+ double box[6]; // For checking box type
-+ size_t start[3], count[3]; // For checking box type
-
- if (open()) return 1;
-
-@@ -147,15 +150,15 @@
- if ( nc_inq_varid(ncid,"cell_lengths",&cellLengthVID)==NC_NOERR ) {
- if (checkNCerr(nc_inq_varid(ncid,"cell_angles",&cellAngleVID),
- "Getting cell angles.")!=0) return 1;
-- if (debug>0) mprintf(" Netcdf Box information found.\n");
-- if (P->ifbox==0) {
-- mprintf("Warning: Netcdf file contains box info but no box info found\n");
-- mprintf(" in associated parmfile %s; defaulting to orthogonal.\n",
-- P->parmName);
-- isBox=1;
-- } else {
-- isBox=P->ifbox;
-- }
-+ if (debug>0) mprintf(" Netcdf Box information found.\n");
-+ // Determine box type from angles
-+ start[0]=0; start[1]=0; start[2]=0;
-+ count[0]=1; count[1]=3; count[2]=0;
-+ if ( checkNCerr(nc_get_vara_double(ncid, cellLengthVID, start, count, box),
-+ "Getting cell lengths.")!=0 ) return 1;
-+ if ( checkNCerr(nc_get_vara_double(ncid, cellAngleVID, start, count, box+3),
-+ "Getting cell angles.")!=0 ) return 1;
-+ CheckBoxType(box);
- }
-
- // Replica Temperatures
-@@ -258,7 +261,7 @@
- "Defining cell angular variable.")) return 1;
-
- // Box Info
-- if (isBox>0) {
-+ if (BoxType!=0) {
- dimensionID[0]=frameDID;
- dimensionID[1]=cell_spatialDID;
- if (checkNCerr(nc_def_var(ncid,"cell_lengths",NC_DOUBLE,2,dimensionID,&cellLengthVID),
-@@ -362,7 +365,7 @@
- "Getting frame %i",set)!=0 ) return 1;
-
- // Read box info
-- if (isBox!=0) {
-+ if (BoxType!=0) {
- count [1]=3;
- count [2]=0;
- if ( checkNCerr(nc_get_vara_double(ncid, cellLengthVID, start, count, F->box),
-@@ -399,7 +402,7 @@
- F->frameToFloat(Coord);
-
- // write coords
-- start[0]=set;
-+ start[0]=currentFrame;
- start[1]=0;
- start[2]=0;
- count[0]=1;
-@@ -409,7 +412,7 @@
- "Netcdf Writing frame %i",set)) return 1;
-
- // write box
-- if (isBox>0 && cellLengthVID!=-1) {
-+ if (BoxType!=0 && cellLengthVID!=-1) {
- count[1]=3;
- count[2]=0;
- if (checkNCerr(nc_put_vara_double(ncid,cellLengthVID,start,count,F->box),
-@@ -427,6 +430,8 @@
-
- nc_sync(ncid); // Necessary after every write??
-
-+ currentFrame++;
-+
- return 0;
- }
-
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/AmberParm.cpp amber11/AmberTools/src/cpptraj/src/AmberParm.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/AmberParm.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/AmberParm.cpp 2011-10-25 15:01:28.231288529 +0300
-@@ -1,6 +1,12 @@
- /* AmberParm.cpp
-- * Class that holds parameter information. Can be read in from Amber Topology
-- * or PDB files.
-+ * Class that holds parameter information. Can be read in from Amber Topology,
-+ * PDB, or Mol2 files (implemented in the ReadParmXXX functions). The following
-+ * parameters of AmberParm must always be set:
-+ * The NATOM, NRES, and IFBOX entries of the values array.
-+ * The names, resnames, resnums arrays.
-+ * The natom and nres variables.
-+ * NOTES:
-+ * Eventually make the mol2 read parm function use the AddBond function.
- */
- #include <cstdlib>
- #include <cstring>
-@@ -11,7 +17,7 @@
- #include "CpptrajStdio.h"
-
- #define AMBERPOINTERS 31
--
-+#define TRUNCOCTBETA 109.4712206344906917365733534097672
- #define ELECTOAMBER 18.2223
- #define AMBERTOELEC 1/ELECTOAMBER
- // =============================================================
-@@ -21,7 +27,7 @@
- * Given a residue number, set buffer with residue name. Replace blanks with _
- */
- void AmberParm::ResName(char *buffer, int res) {
-- if (res<0 || res>nres) return;
-+ if (res<0 || res>=nres) return;
- strcpy(buffer, resnames[res]);
- if (buffer[3]==' ') buffer[3]='_';
- }
-@@ -203,7 +209,9 @@
- bondsh=NULL;
- types=NULL;
- atomsPerMol=NULL;
-- Box=NULL;
-+ Box[0]=0.0; Box[1]=0.0; Box[2]=0.0;
-+ Box[3]=0.0; Box[4]=0.0; Box[5]=0.0;
-+ BoxType=0;
- pindex=0;
- parmFrames=0;
- outFrame=0;
-@@ -217,7 +225,6 @@
- solventMoleculeStop=NULL;
- natom=0;
- nres=0;
-- ifbox=0;
- parmName=NULL;
- SurfaceInfo=NULL;
- }
-@@ -234,7 +241,6 @@
- if (bonds!=NULL) free(bonds);
- if (bondsh!=NULL) free(bondsh);
- if (atomsPerMol!=NULL) free(atomsPerMol);
-- if (Box!=NULL) free(Box);
- if (solventMoleculeStart!=NULL) free(solventMoleculeStart);
- if (solventMoleculeStop!=NULL) free(solventMoleculeStop);
- if (solventMask!=NULL) free(solventMask);
-@@ -271,54 +277,7 @@
- return NULL;
- }
-
--/*
-- * AmberParm::OpenParm()
-- * Attempt to open file and read in parameters.
-- */
--int AmberParm::OpenParm(char *filename) {
-- if ( File.SetupFile(filename,READ,UNKNOWN_FORMAT, UNKNOWN_TYPE,debug) ) return 1;
--
-- // Copy parm filename to parmName. Separate from File.filename in case of stripped parm
-- parmName=(char*) malloc( (strlen(File.basefilename)+1) * sizeof(char));
-- strcpy(parmName,File.basefilename);
--
-- if ( File.OpenFile() ) return 1;
--
-- switch (File.fileFormat) {
-- case AMBERPARM : if (ReadParmAmber()) return 1; break;
-- case PDBFILE : if (ReadParmPDB() ) return 1; break;
-- case MOL2FILE : if (ReadParmMol2() ) return 1; break;
-- default:
-- rprintf("Unknown parameter file type: %s\n",File.filename);
-- return 1;
-- }
--
-- File.CloseFile();
--
-- // Create a last dummy residue in resnums that holds natom, which would be
-- // the atom number of the next residue if it existed. Atom #s in resnums
-- // should correspond with cpptraj atom #s (start from 0) instead of Amber
-- // atom #s (start from 1).
-- // Do this to be consistent with ptrajmask selection behavior - saves an
-- // if-then statement.
-- resnums=(int*) realloc(resnums,(nres+1)*sizeof(int));
-- resnums[nres]=natom;
-- // DEBUG
-- //fprintf(stdout,"==== DEBUG ==== Resnums for %s:\n",File.filename);
-- //for (err=0; err<nres; err++)
-- // fprintf(stdout," %i: %i\n",err,resnums[err]);
--
-- // Set up solvent information
-- SetSolventInfo();
--
-- if (debug>0) {
-- mprintf(" Number of atoms= %i\n",natom);
-- mprintf(" Number of residues= %i\n",nres);
-- }
--
-- return 0;
--}
--
-+// ---------========= ROUTINES PERTAINING TO SURFACE AREA =========---------
- /*
- * AmberParm::AssignLCPO()
- * Assign parameters for LCPO method. All radii are incremented by 1.4 Ang.
-@@ -478,6 +437,7 @@
- return 0;
- }
-
-+// ---------========= ROUTINES PERTAINING TO SOLVENT INFO =========---------
- /*
- * AmberParm::SetSolventInfo()
- * Assuming atomsPerMol has been read in, set solvent information.
-@@ -536,7 +496,56 @@
-
- return 0;
- }
--
-+
-+// --------========= ROUTINES PERTAINING TO READING PARAMETERS =========--------
-+/*
-+ * AmberParm::OpenParm()
-+ * Attempt to open file and read in parameters.
-+ */
-+int AmberParm::OpenParm(char *filename) {
-+ if ( File.SetupFile(filename,READ,UNKNOWN_FORMAT, UNKNOWN_TYPE,debug) ) return 1;
-+
-+ // Copy parm filename to parmName. Separate from File.filename in case of stripped parm
-+ parmName=(char*) malloc( (strlen(File.basefilename)+1) * sizeof(char));
-+ strcpy(parmName,File.basefilename);
-+
-+ if ( File.OpenFile() ) return 1;
-+
-+ switch (File.fileFormat) {
-+ case AMBERPARM : if (ReadParmAmber()) return 1; break;
-+ case PDBFILE : if (ReadParmPDB() ) return 1; break;
-+ case MOL2FILE : if (ReadParmMol2() ) return 1; break;
-+ default:
-+ rprintf("Unknown parameter file type: %s\n",File.filename);
-+ return 1;
-+ }
-+
-+ File.CloseFile();
-+
-+ // Create a last dummy residue in resnums that holds natom, which would be
-+ // the atom number of the next residue if it existed. Atom #s in resnums
-+ // should correspond with cpptraj atom #s (start from 0) instead of Amber
-+ // atom #s (start from 1).
-+ // Do this to be consistent with ptrajmask selection behavior - saves an
-+ // if-then statement.
-+ resnums=(int*) realloc(resnums,(nres+1)*sizeof(int));
-+ resnums[nres]=natom;
-+ // DEBUG
-+ //fprintf(stdout,"==== DEBUG ==== Resnums for %s:\n",File.filename);
-+ //for (err=0; err<nres; err++)
-+ // fprintf(stdout," %i: %i\n",err,resnums[err]);
-+
-+ // Set up solvent information
-+ SetSolventInfo();
-+
-+ if (debug>0) {
-+ mprintf(" Number of atoms= %i\n",natom);
-+ mprintf(" Number of residues= %i\n",nres);
-+ }
-+
-+ return 0;
-+}
-+
- /*
- * AmberParm::ReadParmAmber()
- * Read parameters from Amber Topology file
-@@ -544,6 +553,7 @@
- int AmberParm::ReadParmAmber() {
- int err, atom;
- int *solvent_pointer;
-+ double *boxFromParm;
-
- if (debug>0) mprintf("Reading Amber Topology file %s\n",parmName);
-
-@@ -555,7 +565,6 @@
-
- natom=values[NATOM];
- nres=values[NRES];
-- ifbox=values[IFBOX];
- if (debug>0)
- mprintf(" Amber top contains %i atoms, %i residues.\n",natom,nres);
-
-@@ -583,7 +592,8 @@
- if (bonds==NULL) {mprintf("Error in bonds w/o H.\n"); err++;}
- bondsh=(int*) getFlagFileValues("BONDS_INC_HYDROGEN",values[NBONH]*3);
- if (bondsh==NULL) {mprintf("Error in bonds inc H.\n"); err++;}
-- if (ifbox>0) {
-+ // Get solvent info if IFBOX>0
-+ if (values[IFBOX]>0) {
- solvent_pointer=(int*) getFlagFileValues("SOLVENT_POINTERS",3);
- if (solvent_pointer==NULL) {
- mprintf("Error in solvent pointers.\n");
-@@ -596,12 +606,20 @@
- }
- atomsPerMol=(int*) getFlagFileValues("ATOMS_PER_MOLECULE",molecules);
- if (atomsPerMol==NULL) {mprintf("Error in atoms per molecule.\n"); err++;}
-- Box=(double*) getFlagFileValues("BOX_DIMENSIONS",4);
-- if (Box==NULL) {mprintf("Error in Box information.\n"); err++;}
-+ // boxFromParm = {OLDBETA, BOX(1), BOX(2), BOX(3)}
-+ boxFromParm=(double*) getFlagFileValues("BOX_DIMENSIONS",4);
-+ if (boxFromParm==NULL) {mprintf("Error in Box information.\n"); err++;}
-+ // Determine box type: 1-Ortho, 2-Nonortho
-+ SetBoxInfo(boxFromParm[0],boxFromParm[1],boxFromParm[2],boxFromParm[3]);
-+ free(boxFromParm);
- if (debug>0) {
- mprintf(" %s contains box info: %i mols, first solvent mol is %i\n",
- parmName, molecules, firstSolvMol);
-- mprintf(" BOX: %lf %lf %lf %lf\n",Box[0],Box[1],Box[2],Box[3]);
-+ mprintf(" BOX: %lf %lf %lf | %lf %lf %lf\n",Box[0],Box[1],Box[2],Box[3],Box[4],Box[5]);
-+ if (BoxType==1)
-+ mprintf(" Box is orthogonal.\n");
-+ else
-+ mprintf(" Box is non-orthogonal.\n");
- }
- }
-
-@@ -686,6 +704,7 @@
- values = (int*) calloc(AMBERPOINTERS, sizeof(int));
- values[NATOM] = natom;
- values[NRES] = nres;
-+ values[IFBOX] = 0;
-
- if (debug>0)
- mprintf(" PDB contains %i atoms, %i residues, %i molecules.\n",
-@@ -799,6 +818,7 @@
- values[NRES] = nres;
- values[NBONH] = numbondsh;
- values[MBONA] = numbonds;
-+ values[IFBOX] = 0;
-
- mprintf(" Mol2 contains %i atoms, %i residues,\n", natom,nres);
- mprintf(" %i bonds to H, %i other bonds.\n", numbondsh,numbonds);
-@@ -806,6 +826,61 @@
- return 0;
- }
-
-+// ---------===========================================================---------
-+/*
-+ * AmberParm::SetBoxInfo()
-+ * Given 3 box lengths and an angle determine the box type and set
-+ * the box information. If called with negative beta, set no box.
-+ * Currently recognized betas:
-+ * 90.00 - Orthogonal
-+ * 109.47 - Truncated octahedral
-+ * 60.00 - Rhombic dodecahedron
-+ * Any other beta just sets all angles to beta and a warning is printed.
-+ */
-+int AmberParm::SetBoxInfo(double beta, double bx, double by, double bz) {
-+ int ifbox=0;
-+
-+ // Determine box type from beta (none, ortho, non-ortho (truncated oct/triclinic)
-+ if (beta<=0.0) {
-+ if (BoxType>0)
-+ mprintf(" %s: Removing box information.\n",parmName);
-+ BoxType=0;
-+ ifbox=0;
-+ Box[0]=0.0; Box[1]=0.0; Box[2]=0.0;
-+ Box[3]=0.0; Box[4]=0.0; Box[5]=0.0;
-+ } else if (beta == 90.0) {
-+ BoxType=1;
-+ ifbox=1;
-+ Box[0]=bx; Box[1]=by; Box[2]=bz;
-+ Box[3]=90.0; Box[4]=90.0; Box[5]=90.0;
-+ if (debug>0) mprintf(" %s: Setting box to be orthogonal.\n",parmName);
-+ } else if (beta > 109.47 && beta < 109.48) {
-+ BoxType=2;
-+ ifbox=2;
-+ Box[0]=bx; Box[1]=by; Box[2]=bz;
-+ //Box[3] = TRUNCOCTBETA;
-+ Box[3] = beta;
-+ Box[4]=Box[3]; Box[5]=Box[3];
-+ if (debug>0) mprintf(" %s: Setting box to be a truncated octahedron, angle is %lf\n",
-+ parmName,Box[3]);
-+ } else if (beta == 60.0) {
-+ BoxType=2;
-+ ifbox=1;
-+ Box[0]=bx; Box[1]=by; Box[2]=bz;
-+ Box[3]=60.0; Box[4]=90.0; Box[5]=60.0;
-+ if (debug>0)
-+ mprintf(" %s: Setting box to be a rhombic dodecahedron, alpha=gamma=60.0, beta=90.0\n",
-+ parmName);
-+ } else {
-+ BoxType=2;
-+ ifbox=1;
-+ Box[0]=bx; Box[1]=by; Box[2]=bz;
-+ Box[3]=beta; Box[4]=beta; Box[5]=beta;
-+ mprintf(" Warning: %s: Unrecognized box type, beta is %lf\n",beta);
-+ }
-+ return 0;
-+}
-+
- /*
- * AmberParm::AtomInfo()
- * Print parm information for atom.
-@@ -829,8 +904,8 @@
- */
- void AmberParm::Info(char *buffer) {
-
-- sprintf(buffer,"%i atoms, %i res, box %i, %i mol, %i solvent mol, %i frames",
-- natom,nres,ifbox,molecules,solventMolecules,parmFrames);
-+ sprintf(buffer,"%i atoms, %i res, boxtype %i, %i mol, %i solvent mol, %i frames",
-+ natom,nres,BoxType,molecules,solventMolecules,parmFrames);
- }
-
- // NOTE: The following atomToX functions do not do any memory checks!
-@@ -963,6 +1038,7 @@
- return bonds;
- }
-
-+// ---------===========================================================---------
- /*
- * AmberParm::modifyStateByMap()
- * Currently only intended for use with AtomMap.
-@@ -1028,24 +1104,21 @@
- // Set up new parm information
- newParm->natom = this->natom;
- newParm->nres = this->nres;
-- newParm->ifbox = this->ifbox;
- newParm->parmFrames = this->parmFrames;
-
- // Give mapped parm the same pindex as original parm
- newParm->pindex = this->pindex;
-
- // Copy box information
-- if (this->Box!=NULL) {
-- newParm->Box=(double*) malloc(4*sizeof(double));
-- for (int i=0; i<4; i++)
-- newParm->Box[i] = this->Box[i];
-- }
-+ for (int i=0; i<6; i++)
-+ newParm->Box[i] = this->Box[i];
-+ newParm->BoxType=this->BoxType;
-
- // Set values up
- // NOTE: Eventually set all pointers up?
- newParm->values[NATOM] = newParm->natom;
- newParm->values[NRES] = newParm->nres;
-- newParm->values[IFBOX] = newParm->ifbox;
-+ newParm->values[IFBOX] = this->values[IFBOX];
-
- return newParm;
- }
-@@ -1152,7 +1225,6 @@
- // Set up new parm information
- newParm->natom = j;
- newParm->nres = jres+1;
-- newParm->ifbox = this->ifbox;
- newParm->parmFrames = this->parmFrames;
- if (this->molecules>0)
- newParm->molecules = jmol+1;
-@@ -1184,26 +1256,25 @@
- }
-
- // Copy box information
-- if (this->Box!=NULL) {
-- newParm->Box=(double*) malloc(4*sizeof(double));
-- for (i=0; i<4; i++)
-- newParm->Box[i] = this->Box[i];
-- }
-+ for (i=0; i<6; i++)
-+ newParm->Box[i] = this->Box[i];
-+ newParm->BoxType=this->BoxType;
-
- // Set values up
- // NOTE: Eventually set all pointers up?
- newParm->values[NATOM] = newParm->natom;
- newParm->values[NRES] = newParm->nres;
-- newParm->values[IFBOX] = newParm->ifbox;
-+ newParm->values[IFBOX] = this->values[IFBOX];
-
- mprintf(" New parmtop contains %i atoms.\n",newParm->natom);
- mprintf(" %i residues.\n",newParm->nres);
- mprintf(" %i molecules.\n",newParm->molecules);
-- mprintf(" %i solvent molcules.\n",newParm->solventMolecules);
-+ mprintf(" %i solvent molecules.\n",newParm->solventMolecules);
-
- return newParm;
- }
-
-+// ---------===========================================================---------
- /*
- * AmberParm::DataToBuffer()
- * Return char buffer containing N data elements stored in I, D, or C with
-@@ -1267,6 +1338,7 @@
- char *buffer;
- int solvent_pointer[3];
- int atom;
-+ double parmBox[4];
-
- if (parmName==NULL) return 1;
-
-@@ -1346,7 +1418,7 @@
- }
-
- // SOLVENT POINTERS
-- if (ifbox>0) {
-+ if (values[IFBOX]>0) {
- PrintFlagFormat(&outfile, "%FLAG SOLVENT_POINTERS", "%FORMAT(3I8)");
- solvent_pointer[0]=finalSoluteRes;
- solvent_pointer[1]=molecules;
-@@ -1360,8 +1432,12 @@
- outfile.IO->Write(buffer, sizeof(char), BufferSize);
-
- // BOX DIMENSIONS
-+ parmBox[0] = Box[4]; // beta
-+ parmBox[1] = Box[0]; // boxX
-+ parmBox[2] = Box[1]; // boxY
-+ parmBox[3] = Box[2]; // boxZ
- PrintFlagFormat(&outfile, "%FLAG BOX_DIMENSIONS", "%FORMAT(5E16.8)");
-- buffer = DataToBuffer(buffer,"%FORMAT(5E16.8)", NULL, Box, NULL, 4);
-+ buffer = DataToBuffer(buffer,"%FORMAT(5E16.8)", NULL, parmBox, NULL, 4);
- outfile.IO->Write(buffer, sizeof(char), BufferSize);
- }
-
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/AmberParm.h amber11/AmberTools/src/cpptraj/src/AmberParm.h
---- amber11.orig/AmberTools/src/cpptraj/src/AmberParm.h 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/AmberParm.h 2011-10-25 15:01:28.117288634 +0300
-@@ -75,14 +75,14 @@
- int *resnums; // IPRES(NRES)
- int natom; // NATOM
- int nres; // NRES
-- int ifbox; // IFBOX
- int finalSoluteRes; // IPTRES
- int molecules; // NSPM
- int firstSolvMol; // NSPSOL
- int *atomsPerMol; // NSP(NSPM)
- double *mass; // AMASS(NATOM)
- double *charge; // CHARGE(NATOM)
-- double *Box; // OLDBETA, BOX(1), BOX(2), BOX(3)
-+ double Box[6]; // X, Y, Z, alpha, beta, gamma
-+ int BoxType; // 0: None, 1: Orthogonal, 2: Non-orthogonal
- // From Ptraj
- char *solventMask; // T for atoms in the solvent
- int solventMolecules; // number of solvent molecules
-@@ -96,6 +96,7 @@
- ~AmberParm();
- void ResName(char *, int);
- int OpenParm(char *);
-+ int SetBoxInfo(double,double,double,double);
- int SetSurfaceInfo();
- int SetSolventInfo();
- void AtomInfo(int);
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/AmberRestart.cpp amber11/AmberTools/src/cpptraj/src/AmberRestart.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/AmberRestart.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/AmberRestart.cpp 2011-10-25 15:01:28.125288626 +0300
-@@ -109,7 +109,7 @@
- frameSize+=frameSize;
-
- // If box coords are present, allocate extra space for them
-- if (isBox>0) {
-+ if (BoxType!=0) {
- numBoxCoords=6;
- frameSize+=((numBoxCoords*12)+1);
- }
-@@ -167,13 +167,12 @@
-
- // If 0 probably at EOF. No box or velo.
- // } else if (lineSize==0) {
-- isBox=0;
-+ BoxType=0;
- hasVelocity=0;
-
- // If 36 or 72 (+1 newline) box info.
- } else if (lineSize==37 || lineSize==73) {
-- isBox=1;
-- numBoxCoords = (lineSize-1) / 12;
-+ getBoxType(frameBuffer,lineSize);
- hasVelocity=0;
-
- // If filled framebuffer again, has velocity info. Check for box after velocity.
-@@ -182,15 +181,14 @@
- if (File->IO->Gets(buffer,82)==0) {
- lineSize=strlen(buffer);
- if (lineSize==37 || lineSize==73) {
-- isBox=1;
-- numBoxCoords = (lineSize-1) / 12;
-+ getBoxType(buffer,lineSize);
- } else {
- mprintf("Error: AmberRestart::SetupRead():\n");
- mprintf(" Expect only 3 or 6 box coords in box coord line.\n");
- return 1;
- }
- } else
-- isBox=0;
-+ BoxType=0;
-
- // Otherwise, who knows what was read?
- } else {
-@@ -202,12 +200,12 @@
-
- // Recalculate the frame size
- if (hasVelocity) frameSize+=frameSize;
-- if (isBox) frameSize+=( (numBoxCoords*12) + 1 );
-+ if (BoxType!=0) frameSize+=( (numBoxCoords*12) + 1 );
- frameBuffer=(char*) realloc(frameBuffer, frameSize*sizeof(char));
-
- if (debug > 0) {
-- mprintf(" Amber Restart isBox=%i hasVelocity=%i numBoxCoords=%i\n",
-- isBox,hasVelocity,numBoxCoords);
-+ mprintf(" Amber Restart BoxType=%i hasVelocity=%i numBoxCoords=%i\n",
-+ BoxType,hasVelocity,numBoxCoords);
- mprintf(" Amber Restart frameSize= %i\n",frameSize);
- }
-
-@@ -221,6 +219,20 @@
- }
-
- /*
-+ * AmberRestart::getBoxType()
-+ * Based on input buffer, determine box type and num box coords.
-+ */
-+void AmberRestart::getBoxType(char *boxline, int boxlineSize) {
-+ double box[6];
-+ numBoxCoords = (boxlineSize-1) / 12;
-+ if (numBoxCoords>3) {
-+ sscanf(boxline, "%8lf%8lf%8lf%8lf%8lf%8lf",box,box+1,box+2,box+3,box+4,box+5);
-+ CheckBoxType(box);
-+ } else
-+ BoxType = P->BoxType;
-+}
-+
-+/*
- * AmberRestart::getFrame()
- * Get the restart file frame. If velocities are present, read those too.
- */
-@@ -251,7 +263,7 @@
- //F->V->printAtomCoord(0);
- }
- // Convert box to Frame if present
-- if (isBox) {
-+ if (BoxType!=0) {
- if ( (bufferPosition = F->BufferToBox(bufferPosition, numBoxCoords, 12))==NULL ) {
- mprintf("Error: AmberRestart::getFrame: * detected in box coordinates of %s\n",
- trajfilename);
-@@ -287,7 +299,7 @@
- if (F->V!=NULL) // NOTE: Use hasVelocity in addition/instead?
- bufferPosition = F->V->FrameToBuffer(bufferPosition,"%12.7lf",12,6);
- // Write box to buffer
-- if (isBox)
-+ if (BoxType!=0)
- bufferPosition = F->BoxToBuffer(bufferPosition, numBoxCoords, "%12.7lf",12);
-
- //if (seekable) fseek(fp, titleSize+(set*frameSize),SEEK_SET);
-@@ -297,6 +309,8 @@
-
- File->IO->Close();
-
-+ currentFrame++;
-+
- return 0;
- }
-
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/AmberRestart.h amber11/AmberTools/src/cpptraj/src/AmberRestart.h
---- amber11.orig/AmberTools/src/cpptraj/src/AmberRestart.h 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/AmberRestart.h 2011-10-25 15:01:28.118288633 +0300
-@@ -14,6 +14,7 @@
-
- int SetupRead();
- int SetupWrite();
-+ void getBoxType(char *, int);
-
- public:
-
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/AmberRestartNC.cpp amber11/AmberTools/src/cpptraj/src/AmberRestartNC.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/AmberRestartNC.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/AmberRestartNC.cpp 2011-10-25 15:01:28.126288625 +0300
-@@ -60,15 +60,8 @@
- /*
- * AmberRestartNC::open()
- * Open up Netcdf restart file and set all dimension and variable IDs.
-- * This is done every time the file is opened up since Im not sure
-- * the variable IDs stay the same throughout each opening.
-- * Could eventually be separated.
-- * NOTE: Replace attrText allocs with static buffer?
- */
- int AmberRestartNC::open() {
-- char *attrText; // For checking conventions and version
-- int spatial; // For checking spatial dimensions
--
- mprintf("DEBUG: AmberRestartNC::open() called for %s, ncid=%i\n",File->filename,ncid);
- // If already open, return
- if (ncid!=-1) return 0;
-@@ -94,6 +87,23 @@
- // Netcdf files are always seekable
- seekable=1;
-
-+ return 0;
-+}
-+
-+/*
-+ * AmberRestartNC::SetupRead()
-+ * Set up netcdf restart file for reading, get all variable and dimension IDs.
-+ * Also check number of atoms against associated parmtop.
-+ * NOTE: Replace attrText allocs with static buffer?
-+ */
-+int AmberRestartNC::SetupRead() {
-+ char *attrText; // For checking conventions and version
-+ int spatial; // For checking spatial dimensions
-+ double box[6];
-+ size_t start[2], count[2];
-+
-+ if (open()) return 1;
-+
- // Get global attributes
- if (title==NULL) title = GetAttrText(ncid,NC_GLOBAL, "title");
- attrText = GetAttrText(ncid,NC_GLOBAL, "Conventions");
-@@ -147,20 +157,18 @@
- mprintf(" Netcdf restart time= %lf\n",restartTime);
-
- // Box info
-- // NOTE: If no box info found in parm should really try to determine correct
-- // box type from angles.
- if ( nc_inq_varid(ncid,"cell_lengths",&cellLengthVID)==NC_NOERR ) {
- if (checkNCerr(nc_inq_varid(ncid,"cell_angles",&cellAngleVID),
- "Getting cell angles.")!=0) return 1;
-- if (debug>0) mprintf(" Netcdf restart Box information found.\n");
-- if (P->ifbox==0) {
-- mprintf("Warning: Netcdf restart file contains box info but no box info found\n");
-- mprintf(" in associated parmfile %s; defaulting to orthogonal.\n",
-- P->parmName);
-- isBox=1;
-- } else {
-- isBox=P->ifbox;
-- }
-+ if (debug>0) mprintf(" Netcdf restart Box information found.\n");
-+ // Determine box type from angles
-+ start[0]=0; start[1]=0;
-+ count[0]=3; count[1]=0;
-+ if ( checkNCerr(nc_get_vara_double(ncid, cellLengthVID, start, count, box),
-+ "Getting cell lengths.")!=0 ) return 1;
-+ if ( checkNCerr(nc_get_vara_double(ncid, cellAngleVID, start, count, box+3),
-+ "Getting cell angles.")!=0 ) return 1;
-+ CheckBoxType(box);
- }
-
- // Replica Temperatures
-@@ -175,15 +183,6 @@
- //int cell_spatialDID, cell_angularDID;
- //int spatialVID, cell_spatialVID, cell_angularVID;
-
-- return 0;
--}
--
--/*
-- * AmberRestartNC::SetupRead()
-- * Just a frontend to open for now. Also check number of atoms.
-- */
--int AmberRestartNC::SetupRead() {
-- if (open()) return 1;
- if (ncatom!=P->natom) {
- mprintf("Warning: Number of atoms in NetCDF restart file %s (%i) does not\n",
- File->filename,ncatom);
-@@ -210,7 +209,7 @@
- */
- int AmberRestartNC::setupWriteForSet(int set) {
- int dimensionID[NC_MAX_VAR_DIMS];
-- size_t start[3], count[3];
-+ size_t start[2], count[2];
- char buffer[1024];
- char xyz[3];
- char abc[15] = { 'a', 'l', 'p', 'h', 'a',
-@@ -280,7 +279,7 @@
- "Defining cell angular variable.")) return 1;
-
- // Box Info
-- if (isBox>0) {
-+ if (BoxType!=0) {
- dimensionID[0]=cell_spatialDID;
- if (checkNCerr(nc_def_var(ncid,"cell_lengths",NC_DOUBLE,1,dimensionID,&cellLengthVID),
- "Defining cell length variable.")) return 1;
-@@ -388,9 +387,9 @@
- }
-
- // Read box info
-- if (isBox!=0) {
-- count [0]=3;
-- count [1]=0;
-+ if (BoxType!=0) {
-+ count[0]=3;
-+ count[1]=0;
- if ( checkNCerr(nc_get_vara_double(ncid, cellLengthVID, start, count, F->box),
- "Getting cell lengths.")!=0 ) return 1;
- if ( checkNCerr(nc_get_vara_double(ncid, cellAngleVID, start, count, &(F->box[3])),
-@@ -425,7 +424,7 @@
- }
-
- // write box
-- if (isBox>0 && cellLengthVID!=-1) {
-+ if (BoxType!=0 && cellLengthVID!=-1) {
- count[0]=3;
- count[1]=0;
- if (checkNCerr(nc_put_vara_double(ncid,cellLengthVID,start,count,F->box),
-@@ -439,6 +438,8 @@
- // Close file for this set
- close();
-
-+ currentFrame++;
-+
- return 0;
- }
-
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/AmberTraj.cpp amber11/AmberTools/src/cpptraj/src/AmberTraj.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/AmberTraj.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/AmberTraj.cpp 2011-10-25 15:01:28.226288534 +0300
-@@ -104,16 +104,18 @@
- rprintf("Error: AmberTraj::getFrame: * detected in coordinates of %s\n",trajfilename);
- return 1;
- }
-- if (isBox) {
-+ if (BoxType!=0) {
- if ( (bufferPosition = F->BufferToBox(bufferPosition,numBoxCoords,8))==NULL ) {
- rprintf("Error: AmberTraj::getFrame: * detected in box coordinates of %s\n",
- trajfilename);
- return 1;
- }
-- // Set box angles to parmtop default
-- F->box[3] = P->Box[0];
-- F->box[4] = P->Box[0];
-- F->box[5] = P->Box[0];
-+ // Set box angles to parmtop default if not read in
-+ if (numBoxCoords==3) {
-+ F->box[3] = P->Box[3];
-+ F->box[4] = P->Box[4];
-+ F->box[5] = P->Box[5];
-+ }
- }
- return 0;
- }
-@@ -138,20 +140,22 @@
- }
-
- bufferPosition = F->FrameToBuffer(bufferPosition,"%8.3lf",8,10);
-- if (isBox)
-+ if (BoxType!=0)
- bufferPosition = F->BoxToBuffer(bufferPosition,numBoxCoords,"%8.3lf",8);
-
- outFrameSize = (int) (bufferPosition - frameBuffer);
-
- //if (seekable)
- // NOTE: Seek only needs to happen when traj file changes
-- offset = (off_t) set;
-- offset *= (off_t) outFrameSize;
-- offset += (off_t) titleSize;
-- File->IO->Seek( offset);
-+ //offset = (off_t) currentFrame;
-+ //offset *= (off_t) outFrameSize;
-+ //offset += (off_t) titleSize;
-+ //File->IO->Seek( offset);
-
- if (File->IO->Write(frameBuffer,sizeof(char),outFrameSize)) return 1;
-
-+ currentFrame++;
-+
- return 0;
- }
-
-@@ -163,8 +167,10 @@
- int AmberTraj::SetupRead() {
- char buffer[BUFFER_SIZE];
- int frame_lines;
-- int lineSize;
-- long long int file_size, frame_size;
-+ int lineSize, maxi;
-+ bool sizeFound;
-+ long long int file_size, frame_size, title_size, tmpfsize;
-+ double box[6]; // For checking box coordinates
-
- // Attempt to open the file. open() sets the title and titleSize
- if (open()) return 1;
-@@ -219,7 +225,7 @@
-
- if (strncmp(buffer,"REMD",4)==0 || strncmp(buffer,"HREMD",5)==0) {
- // REMD header - no box coords
-- isBox=0;
-+ BoxType=0;
- } else if (lineSize<80) {
- /* Line is shorter than 80 chars, indicates box coords.
- * Length of the line HAS to be a multiple of 8, and probably could be
-@@ -228,53 +234,108 @@
- */
- if (debug>0) mprintf(" Box line is %i chars.\n",lineSize);
- if ( ((lineSize-1)%24)!=0 ) {
-- rprintf("Error in box coord line.\nExpect only 3 or 6 box coords.\n");
-+ mprintf("Error in box coord line. Expect only 3 or 6 box coords.\n");
- return 1;
- }
- numBoxCoords=(lineSize-1) / 8;
- if (debug>0) mprintf(" Detected %i box coords.\n",numBoxCoords);
-- frameSize+=lineSize;
-- // Reallocate frame buffer accordingly
-- frameBuffer=(char*) realloc(frameBuffer,frameSize * sizeof(char));
-- if (P->ifbox==0) {
-- rprintf( "Warning: Box coords detected in trajectory but not defined in topology!\n");
-- rprintf(" Setting box type to rectangular.\n");
-- isBox=1;
-+ // Determine box type based on angles. Angles are usually not printed
-+ // for orthogonal and truncated octahedral boxes, but check here just
-+ // to be safe. If no angles present use parmtop Box Type.
-+ if (numBoxCoords>3) {
-+ sscanf(buffer, "%8lf%8lf%8lf%8lf%8lf%8lf",box,box+1,box+2,box+3,box+4,box+5);
-+ CheckBoxType(box);
- } else {
-- isBox = P->ifbox;
-+ BoxType = P->BoxType;
-+ // If box coords are present in traj but no box in parm, print warning
-+ if (BoxType == 0)
-+ mprintf("Warning: %s has box coordinates but no box info in %s\n",
-+ trajfilename,P->parmName);
- }
-+ // Reallocate frame buffer accordingly
-+ frameSize+=lineSize;
-+ frameBuffer=(char*) realloc(frameBuffer,frameSize * sizeof(char));
- }
- }
-
-- /* Calculate number of frames. If not possible and this is not a
-- * compressed file the trajectory is probably corrupted. Frames will
-- * be read until EOF.
-- * NOTE: It is necessary to use the stat command to get the file size
-- * instead of fseek in case the file has been popen'd.
-- * NOTE: Need the uncompressed file size!
-- */
-- if (File->uncompressed_size>0)
-- file_size = File->uncompressed_size;
-- else
-- file_size=File->file_size;
-+ // Calculate Frames and determine seekable. If not possible and this is not a
-+ // compressed file the trajectory is probably corrupted. Frames will
-+ // be read until EOF (Frames = -1).
- if (debug>0)
-- rprintf("Title offset=%i FrameSize=%i UncompressedFileSize=%lli\n",
-- titleSize,frameSize,file_size);
-- frame_size = (long long int) titleSize;
-- file_size = file_size - frame_size; // Subtract title size from file total size.
-+ rprintf("Title offset=%i FrameSize=%i Size=%lu UncompressedFileSize=%lu\n",
-+ titleSize,frameSize,File->file_size,File->uncompressed_size);
-+ title_size = (long long int) titleSize;
- frame_size = (long long int) frameSize;
-- Frames = (int) (file_size / frame_size);
--
-- if ( (file_size % frame_size) == 0 ) {
-- seekable = 1;
-- stop = Frames;
-+ // -----==== AMBER TRAJ COMPRESSED ====------
-+ if (File->compressType!=NONE) {
-+ // If the uncompressed size of compressed file is reported as <= 0,
-+ // uncompressed size cannot be determined. Read coordinates until
-+ // EOF.
-+ if (File->uncompressed_size <= 0) {
-+ mprintf("Warning: %s: Uncompressed size of trajectory could not be determined.\n",
-+ File->filename);
-+ if (File->compressType==BZIP2)
-+ mprintf(" (This is normal for bzipped files)\n");
-+ mprintf(" Number of frames could not be calculated.\n");
-+ mprintf(" Frames will be read until EOF.\n");
-+ Frames = -1;
-+ seekable = false;
-+ } else {
-+ file_size = File->uncompressed_size;
-+ file_size = file_size - title_size;
-+ // Frame calculation for large gzip files
-+ // If uncompressed size is less than compressed size, uncompressed
-+ // size is likely > 4GB.
-+ if (File->compressType == GZIP && file_size < (long long int) File->file_size) {
-+ // Since this is gzip compressed, if the file_size % frame size != 0,
-+ // it could be that the uncompressed filesize > 4GB. Since
-+ // ISIZE = uncompressed % 2^32,
-+ // try ((file_size + (2^32 * i)) % frame_size) and see if any are 0.
-+ if ( (file_size % frame_size) != 0) {
-+ // Determine the maximum number of iterations to try based on the
-+ // fact that Amber trajectories typically compress about 3x with
-+ // gzip.
-+ tmpfsize = ((File->file_size * 4) - File->uncompressed_size) / 4294967296LL;
-+ maxi = (int) tmpfsize;
-+ maxi++;
-+ if (debug>1)
-+ mprintf("\tLooking for uncompressed gzip size > 4GB, %i iterations.\n",maxi);
-+ tmpfsize = 0;
-+ sizeFound=false;
-+ for (int i = 0; i < maxi; i++ ) {
-+ tmpfsize = (4294967296LL * i) + file_size;
-+ if ( (tmpfsize % frame_size) == 0) {sizeFound=true; break;}
-+ }
-+ if (sizeFound) file_size = tmpfsize;
-+ }
-+ }
-+ if ((file_size % frame_size) == 0) {
-+ Frames = (int) (file_size / frame_size);
-+ seekable = true;
-+ } else {
-+ mprintf("Warning: %s: Number of frames in compressed traj could not be determined.\n",
-+ File->filename);
-+ mprintf(" Frames will be read until EOF.\n");
-+ Frames=-1;
-+ seekable=false;
-+ }
-+ }
-+ // ----==== AMBER TRAJ NOT COMPRESSED ====----
- } else {
-- stop = -1;
-- Frames = -1;
-- seekable = 0;
-- mprintf(" Error: Could not predict # frames in %s. This usually indicates \n",File->filename);
-- mprintf(" a corrupted trajectory. Frames will be read until EOF.\n");
-+ file_size = File->file_size;
-+ file_size = file_size - title_size;
-+ Frames = (int) (file_size / frame_size);
-+ if ( (file_size % frame_size) == 0 ) {
-+ seekable = true;
-+ } else {
-+ mprintf("Warning: %s: Could not accurately predict # frames. This usually \n",
-+ File->filename);
-+ mprintf(" indicates a corrupted trajectory. Will attempt to read %i frames.\n",
-+ Frames);
-+ seekable=false;
-+ }
- }
-+ stop = Frames;
-
- if (debug>0)
- rprintf("Atoms: %i FrameSize: %i TitleSize: %i NumBox: %i Seekable: %i Frames: %i\n\n",
-@@ -315,7 +376,9 @@
- frameSize += hasREMD;
-
- // If box coords are present, allocate extra space for them
-- if (isBox>0) {
-+ // NOTE: Currently only writing box lengths for all box types. This means
-+ // writing triclinic box type is currently not supported.
-+ if (BoxType!=0) {
- numBoxCoords=3; // Only write out box lengths for trajectories
- frameSize+=((numBoxCoords*8)+1);
- }
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/ArgList.cpp amber11/AmberTools/src/cpptraj/src/ArgList.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/ArgList.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/ArgList.cpp 2011-10-25 15:01:28.101288648 +0300
-@@ -146,8 +146,16 @@
- return argline;
- }
-
--/*
-- * ArgList::Command()
-+/* ArgList::Arg()
-+ * Return arg at specified position.
-+ */
-+char *ArgList::Arg(int pos) {
-+ if (pos>-1 && pos<nargs)
-+ return arglist[pos];
-+ return NULL;
-+}
-+
-+/* ArgList::Command()
- * Check the first arg for command
- * Mark and return. Return even if marked.
- */
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/ArgList.h amber11/AmberTools/src/cpptraj/src/ArgList.h
---- amber11.orig/AmberTools/src/cpptraj/src/ArgList.h 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/ArgList.h 2011-10-25 15:01:28.102288647 +0300
-@@ -15,6 +15,7 @@
- void Add(char *);
- void print();
- char *ArgLine();
-+ char *Arg(int);
-
- char *Command();
- int CommandIs(const char *);
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/AtomMap.cpp amber11/AmberTools/src/cpptraj/src/AtomMap.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/AtomMap.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/AtomMap.cpp 2011-10-25 15:01:28.081288667 +0300
-@@ -6,6 +6,7 @@
- #include "TorsionRoutines.h"
- // DEBUG
- #include "Mol2File.h"
-+#include <cstdio>
-
- //--------- PRIVATE ROUTINES ---------------------------------------
- /*
-@@ -463,21 +464,27 @@
- // Write atommap out as a mol2 file, useful for checking bond info
- void atommap::WriteMol2(char *m2filename) {
- Mol2File outfile;
-- int *Selected;
-+ AtomMask M1;
- // Temporary parm to play with
- AmberParm *tmpParm;
-+ Frame *tmpFrame;
-
- // Create mask containing all atoms
-- Selected = (int*) malloc(natom*sizeof(int));
-- for (int atom=0; atom<natom; atom++) Selected[atom]=atom;
-+ //for (int atom=0; atom<natom; atom++) Selected[atom]=atom;
- // Fake strip, just use as crap way to copy
-- tmpParm = P->modifyStateByMask(Selected,natom);
-- free(Selected);
-+ //tmpParm = P->modifyStateByMask(Selected,natom);
-+ //free(Selected);
- // Modify the bonds array to include this info
-- tmpParm->ResetBondInfo();
-- for (int atom=0; atom<natom; atom++)
-- for (int bond=0; bond < M[atom].nbond; bond++)
-- tmpParm->AddBond(atom, M[atom].bond[bond], 0);
-+ //tmpParm->ResetBondInfo();
-+ //for (int atom=0; atom<natom; atom++)
-+ // for (int bond=0; bond < M[atom].nbond; bond++)
-+ // tmpParm->AddBond(atom, M[atom].bond[bond], 0);
-+ // Create mask with all mapped atoms
-+ for (int atom=0; atom<natom; atom++) {if (M[atom].isMapped) M1.AddAtom(atom);}
-+ // Strip so only mapped atoms remain
-+ tmpParm = P->modifyStateByMask(M1.Selected,M1.Nselected);
-+ tmpFrame = new Frame(M1.Nselected,NULL);
-+ tmpFrame->SetFrameFromMask(F, &M1);
-
- // Trajectory Setup
- outfile.File=new PtrajFile();
-@@ -485,13 +492,14 @@
- outfile.trajfilename = outfile.File->basefilename;
- outfile.debug=debug;
- outfile.SetTitle(m2filename);
-- outfile.P=P;
-+ outfile.P=tmpParm;
- outfile.SetupWrite();
- outfile.open();
-- outfile.F=F;
-+ outfile.F=tmpFrame;
- outfile.writeFrame(0);
- outfile.close();
- delete tmpParm;
-+ delete tmpFrame;
- }
- // ============================================================================
-
-@@ -1032,6 +1040,13 @@
- int iterations=0;
-
- numAtomsMapped=MapUniqueAtoms(Ref, Tgt);
-+ // DEBUG
-+ //char name[1024];
-+ //sprintf(name,"Ref.%i.mol2",iterations);
-+ //Ref->WriteMol2(name);
-+ //sprintf(name,"Tgt.%i.mol2",iterations);
-+ //Tgt->WriteMol2(name);
-+ // END DEBUG
- if (debug>0)
- mprintf("* MapUniqueAtoms: %i atoms mapped.\n",numAtomsMapped);
- if (numAtomsMapped==0) return 1;
-@@ -1045,17 +1060,35 @@
- iterations++;
- // First assign based on bonds to unique (already mapped) atoms.
- numAtomsMapped=mapBondsToUnique(Ref,Tgt);
-+ // DEBUG
-+ //sprintf(name,"Ref.%i.u.mol2",iterations);
-+ //Ref->WriteMol2(name);
-+ //sprintf(name,"Tgt.%i.u.mol2",iterations);
-+ //Tgt->WriteMol2(name);
-+ // END DEBUG
- if (debug>0)
- mprintf("* [%3i] mapBondsToUnique: %i atoms mapped.\n",iterations,numAtomsMapped);
- if (numAtomsMapped<0) return 1;
- // Next assign based on chirality
- numAtomsMapped=mapChiral(Ref,Tgt);
-+ // DEBUG
-+ //sprintf(name,"Ref.%i.c.mol2",iterations);
-+ //Ref->WriteMol2(name);
-+ //sprintf(name,"Tgt.%i.c.mol2",iterations);
-+ //Tgt->WriteMol2(name);
-+ // END DEBUG
- if (debug>0)
- mprintf("* [%3i] mapChiral: %i atoms mapped.\n",iterations,numAtomsMapped);
- if (numAtomsMapped<0) return 1;
- if (numAtomsMapped>0) continue;
- // Last assign based on index/element
- numAtomsMapped=mapByIndex(Ref,Tgt);
-+ // DEBUG
-+ //sprintf(name,"Ref.%i.i.mol2",iterations);
-+ //Ref->WriteMol2(name);
-+ //sprintf(name,"Tgt.%i.i.mol2",iterations);
-+ //Tgt->WriteMol2(name);
-+ // END DEBUG
- if (debug>0)
- mprintf("* [%3i] mapByIndex: %i atoms mapped.\n",iterations,numAtomsMapped);
- if (numAtomsMapped<0) return 1;
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/CoordFileList.cpp amber11/AmberTools/src/cpptraj/src/CoordFileList.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/CoordFileList.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/CoordFileList.cpp 2011-10-25 15:01:28.201288557 +0300
-@@ -1,4 +1,5 @@
- // CoordFileList
-+#include <cstddef>
- #include <cstring> // strcmp
- #include "CoordFileList.h"
- #include "CpptrajStdio.h"
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/cpptrajdepend amber11/AmberTools/src/cpptraj/src/cpptrajdepend
---- amber11.orig/AmberTools/src/cpptraj/src/cpptrajdepend 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/cpptrajdepend 2011-10-25 15:01:28.107288643 +0300
-@@ -2,7 +2,7 @@
- AmberNetcdf.o : AmberNetcdf.cpp AmberNetcdf.h AmberParm.h ArgList.h AtomMask.h BaseFileIO.h CpptrajStdio.h Frame.h NetcdfRoutines.h PtrajFile.h Range.h TrajFile.h
- AmberParm.o : AmberParm.cpp AmberParm.h BaseFileIO.h CpptrajStdio.h Mol2FileRoutines.h PDBfileRoutines.h PtrajFile.h
- AmberTraj.o : AmberTraj.cpp AmberParm.h AmberTraj.h ArgList.h AtomMask.h BaseFileIO.h CpptrajStdio.h Frame.h PtrajFile.h Range.h TrajFile.h
--TrajFile.o : TrajFile.cpp AmberParm.h ArgList.h AtomMask.h BaseFileIO.h CpptrajStdio.h Frame.h PtrajFile.h PtrajMpi.h Range.h TrajFile.h
-+TrajFile.o : TrajFile.cpp AmberParm.h ArgList.h AtomMask.h BaseFileIO.h CpptrajStdio.h Frame.h PtrajFile.h Range.h TrajFile.h
- Frame.o : Frame.cpp AmberParm.h AtomMask.h BaseFileIO.h CpptrajStdio.h DistRoutines.h Frame.h PtrajFile.h TorsionRoutines.h vectormath.h
- PtrajState.o : PtrajState.cpp Action.h AmberParm.h ArgList.h AtomMask.h BaseFileIO.h CoordFileList.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h Frame.h FrameList.h ParmFileList.h PtrajActionList.h PtrajFile.h PtrajMpi.h PtrajState.h Range.h ReferenceList.h TrajFile.h TrajinList.h TrajoutList.h
- ArgList.o : ArgList.cpp ArgList.h CpptrajStdio.h
-@@ -13,7 +13,7 @@
- TrajoutList.o : TrajoutList.cpp AmberParm.h ArgList.h AtomMask.h BaseFileIO.h CoordFileList.h CpptrajStdio.h Frame.h ParmFileList.h PtrajFile.h Range.h TrajFile.h TrajoutList.h
- ReferenceList.o : ReferenceList.cpp AmberParm.h ArgList.h AtomMask.h BaseFileIO.h CoordFileList.h CpptrajStdio.h Frame.h FrameList.h ParmFileList.h PtrajFile.h Range.h ReferenceList.h TrajFile.h
- CoordFileList.o : CoordFileList.cpp AmberNetcdf.h AmberParm.h AmberRestart.h AmberRestartNC.h AmberTraj.h ArgList.h AtomMask.h BaseFileIO.h Conflib.h CoordFileList.h CpptrajStdio.h Frame.h Mol2File.h PDBfile.h ParmFileList.h PtrajFile.h Range.h RemdTraj.h TrajFile.h TrajinList.h
--PtrajActionList.o : PtrajActionList.cpp Action.h Action_Angle.h Action_Center.h Action_Closest.h Action_DSSP.h Action_Dihedral.h Action_Distance.h Action_Hbond.h Action_Image.h Action_Mask.h Action_NAstruct.h Action_Outtraj.h Action_Pucker.h Action_Radgyr.h Action_Rmsd.h Action_Strip.h Action_Surf.h AmberParm.h ArgList.h AtomMap.h AtomMask.h AxisType.h BaseFileIO.h CoordFileList.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h Frame.h FrameList.h ParmFileList.h PtrajActionList.h PtrajFile.h Range.h TrajFile.h TrajoutList.h
-+PtrajActionList.o : PtrajActionList.cpp Action.h Action_Angle.h Action_Center.h Action_Closest.h Action_DSSP.h Action_Dihedral.h Action_Distance.h Action_Hbond.h Action_Image.h Action_Mask.h Action_NAstruct.h Action_Outtraj.h Action_Pucker.h Action_Radgyr.h Action_Rms2d.h Action_Rmsd.h Action_Strip.h Action_Surf.h AmberParm.h ArgList.h AtomMap.h AtomMask.h AxisType.h BaseFileIO.h CoordFileList.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h Frame.h FrameList.h ParmFileList.h PtrajActionList.h PtrajFile.h Range.h TrajFile.h TrajoutList.h
- DataSet.o : DataSet.cpp CpptrajStdio.h DataSet.h
- DataSetList.o : DataSetList.cpp CpptrajStdio.h DataSet.h DataSetList.h intDataSet.h mapDataSet.h stringDataSet.h
- vectormath.o : vectormath.cpp CpptrajStdio.h vectormath.h
-@@ -23,9 +23,9 @@
- DataFile.o : DataFile.cpp BaseFileIO.h CpptrajStdio.h DataFile.h DataSet.h PtrajFile.h
- DataFileList.o : DataFileList.cpp BaseFileIO.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h PtrajFile.h
- PDBfile.o : PDBfile.cpp AmberParm.h ArgList.h AtomMask.h BaseFileIO.h CpptrajStdio.h Frame.h PDBfile.h PDBfileRoutines.h PtrajFile.h Range.h TrajFile.h
--PtrajFile.o : PtrajFile.cpp BaseFileIO.h Bzip2File.h CpptrajStdio.h GzipFile.h MpiFile.h NetcdfRoutines.h PDBfileRoutines.h PtrajFile.h PtrajMpi.h StdFile.h
-+PtrajFile.o : PtrajFile.cpp BaseFileIO.h Bzip2File.h CpptrajStdio.h GzipFile.h Mol2FileRoutines.h MpiFile.h NetcdfRoutines.h PDBfileRoutines.h PtrajFile.h PtrajMpi.h StdFile.h
- PDBfileRoutines.o : PDBfileRoutines.cpp PDBfileRoutines.h
--AtomMap.o : AtomMap.cpp Action.h AmberParm.h ArgList.h AtomMap.h AtomMask.h BaseFileIO.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h Frame.h FrameList.h PDBfileRoutines.h ParmFileList.h PtrajFile.h TorsionRoutines.h
-+AtomMap.o : AtomMap.cpp Action.h AmberParm.h ArgList.h AtomMap.h AtomMask.h BaseFileIO.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h Frame.h FrameList.h Mol2File.h ParmFileList.h PtrajFile.h Range.h TorsionRoutines.h TrajFile.h
- BaseFileIO.o : BaseFileIO.cpp BaseFileIO.h PtrajMpi.h
- StdFile.o : StdFile.cpp BaseFileIO.h StdFile.h
- GzipFile.o : GzipFile.cpp BaseFileIO.h CpptrajStdio.h GzipFile.h
-@@ -62,3 +62,4 @@
- Action_Pucker.o : Action_Pucker.cpp Action.h Action_Pucker.h AmberParm.h ArgList.h AtomMask.h BaseFileIO.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h Frame.h FrameList.h ParmFileList.h PtrajFile.h
- Range.o : Range.cpp ArgList.h CpptrajStdio.h Range.h
- Action_Outtraj.o : Action_Outtraj.cpp Action.h Action_Outtraj.h AmberParm.h ArgList.h AtomMask.h BaseFileIO.h CoordFileList.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h Frame.h FrameList.h ParmFileList.h PtrajFile.h PtrajMpi.h Range.h TrajFile.h TrajoutList.h
-+Action_Rms2d.o : Action_Rms2d.cpp Action.h Action_Rms2d.h AmberParm.h ArgList.h AtomMask.h BaseFileIO.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h Frame.h FrameList.h ParmFileList.h PtrajFile.h
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/DataFile.cpp amber11/AmberTools/src/cpptraj/src/DataFile.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/DataFile.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/DataFile.cpp 2011-10-25 15:01:28.098288651 +0300
-@@ -65,8 +65,49 @@
- isInverted=true;
- }
-
--/*
-- * DataFile::AddSet()
-+/* DataFile::SetPrecision()
-+ * Set precision of the specified dataset to width.precision. If '*' specified
-+ * set for all datasets in file.
-+ */
-+void DataFile::SetPrecision(char *dsetName, int widthIn, int precisionIn) {
-+ int precision, dset;
-+ DataSet *Dset = NULL;
-+
-+ if (dsetName==NULL) {
-+ mprintf("Error: SetPrecision must be called with dataset name or '*'.\n");
-+ return;
-+ }
-+ if (widthIn<1) {
-+ mprintf("Error: SetPrecision (%s): Cannot set width < 1.\n",filename);
-+ return;
-+ }
-+ precision=precisionIn;
-+ if (precisionIn<0) precision=0;
-+ // If <dsetName>=='*' specified set precision for all data sets
-+ if (dsetName[0]=='*') {
-+ mprintf(" Setting width.precision for all sets in %s to %i.%i\n",
-+ filename,widthIn,precision);
-+ for (dset=0; dset<Nsets; dset++)
-+ SetList[dset]->SetPrecision(widthIn,precision);
-+
-+ // Otherwise find dataset <dsetName> and set precision
-+ } else {
-+ mprintf(" Setting width.precision for dataset %s to %i.%i\n",
-+ dsetName,widthIn,precision);
-+ for (dset=0; dset<Nsets; dset++) {
-+ if ( strcmp(SetList[dset]->Name(), dsetName)==0 ) {
-+ Dset=SetList[dset];
-+ break;
-+ }
-+ }
-+ if (Dset!=NULL)
-+ Dset->SetPrecision(widthIn,precision);
-+ else
-+ mprintf("Error: Dataset %s not found in datafile %s\n",dsetName,filename);
-+ }
-+}
-+
-+/* DataFile::AddSet()
- * Add given set to this datafile
- */
- int DataFile::AddSet(DataSet *D) {
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/DataFile.h amber11/AmberTools/src/cpptraj/src/DataFile.h
---- amber11.orig/AmberTools/src/cpptraj/src/DataFile.h 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/DataFile.h 2011-10-25 15:01:28.098288651 +0300
-@@ -30,6 +30,7 @@
- void SetXlabel(char*);
- void SetInverted();
- void SetNoXcol();
-+ void SetPrecision(char *, int, int);
- int AddSet(DataSet *);
- int NameIs(char *);
- void DataSetNames();
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/DataFileList.cpp amber11/AmberTools/src/cpptraj/src/DataFileList.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/DataFileList.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/DataFileList.cpp 2011-10-25 15:01:28.201288557 +0300
-@@ -1,4 +1,5 @@
- // DataFileList
-+#include <cstddef>
- #include "DataFileList.h"
- #include "CpptrajStdio.h"
-
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/DataSet.cpp amber11/AmberTools/src/cpptraj/src/DataSet.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/DataSet.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/DataSet.cpp 2011-10-25 15:01:28.094288655 +0300
-@@ -1,6 +1,7 @@
- // DataSet
- #include <cstdlib>
- #include <cstring>
-+#include <cstdio> // sprintf
- #include "DataSet.h"
- #include "CpptrajStdio.h"
-
-@@ -11,12 +12,73 @@
- N=0;
- isDynamic=false;
- current=0;
-+ width = 0;
-+ precision = 0;
-+ format = NULL;
-+ dType = UNKNOWN_DATA;
- }
-
- // DESTRUCTOR
- DataSet::~DataSet() {
- //fprintf(stderr,"DataSet Destructor\n");
- if (name!=NULL) free(name);
-+ if (format!=NULL) free(format);
-+}
-+
-+/*
-+ * DataSet::setFormatString()
-+ * Set up the output format string for each data element based on the given
-+ * dataType and the current width, and precision.
-+ */
-+void DataSet::setFormatString() {
-+ size_t stringWidth = 0;
-+ int wWidth = 0;
-+ int pWidth = 0;
-+
-+ if (format!=NULL) {free(format); format=NULL;}
-+
-+ // Calc num of chars necessary to hold width
-+ wWidth = (width / 10) + 1;
-+
-+ switch (dType) {
-+ case DOUBLE :
-+ // Calc num of chars necessary to hold precision
-+ pWidth = (precision / 10) + 1;
-+ // String fmt: " %w.plf\0"
-+ stringWidth = pWidth + wWidth + 6;
-+ format = (char*) malloc( stringWidth * sizeof(char) );
-+ sprintf(format, " %%%i.%ilf", width, precision);
-+ break;
-+ case STRING :
-+ // String fmt: " %s"
-+ format = (char*) malloc( 4 * sizeof(char) );
-+ strcpy(format, " %s");
-+ break;
-+ case INT :
-+ // String fmt: " %wi"
-+ stringWidth = wWidth + 4;
-+ format = (char*) malloc( stringWidth * sizeof(char) );
-+ sprintf(format, " %%%ii", width);
-+ break;
-+ case UNKNOWN_DATA :
-+ mprintf("Internal Error: setFormatString called with unknown data type.\n");
-+ }
-+
-+ if (format==NULL)
-+ mprintf("Error: setFormatString: Could not allocate memory for string.\n");
-+ // DEBUG
-+ //else
-+ // mprintf("DEBUG: Format string: [%s]\n",format);
-+}
-+
-+/*
-+ * DataSet::SetPrecision()
-+ * Set dataset width and precision and recalc output format string.
-+ */
-+void DataSet::SetPrecision(int widthIn, int precisionIn) {
-+ width=widthIn;
-+ precision=precisionIn;
-+ setFormatString();
- }
-
- /*
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/DataSet.h amber11/AmberTools/src/cpptraj/src/DataSet.h
---- amber11.orig/AmberTools/src/cpptraj/src/DataSet.h 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/DataSet.h 2011-10-25 15:01:28.103288646 +0300
-@@ -36,12 +36,18 @@
- class DataSet {
- protected:
- char *name; // Name of the dataset
-+ dataType dType; // The dataset type
- int N; // Number of data elements
- int current; // The current data element
-+ int width; // The output width of a data element
-+ int precision; // The output precision of a data element (if applicable)
-+ char *format; // Format of output
-+
- bool isDynamic; // True : N is not known, reallocate as N increases
- // False: N is known, allocate for N
- // If not isDynamic, Allocate will reserve space for N data elements
- virtual int Allocate( ) { return 0; }
-+ void setFormatString();
-
- public:
-
-@@ -51,13 +57,16 @@
- virtual int Xmax() { return 0; }
- virtual int isEmpty(int) { return 0; }
- virtual void Add( int, void * ) { return; }
-+ virtual int Get( void *, int ) { return 1; }
- virtual char *Write(char*, int) { return 0; }
- virtual int Width() { return 0; }
- virtual int Sync() { return 0; }
-
-+ void SetPrecision(int,int);
- int Setup(char*,int);
- void Info();
- char *Name() { return name; }
- int CheckSet();
-+ dataType Type() {return dType;}
- };
- #endif
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Frame.cpp amber11/AmberTools/src/cpptraj/src/Frame.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/Frame.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Frame.cpp 2011-10-25 15:01:28.120288631 +0300
-@@ -60,8 +60,38 @@
- if (Mass!=NULL) free(Mass);
- }
-
--/*
-- * Frame::Copy()
-+/* Frame::ZeroCoords()
-+ * Set all coords to 0.0
-+ */
-+void Frame::ZeroCoords() {
-+ for (int coord=0; coord < N; coord++)
-+ X[coord]=0.0;
-+}
-+
-+/* Frame::AddCoord()
-+ * Add the coord values from the input frame to the coord values of
-+ * this frame.
-+ */
-+void Frame::AddCoord(Frame *FrameIn) {
-+ if (FrameIn->N != this->N) {
-+ mprintf("Error: Frame::AddCoord: Attempting to add %i coords to %i coords.\n",
-+ FrameIn->N,this->N);
-+ } else {
-+ for (int coord=0; coord < N; coord++)
-+ this->X[coord] += FrameIn->X[coord];
-+ }
-+}
-+
-+/* Frame::Divide()
-+ * Divide all coord values by input. Dont do it if the number is too small.
-+ */
-+void Frame::Divide(double divisor) {
-+ if (divisor < SMALL) return;
-+ for (int coord=0; coord < N; coord++)
-+ X[coord] /= divisor;
-+}
-+
-+/* Frame::Copy()
- * Return a copy of the frame
- */
- Frame *Frame::Copy() {
-@@ -423,21 +453,21 @@
- * Based on useMassIn, calculate geometric center (false) or center of mass
- * (true) of the atoms in each mask.
- */
--double Frame::DIST2(AtomMask *Mask1, AtomMask *Mask2, bool useMassIn, int ifbox,
-+double Frame::DIST2(AtomMask *Mask1, AtomMask *Mask2, bool useMassIn, int boxType,
- double *ucell, double *recip) {
- double a1[3], a2[3];
-
- COM(Mask1, a1, useMassIn);
- COM(Mask2, a2, useMassIn);
-
-- if (ifbox == 0)
-+ if (boxType == 0)
- return DIST2_NoImage(a1, a2);
-- else if (ifbox == 1)
-+ else if (boxType == 1)
- return DIST2_ImageOrtho(a1, a2, this->box);
-- else if (ifbox == 2)
-+ else if (boxType == 2)
- return DIST2_ImageNonOrtho(a1, a2, ucell, recip);
-
-- mprintf(" Error: Frame::DIST: Unrecognized box type (%i)\n.", ifbox);
-+ mprintf(" Error: Frame::DIST: Unrecognized box type (%i)\n.", boxType);
-
- return (-1.0);
- }
-@@ -445,8 +475,11 @@
- /*
- * Frame::DIST2()
- * Return the distance between atoms A1 and A2 with optional imaging.
-+ * 0 = None
-+ * 1 = Orthorhombic
-+ * 2 = Non-orthorhombic
- */
--double Frame::DIST2(int A1, int A2, int ifbox, double *ucell, double *recip) {
-+double Frame::DIST2(int A1, int A2, int boxType, double *ucell, double *recip) {
- int atom3;
- double a1[3], a2[3];
-
-@@ -459,14 +492,14 @@
- a2[1] = X[atom3+1];
- a2[2] = X[atom3+2];
-
-- if (ifbox == 0)
-+ if (boxType == 0)
- return DIST2_NoImage(a1, a2);
-- else if (ifbox == 1)
-+ else if (boxType == 1)
- return DIST2_ImageOrtho(a1, a2, this->box);
-- else if (ifbox == 2)
-+ else if (boxType == 2)
- return DIST2_ImageNonOrtho(a1, a2, ucell, recip);
-
-- mprintf(" Error: Frame::DIST: Unrecognized box type (%i)\n.", ifbox);
-+ mprintf(" Error: Frame::DIST: Unrecognized box type (%i)\n.", boxType);
-
- return (-1.0);
- }
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Frame.h amber11/AmberTools/src/cpptraj/src/Frame.h
---- amber11.orig/AmberTools/src/cpptraj/src/Frame.h 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Frame.h 2011-10-25 15:01:28.092288656 +0300
-@@ -22,6 +22,9 @@
- Frame(AtomMask *, double *);
- virtual ~Frame(); // Destructor is virtual since this class can be inherited
-
-+ void ZeroCoords();
-+ void AddCoord(Frame*);
-+ void Divide(double);
- void printAtomCoord(int);
- void GetCoord(double *, int);
- void SetCoord(int, double *);
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/FrameList.cpp amber11/AmberTools/src/cpptraj/src/FrameList.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/FrameList.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/FrameList.cpp 2011-10-25 15:01:28.073288675 +0300
-@@ -13,7 +13,8 @@
- delete frameList[i];
- }
-
--/* FrameList::Add()
-+/*
-+ * FrameList::Add()
- * Add given Frame to the FrameList. Store trajectory name that this frame
- * came from in frameNames. Store the associated parm in FrameParm.
- */
-@@ -29,6 +30,18 @@
- FrameParm.Add(P);
- Nframe++;
- return 0;
-+}
-+
-+/*
-+ * FrameList::Add()
-+ * Add given Frame to the FrameList. Store the associated parm in FrameParm.
-+ */
-+int FrameList::Add(Frame *F, AmberParm *P) {
-+ if (F==NULL || P==NULL) return 1;
-+ frameList.push_back(F);
-+ FrameParm.Add(P);
-+ Nframe++;
-+ return 0;
- }
-
- /*
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/FrameList.h amber11/AmberTools/src/cpptraj/src/FrameList.h
---- amber11.orig/AmberTools/src/cpptraj/src/FrameList.h 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/FrameList.h 2011-10-25 15:01:28.073288675 +0300
-@@ -18,6 +18,7 @@
- ~FrameList();
-
- int Add(Frame *, char *, AmberParm *,int);
-+ int Add(Frame *, AmberParm *);
- AmberParm *GetFrameParm(int);
- int GetFrameIndex(char *);
- Frame *GetFrame(int idx);
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/GzipFile.cpp amber11/AmberTools/src/cpptraj/src/GzipFile.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/GzipFile.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/GzipFile.cpp 2011-10-25 15:01:28.227288533 +0300
-@@ -77,18 +77,24 @@
-
- /*
- * GzipFile::Read()
-+ * NOTE: gzread returns 0 on EOF, -1 on error
- */
- int GzipFile::Read(void *buffer, size_t size, size_t count) {
- //size_t numread;
- int numread;
-+ int expectedread;
-+
-+ expectedread = (int)size;
-+ expectedread *= (int)count;
- // Should never be able to call Read when fp is NULL.
- //if (fp==NULL) {
- // fprintf(stdout,"Error: GzipFile::Read: Attempted to read NULL file pointer.\n");
- // return 1;
- //}
-- numread = gzread(fp, buffer, size * count);
-- if (numread == -1) return -1;
--
-+ numread = gzread(fp, buffer, expectedread);
-+ if (numread != expectedread) return -1;
-+ //if (numread < 1 ) return -1;
-+
- // NOTE: Check for errors here.
- return numread;
- }
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/intDataSet.cpp amber11/AmberTools/src/cpptraj/src/intDataSet.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/intDataSet.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/intDataSet.cpp 2011-10-25 15:01:28.103288646 +0300
-@@ -5,6 +5,14 @@
- #include "PtrajMpi.h"
- #include "CpptrajStdio.h"
- using namespace std;
-+
-+// CONSTRUCTOR
-+intDataSet::intDataSet() {
-+ width=12;
-+ dType=INT;
-+ setFormatString();
-+}
-+
- /*
- * intDataSet::Xmax(()
- * Return the maximum X value added to this set. By convention this is
-@@ -33,8 +41,21 @@
- current++;
- }
-
--/*
-- * intDataSet::isEmpty()
-+/* intDataSet::Get()
-+ * Get data at frame, put into vOut. Return 1 if no data at frame.
-+ */
-+int intDataSet::Get(void *vOut, int frame) {
-+ int *value;
-+
-+ if (vOut==NULL) return 1;
-+ value = (int*) vOut;
-+ it=Data.find( frame );
-+ if (it == Data.end()) return 1;
-+ *value = (*it).second;
-+ return 0;
-+}
-+
-+/* intDataSet::isEmpty()
- */
- int intDataSet::isEmpty(int frame) {
- it = Data.find( frame );
-@@ -52,17 +73,17 @@
- it = Data.find( frame );
- if (it == Data.end())
- //sprintf(buffer," %12s","NoData");
-- sprintf(buffer," %12i", 0);
-+ sprintf(buffer, format, 0);
- else
-- sprintf(buffer," %12i",(*it).second);
-- return (buffer + 13);
-+ sprintf(buffer, format, (*it).second);
-+ return (buffer + width + 1);
- }
-
- /*
- * intDataSet::Width()
- */
- int intDataSet::Width() {
-- return 13;
-+ return (width + 1);
- }
-
- /*
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/intDataSet.h amber11/AmberTools/src/cpptraj/src/intDataSet.h
---- amber11.orig/AmberTools/src/cpptraj/src/intDataSet.h 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/intDataSet.h 2011-10-25 15:01:28.104288645 +0300
-@@ -11,9 +11,12 @@
- std::map<int,int> Data;
- std::map<int,int>::iterator it;
- public:
-+ intDataSet();
-+
- int Xmax();
- int isEmpty(int);
- void Add( int, void * );
-+ int Get(void *, int);
- char *Write(char *, int);
- int Width();
- int Sync();
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/main.cpp amber11/AmberTools/src/cpptraj/src/main.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/main.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/main.cpp 2011-10-25 15:01:28.228288532 +0300
-@@ -6,7 +6,7 @@
- #include "PtrajMpi.h"
- #include "CpptrajStdio.h"
- #ifndef CPPTRAJ_VERSION_STRING
--#define CPPTRAJ_VERSION_STRING "V1.0.5"
-+#define CPPTRAJ_VERSION_STRING "V1.1.1"
- #endif
-
- void Usage(char *programName) {
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Makefile amber11/AmberTools/src/cpptraj/src/Makefile
---- amber11.orig/AmberTools/src/cpptraj/src/Makefile 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Makefile 2011-10-25 15:01:28.075288673 +0300
-@@ -16,7 +16,8 @@
- Action_Radgyr.cpp Conflib.cpp Action_Mask.cpp Action_Closest.cpp \
- NetcdfRoutines.cpp AmberRestartNC.cpp CpptrajStdio.cpp Mol2File.cpp \
- Mol2FileRoutines.cpp Action_NAstruct.cpp DistRoutines.cpp AxisType.cpp \
-- TorsionRoutines.cpp Action_Pucker.cpp Range.cpp Action_Outtraj.cpp
-+ TorsionRoutines.cpp Action_Pucker.cpp Range.cpp Action_Outtraj.cpp \
-+ Action_Rms2d.cpp
-
- OBJECTS=main.o AmberNetcdf.o AmberParm.o AmberTraj.o TrajFile.o \
- Frame.o PtrajState.o ArgList.o ptrajmask.o Action_Distance.o \
-@@ -32,7 +33,8 @@
- Action_Radgyr.o Conflib.o Action_Mask.o Action_Closest.o \
- NetcdfRoutines.o AmberRestartNC.o CpptrajStdio.o Mol2File.o \
- Mol2FileRoutines.o Action_NAstruct.o DistRoutines.o AxisType.o \
-- TorsionRoutines.o Action_Pucker.o Range.o Action_Outtraj.o
-+ TorsionRoutines.o Action_Pucker.o Range.o Action_Outtraj.o \
-+ Action_Rms2d.o
-
- HEADERS=AmberNetcdf.h AmberParm.h AmberTraj.h TrajFile.h \
- Frame.h PtrajState.h ArgList.h ptrajmask.h Action.h Action_Distance.h \
-@@ -48,7 +50,8 @@
- Action_Radgyr.h Conflib.h Action_Mask.h Action_Closest.h \
- NetcdfRoutines.h AmberRestartNC.h CpptrajStdio.h Mol2File.h \
- Mol2FileRoutines.h Action_NAstruct.h DistRoutines.h AxisType.h \
-- TorsionRoutines.h Action_Pucker.h Range.h Action_Outtraj.h
-+ TorsionRoutines.h Action_Pucker.h Range.h Action_Outtraj.h \
-+ Action_Rms2d.h
-
- all: cpptraj$(SFX)
-
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Makefile_at amber11/AmberTools/src/cpptraj/src/Makefile_at
---- amber11.orig/AmberTools/src/cpptraj/src/Makefile_at 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Makefile_at 2011-10-25 15:01:28.076288672 +0300
-@@ -16,7 +16,8 @@
- Action_Radgyr.cpp Conflib.cpp Action_Mask.cpp Action_Closest.cpp \
- NetcdfRoutines.cpp AmberRestartNC.cpp CpptrajStdio.cpp Mol2File.cpp \
- Mol2FileRoutines.cpp Action_NAstruct.cpp DistRoutines.cpp AxisType.cpp \
-- TorsionRoutines.cpp Action_Pucker.cpp Range.cpp Action_Outtraj.cpp
-+ TorsionRoutines.cpp Action_Pucker.cpp Range.cpp Action_Outtraj.cpp \
-+ Action_Rms2d.cpp
-
- OBJECTS=main.o AmberNetcdf.o AmberParm.o AmberTraj.o TrajFile.o \
- Frame.o PtrajState.o ArgList.o ptrajmask.o Action_Distance.o \
-@@ -32,7 +33,8 @@
- Action_Radgyr.o Conflib.o Action_Mask.o Action_Closest.o \
- NetcdfRoutines.o AmberRestartNC.o CpptrajStdio.o Mol2File.o \
- Mol2FileRoutines.o Action_NAstruct.o DistRoutines.o AxisType.o \
-- TorsionRoutines.o Action_Pucker.o Range.o Action_Outtraj.o
-+ TorsionRoutines.o Action_Pucker.o Range.o Action_Outtraj.o \
-+ Action_Rms2d.o
-
- HEADERS=AmberNetcdf.h AmberParm.h AmberTraj.h TrajFile.h \
- Frame.h PtrajState.h ArgList.h ptrajmask.h Action.h Action_Distance.h \
-@@ -48,7 +50,8 @@
- Action_Radgyr.h Conflib.h Action_Mask.h Action_Closest.h \
- NetcdfRoutines.h AmberRestartNC.h CpptrajStdio.h Mol2File.h \
- Mol2FileRoutines.h Action_NAstruct.h DistRoutines.h AxisType.h \
-- TorsionRoutines.h Action_Pucker.h Range.h Action_Outtraj.h
-+ TorsionRoutines.h Action_Pucker.h Range.h Action_Outtraj.h \
-+ Action_Rms2d.h
-
- all: cpptraj$(SFX)
-
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/mapDataSet.cpp amber11/AmberTools/src/cpptraj/src/mapDataSet.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/mapDataSet.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/mapDataSet.cpp 2011-10-25 15:01:28.104288645 +0300
-@@ -6,6 +6,14 @@
- #include "CpptrajStdio.h"
- using namespace std;
-
-+// CONSTRUCTOR
-+mapDataSet::mapDataSet() {
-+ width = 12;
-+ precision = 4;
-+ dType=DOUBLE;
-+ setFormatString();
-+}
-+
- /*
- * mapDataSet::Xmax(()
- * Return the maximum X value added to this set. By convention this is
-@@ -34,8 +42,23 @@
- current++;
- }
-
--/*
-- * mapDataSet::isEmpty()
-+/* mapDataSet::Get()
-+ * Get data at frame, put into vOut. Return 1 if no data at frame.
-+ */
-+int mapDataSet::Get(void *vOut, int frame) {
-+ double *value;
-+
-+ if (vOut==NULL) return 1;
-+ //mprintf("DEBUG: Attempting to get double frame %i\n",frame);
-+ value = (double*) vOut;
-+ it=Data.find( frame );
-+ if (it == Data.end()) return 1;
-+ //mprintf("DEBUG: Double frame %i is %lf\n",frame,(*it).second);
-+ *value = (*it).second;
-+ return 0;
-+}
-+
-+/* mapDataSet::isEmpty()
- */
- int mapDataSet::isEmpty(int frame) {
- it = Data.find( frame );
-@@ -53,17 +76,17 @@
- it = Data.find( frame );
- if (it == Data.end())
- //sprintf(buffer," %12s","NoData");
-- sprintf(buffer," %12.4lf", 0.0);
-+ sprintf(buffer, format, 0.0);
- else
-- sprintf(buffer," %12.4lf",(*it).second);
-- return (buffer + 13);
-+ sprintf(buffer, format,(*it).second);
-+ return (buffer + width + 1);
- }
-
- /*
- * mapDataSet::Width()
- */
- int mapDataSet::Width() {
-- return 13;
-+ return (width + 1);
- }
-
- /*
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/mapDataSet.h amber11/AmberTools/src/cpptraj/src/mapDataSet.h
---- amber11.orig/AmberTools/src/cpptraj/src/mapDataSet.h 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/mapDataSet.h 2011-10-25 15:01:28.105288645 +0300
-@@ -7,14 +7,16 @@
- */
- #include <map>
- #include "DataSet.h"
--//using namespace std;
- class mapDataSet : public DataSet {
- std::map<int,double> Data;
- std::map<int,double>::iterator it;
- public:
-+ mapDataSet();
-+
- int Xmax();
- int isEmpty(int);
- void Add( int, void * );
-+ int Get(void *, int);
- char *Write(char *, int);
- int Width();
- int Sync();
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Mol2File.cpp amber11/AmberTools/src/cpptraj/src/Mol2File.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/Mol2File.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Mol2File.cpp 2011-10-25 15:01:28.127288624 +0300
-@@ -239,6 +239,8 @@
- if (writeMode==2)
- File->IO->Close();
-
-+ currentFrame++;
-+
- return 0;
- }
-
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/PDBfile.cpp amber11/AmberTools/src/cpptraj/src/PDBfile.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/PDBfile.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/PDBfile.cpp 2011-10-25 15:01:28.128288623 +0300
-@@ -207,6 +207,9 @@
- } else if (writeMode==1) {
- File->IO->Printf("ENDMDL\n");
- }
-+
-+ currentFrame++;
-+
- return 0;
- }
-
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/PtrajActionList.cpp amber11/AmberTools/src/cpptraj/src/PtrajActionList.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/PtrajActionList.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/PtrajActionList.cpp 2011-10-25 15:01:28.105288645 +0300
-@@ -20,6 +20,7 @@
- #include "Action_NAstruct.h"
- #include "Action_Pucker.h"
- #include "Action_Outtraj.h"
-+#include "Action_Rms2d.h"
-
- // Constructor
- PtrajActionList::PtrajActionList() {
-@@ -56,6 +57,7 @@
-
- // Decide what action this is based on the command.
- if (A->CommandIs("distance")) {Act=new Distance;}
-+ else if (A->CommandIs("rms2d")) {Act=new Rms2d; }
- else if (A->CommandIs("rmsd",3)) {Act=new Rmsd; }
- else if (A->CommandIs("dihedral")) {Act=new Dihedral;}
- else if (A->CommandIs("atommap")) {Act=new AtomMap; }
-@@ -166,6 +168,8 @@
- err = ActionList[act]->DoAction(FrameAddress, frameIn);
- if (err==1) {
- // Treat actions that fail as if they could not be set up
-+ mprintf("Warning: Action [%s] failed, frame %i.\n",ActionList[act]->CmdLine(),
-+ frameIn);
- ActionList[act]->noSetup=1;
- } else if (err==2) {
- // Return value of 2 requests return to original frame
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/PtrajFile.cpp amber11/AmberTools/src/cpptraj/src/PtrajFile.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/PtrajFile.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/PtrajFile.cpp 2011-10-25 15:01:28.196288560 +0300
-@@ -113,6 +113,7 @@
- void PtrajFile::CloseFile() {
- if (isOpen) {
- IO->Close();
-+ if (debug>0) rprintf("Closed %s.\n",filename);
- isOpen=0;
- }
- }
-@@ -417,8 +418,8 @@
- // Standard file size is in the frame_stat struct
- uncompressed_size = IO->Size(filename);
-
-- // Determine format
-- // Read first 3 bytes again to determine format by magic number
-+ // ========== Determine format ==========
-+ // ---------- Read first 3 bytes again to determine format by magic number ----------
- IO->Open(filename,"rb"); // NOTE: Err Check
- memset(magic,0,3*sizeof(unsigned char));
- IO->Read(magic ,1,1);
-@@ -454,7 +455,7 @@
- return 0;
- }
-
-- // ID by file characteristics; read the first two lines
-+ // ---------- ID by file characteristics; read the first two lines ----------
- // Initialize buffers to NULL
- buffer1[0]='\0';
- buffer2[0]='\0';
-@@ -472,17 +473,6 @@
- }
- }
-
-- // Reopen and scan for Tripos mol2 molecule section
-- // 0 indicates section found.
-- IO->Open(filename,"r");
-- if (!Mol2ScanTo(this, MOLECULE)) {
-- if (debug>0) mprintf(" TRIPOS MOL2 file\n");
-- fileFormat=MOL2FILE;
-- IO->Close();
-- return 0;
-- }
-- IO->Close();
--
- // If both lines have PDB keywords, assume PDB
- if (isPDBkeyword(buffer1) && isPDBkeyword(buffer2)) {
- if (debug>0) mprintf(" PDB file\n");
-@@ -491,7 +481,8 @@
- }
-
- // If either buffer contains a TRIPOS keyword assume Mol2
-- // NOTE: This will fail on tripos files with extensive header comments
-+ // NOTE: This will fail on tripos files with extensive header comments.
-+ // A more expensive check for mol2 files is below.
- if (strncmp(buffer1,"@<TRIPOS>", 9)==0 ||
- strncmp(buffer2,"@<TRIPOS>", 9)==0) {
- if (debug>0) mprintf(" TRIPOS MOL2 file\n");
-@@ -547,7 +538,19 @@
- }
- }
-
-- // NOTE: EXPERIMENTAL
-+ // ---------- MORE EXPENSIVE CHECKS ----------
-+ // Reopen and scan for Tripos mol2 molecule section
-+ // 0 indicates section found.
-+ IO->Open(filename,"r");
-+ if (!Mol2ScanTo(this, MOLECULE)) {
-+ if (debug>0) mprintf(" TRIPOS MOL2 file\n");
-+ fileFormat=MOL2FILE;
-+ IO->Close();
-+ return 0;
-+ }
-+ IO->Close();
-+
-+ // ---------- EXPERIMENTAL ----------
- // If the file format is still undetermined and the file name is conflib.dat,
- // assume this is a conflib.dat file from LMOD. Cant think of a better way to
- // detect this since there is no magic number but the file is binary.
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/PtrajMpi.c amber11/AmberTools/src/cpptraj/src/PtrajMpi.c
---- amber11.orig/AmberTools/src/cpptraj/src/PtrajMpi.c 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/PtrajMpi.c 2011-10-25 15:01:28.100288649 +0300
-@@ -460,7 +460,10 @@
- }
-
- err = MPI_Allreduce(input, Return, count, currentType, currentOp, MPI_COMM_WORLD);
-- if (err!=MPI_SUCCESS) printMPIerr(err, "Performing allreduce for %i elements\n",count);
-+ if (err!=MPI_SUCCESS) {
-+ printMPIerr(err, "Performing allreduce.\n");
-+ rprintf("Error: allreduce failed for %i elements.\n",count);
-+ }
-
- if (parallel_check_error(err)!=0) return 1;
- return 0;
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/PtrajState.cpp amber11/AmberTools/src/cpptraj/src/PtrajState.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/PtrajState.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/PtrajState.cpp 2011-10-25 15:01:28.214288545 +0300
-@@ -7,7 +7,8 @@
- #include "CpptrajStdio.h"
-
- // Constructor
--PtrajState::PtrajState() {
-+PtrajState::PtrajState() {
-+ TotalErrors=0;
- debug=0;
- showProgress=1;
- }
-@@ -291,6 +292,7 @@
- char *df_cmd = NULL;
- char *name1 = NULL;
- char *name2 = NULL;
-+ int width,precision;
- DataFile *df;
-
- if (DF_Args.empty()) return;
-@@ -349,6 +351,19 @@
- }
- mprintf(" Not printing x column for datafile %s\n",name1);
- df->SetNoXcol();
-+
-+ // datafile precision
-+ // Usage: datafile precision <filename> <dataset> [<width>] [<precision>]
-+ // If width/precision not specified default to 12.4
-+ } else if ( strcmp(df_cmd,"precision")==0 ) {
-+ if (df==NULL) {
-+ mprintf("Error: datafile precision: DataFile %s does not exist.\n",name1);
-+ continue;
-+ }
-+ name2 = A->getNextString();
-+ width = A->getNextInteger(12);
-+ precision = A->getNextInteger(4);
-+ df->SetPrecision(name2,width,precision);
- }
-
- } // END loop over datafile args
-@@ -374,7 +389,7 @@
-
- // ========== S E T U P P H A S E ==========
- // Calculate frame division among trajectories
-- maxFrames=trajFileList.SetupFrames();
-+ maxFrames=trajFileList.SetupFrames(worldrank,worldsize);
-
- // Parameter file information
- parmFileList.Print();
-@@ -442,7 +457,7 @@
- // Perform Actions on Frame
- ptrajActionList.DoActions(&CurrentFrame, actionSet);
- // Do Output
-- outFileList.Write(outputSet, CurrentFrame, CurrentParm);
-+ outFileList.Write(actionSet, CurrentFrame, CurrentParm);
- #ifdef DEBUG
- dbgprintf("\tDEBUG: %30s: %4i\n",CurrentParm->parmName,CurrentParm->outFrame);
- #endif
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/PtrajState.h amber11/AmberTools/src/cpptraj/src/PtrajState.h
---- amber11.orig/AmberTools/src/cpptraj/src/PtrajState.h 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/PtrajState.h 2011-10-25 15:01:28.093288656 +0300
-@@ -20,6 +20,7 @@
- DataFileList DFL; // List of datafiles that data sets will be written to
- ArgList *A; // Current argument list
- std::list<ArgList*> DF_Args; // List of commands pertaining to datafile creation etc
-+ int TotalErrors; // Sum of all returned error statuses
- int debug;
-
- void SetGlobalDebug(int); // Set debug level for all components
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/ReferenceList.cpp amber11/AmberTools/src/cpptraj/src/ReferenceList.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/ReferenceList.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/ReferenceList.cpp 2011-10-25 15:01:28.093288656 +0300
-@@ -20,11 +20,15 @@
- */
- int ReferenceList::Add(ArgList *A, ParmFileList *parmFileList, int worldsize) {
- TrajFile *T;
-- int startArg;
-+ int startArg,stopArg,offsetArg;
-+ bool average = false;
-
- // Set up common arguments from arglist
- if (this->ProcessArgList(A,parmFileList)) return 1;
-
-+ // Check if we want to obtain the average structure
-+ average = A->hasKey("average");
-+
- // Set up basic file to determine type and format
- T = this->SetupTrajectory(trajfilename, fileAccess, UNKNOWN_FORMAT, UNKNOWN_TYPE);
-
-@@ -45,10 +49,18 @@
- // Get user-specified start arg
- // NOTE: For compatibility with ptraj start from 1
- startArg=A->getNextInteger(1);
-- T->SetArgs(startArg,startArg,1);
-+ stopArg=startArg;
-+ offsetArg=1;
-+ // Get user-specified stop and offset only if getting avg structure
-+ if (average) {
-+ stopArg=A->getNextInteger(-1);
-+ offsetArg=A->getNextInteger(1);
-+ }
-+ T->SetArgs(startArg,stopArg,offsetArg);
-
- // Add to trajectory file list
-- this->push_back(T);
-+ this->push_back(T);
-+ Average.push_back(average);
-
- return 0;
- }
-@@ -60,9 +72,11 @@
- * place that frame in refFrames.
- */
- int ReferenceList::SetupRefFrames(FrameList *refFrames) {
-- int trajFrames;
-- Frame *F;
-+ int trajFrames, global_set;
-+ double Nframes;
-+ Frame *F, *AvgFrame;
- int skipValue;
-+ int refTrajNum = 0;
-
- mprintf("\nREFERENCE COORDS:\n");
- if (this->empty()) {
-@@ -72,7 +86,13 @@
-
- for (it = this->begin(); it != this->end(); it++) {
- // Setup the reference traj for reading. Should only be 1 frame.
-- trajFrames=(*it)->setupFrameInfo(-1);
-+ // NOTE: For MPI, calling setupFrameInfo with worldrank 0, worldsize 1 for
-+ // all ranks. This is to ensure each thread has a copy of the ref
-+ // struct.
-+ // Calling setupFrameInfo with -1 to ensure the Parm frame count is
-+ // not updated.
-+
-+ trajFrames=(*it)->setupFrameInfo(-1,0,1);
- if ((*it)->total_read_frames<1) {
- rprintf("Error: No frames could be read for reference %s, skipping\n",
- (*it)->trajfilename);
-@@ -89,12 +109,34 @@
- skipValue=(*it)->skip;
- (*it)->skip=0;
- }
-- (*it)->Begin(&trajFrames, 0);
-- // Get and copy the 1 frame from Traj, then close
-- // NOTE: What happens when not seekable?
-+ // Start trajectory read
-+ global_set=0;
-+ (*it)->Begin(&global_set, 0);
- (*it)->PrintInfo(1);
-- (*it)->NextFrame(&trajFrames);
-- F=(*it)->F->Copy();
-+ // If averaging requested, loop over specified frames and avg coords.
-+ if (Average[refTrajNum++]) {
-+ mprintf(" Averaging over %i frames.\n",trajFrames);
-+ AvgFrame = new Frame((*it)->P->natom, (*it)->P->mass);
-+ AvgFrame->ZeroCoords();
-+ global_set = 0;
-+ Nframes = 0.0;
-+ while ( (*it)->NextFrame(&global_set) ) {
-+ AvgFrame->AddCoord( (*it)->F );
-+ Nframes++;
-+ }
-+ if (Nframes < 1.0) {
-+ mprintf("Error: reference average: # frames read is less than 1.\n");
-+ F=NULL;
-+ } else {
-+ AvgFrame->Divide( Nframes );
-+ F=AvgFrame->Copy();
-+ }
-+ delete AvgFrame;
-+ // If no averaging, get and copy the 1 frame from Traj, then close
-+ } else {
-+ (*it)->NextFrame(&trajFrames);
-+ F=(*it)->F->Copy();
-+ }
- // DEBUG
- //fprintf(stdout,"DEBUG: Ref Coord Atom 0\n");
- //F->printAtomCoord(0);
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/ReferenceList.h amber11/AmberTools/src/cpptraj/src/ReferenceList.h
---- amber11.orig/AmberTools/src/cpptraj/src/ReferenceList.h 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/ReferenceList.h 2011-10-25 15:01:28.094288655 +0300
-@@ -5,7 +5,7 @@
- #include "FrameList.h"
-
- class ReferenceList : public CoordFileList {
--
-+ std::vector<bool> Average;
- public:
-
- ReferenceList();
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/RemdTraj.cpp amber11/AmberTools/src/cpptraj/src/RemdTraj.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/RemdTraj.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/RemdTraj.cpp 2011-10-25 15:01:28.122288629 +0300
-@@ -88,7 +88,7 @@
- // NOTE: Should check that this is the case for ALL frames.
- stop = T->Frames;
- Frames = T->Frames;
-- isBox = T->isBox;
-+ BoxType = T->BoxType;
- trajfilename = T->File->basefilename;
- // Add it to the list
- REMDtraj.push_back(T);
-@@ -190,12 +190,12 @@
- return 1;
- }
- // Check that #Frames and box info matches
-- if ( Frames!=T->Frames || isBox!=T->isBox ) {
-+ if ( Frames!=T->Frames || BoxType!=T->BoxType ) {
- mprintf(
-- " ERROR: REMDTRAJ: #Frames (%i) or box info (%i) in replica does not match\n",
-- T->Frames, T->isBox);
-- mprintf(" values in lowest replica (Frames=%i, box=%i)\n",
-- Frames,isBox);
-+ " ERROR: REMDTRAJ: #Frames (%i) or box type (%i) in replica does not match\n",
-+ T->Frames, T->BoxType);
-+ mprintf(" values in lowest replica (Frames=%i, boxtype=%i)\n",
-+ Frames,BoxType);
- delete T;
- free(repFilename);
- free(Prefix);
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/stringDataSet.cpp amber11/AmberTools/src/cpptraj/src/stringDataSet.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/stringDataSet.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/stringDataSet.cpp 2011-10-25 15:01:28.097288652 +0300
-@@ -6,6 +6,13 @@
- #include "PtrajMpi.h"
- #include "CpptrajStdio.h"
- using namespace std;
-+
-+// CONSTRUCTOR
-+stringDataSet::stringDataSet() {
-+ dType=STRING;
-+ setFormatString();
-+}
-+
- /*
- * stringDataSet::Xmax(()
- * Return the maximum X value added to this set. By convention this is
-@@ -54,10 +61,10 @@
-
- it = Data.find( frame );
- if (it == Data.end()) {
-- sprintf(buffer," %s", "NoData");
-+ sprintf(buffer, format, "NoData");
- return (buffer + 7);
- } else
-- sprintf(buffer," %s",(*it).second.c_str());
-+ sprintf(buffer, format, (*it).second.c_str());
-
- return (buffer + (*it).second.size() + 1);
- }
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/stringDataSet.h amber11/AmberTools/src/cpptraj/src/stringDataSet.h
---- amber11.orig/AmberTools/src/cpptraj/src/stringDataSet.h 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/stringDataSet.h 2011-10-25 15:01:28.097288652 +0300
-@@ -12,6 +12,8 @@
- std::map<int,std::string> Data;
- std::map<int,std::string>::iterator it;
- public:
-+ stringDataSet();
-+
- int Xmax();
- int isEmpty(int);
- void Add( int, void * );
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/TrajFile.cpp amber11/AmberTools/src/cpptraj/src/TrajFile.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/TrajFile.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/TrajFile.cpp 2011-10-25 15:01:28.122288629 +0300
-@@ -2,7 +2,6 @@
- #include <cstdlib>
- #include <cstring>
- #include "TrajFile.h"
--#include "PtrajMpi.h" // worldrank and worldsize needed to calc frame division
- #include "CpptrajStdio.h"
-
- // CONSTRUCTOR
-@@ -18,7 +17,7 @@
- start=0;
- stop=-1;
- offset=1;
-- isBox=0;
-+ BoxType=0;
- title=NULL;
- P=NULL;
- frameskip=0;
-@@ -45,12 +44,17 @@
- void TrajFile::SetTitle(char *titleIn) {
- size_t titleSize;
-
-+ //mprintf("DEBUG: Attempting to set title for %s: [%s]\n",trajfilename,titleIn);
- if (titleIn==NULL) return;
- titleSize = strlen(titleIn);
-- if (titleSize==0) return;
-+ //mprintf(" Title size is %i\n",titleSize);
-+ if (titleSize==0) {
-+ mprintf("Warning: TrajFile::SetTitle(): Title for %s is 0 length.\n",trajfilename);
-+ return;
-+ }
- this->title = (char*) malloc( (titleSize+1) * sizeof(char));
- if (this->title==NULL) {
-- mprintf("Error: TrajFile::SetTitle(): Could not allocate memory for title.\n");
-+ mprintf("Error: SetTitle: Could not allocate memory for title of %s.\n",trajfilename);
- return;
- }
- strcpy(this->title, titleIn);
-@@ -59,6 +63,30 @@
- }
-
- /*
-+ * TrajFile::CheckBoxType()
-+ * Set the trajectory box type (ortho/nonortho) based on box angles.
-+ * Check the current box type against the associated parmfile box type.
-+ * Print a warning if they are different.
-+ */
-+void TrajFile::CheckBoxType(double *box) {
-+ // Determine orthogonal / non-orthogonal from angles
-+ if (box[3]==0.0 || box[4]==0.0 || box[5]==0.0)
-+ BoxType=0;
-+ else if (box[3]==90.0 && box[4]==90.0 && box[5]==90.0)
-+ BoxType=1;
-+ else
-+ BoxType=2;
-+ if (P->BoxType != BoxType) {
-+ mprintf("Warning: %s contains box info of type %i (beta %lf)\n",trajfilename,
-+ BoxType,box[4]);
-+ mprintf(" but associated parmfile %s has box type %i (beta %lf)\n",P->parmName,
-+ P->BoxType,P->Box[4]);
-+ //mprintf(" Box information from trajectory will be used.\n");
-+ }
-+ if (debug>0) mprintf(" %s: Box type is %i (beta=%lf)\n",trajfilename,BoxType,box[4]);
-+}
-+
-+/*
- * TrajFile::PrintInfo()
- * Print general trajectory information. Call TrajFile->Info for specific information.
- */
-@@ -68,7 +96,7 @@
-
- mprintf(", Parm %i",P->pindex);
-
-- if (isBox) mprintf(" (with box info)");
-+ if (BoxType>0) mprintf(" (with box info)");
-
- if (showExtended==0) {
- mprintf("\n");
-@@ -85,7 +113,7 @@
- mprintf(": Writing %i frames", P->parmFrames);
- if (File->access==APPEND) mprintf(", appended"); // NOTE: Dangerous if REMD
- }
-- if (debug>0) mprintf(", %i atoms, Box %i, seekable %i",P->natom,isBox,seekable);
-+ if (debug>0) mprintf(", %i atoms, Box %i, seekable %i",P->natom,BoxType,seekable);
- mprintf("\n");
- }
-
-@@ -164,7 +192,7 @@
- * Note that the input frames start counting from 1, output starts counting from 0!
- * If called with maxFrames=-1 dont update the frame in parm file.
- */
--int TrajFile::setupFrameInfo(int maxFrames) {
-+int TrajFile::setupFrameInfo(int maxFrames, int worldrank, int worldsize) {
- int Nframes;
- int ptraj_start_frame, ptraj_end_frame;
- int traj_start_frame, traj_end_frame;
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/TrajFile.h amber11/AmberTools/src/cpptraj/src/TrajFile.h
---- amber11.orig/AmberTools/src/cpptraj/src/TrajFile.h 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/TrajFile.h 2011-10-25 15:01:28.128288623 +0300
-@@ -25,44 +25,44 @@
- int offset; // Number of frames to skip while processing
-
- // --== Inherited by child classes ==--
-- virtual int open() { return 0; } // Open the file, prepare for coord read/write
-- virtual void close() {} // Close the file
-+ virtual int open() { return 0; } // Open the file, prepare for coord read/write
-+ virtual void close() {} // Close the file
-+
-+ void CheckBoxType(double *); // Check that traj boxtype matches parm
-
- public:
- int debug; // Level of debug information to print
- char *trajfilename; // The base trajectory filename
-- // NOTE: I hate that the following are public. Only necessary for REMD processing!!
-+ // NOTE: I hate that the 2 following are public. Only necessary for REMD processing!!
- int Frames; // Total number of frames in trajectory
- int total_read_frames; // Total number of frames that will be read
-- int isBox; // >0 means trajectory has box information
--
-+ int BoxType; // 0: None, 1: Ortho, 2: NonOrtho
- Range *FrameRange; // list of frames to be written out
- int hasTemperature; // 1 means trajectory has temperature information
- PtrajFile *File; // Class that handles basic file IO
- AmberParm *P; // Memory address of the associated parmfile
- Frame *F; // Hold coordinates of the current frame
-- int skip; /* READ: If =1 do not process this input trajectory
-- WRITE: If =1 this traj has been set up for write */
-+ int skip; // READ: If =1 do not process this input trajectory
-+ // WRITE: If =1 this traj has been set up for write
-
- TrajFile(); // Constructor
- virtual ~TrajFile(); // Destructor - virtual since this class is inherited.
-
-- int Start() { return start; }
-+ int Start() { return start; }
-+ int CurrentFrame() { return currentFrame; }
- void SetTitle(char *); // Set trajectory title.
- void PrintInfo(int); // Print trajectory Information
-- int setupFrameInfo(int); // Set actual start/stop based on total #frames and #threads
-- int Begin(int *, int); /* Prepare traj for processing. Set output start value, calcd in
-- * setupFrameInfo. Allocate memory for F.
-- */
-- int Begin(); // Prepare trajectory for output
-- int NextFrame(int*); // Put the next target frame into F.
-- void End(); // Close trajectory and free F memory
-- void progressBar(); // Display trajectory progress to screen
--// void progressBar2(); // Display trajectory progress to screen
--
-- void SetArgs(int,int,int); // Set the stop, start, and offset args from user input
-+ int Begin(int *, int); // Prepare traj for processing. Set output start value, calcd in
-+ // setupFrameInfo. Allocate memory for F.
-+ int Begin(); // Prepare trajectory for output
-+ int NextFrame(int*); // Put the next target frame into F.
-+ void End(); // Close trajectory and free F memory
-+ void progressBar(); // Display trajectory progress to screen
-+// void progressBar2(); // Display trajectory progress to screen
-+ int setupFrameInfo(int,int,int); // Set actual start/stop based on total #frames and #threads
-+ void SetArgs(int,int,int); // Set the stop, start, and offset args from user input
- // --== Inherited by child classes ==--
-- virtual int getFrame(int) { return 1; } // Read the next coord frame into F
-+ virtual int getFrame(int) { return 1; } // Read specified frame into F
- virtual int SetupRead() { return 1; } // Set file up for reading
- virtual int WriteArgs(ArgList*){ return 0; } // (Opt.) Process any args related to writing
- virtual int SetupWrite() { return 1; } // Set file up for writing
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/TrajinList.cpp amber11/AmberTools/src/cpptraj/src/TrajinList.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/TrajinList.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/TrajinList.cpp 2011-10-25 15:01:28.201288557 +0300
-@@ -1,4 +1,5 @@
- // TrajinList
-+#include <cstddef>
- #include "TrajinList.h"
- #include "RemdTraj.h"
- #include "CpptrajStdio.h"
-@@ -70,7 +71,7 @@
- * actual start and stop and how many frames total will be processed.
- * Return the number of frames to be processed.
- */
--int TrajinList::SetupFrames() {
-+int TrajinList::SetupFrames(int worldrank, int worldsize) {
- int maxFrames, trajFrames;
-
- mprintf("\nTRAJECTORIES:\n");
-@@ -78,7 +79,7 @@
- maxFrames=0;
-
- for (it = this->begin(); it != this->end(); it++) {
-- trajFrames = (*it)->setupFrameInfo(maxFrames);
-+ trajFrames = (*it)->setupFrameInfo(maxFrames,worldrank,worldsize);
- if (trajFrames==-1) {
- maxFrames=-1;
- }
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/TrajinList.h amber11/AmberTools/src/cpptraj/src/TrajinList.h
---- amber11.orig/AmberTools/src/cpptraj/src/TrajinList.h 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/TrajinList.h 2011-10-25 15:01:28.090288658 +0300
-@@ -13,7 +13,7 @@
- // NOTE: worldsize is passed in as last arg to avoid include of PtrajMpi
- int Add(ArgList *A, ParmFileList *, int);
- // TRAJIN: Set up frames to be processed
-- int SetupFrames();
-+ int SetupFrames(int,int);
- };
- #endif
-
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/TrajoutList.cpp amber11/AmberTools/src/cpptraj/src/TrajoutList.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/TrajoutList.cpp 2011-04-14 15:30:16.000000000 +0300
-+++ amber11/AmberTools/src/cpptraj/src/TrajoutList.cpp 2011-10-25 15:01:28.202288556 +0300
-@@ -1,4 +1,5 @@
- // TrajoutList
-+#include <cstddef>
- #include "TrajoutList.h"
- #include "CpptrajStdio.h"
-
-@@ -20,7 +21,6 @@
- */
- int TrajoutList::Add(ArgList *A, ParmFileList *parmFileList, int worldsize) {
- TrajFile *T;
-- int boxInfo;
- FileFormat writeFormat;
- FileType writeType;
- char *onlyframes;
-@@ -29,7 +29,6 @@
- if (this->ProcessArgList(A,parmFileList)) return 1;
-
- // Init variables
-- boxInfo=0;
- writeFormat=AMBERTRAJ;
- writeType=UNKNOWN_TYPE;
-
-@@ -56,10 +55,6 @@
- if (worldsize>1 && writeFormat!=AMBERRESTART)
- writeType=MPIFILE;
-
-- // Set box info from parm file unless nobox is set.
-- boxInfo=P->ifbox;
-- if (A->hasKey("nobox")) boxInfo=0;
--
- // Set up basic file for given type and format
- // If type is unknown it will be determined from extension or will be standard (default)
- T = this->SetupTrajectory(trajfilename, fileAccess, writeFormat, writeType);
-@@ -90,10 +85,11 @@
- // Set parameter file
- T->P=P;
-
-- // Set box information (only needed for write)
-- T->isBox=boxInfo;
-+ // Set box type from parm file unless "nobox" specified
-+ T->BoxType=P->BoxType;
-+ if (A->hasKey("nobox")) T->BoxType=0;
-
-- // No setup here; Write is set up after first frame read in PtrajState::Run
-+ // No more setup here; Write is set up when first frame written.
- // Add to trajectory file list
- this->push_back(T);
-
-diff -urN amber11.orig/AmberTools/src/etc/chemistry/amber/readparm.py amber11/AmberTools/src/etc/chemistry/amber/readparm.py
---- amber11.orig/AmberTools/src/etc/chemistry/amber/readparm.py 2011-04-14 15:30:17.000000000 +0300
-+++ amber11/AmberTools/src/etc/chemistry/amber/readparm.py 2011-10-25 15:01:28.200288558 +0300
-@@ -118,22 +118,44 @@
- """ Parses the fortran format statement. Recognizes ints, exponents, and strings.
- Returns the number of items/line, size of each item, and type of data """
-
-+ # Get rid of ( and ) specifiers in Fortran format strings. This is a hack, but
-+ # should work for existing chamber prmtop files
-+
-+ format_string = format_string.replace('(','').replace(')','')
-+
-+ # Fix case for E, I, and F
-+
-+ format_string = format_string.replace('e','E')
-+ format_string = format_string.replace('i','I')
-+ format_string = format_string.replace('f','F')
-+
- if 'a' in format_string: # this is a string
- format_parts = format_string.split('a')
-- return int(format_parts[0]), int(format_parts[1]), 'str'
-+ try:
-+ return int(format_parts[0]), int(format_parts[1]), 'str', None
-+ except:
-+ return 1, 80, 'str', None
-
- elif 'I' in format_string: # this is an integer
- format_parts = format_string.split('I')
-- return int(format_parts[0]), int(format_parts[1]), 'int'
-+ if len(format_parts[0].strip()) == 0: format_parts[0] = 1
-+ return int(format_parts[0]), int(format_parts[1]), 'int', None
-
- elif 'E' in format_string: # this is a floating point decimal
- format_parts = format_string.split('E')
- decimal_parts = format_parts[1].split('.')
-- return int(format_parts[0]), int(decimal_parts[0]), 'dec'
-+ if len(format_parts[0].strip()) == 0: format_parts[0] = 1
-+ return int(format_parts[0]), int(decimal_parts[0]), 'dec', int(decimal_parts[1])
-+
-+ elif 'F' in format_string: # this is also a floating point decimal
-+ format_parts = format_string.split('F')
-+ decimal_parts = format_parts[1].split('.')
-+ if len(format_parts[0].strip()) == 0: format_parts[0] = 1
-+ return int(format_parts[0]), int(decimal_parts[0]), 'dec', int(decimal_parts[1])
-
- else:
- print >> stderr, 'Error: Unrecognized format "%s"!' % format_string
-- return 1, 80, 'str'
-+ return 1, 80, 'str', None
-
- # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-@@ -275,7 +297,7 @@
-
- elif prmlines[i][0:7] == '%FORMAT':
- self.formats[current_flag] = prmlines[i][8:len(prmlines[i].strip())-1]
-- number_items_perline, size_item, dat_type = _parseFormat(self.formats[current_flag])
-+ number_items_perline, size_item, dat_type, junk = _parseFormat(self.formats[current_flag])
- gathering_data = True
-
- elif gathering_data:
-@@ -339,17 +361,17 @@
- flag = self.flag_list[i]
- new_prm.write('%%FLAG %s\n' % flag)
- new_prm.write('%%FORMAT(%s)\n' % self.formats[flag])
-- number_items_perline, size_item, dat_type = _parseFormat(self.formats[flag])
-- if dat_type == 'dec':
-- decnum = int(self.formats[flag].split('E')[1].split('.')[1])
-+ number_items_perline, size_item, dat_type, decnum = _parseFormat(self.formats[flag])
- line = ''
- num_items = 0
- if len(self.parm_data[flag]) == 0: # empty field...
- new_prm.write('\n')
- continue
- for j in range(len(self.parm_data[flag])): # write data in new_prm
-- if dat_type == 'dec':
-+ if dat_type == 'dec' and 'E' in self.formats[flag].upper():
- line += ('%%%s.%sE' % (size_item, decnum)) % self.parm_data[flag][j]
-+ elif dat_type == 'dec' and 'F' in self.formats[flag].upper():
-+ line += ('%%%s.%sF' % (size_item, decnum)) % self.parm_data[flag][j]
- elif dat_type == 'int':
- line += ('%%%sd' % size_item) % self.parm_data[flag][j]
- else:
-@@ -764,7 +786,8 @@
- self.LJ_types[self.parm_data["AMBER_ATOM_TYPE"][i]] = self.parm_data["ATOM_TYPE_INDEX"][i]
-
- for i in range(self.pointers["NTYPES"]):
-- lj_index = (i + 1) * (i + 2) / 2 - 1 # n(n+1)/2 th position adjusted for indexing from 0
-+ lj_index = self.parm_data["NONBONDED_PARM_INDEX"][
-+ self.pointers["NTYPES"] * i + i - 1] - 1
- if self.parm_data["LENNARD_JONES_BCOEF"][lj_index] < 1.0e-6:
- self.LJ_radius.append(0)
- self.LJ_depth.append(0)
-diff -urN amber11.orig/AmberTools/src/leap/src/leap/amber.c amber11/AmberTools/src/leap/src/leap/amber.c
---- amber11.orig/AmberTools/src/leap/src/leap/amber.c 2011-03-10 20:12:06.000000000 +0200
-+++ amber11/AmberTools/src/leap/src/leap/amber.c 2011-10-25 15:01:28.139288613 +0300
-@@ -36,6 +36,10 @@
- * UNITs and PARMSETs.
- */
-
-+ /* Arunima Singh (UGA) */
-+ /* 20110420 */
-+ /* Added SCEE/SCNB */
-+
- #include "basics.h"
- #include "vector.h"
- #include "classes.h"
-@@ -240,23 +244,47 @@
- *
- * Read the proper torsion parameter terms.
- */
-+
-+/* Arunima Singh added reading in of scee and scnb fields for proper torsions 20110420 */
- static void
- zAmberReadParmSetPropers( PARMSET psParms, FILE *fIn )
- {
- STRING sLine;
--int iRead, iN;
-+int iRead, iN, iRead2, iRead3;
- STRING saStr[10];
--double dDivisions, dKp, dP0, dN;
-+double dDivisions, dKp, dP0, dN, dScee, dScnb;
-+char *cScee, *cScnb;
-
- memset(saStr, 0, sizeof(saStr)); /* for Purify */
- while (1) {
- FGETS( sLine, fIn );
- NODASHES(sLine);
-- iRead = sscanf( sLine, "%s %s %s %s %lf %lf %lf %lf",
-+
-+ iRead = sscanf( sLine, "%s %s %s %s %lf %lf %lf %lf ",
- saStr[0], saStr[1], saStr[2], saStr[3],
- &dDivisions, &dKp, &dP0, &dN );
-- if ( iRead <= 0 )
-+
-+ cScee = strstr(sLine, "SCEE");
-+ if(cScee!=NULL) {
-+ iRead2 = sscanf( cScee, "SCEE=%lf", &dScee);
-+ iRead++;
-+ }
-+
-+ cScnb = strstr(sLine, "SCNB");
-+ if(cScnb!=NULL) {
-+ iRead3 = sscanf( cScnb, "SCNB=%lf", &dScnb);
-+ iRead++;
-+ }
-+
-+ if ( iRead <= 0 )
- break;
-+
-+ if ( iRead == 8 ) /*Arunima Singh*/
-+ {
-+ dScee = 1.2;
-+ dScnb = 2.0;
-+ }
-+
- MESSAGE(( "Read: %s\n", sLine ));
-
- if ( sLine[0] == ' ' && sLine[1] == ' ') {
-@@ -277,14 +305,37 @@
- zAmberConvertWildCard( saStr[3] );
- iParmSetAddProperTerm( psParms,
- saStr[0], saStr[1], saStr[2], saStr[3],
-- abs(iN), dKp, dP0*DEGTORAD, "" );
-+ abs(iN), dKp, dP0*DEGTORAD, dScee, dScnb, "" );
-+
-+
- while( iN < 0 ) {
- FGETS( sLine, fIn );
- NODASHES(sLine);
- MESSAGE(( "Read extra term: %s\n", sLine ));
-- iRead = sscanf( &sLine[11], "%lf %lf %lf %lf",
-+ iRead = sscanf( &sLine[11], "%lf %lf %lf %lf ",
- &dDivisions, &dKp, &dP0, &dN );
-- if ( iRead<=0 ) break;
-+
-+ cScee = strstr(sLine, "SCEE");
-+ if(cScee!=NULL) {
-+ iRead2 = sscanf( cScee, "SCEE=%lf", &dScee);
-+ iRead++;
-+ }
-+
-+ cScnb = strstr(sLine, "SCNB");
-+ if(cScnb!=NULL) {
-+ iRead3 = sscanf( cScnb, "SCNB=%lf", &dScnb);
-+ iRead++;
-+ }
-+
-+
-+ if ( iRead == 4 ) /*Arunima Singh*/
-+ {
-+ dScee = 1.2;
-+ dScnb = 2.0;
-+ }
-+
-+
-+ if ( iRead<=0 ) break;
-
- if ( dDivisions == 0.0 )
- dDivisions = 1.0;
-@@ -292,7 +343,7 @@
- iN = (int)floor(dN+0.5);
- iParmSetAddProperTerm( psParms,
- saStr[0], saStr[1], saStr[2], saStr[3],
-- abs(iN), dKp, dP0*DEGTORAD, "" );
-+ abs(iN), dKp, dP0*DEGTORAD, dScee, dScnb, "" );
- }
- if ( iRead <= 0 )
- break;
-@@ -311,7 +362,7 @@
- STRING sLine;
- int iRead, iN;
- STRING saStr[10];
--double dKp, dP0, dN;
-+double dKp, dP0, dN, dScee, dScnb;
- BOOL bPrintLine;
-
- memset(saStr, 0, sizeof(saStr)); /* for Purify */
-@@ -335,6 +386,8 @@
- zAmberConvertWildCard( saStr[2] );
- zAmberConvertWildCard( saStr[3] );
- iN = (int)dN;
-+ dScee = 0.0;
-+ dScnb = 0.0;
-
- /*
- * check everything in case a format or other user error
-@@ -362,7 +415,7 @@
-
- iParmSetAddImproperTerm( psParms,
- saStr[0], saStr[1], saStr[2], saStr[3],
-- iN, dKp, dP0*DEGTORAD, "" );
-+ iN, dKp, dP0*DEGTORAD, dScee, dScnb, "" );
- }
- if ( iRead > 0 )
- VP0(( "WARNING: incomplete Improper Torsion line:\n%s", sLine ));
-diff -urN amber11.orig/AmberTools/src/leap/src/leap/build.c amber11/AmberTools/src/leap/src/leap/build.c
---- amber11.orig/AmberTools/src/leap/src/leap/build.c 2011-03-10 20:12:06.000000000 +0200
-+++ amber11/AmberTools/src/leap/src/leap/build.c 2011-10-25 15:01:28.140288613 +0300
-@@ -42,8 +42,9 @@
- *
- */
-
--
--
-+ /* Arunima Singh (UGA) */
-+ /* 20110420 */
-+ /* Added SCEE/SCNB */
-
- #include "basics.h"
-
-@@ -1567,7 +1568,7 @@
- LOOP lAtoms, lTemp;
- ATOM aAtom, aAtom1, aAtom2, aAtom3, aAtom4;
- BOOL bM1, bM2, bM3, bM4, bOneMinimizedAtom;
--double dKb, dR0, dKt, dT0, dTkub, dRkub, dKp, dP0;
-+double dKb, dR0, dKt, dT0, dTkub, dRkub, dKp, dP0, dScee, dScnb;
- STRING sAtom1, sAtom2, sAtom3, sAtom4, sDesc;
- PARMSET psTemp;
- TORSION tTorsion;
-@@ -1757,7 +1758,7 @@
- ParmSetTORSIONTerm( tTorsion, i,
- &iIndex,
- sAtom1, sAtom2, sAtom3, sAtom4,
-- &iN, &dKp, &dP0, sDesc );
-+ &iN, &dKp, &dP0, &dScee, &dScnb, sDesc );
- if ( !bMinimizerAddTorsion( mStrain,
- aAtom1, aAtom2, aAtom3, aAtom4,
- (double)iN, dKp, dP0 )) {
-diff -urN amber11.orig/AmberTools/src/leap/src/leap/model.c amber11/AmberTools/src/leap/src/leap/model.c
---- amber11.orig/AmberTools/src/leap/src/leap/model.c 2011-04-14 15:30:17.000000000 +0300
-+++ amber11/AmberTools/src/leap/src/leap/model.c 2011-10-25 15:01:28.141288612 +0300
-@@ -39,7 +39,9 @@
- * are determined from atom types.
- */
-
--
-+ /* Arunima Singh (UGA) */
-+ /* 20110420 */
-+ /* Added SCEE/SCNB */
-
-
- #include "basics.h"
-@@ -781,16 +783,6 @@
- maPAtom++;
- }
- }
-- if ( iAtomCoordination(aX) !=
-- 1 + maPAtom - &(mtTorsions.maaXBonds[0]) ) {
-- VP0(( "Error: Atom %s has force field coordination %i\n"
-- " but only %i bonded neighbors.\n"
-- " The cause may be an incorrect atom type, and\n"
-- " the effect may be a crash very soon.\n",
-- sContainerFullDescriptor((CONTAINER)aX,s1),
-- iAtomCoordination(aX),
-- 1 + maPAtom - &(mtTorsions.maaXBonds[0]) ));
-- }
- for ( i=iAtomCoordination(aX); i<MAXBONDS; i++ ) {
- maPAtom->aAtom = NULL;
- maPAtom++;
-@@ -824,16 +816,6 @@
- maPAtom++;
- }
- }
-- if ( iAtomCoordination(aY) !=
-- 1 + maPAtom - &(mtTorsions.maaYBonds[0]) ) {
-- VP0(( "Error: Atom %s has force field coordination %i\n"
-- " but only %i bonded neighbors.\n"
-- " The cause may be an incorrect atom type, and\n"
-- " the effect may be a crash very soon.\n",
-- sContainerFullDescriptor((CONTAINER)aY,s1),
-- iAtomCoordination(aY),
-- 1 + maPAtom - &(mtTorsions.maaYBonds[0]) ));
-- }
- for ( i=iAtomCoordination(aY); i<MAXBONDS; i++ ) {
- maPAtom->aAtom = NULL;
- maPAtom++;
-@@ -1205,6 +1187,8 @@
- int iN;
- double dK;
- double dE;
-+ double dSce; /*Arunima Singh*/
-+ double dScn; /*Arunima Singh*/
- } H_PROPERPARMt;
-
- typedef struct {
-@@ -1222,12 +1206,13 @@
-
- /* Keep iHybrid2 <= iHybrid3 */
-
-+/* Arunima Singh 20110413. Added Scee and Scnb AMBER defaults of 1.2 and 2.0 */
- #define TFORCE 20.0
- static H_PROPERPARMt SppaPropers[] = {
--{ HSP3, HSP3, 3, 1.0, 0.0 }, /* Non bond */
--{ HSP2, HSP3, 6, -2.0, 0.0 }, /* Non bond */
--{ HSP2, HSP2, 2, -4.0, 0.0 }, /* Pi bond overlap */
--{ HSP1, HSP1, 1, 0.0, 0.0 } /* Not interesting */
-+{ HSP3, HSP3, 3, 1.0, 0.0, 1.2, 2.0 }, /* Non bond */
-+{ HSP2, HSP3, 6, -2.0, 0.0, 1.2, 2.0 }, /* Non bond */
-+{ HSP2, HSP2, 2, -4.0, 0.0, 1.2, 2.0 }, /* Pi bond overlap */
-+{ HSP1, HSP1, 1, 0.0, 0.0, 1.2, 2.0 } /* Not interesting */
- };
-
- #define AFORCE 100.0
-@@ -1290,6 +1275,8 @@
- SppaPropers[i].iN,
- SppaPropers[i].dK,
- SppaPropers[i].dE,
-+ SppaPropers[i].dSce,
-+ SppaPropers[i].dScn,
- sDesc );
- }
- }
-diff -urN amber11.orig/AmberTools/src/leap/src/leap/parmSet.c amber11/AmberTools/src/leap/src/leap/parmSet.c
---- amber11.orig/AmberTools/src/leap/src/leap/parmSet.c 2011-03-10 20:12:06.000000000 +0200
-+++ amber11/AmberTools/src/leap/src/leap/parmSet.c 2011-10-25 15:01:28.143288610 +0300
-@@ -54,7 +54,9 @@
- * search routines REQUIRE pre-ordering.
- */
-
--
-+ /* Arunima Singh (UGA) */
-+ /* 20110420 */
-+ /* Added SCEE/SCNB */
-
- #include "basics.h"
-
-@@ -965,6 +967,8 @@
- /*
- * copy into 1 vararray & set iType
- */
-+
-+ /*Arunima Singh added scee and scnb into the database */
- vaTorsTypes = vaVarArrayCopy2( psLib->vaTorsions, psLib->vaImpropers );
- tP = PVAI(vaTorsTypes,TORSIONPARMt,0);
- for (i=0; i<iVarArrayElementCount(psLib->vaTorsions); i++, tP++)
-@@ -980,8 +984,12 @@
- 7, "n",
- (char *)&(PVAI(vaTorsTypes,TORSIONPARMt,0)->iN),
- iVarArrayElementSize(vaTorsTypes),
-- 0, NULL, NULL, 0,
-- 0, NULL, NULL, 0,
-+ 9, "scee",
-+ (char *)&(PVAI(vaTorsTypes,TORSIONPARMt,0)->dScee),
-+ iVarArrayElementSize(vaTorsTypes),
-+ 10, "scnb",
-+ (char *)&(PVAI(vaTorsTypes,TORSIONPARMt,0)->dScnb),
-+ iVarArrayElementSize(vaTorsTypes),
- 0, NULL, NULL, 0,
- 0, NULL, NULL, 0,
- 0, NULL, NULL, 0,
-@@ -1008,7 +1016,7 @@
- 4, "type4",
- (char *)&(PVAI(vaTorsTypes,TORSIONPARMt,0)->sType4),
- iVarArrayElementSize(vaTorsTypes),
-- 9, "desc",
-+ 11, "desc",
- (char *)&(PVAI(vaTorsTypes,TORSIONPARMt,0)->sDesc),
- iVarArrayElementSize(vaTorsTypes)
- );
-@@ -1586,10 +1594,15 @@
- * Add a torsion parameter to the PARMSET.
- * Return the index.
- */
-+
-+ /* Arunima Singh (UGA) */
-+ /* 20110420 */
-+ /* Added SCEE/SCNB */
-+
- int
- iParmSetAddProperTerm( PARMSET psLib,
- char *sType1, char *sType2, char *sType3, char *sType4,
-- int iN, double dKp, double dP0, char *sDesc )
-+ int iN, double dKp, double dP0, double dScee, double dScnb, char *sDesc )
- {
- TORSIONPARMt tpTorsion;
-
-@@ -1605,6 +1618,8 @@
- tpTorsion.dKp = dKp;
- tpTorsion.iN = iN;
- tpTorsion.dP0 = dP0;
-+ tpTorsion.dScee = dScee;
-+ tpTorsion.dScnb = dScnb;
- strcpy( tpTorsion.sOrder, "0123" );
- if ( sDesc != NULL )
- strcpy( tpTorsion.sDesc, sDesc );
-@@ -1633,7 +1648,7 @@
- int
- iParmSetAddImproperTerm( PARMSET psLib,
- char *sType1, char *sType2, char *sType3, char *sType4,
-- int iN, double dKp, double dP0, char *sDesc )
-+ int iN, double dKp, double dP0, double dScee, double dScnb, char *sDesc )
- {
- TORSIONPARMt tpImproper;
- orderStr sOrder;
-@@ -2022,7 +2037,7 @@
- void
- ParmSetTORSIONTerm( TORSION tTorsion, int iTorsionIndex, int *iPParmSetIndex,
- char *cPType1, char *cPType2, char *cPType3, char *cPType4,
-- int *iPN, double *dPKp, double *dPP0, char *sDesc )
-+ int *iPN, double *dPKp, double *dPP0, double *dPScee, double *dPScnb, char *sDesc )
- {
- TORSION_MATCHt *tmPCur;
-
-@@ -2035,6 +2050,8 @@
- *iPN = tmPCur->tpTorsion.iN;
- *dPKp = tmPCur->tpTorsion.dKp;
- *dPP0 = tmPCur->tpTorsion.dP0;
-+ *dPScee = tmPCur->tpTorsion.dScee;
-+ *dPScnb = tmPCur->tpTorsion.dScnb;
- strcpy(sDesc, tmPCur->tpTorsion.sDesc);
- }
-
-@@ -2050,7 +2067,7 @@
- BOOL
- bParmSetTORSIONAddProperTerm( TORSION tTorsion,
- char *cPType1, char *cPType2, char *cPType3, char *cPType4,
-- int iN, double dKp, double dP0, char *sDesc )
-+ int iN, double dKp, double dP0, double dScee, double dScnb, char *sDesc )
- {
- TORSIONPARMt tpTorsion;
-
-@@ -2066,6 +2083,8 @@
- tpTorsion.iN = iN;
- tpTorsion.dKp = dKp;
- tpTorsion.dP0 = dP0;
-+ tpTorsion.dScee = dScee;
-+ tpTorsion.dScnb = dScnb;
- strcpy(tpTorsion.sDesc, sDesc);
- strcpy( tpTorsion.sOrder, "0123" );
-
-@@ -2087,7 +2106,7 @@
- BOOL
- bParmSetTORSIONAddImproperTerm( TORSION tTorsion,
- char *cPType1, char *cPType2, char *cPType3, char *cPType4,
-- int iN, double dKp, double dP0, char *sDesc )
-+ int iN, double dKp, double dP0, double dScee, double dScnb, char *sDesc )
- {
- TORSIONPARMt tpTorsion;
- orderStr sOrder;
-@@ -2104,6 +2123,8 @@
- tpTorsion.iN = iN;
- tpTorsion.dKp = dKp;
- tpTorsion.dP0 = dP0;
-+ tpTorsion.dScee = dScee;
-+ tpTorsion.dScnb = dScnb;
- strcpy(tpTorsion.sDesc, sDesc);
- strcpy( tpTorsion.sOrder, sOrder );
-
-@@ -2516,7 +2537,7 @@
- void
- ParmSetTorsion( PARMSET psLib, int i,
- char *sType1, char *sType2, char *sType3, char *sType4,
-- int *iPN, double *dPKp, double *dPP0, char *sDesc)
-+ int *iPN, double *dPKp, double *dPP0, double *dPScee, double *dPScnb, char *sDesc)
- {
- TORSIONPARMt *tpPTorsion;
-
-@@ -2531,6 +2552,8 @@
- strcpy( sType4, WILD_CARD_TYPE );
- *iPN = 0;
- *dPKp = 0;
-+ *dPScee = 0;
-+ *dPScnb = 0;
- *dPP0 = 0;
- strcpy( sDesc, "??" );
- return;
-@@ -2543,7 +2566,10 @@
- *iPN = tpPTorsion->iN;
- *dPKp = tpPTorsion->dKp;
- *dPP0 = tpPTorsion->dP0;
-+ *dPScee = tpPTorsion->dScee;
-+ *dPScnb = tpPTorsion->dScnb;
- strcpy( sDesc, tpPTorsion->sDesc );
-+
- }
-
-
-@@ -2557,7 +2583,7 @@
- void
- ParmSetImproper( PARMSET psLib, int i,
- char *sType1, char *sType2, char *sType3, char *sType4,
-- int *iPN, double *dPKp, double *dPP0, char *sDesc)
-+ int *iPN, double *dPKp, double *dPP0, double *dPScee, double *dPScnb, char *sDesc)
- {
- TORSIONPARMt *tpPImproper;
-
-@@ -2573,6 +2599,8 @@
- *iPN = 0;
- *dPKp = 0;
- *dPP0 = 0;
-+ *dPScee = 0;
-+ *dPScnb = 0;
- strcpy( sDesc, "??" );
- return;
- }
-@@ -2584,6 +2612,8 @@
- *iPN = tpPImproper->iN;
- *dPKp = tpPImproper->dKp;
- *dPP0 = tpPImproper->dP0;
-+ *dPScee = tpPImproper->dScee;
-+ *dPScnb = tpPImproper->dScnb;
- strcpy( sDesc, tpPImproper->sDesc );
- }
-
-@@ -2740,7 +2770,7 @@
- void
- ParmSetUpdateTorsion( PARMSET psLib, int i,
- char *sType1, char *sType2, char *sType3, char *sType4,
-- int *iPN, double *dPKp, double *dPP0, char *sDescription)
-+ int *iPN, double *dPKp, double *dPP0, double *dPScee, double *dPScnb, char *sDescription)
- {
- TORSIONPARMt *tpPTorsion;
- orderStr sOrder;
-@@ -2754,6 +2784,8 @@
- if ( iPN != (int*)NULL ) tpPTorsion->iN = *iPN;
- if ( dPKp != (double*)NULL) tpPTorsion->dKp = *dPKp;
- if ( dPP0 != (double*)NULL) tpPTorsion->dP0 = *dPP0;
-+ if ( dPScee != (double*)NULL) tpPTorsion->dScee = *dPScee;
-+ if ( dPScnb != (double*)NULL) tpPTorsion->dScnb = *dPScnb;
- if (sDescription != (char*)NULL ) strcpy(tpPTorsion->sDesc, sDescription);
-
- strcpy( sOrder, "0123" );
-@@ -2777,7 +2809,7 @@
- void
- ParmSetUpdateImproper( PARMSET psLib, int i,
- char *sType1, char *sType2, char *sType3, char *sType4,
-- int *iPN, double *dPKp, double *dPP0, char *sDescription)
-+ int *iPN, double *dPKp, double *dPP0, double *dPScee, double *dPScnb, char *sDescription)
- {
- TORSIONPARMt *tpPTorsion;
- orderStr sOrder;
-@@ -2790,6 +2822,8 @@
- if ( iPN != (int*)NULL ) tpPTorsion->iN = *iPN;
- if ( dPKp != (double*)NULL) tpPTorsion->dKp = *dPKp;
- if ( dPP0 != (double*)NULL) tpPTorsion->dP0 = *dPP0;
-+ if ( dPScee != (double*)NULL) tpPTorsion->dScee = *dPScee;
-+ if ( dPScnb != (double*)NULL) tpPTorsion->dScnb = *dPScnb;
- if (sDescription != (char*)NULL ) strcpy(tpPTorsion->sDesc, sDescription);
-
- strcpy( sOrder, "0123" );
-@@ -2979,6 +3013,7 @@
- tpPCur->sType1, tpPCur->sType2,
- tpPCur->sType3, tpPCur->sType4,
- tpPCur->iN, tpPCur->dKp, tpPCur->dP0/DEGTORAD,
-+ tpPCur->dScee, tpPCur->dScnb,
- tpPCur->sOrder, tpPCur->sDesc );
- }
- }
-@@ -2996,6 +3031,7 @@
- tpPCur->sType1, tpPCur->sType2,
- tpPCur->sType3, tpPCur->sType4,
- tpPCur->iN, tpPCur->dKp, tpPCur->dP0/DEGTORAD,
-+ tpPCur->dScee, tpPCur->dScnb,
- tpPCur->sDesc );
- }
- }
-diff -urN amber11.orig/AmberTools/src/leap/src/leap/parmSet.h amber11/AmberTools/src/leap/src/leap/parmSet.h
---- amber11.orig/AmberTools/src/leap/src/leap/parmSet.h 2011-03-10 20:12:06.000000000 +0200
-+++ amber11/AmberTools/src/leap/src/leap/parmSet.h 2011-10-25 15:01:28.144288609 +0300
-@@ -42,6 +42,9 @@
- *
- *
- */
-+ /* Arunima Singh (UGA) */
-+ /* 20110420 */
-+ /* Added SCEE/SCNB */
-
- #ifndef PARMSET_H
- #define PARMSET_H
-@@ -96,6 +99,8 @@
- int iN;
- double dKp;
- double dP0;
-+ double dScee; /* for propers */ /* Arunima Singh */
-+ double dScnb; /* for propers */ /* Arunima Singh */
- orderStr sOrder; /* for impropers */
- DESCRIPTION sDesc;
- } TORSIONPARMt;
-@@ -158,10 +163,10 @@
- double dKt, double dT0, double dTkub, double dRkub, char *sDesc);
- extern int iParmSetAddProperTerm(PARMSET psLib,
- char *sType1, char *sType2, char *sType3, char *sType4,
-- int iN, double dKp, double dP0, char *sDesc);
-+ int iN, double dKp, double dP0, double dScee, double dScnb, char *sDesc); /* for proper dihedrals */ /* Arunima Singh */
- extern int iParmSetAddImproperTerm(PARMSET psLib,
- char *sType1, char *sType2, char *sType3, char *sType4,
-- int iN, double dKp, double dP0, char *sDesc);
-+ int iN, double dKp, double dP0, double dScee, double dScnb, char *sDesc); /* Arunima Singh : added for proper dihedrals, but has to be included in impropers to maintain common data structure usage */
- extern int iParmSetAddHBond(PARMSET psLib, char *sType1, char *sType2,
- double dA, double dB, char *sDesc);
-
-@@ -216,15 +221,15 @@
- extern void ParmSetTORSIONTerm(TORSION tTorsion, int iTorsionIndex,
- int *iPParmSetIndex,
- char *cPTyp1, char *cPTyp2, char *cPTyp3, char *cPTyp4,
-- int *iPN, double *dPKp, double *dPP0, char *sDesc );
-+ int *iPN, double *dPKp, double *dPP0, double *dPScee, double *dPScnb, char *sDesc );
- extern BOOL bParmSetTORSIONAddProperTerm(TORSION tTorsion,
- char *cPType1, char *cPType2,
- char *cPType3, char *cPType4,
-- int iN, double dKp, double dP0, char *sDesc);
-+ int iN, double dKp, double dP0, double dScee, double dScnb, char *sDesc);
- extern BOOL bParmSetTORSIONAddImproperTerm(TORSION tTorsion,
- char *cPType1, char *cPType2,
- char *cPType3, char *cPType4,
-- int iN, double dKp, double dP0, char *sDesc);
-+ int iN, double dKp, double dP0, double dScee, double dScnb, char *sDesc);
- extern void ParmSetTORSIONOrderAtoms();
- extern void ParmSetImproperOrderAtoms( TORSION tTorsion, int iTorsionIndex,
- char *cPaTypes[4], int iaIndexes[4] );
-@@ -268,10 +273,10 @@
- char *sDesc);
- extern void ParmSetTorsion(PARMSET psLib, int i,
- char *sType1, char *sType2, char *sType3, char *sType4,
-- int *iPN, double *dPKp, double *dPP0, char *sDesc);
-+ int *iPN, double *dPKp, double *dPP0, double *dPScee, double *dPScnb, char *sDesc);
- extern void ParmSetImproper(PARMSET psLib, int i,
- char *sType1, char *sType2, char *sType3, char *sType4,
-- int *iPN, double *dPKp, double *dPP0, char *sDesc);
-+ int *iPN, double *dPKp, double *dPP0, double *dPScee, double *dPScnb, char *sDesc);
- extern void ParmSetHBond(PARMSET psLib, int i, char *sType1, char *sType2,
- double *dPA, double *dPB, char *sDesc);
-
-@@ -296,11 +301,11 @@
- double *dPKt, double *dPT0, char *sDescription);
- extern void ParmSetUpdateTorsion(PARMSET psLib, int i,
- char *sType1, char *sType2, char *sType3, char *sType4,
-- int *iPN, double *dPKp, double *dPP0,
-+ int *iPN, double *dPKp, double *dPP0, double *dPScee, double *dPScnb,
- char *sDescription);
- extern void ParmSetUpdateImproper(PARMSET psLib, int i,
- char *sType1, char *sType2, char *sType3, char *sType4,
-- int *iPN, double *dPKp, double *dPP0,
-+ int *iPN, double *dPKp, double *dPP0, double *dPScee, double *dPScnb,
- char *sDescription);
- extern void ParmSetUpdateHBond(PARMSET psLib, int i,
- char *sType1, char *sType2,
-diff -urN amber11.orig/AmberTools/src/leap/src/leap/unitio.c amber11/AmberTools/src/leap/src/leap/unitio.c
---- amber11.orig/AmberTools/src/leap/src/leap/unitio.c 2011-03-10 20:12:06.000000000 +0200
-+++ amber11/AmberTools/src/leap/src/leap/unitio.c 2011-10-25 15:01:28.192288568 +0300
-@@ -70,6 +70,10 @@
- * zbUnitIOIndexBondParameters and zUnitDoAtoms are now "extern functions"
- */
-
-+ /* Arunima Singh (UGA) */
-+ /* 20110420 */
-+ /* Added SCEE/SCNB */
-+
- #include <time.h>
-
- #include "basics.h"
-@@ -1585,7 +1589,9 @@
- tC.dKp = tpA->dKp;
- tC.iN = tpA->iN;
- tC.dP0 = tpA->dP0;
-- VarArrayAdd(vaB, (GENP) & tC);
-+ tC.dScee = tpA->dScee;
-+ tC.dScnb = tpA->dScnb;
-+ VarArrayAdd(vaB, (GENP) & tC);
- iIndex++;
- iOldIndex = iParmOffset + iA + 1;
-
-@@ -1615,6 +1621,10 @@
- continue;
- if (tpB->dP0 != tpA->dP0)
- continue;
-+ if (tpB->dScee != tpA->dScee)
-+ continue;
-+ if (tpB->dScnb != tpA->dScnb)
-+ continue;
-
- /*
- * B is a duplicate of A
-@@ -1698,12 +1708,12 @@
- int iTerm, iPertTerm;
- BOOL bDone, bUse, bUsePert, bCopy, bCopyPert, bEnd, bPertEnd;
- int iN, iPertIndex, iPertN, iLastN, iLastPertN;
-- double dKp, dP0, dPertKp, dPertP0;
-+ double dKp, dP0, dScee, dScnb, dPertKp, dPertP0, dPertScee, dPertScnb;
- BOOL bCalc14, bCalcPert14;
- #ifdef DEBUG2
- STRING s1, s2, s3, s4;
- int iTParm, iTmp;
-- double dTK, dTP;
-+ double dTK, dTP, dTScee, dTScnb;
- STRING sT1, sT2, sT3, sT4, sTemp;
- #endif
- STRING sDesc;
-@@ -2016,9 +2026,9 @@
- ParmSetTORSIONTerm(tTorsion, i,
- &iTParm,
- sT1, sT2, sT3, sT4,
-- &iTmp, &dTK, &dTP, sTemp);
-- MESSAGE(("Term %3d %d %s-%s-%s-%s %d %lf %lf\n",
-- i, iTParm, sT1, sT2, sT3, sT4, iTmp, dTK, dTP));
-+ &iTmp, &dTK, &dTP, &dTScee, &dTScnb, sTemp);
-+ MESSAGE(("Term %3d %d %s-%s-%s-%s %d %lf %lf %lf %lf\n",
-+ i, iTParm, sT1, sT2, sT3, sT4, iTmp, dTK, dTP, dTScee, dTScnb));
- }
- if (bPerturbTorsion) {
- MESSAGE(("Pert%s %s-%s-%s-%s found %d terms\n",
-@@ -2029,9 +2039,9 @@
- ParmSetTORSIONTerm(tPertTorsion, i,
- &iTParm,
- sT1, sT2, sT3, sT4,
-- &iTmp, &dTK, &dTP, sTemp);
-- MESSAGE(("Term %3d %d %s-%s-%s-%s %d %lf %lf\n",
-- i, iTParm, sT1, sT2, sT3, sT4, iTmp, dTK, dTP));
-+ &iTmp, &dTK, &dTP, &dTScee, &dTScnb, sTemp);
-+ MESSAGE(("Term %3d %d %s-%s-%s-%s %d %lf %lf %lf %lf\n",
-+ i, iTParm, sT1, sT2, sT3, sT4, iTmp, dTK, dTP dTScee, dTScnb));
- }
- }
- #endif
-@@ -2061,7 +2071,7 @@
- ParmSetTORSIONTerm(tTorsion, iTerm,
- &iIndex,
- sAtom1, sAtom2, sAtom3, sAtom4,
-- &iN, &dKp, &dP0, sDesc);
-+ &iN, &dKp, &dP0, &dScee, &dScnb, sDesc);
- MESSAGE(("First non-perturbed multiplicity: %d\n", iN));
- } else {
- if (bProper) {
-@@ -2082,7 +2092,7 @@
- ParmSetTORSIONTerm(tPertTorsion, iPertTerm,
- &iPertIndex,
- sPert1, sPert2, sPert3, sPert4,
-- &iPertN, &dPertKp, &dPertP0, sDesc);
-+ &iPertN, &dPertKp, &dPertP0, &dPertScee, &dPertScnb, sDesc);
- MESSAGE(("First perturbed multiplicity: %d\n", iPertN));
- } else
- bPertEnd = TRUE;
-@@ -2175,14 +2185,14 @@
- if (bProper)
- iIndex = iParmSetAddProperTerm(uUnit->psParameters,
- sAtom1, sAtom2, sAtom3,
-- sAtom4, iN, dKp, dP0,
-- sDesc);
-+ sAtom4, iN, dKp, dP0,
-+ dScee, dScnb, sDesc);
- /* else if ( !GDefaults.iCharmm ) ???---should I do this???? */
- else
- iIndex = iParmSetAddImproperTerm(uUnit->psParameters,
- sAtom1, sAtom2,
- sAtom3, sAtom4, iN,
-- dKp, dP0, sDesc);
-+ dKp, dP0, dScee, dScnb, sDesc);
- }
- if (bCopyPert) {
- if (bProper) {
-@@ -2190,13 +2200,13 @@
- sPert1, sPert2,
- sPert3, sPert4,
- iPertN, dPertKp,
-- dPertP0, sDesc);
-+ dPertP0, dScee, dScnb, sDesc);
- } else {
- iPertIndex =
- iParmSetAddImproperTerm(uUnit->psParameters,
- sPert1, sPert2, sPert3,
- sPert4, iPertN, dPertKp,
-- dPertP0, sDesc);
-+ dPertP0, dScee, dScnb, sDesc);
- }
- MESSAGE(("iPertIndex = %d\n", iPertIndex));
- }
-@@ -2215,7 +2225,7 @@
- ParmSetTORSIONTerm(tTorsion, iTerm,
- &iIndex,
- sAtom1, sAtom2, sAtom3, sAtom4,
-- &iN, &dKp, &dP0, sDesc);
-+ &iN, &dKp, &dP0, &dScee, &dScnb, sDesc);
- }
- MESSAGE(
- ("Advancing non-perturbed multiplicity to %d\n",
-@@ -2231,7 +2241,7 @@
- ParmSetTORSIONTerm(tPertTorsion, iPertTerm,
- &iPertIndex,
- sPert1, sPert2, sPert3, sPert4,
-- &iPertN, &dPertKp, &dPertP0, sDesc);
-+ &iPertN, &dPertKp, &dPertP0, &dPertScee, &dPertScnb, sDesc);
- }
- MESSAGE(
- ("Advancing perturbed multiplicity to %d\n",
-@@ -3988,7 +3998,7 @@
- SAVEATOMt *saPAtom;
- SAVETORSIONt *stPTorsion;
- SAVERESTRAINTt *srPRestraint;
-- double dMass, dPolar, dR, dKb, dR0, dKt, dT0, dTkub, dRkub, dKp, dP0,
-+ double dMass, dPolar, dR, dKb, dR0, dKt, dT0, dTkub, dRkub, dKp, dP0, dScee, dScnb,
- dC, dD, dTemp;
- STRING sAtom1, sAtom2, sAtom3, sAtom4, sType1, sType2;
- int iN, iAtoms, iMaxAtoms, iTemp, iAtom, iCalc14, iProper;
-@@ -4585,16 +4595,16 @@
- iParmSetTotalImproperParms(uUnit->psParameters)));
- for (i = 0; i < iParmSetTotalTorsionParms(uUnit->psParameters); i++) {
- ParmSetTorsion(uUnit->psParameters, i, sAtom1, sAtom2,
-- sAtom3, sAtom4, &iN, &dKp, &dP0, sDesc);
-- MESSAGE(("Torsion %d %s-%s-%s-%s %d %lf %lf\n",
-- i, sAtom1, sAtom2, sAtom3, sAtom4, iN, dKp, dP0));
-+ sAtom3, sAtom4, &iN, &dKp, &dP0, &dScee, &dScnb, sDesc);
-+ MESSAGE(("Torsion %d %s-%s-%s-%s %d %lf %lf %lf %lf\n",
-+ i, sAtom1, sAtom2, sAtom3, sAtom4, iN, dKp, dP0, dScee, dScnb));
- FortranWriteDouble(dKp);
- }
- for (i = 0; i < iParmSetTotalImproperParms(uUnit->psParameters); i++) {
- ParmSetImproper(uUnit->psParameters, i, sAtom1, sAtom2,
-- sAtom3, sAtom4, &iN, &dKp, &dP0, sDesc);
-- MESSAGE(("Improper %d %s-%s-%s-%s %d %lf %lf\n",
-- i, sAtom1, sAtom2, sAtom3, sAtom4, iN, dKp, dP0));
-+ sAtom3, sAtom4, &iN, &dKp, &dP0, &dScee, &dScnb, sDesc);
-+ MESSAGE(("Improper %d %s-%s-%s-%s %d %lf %lf %lf %lf\n",
-+ i, sAtom1, sAtom2, sAtom3, sAtom4, iN, dKp, dP0, dScee, dScnb));
- FortranWriteDouble(dKp);
- }
- /* Write the torsion RESTRAINT constants AND set the index */
-@@ -4612,13 +4622,13 @@
- FortranFormat(5, DBLFORMAT);
- for (i = 0; i < iParmSetTotalTorsionParms(uUnit->psParameters); i++) {
- ParmSetTorsion(uUnit->psParameters, i, sAtom1, sAtom2,
-- sAtom3, sAtom4, &iN, &dKp, &dP0, sDesc);
-+ sAtom3, sAtom4, &iN, &dKp, &dP0, &dScee, &dScnb, sDesc);
- dTemp = iN;
- FortranWriteDouble(dTemp);
- }
- for (i = 0; i < iParmSetTotalImproperParms(uUnit->psParameters); i++) {
- ParmSetImproper(uUnit->psParameters, i, sAtom1, sAtom2,
-- sAtom3, sAtom4, &iN, &dKp, &dP0, sDesc);
-+ sAtom3, sAtom4, &iN, &dKp, &dP0, &dScee, &dScnb, sDesc);
- dTemp = iN;
- FortranWriteDouble(dTemp);
- }
-@@ -4637,12 +4647,12 @@
- FortranFormat(5, DBLFORMAT);
- for (i = 0; i < iParmSetTotalTorsionParms(uUnit->psParameters); i++) {
- ParmSetTorsion(uUnit->psParameters, i, sAtom1, sAtom2,
-- sAtom3, sAtom4, &iN, &dKp, &dP0, sDesc);
-+ sAtom3, sAtom4, &iN, &dKp, &dP0, &dScee, &dScnb, sDesc);
- FortranWriteDouble(dP0);
- }
- for (i = 0; i < iParmSetTotalImproperParms(uUnit->psParameters); i++) {
- ParmSetImproper(uUnit->psParameters, i, sAtom1, sAtom2,
-- sAtom3, sAtom4, &iN, &dKp, &dP0, sDesc);
-+ sAtom3, sAtom4, &iN, &dKp, &dP0, &dScee, &dScnb, sDesc);
- FortranWriteDouble(dP0);
- }
- /* Write the torsion RESTRAINT constants AND set the index */
-@@ -4650,6 +4660,60 @@
- RESTRAINTLOOP(RESTRAINTTORSION, dN, i + 1);
- FortranEndLine();
-
-+ /* Arunima Singh (UGA) */
-+ /* 20110420 */
-+ /* Added Printing SCEE/SCNB */
-+
-+
-+ /* -17.5A- SCEE for torsions */
-+ FortranDebug("-17.5A-");
-+
-+ MESSAGE(("Writing SCEE scale factor for torsion interaction\n"));
-+ FortranFormat(1, "%-80s");
-+ FortranWriteString("%FLAG SCEE_SCALE_FACTOR");
-+ FortranWriteString("%FORMAT(5E16.8)");
-+ FortranFormat(5, DBLFORMAT);
-+ for (i = 0; i < iParmSetTotalTorsionParms(uUnit->psParameters); i++) {
-+ ParmSetTorsion(uUnit->psParameters, i, sAtom1, sAtom2,
-+ sAtom3, sAtom4, &iN, &dKp, &dP0, &dScee, &dScnb, sDesc);
-+ FortranWriteDouble(dScee);
-+ }
-+ for (i = 0; i < iParmSetTotalImproperParms(uUnit->psParameters); i++) {
-+ ParmSetImproper(uUnit->psParameters, i, sAtom1, sAtom2,
-+ sAtom3, sAtom4, &iN, &dKp, &dP0, &dScee, &dScnb, sDesc);
-+ FortranWriteDouble(dScee);
-+ }
-+ /* Write the torsion RESTRAINT constants AND set the index */
-+ /* for where the interaction can find its constants */
-+ RESTRAINTLOOP(RESTRAINTTORSION, dX0, i + 1);
-+ FortranEndLine();
-+
-+ /* -17.5B- SCNB for torsions */
-+ FortranDebug("-17.5B-");
-+
-+ MESSAGE(("Writing SCNB scale factor for torsion interaction\n"));
-+ FortranFormat(1, "%-80s");
-+ FortranWriteString("%FLAG SCNB_SCALE_FACTOR");
-+ FortranWriteString("%FORMAT(5E16.8)");
-+ FortranFormat(5, DBLFORMAT);
-+ for (i = 0; i < iParmSetTotalTorsionParms(uUnit->psParameters); i++) {
-+ ParmSetTorsion(uUnit->psParameters, i, sAtom1, sAtom2,
-+ sAtom3, sAtom4, &iN, &dKp, &dP0, &dScee, &dScnb, sDesc);
-+ FortranWriteDouble(dScnb);
-+ }
-+ for (i = 0; i < iParmSetTotalImproperParms(uUnit->psParameters); i++) {
-+ ParmSetImproper(uUnit->psParameters, i, sAtom1, sAtom2,
-+ sAtom3, sAtom4, &iN, &dKp, &dP0, &dScee, &dScnb, sDesc);
-+ FortranWriteDouble(dScnb);
-+ }
-+ /* Write the torsion RESTRAINT constants AND set the index */
-+ /* for where the interaction can find its constants */
-+ RESTRAINTLOOP(RESTRAINTTORSION, dX0, i + 1);
-+ FortranEndLine();
-+
-+ /* Arunima Singh */
-+ /* End of adding SCEE/SCNB */
-+
- /* -18- Not used, reserved for future use, uses NATYP */
- /* Corresponds to the AMBER SOLTY array */
- FortranDebug("-18-");
-@@ -6009,7 +6073,7 @@
- SAVEATOMt *saPAtom;
- SAVETORSIONt *stPTorsion;
- SAVERESTRAINTt *srPRestraint;
--double dMass, dPolar, dR, dKb, dR0, dKt, dT0, dTkub, dRkub, dKp, dP0, dC, dD, dTemp;
-+double dMass, dPolar, dR, dKb, dR0, dKt, dT0, dTkub, dRkub, dKp, dP0, dScee, dScnb, dC, dD, dTemp;
- STRING sAtom1, sAtom2, sAtom3, sAtom4, sType1, sType2;
- int iN, iAtoms, iMaxAtoms, iTemp, iAtom, iCalc14, iProper;
- int iElement, iHybridization, iStart, iFirstSolvent;
-@@ -6547,19 +6611,19 @@
- for ( i=0; i<iParmSetTotalTorsionParms(uUnit->psParameters); i++ ) {
- ParmSetTorsion( uUnit->psParameters, i, sAtom1, sAtom2,
- sAtom3, sAtom4,
-- &iN, &dKp, &dP0, sDesc );
-- MESSAGE(( "Torsion %d %s-%s-%s-%s %d %lf %lf\n",
-+ &iN, &dKp, &dP0, &dScee, &dScnb, sDesc );
-+ MESSAGE(( "Torsion %d %s-%s-%s-%s %d %lf %lf %lf %lf\n",
- i, sAtom1, sAtom2, sAtom3, sAtom4,
-- iN, dKp, dP0 ));
-+ iN, dKp, dP0, dScee, dScnb ));
- FortranWriteDouble( dKp );
- }
- for ( i=0; i<iParmSetTotalImproperParms(uUnit->psParameters); i++ ) {
- ParmSetImproper( uUnit->psParameters, i, sAtom1, sAtom2,
- sAtom3, sAtom4,
-- &iN, &dKp, &dP0, sDesc );
-- MESSAGE(( "Improper %d %s-%s-%s-%s %d %lf %lf\n",
-+ &iN, &dKp, &dP0, &dScee, &dScnb, sDesc );
-+ MESSAGE(( "Improper %d %s-%s-%s-%s %d %lf %lf %lf %lf\n",
- i, sAtom1, sAtom2, sAtom3, sAtom4,
-- iN, dKp, dP0 ));
-+ iN, dKp, dP0, dScee, dScnb ));
- FortranWriteDouble( dKp );
- }
- /* Write the torsion RESTRAINT constants AND set the index */
-@@ -6575,14 +6639,14 @@
- for ( i=0; i<iParmSetTotalTorsionParms(uUnit->psParameters); i++ ) {
- ParmSetTorsion( uUnit->psParameters, i, sAtom1, sAtom2,
- sAtom3, sAtom4,
-- &iN, &dKp, &dP0, sDesc );
-+ &iN, &dKp, &dP0, &dScee, &dScnb, sDesc );
- dTemp = iN;
- FortranWriteDouble( dTemp );
- }
- for ( i=0; i<iParmSetTotalImproperParms(uUnit->psParameters); i++ ) {
- ParmSetImproper( uUnit->psParameters, i, sAtom1, sAtom2,
- sAtom3, sAtom4,
-- &iN, &dKp, &dP0, sDesc );
-+ &iN, &dKp, &dP0, &dScee, &dScnb, sDesc );
- dTemp = iN;
- FortranWriteDouble( dTemp );
- }
-@@ -6599,13 +6663,13 @@
- for ( i=0; i<iParmSetTotalTorsionParms(uUnit->psParameters); i++ ) {
- ParmSetTorsion( uUnit->psParameters, i, sAtom1, sAtom2,
- sAtom3, sAtom4,
-- &iN, &dKp, &dP0, sDesc );
-+ &iN, &dKp, &dP0, &dScee, &dScnb, sDesc );
- FortranWriteDouble( dP0 );
- }
- for ( i=0; i<iParmSetTotalImproperParms(uUnit->psParameters); i++ ) {
- ParmSetImproper( uUnit->psParameters, i, sAtom1, sAtom2,
- sAtom3, sAtom4,
-- &iN, &dKp, &dP0, sDesc );
-+ &iN, &dKp, &dP0, &dScee, &dScnb, sDesc );
- FortranWriteDouble( dP0 );
- }
- /* Write the torsion RESTRAINT constants AND set the index */
-diff -urN amber11.orig/AmberTools/src/leap/src/leap/xaImproperParmTable.c amber11/AmberTools/src/leap/src/leap/xaImproperParmTable.c
---- amber11.orig/AmberTools/src/leap/src/leap/xaImproperParmTable.c 2011-03-10 20:12:06.000000000 +0200
-+++ amber11/AmberTools/src/leap/src/leap/xaImproperParmTable.c 2011-10-25 15:01:28.193288566 +0300
-@@ -37,7 +37,9 @@
- * Handle editing of parameters in a table format.
- */
-
--
-+ /* Arunima Singh (UGA) */
-+ /* 20110420 */
-+ /* Added SCEE/SCNB */
-
- #include <X11/IntrinsicP.h>
- #include <X11/StringDefs.h>
-@@ -59,7 +61,10 @@
- #define NC 4
- #define KPC 5
- #define P0C 6
--#define DESCC 7
-+#define SCEE 7 /*Arunima Singh*/
-+#define SCNB 8 /*Arunima Singh*/
-+#define DESCC 9 /*Arunima Singh: Changed value from 7 to 9 to include scee and scnb*/
-+
-
- #define MAXTYPELEN 5
- #define DESCLEN 32
-@@ -129,13 +134,15 @@
- int iN;
- double dKp;
- double dP0;
-+double dScee;
-+double dScnb;
- char sDesc[DESCLEN];
-
-
- iptPCur = (IMPROPERPARMTABLEt*)PXATClientPointer(tTable);
-
- ParmSetImproper( iptPCur->psParmSet, iRow,
-- sType1, sType2, sType3, sType4, &iN, &dKp, &dP0, sDesc );
-+ sType1, sType2, sType3, sType4, &iN, &dKp, &dP0, &dScee, &dScnb, sDesc );
-
- switch ( iCol ) {
- case TYPE1C:
-@@ -171,6 +178,14 @@
- }
- return(SsBuffer);
- break;
-+ case SCEE:
-+ sprintf( SsBuffer, DBLFMT, dScee );
-+ return(SsBuffer);
-+ break;
-+ case SCNB:
-+ sprintf( SsBuffer, DBLFMT, dScnb );
-+ return(SsBuffer);
-+ break;
- case DESCC:
- strcpy( SsBuffer, sDesc );
- return( SsBuffer );
-@@ -259,6 +274,16 @@
- if ( !strcmp( cPData, "0" )) break;
- return("P0 field must be '0' or 'Pi'.");
- break;
-+ case SCEE:
-+ if ( !bStringToDouble( cPData, &dValue ) ) {
-+ return("Invalid character in Scee field.");
-+ }
-+ break;
-+ case SCNB:
-+ if ( !bStringToDouble( cPData, &dValue ) ) {
-+ return("Invalid character in Scnb field.");
-+ }
-+ break;
- case DESCC:
- if ( strlen(cPData)>DESCLEN-1 ) {
- sprintf( SsError, "%s %d characters.",
-@@ -384,11 +409,33 @@
- return("P0 field must be '0' or 'Pi'.");
- }
-
-+ /*
-+ * Scee
-+ */
-+ *iPErrCol = 7;
-+ cPData = col[7];
-+ if ( !bStringToDouble( cPData, &dValue ) ) {
-+ return("Invalid character in Scee field.");
-+ } else if ( dValue < 0.0 ) {
-+ return("Scee cannot be negative.");
-+ }
-+
-+ /*
-+ * Scnb
-+ */
-+ *iPErrCol = 8;
-+ cPData = col[8];
-+ if ( !bStringToInt( cPData, &iValue ) ) {
-+ return("Invalid character in Scnb field.");
-+ } else if ( dValue < 0.0 ) {
-+ return("Scnb cannot be negative.");
-+ }
-+
- /*
- * Desc
- */
-- *iPErrCol = 7;
-- cPData = col[7];
-+ *iPErrCol = 9;
-+ cPData = col[9];
- if ( strlen(cPData) > DESCLEN-1 ) {
- sprintf( SsError, "%s %d characters.",
- "Parameter Description cannot be longer than",
-@@ -413,7 +460,8 @@
- int iN;
- double dKp;
- double dP0;
--
-+double dScee;
-+double dScnb;
-
- iptPCur = (IMPROPERPARMTABLEt*) PXATClientPointer(tTable);
- psParmSet = iptPCur->psParmSet;
-@@ -444,7 +492,7 @@
- col[0], col[1], col[2], col[3] ));
- if ( iRow != iParmSetAddImproperTerm( psParmSet,
- col[0], col[1], col[2], col[3],
-- iN, dKp, dP0, col[7] ) )
-+ iN, dKp, dP0, dScee, dScnb, col[9] ) )
- DFATAL(( "programming err 2 in zXAIPTAcceptRow\n" ));
- } else {
- /*
-@@ -452,7 +500,7 @@
- */
- ParmSetUpdateImproper( psParmSet, iRow,
- col[0], col[1], col[2], col[3],
-- &iN, &dKp, &dP0, col[7] );
-+ &iN, &dKp, &dP0, &dScee, &dScnb, col[9] );
- }
- }
-
-diff -urN amber11.orig/AmberTools/src/leap/src/leap/xaTorsionParmTable.c amber11/AmberTools/src/leap/src/leap/xaTorsionParmTable.c
---- amber11.orig/AmberTools/src/leap/src/leap/xaTorsionParmTable.c 2011-03-10 20:12:06.000000000 +0200
-+++ amber11/AmberTools/src/leap/src/leap/xaTorsionParmTable.c 2011-10-25 15:01:28.194288563 +0300
-@@ -37,6 +37,9 @@
- * Handle editing of parameters in a table format.
- */
-
-+ /* Arunima Singh (UGA) */
-+ /* 20110420 */
-+ /* Added SCEE/SCNB */
-
- #include <X11/IntrinsicP.h>
- #include <X11/StringDefs.h>
-@@ -58,7 +61,9 @@
- #define NC 4
- #define KPC 5
- #define P0C 6
--#define DESCC 7
-+#define SCEE 7 /*Arunima Singh*/
-+#define SCNB 8 /*Arunima Singh*/
-+#define DESCC 9 /*Arunima Singh: Changed value from 7 to 9 to include scee and scnb*/
-
- #define MAXTYPELEN 5
- #define DESCLEN 32
-@@ -112,7 +117,7 @@
- * zcPXATPTGetElement
- *
- * Get the values for the elements of the TABLE from the
-- * particular Torsion Parmeter Entry.
-+ * particular Torsion Parameter Entry.
- */
- static char *
- zcPXATPTGetElement( TABLE tTable, int iCol, int iRow )
-@@ -126,13 +131,15 @@
- int iN;
- double dKp;
- double dP0;
-+double dScee;
-+double dScnb;
- char sDesc[DESCLEN];
-
-
- tptPCur = (TORSIONPARMTABLEt*)PXATClientPointer(tTable);
-
- ParmSetTorsion( tptPCur->psParmSet, iRow,
-- sType1, sType2, sType3, sType4, &iN, &dKp, &dP0, sDesc );
-+ sType1, sType2, sType3, sType4, &iN, &dKp, &dP0, &dScee, &dScnb, sDesc );
-
- switch ( iCol ) {
- case TYPE1C:
-@@ -168,6 +175,14 @@
- }
- return(SsBuffer);
- break;
-+ case SCEE:
-+ sprintf( SsBuffer, DBLFMT, dScee );
-+ return(SsBuffer);
-+ break;
-+ case SCNB:
-+ sprintf( SsBuffer, DBLFMT, dScnb );
-+ return(SsBuffer);
-+ break;
- case DESCC:
- strcpy( SsBuffer, sDesc );
- return( SsBuffer );
-@@ -256,6 +271,16 @@
- if ( !strcmp( cPData, "0" )) break;
- return("P0 field must be '0' or 'Pi'.");
- break;
-+ case SCEE:
-+ if ( !bStringToDouble( cPData, &dValue ) ) {
-+ return("Invalid character in Scee field.");
-+ }
-+ break;
-+ case SCNB:
-+ if ( !bStringToDouble( cPData, &dValue ) ) {
-+ return("Invalid character in Scnb field.");
-+ }
-+ break;
- case DESCC:
- if ( strlen(cPData)>DESCLEN-1 ) {
- sprintf( SsError, "%s %d characters.",
-@@ -379,11 +404,33 @@
- return("P0 field must be '0' or 'Pi'.");
- }
-
-+ /*
-+ * Scee
-+ */
-+ *iPErrCol = 7;
-+ cPData = col[7];
-+ if ( !bStringToDouble( cPData, &dValue ) ) {
-+ return("Invalid character in Scee field.");
-+ } else if ( dValue < 0.0 ) {
-+ return("Scee cannot be negative.");
-+ }
-+
-+ /*
-+ * Scnb
-+ */
-+ *iPErrCol = 8;
-+ cPData = col[8];
-+ if ( !bStringToInt( cPData, &iValue ) ) {
-+ return("Invalid character in Scnb field.");
-+ } else if ( dValue < 0.0 ) {
-+ return("Scnb cannot be negative.");
-+ }
-+
- /*
- * Desc
- */
-- *iPErrCol = 7;
-- cPData = col[7];
-+ *iPErrCol = 9;
-+ cPData = col[9];
- if ( strlen(cPData) > DESCLEN-1 ) {
- sprintf( SsError, "%s %d characters.",
- "Parameter Description cannot be longer than",
-@@ -408,6 +455,8 @@
- int iN;
- double dKp;
- double dP0;
-+double dScee;
-+double dScnb;
-
- tptPCur = (TORSIONPARMTABLEt*) PXATClientPointer(tTable);
- psParmSet = tptPCur->psParmSet;
-@@ -438,15 +487,15 @@
- col[0], col[1], col[2], col[3] ));
- if ( iRow != iParmSetAddProperTerm( psParmSet,
- col[0], col[1], col[2], col[3],
-- iN, dKp, dP0, col[7] ) )
-- DFATAL(( "programming err 2 in zXATPTAcceptRow\n" ));
-+ iN, dKp, dP0, dScee, dScnb, col[9] ) ) /*Arunima singh*/
-+ DFATAL(( "programming err 2 in zXATPTAcceptRow\n" ));
- } else {
- /*
- * update row in place
- */
- ParmSetUpdateTorsion( psParmSet, iRow,
- col[0], col[1], col[2], col[3],
-- &iN, &dKp, &dP0, col[7] );
-+ &iN, &dKp, &dP0, &dScee, &dScnb, col[9] ); /*Arunima singh*/
- }
- }
-
-diff -urN amber11.orig/AmberTools/src/mmpbsa_py/MMPBSA_mods/alamdcrd.py amber11/AmberTools/src/mmpbsa_py/MMPBSA_mods/alamdcrd.py
---- amber11.orig/AmberTools/src/mmpbsa_py/MMPBSA_mods/alamdcrd.py 2011-04-14 15:30:17.000000000 +0300
-+++ amber11/AmberTools/src/mmpbsa_py/MMPBSA_mods/alamdcrd.py 2011-10-25 15:01:28.132288620 +0300
-@@ -371,7 +371,7 @@
- coords_received = _scaledistance(coords_tosend, chdist)
-
- for i in range(3):
-- new_coords.append(coords_received[x+3])
-+ new_coords.append(coords_received[i+3])
-
- coords_tosend = []
- coords_received = []
-diff -urN amber11.orig/AmberTools/src/mmpbsa_py/MMPBSA.pypp amber11/AmberTools/src/mmpbsa_py/MMPBSA.pypp
---- amber11.orig/AmberTools/src/mmpbsa_py/MMPBSA.pypp 2011-04-14 15:30:17.000000000 +0300
-+++ amber11/AmberTools/src/mmpbsa_py/MMPBSA.pypp 2011-10-25 15:01:28.238288523 +0300
-@@ -412,6 +412,7 @@
- INPUT['solvcut'] = float(INPUT['solvcut'])
- INPUT['tolerance'] = float(INPUT['tolerance'])
- INPUT['rism_verbose'] = int(INPUT['rism_verbose'])
-+ INPUT['inp'] = int(INPUT['inp'])
- except ValueError, err:
- print >> sys.stderr, 'Error: Invalid input data types! Check input file for proper float/int/string arguments.'
- print >> sys.stderr, ' %s' % err
-@@ -998,7 +999,7 @@
- if master: MMPBSA_timer.StartTimer('ptraj')
-
- # create the dummy inpcrd files
-- if isinerr != 1 and (INPUT['gbrun'] or INPUT['pbrun']):
-+ if isinerr != 1 and (INPUT['gbrun'] or INPUT['pbrun'] or INPUT['rismrun']):
- os.system('%s %s _MMPBSA_mutant_complexinpcrd.in > _MMPBSA_ptraj9.out 2>&1' % (ptraj, FILES['mutant_complex_prmtop']))
- if not stability and FILES['mutant_receptor_prmtop'] == FILES['receptor_prmtop']:
- os.system('%s %s _MMPBSA_mutant_ligandinpcrd.in > _MMPBSA_ptraj11.out 2>&1' % (ptraj, FILES['mutant_ligand_prmtop']))
-diff -urN amber11.orig/AmberTools/src/mmpbsa_py/setup.sh amber11/AmberTools/src/mmpbsa_py/setup.sh
---- amber11.orig/AmberTools/src/mmpbsa_py/setup.sh 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mmpbsa_py/setup.sh 2011-10-25 15:01:28.133288619 +0300
-@@ -10,7 +10,8 @@
-
- # require AMBERHOME
- if [ -z $AMBERHOME ]; then
-- export AMBERHOME=`dirname \`dirname $PWD\``
-+ AMBERHOME=`dirname \`dirname $PWD\``
-+ export AMBERHOME=`dirname $AMBERHOME`
- echo "AMBERHOME is not set. Assuming it is $AMBERHOME"
- fi
-
-diff -urN amber11.orig/AmberTools/src/pbsa/amg1r5.f amber11/AmberTools/src/pbsa/amg1r5.f
---- amber11.orig/AmberTools/src/pbsa/amg1r5.f 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/pbsa/amg1r5.f 2011-10-25 15:01:28.203288555 +0300
-@@ -3707,7 +3707,7 @@
-
- !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- !+ [Enter a one-line description of real function cgeps here]
--real function cgeps(k,s2,a,u,f,ia,ja,iw, &
-+_REAL_ function cgeps(k,s2,a,u,f,ia,ja,iw, &
- imin,imax,iminw,m,ierr,ium)
-
- implicit _REAL_ (a-h,o-z)
-@@ -3753,7 +3753,7 @@
-
- !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- !+ [Enter a one-line description of real function cgalf here]
--real function cgalf(k,s2,a,u,f,ia,ja,iw, &
-+_REAL_ function cgalf(k,s2,a,u,f,ia,ja,iw, &
- imin,imax,iminw,m)
-
- implicit _REAL_ (a-h,o-z)
-@@ -3971,7 +3971,7 @@
-
- !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- !+ [Enter a one-line description of real function random here]
--real function random(s)
-+_REAL_ function random(s)
-
- ! FUNCTION TO CREATE "RANDOM" SEQUENCE OF NUMBERS BETWEEN 0 AND 0.1
-
-diff -urN amber11.orig/AmberTools/src/pbsa/Makefile amber11/AmberTools/src/pbsa/Makefile
---- amber11.orig/AmberTools/src/pbsa/Makefile 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/pbsa/Makefile 2011-10-25 15:01:28.228288532 +0300
-@@ -204,6 +204,14 @@
- cd ../c9x-complex && $(MAKE) libmc.a; \
- fi
-
-+pb_init.o: pb_init.f
-+ $(FPP) $(FPPFLAGS) $(AMBERFPPFLAGS) $< > _$<
-+ $(FC) -c -O0 $(FFLAGS) $(AMBERFFLAGS) -o $@ _$<
-+
-+pb_init.SANDER.o: pb_init.f
-+ $(FPP) $(FPPFLAGS) $(AMBERFPPFLAGS) -DSANDER $< > _$<
-+ $(FC) -c -O0 $(FFLAGS) $(AMBERFFLAGS) -o $@ _$<
-+
- %.LIBPBSA.o: %.f
- $(FPP) $(FPPFLAGS) $(AMBERFPPFLAGS) -DLIBPBSA $< > _$<
- $(FC) -c $(FOPTFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o $@ _$<
-diff -urN amber11.orig/AmberTools/src/ptraj/actions.c amber11/AmberTools/src/ptraj/actions.c
---- amber11.orig/AmberTools/src/ptraj/actions.c 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/ptraj/actions.c 2011-10-25 15:01:28.235288526 +0300
-@@ -46,6 +46,7 @@
- #include "ptraj.h"
- #include <string.h>
- #include <stdarg.h>
-+#include <float.h>
-
- /*
- * The code in this file implements the various "actions" of ptraj to
-@@ -4809,8 +4810,14 @@
- * set the minimum distance to the solute to be larger than
- * any possible (imaged!!!) distance
- */
-- min = box[0] + box[1] + box[2];
-- min = min * min;
-+ if (box[0]!=0.0 && box[1]!=0.0 && box[2]!=0.0) {
-+ min = box[0] + box[1] + box[2];
-+ min = min * min;
-+ } else {
-+ // No box information, set to arbitrarily large max
-+ min=DBL_MAX;
-+ }
-+
- for (i=0; i < oldstate->solventMolecules; i++) {
- minDistance[i] = min;
- sortindex[i] = i;
-@@ -16752,9 +16759,12 @@
- */
-
- structInfo = (transformSecondaryStructInfo *) action->carg1;
-- if (structInfo->filename != NULL)
-+ if (structInfo->filename != NULL) {
-+ i = (int) strlen(structInfo->filename);
-+ i+=5;
-+ structInfo->filename = (char*) realloc(structInfo->filename, i*sizeof(char));
- outFile = safe_fopen(strcat(structInfo->filename, ".sum"), "w");
-- else
-+ } else
- outFile = stdout;
-
- fprintf(outFile, "#ResNum\t3-10-Helix\talpha-helix\tPI-Helix\tparallel-Sheet\tantip.-Sheet\tTurn\n");
-@@ -18123,17 +18133,26 @@
- /*
- * process the remaining arguments
- */
-- if ( (buffer = argumentStackKeyToString(argumentStackPointer, "principal", NULL)) != NULL ) {
-+ if ( argumentStackContains(argumentStackPointer, "principal") ) {
- vectorInfo->mode = VECTOR_PRINCIPAL_X;
-- if (strcmp(buffer, "x") == 0)
-- vectorInfo->mode = VECTOR_PRINCIPAL_X;
-- else if (strcmp(buffer, "y") == 0)
-- vectorInfo->mode = VECTOR_PRINCIPAL_Y;
-- else if (strcmp(buffer, "z") == 0)
-- vectorInfo->mode = VECTOR_PRINCIPAL_Z;
-- safe_free(buffer);
-- }
-- else if (argumentStackContains(argumentStackPointer, "dipole"))
-+ /* DRR - Check the next argument for x, y, or z. If none of these
-+ * are present, put the argument back on the stack.
-+ */
-+ buffer = getArgumentString(argumentStackPointer, NULL);
-+ if (buffer!=NULL) {
-+ if (strcmp(buffer, "x") == 0) {
-+ vectorInfo->mode = VECTOR_PRINCIPAL_X;
-+ safe_free(buffer);
-+ } else if (strcmp(buffer, "y") == 0) {
-+ vectorInfo->mode = VECTOR_PRINCIPAL_Y;
-+ safe_free(buffer);
-+ } else if (strcmp(buffer, "z") == 0) {
-+ vectorInfo->mode = VECTOR_PRINCIPAL_Z;
-+ safe_free(buffer);
-+ } else
-+ pushBottomStack(argumentStackPointer, buffer);
-+ }
-+ } else if (argumentStackContains(argumentStackPointer, "dipole"))
- vectorInfo->mode = VECTOR_DIPOLE;
- else if (argumentStackContains(argumentStackPointer, "box"))
- vectorInfo->mode = VECTOR_BOX;
-@@ -18263,6 +18282,11 @@
- vectorInfo->mode == VECTOR_CORRIRED ||
- vectorInfo->mode == VECTOR_MASK){
- buffer = getArgumentString(argumentStackPointer, NULL);
-+ if (buffer==NULL) {
-+ fprintf(stdout,"Error: vector: specified vector mode requires a second mask.\n");
-+ freeTransformVectorMemory(action);
-+ return -1;
-+ }
- vectorInfo->mask2 = processAtomMask(buffer, action->state);
- safe_free(buffer);
- }
-@@ -18885,7 +18909,7 @@
- /*
- * USAGE:
- *
-- * watershell mask [lower <lower cut>] [upper <upper cut>] [noimage]
-+ * watershell mask filename [lower <lower cut>] [upper <upper cut>] [noimage]
- *
- * action argument usage:
- *
-@@ -18917,11 +18941,25 @@
- action->iarg1 = argumentStackContains(argumentStackPointer, "noimage");
-
- buffer = getArgumentString(argumentStackPointer, NULL);
-+ if (buffer==NULL) {
-+ fprintf(stdout,"ERROR: WATERSHELL: Solute mask must be specified.\n");
-+ return -1;
-+ }
-+
- info->soluteMask = processAtomMask(buffer, action->state);
-+ if (info->soluteMask==NULL) {
-+ fprintf(stdout,"ERROR: WATERSHELL: Solute mask %s corresponds to 0 atoms.\n",buffer);
-+ safe_free(buffer);
-+ return -1;
-+ }
- safe_free(buffer);
-
- info->filename = getArgumentString(argumentStackPointer, NULL);
--
-+ if (info->filename==NULL) {
-+ fprintf(stdout,"ERROR: WATERSHELL: Output filename must be specified.\n");
-+ return -1;
-+ }
-+
- info->lowerCutoff =
- argumentStackKeyToDouble(argumentStackPointer, "lower", info->lowerCutoff);
- info->upperCutoff =
-@@ -18932,6 +18970,17 @@
- info->solventMask = processAtomMask(buffer, action->state);
- else
- info->solventMask = processAtomMask(":WAT", action->state);
-+ if (info->solventMask==NULL) {
-+ if (buffer!=NULL)
-+ fprintf(stdout,"ERROR: WATERSHELL: Solvent mask %s corresponds to 0 atoms.\n",buffer);
-+ else {
-+ fprintf(stdout,"ERROR: WATERSHELL: Default solvent mask :WAT corresponds to 0 atoms.\n");
-+ fprintf(stdout,
-+ " Solvent mask can be specified as the third argument.\n");
-+ }
-+ safe_free(buffer);
-+ return -1;
-+ }
- safe_free(buffer);
-
- action->carg1 = (void *) info;
-diff -urN amber11.orig/AmberTools/src/ptraj/ptraj.c amber11/AmberTools/src/ptraj/ptraj.c
---- amber11.orig/AmberTools/src/ptraj/ptraj.c 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/ptraj/ptraj.c 2011-10-25 15:01:28.224288536 +0300
-@@ -2059,7 +2059,8 @@
- int start = 1;
- int stop = 1;
- int frame_lines, title_size, seekable;
-- long long int file_size, frame_size;
-+ int maxi, sizeFound; // For large gzip file calc, Amber Traj
-+ long long int file_size, frame_size, tmpfsize;
- long int endoffset;
- float *binposScratch;
- FILE *fp;
-@@ -2439,16 +2440,54 @@
- file_size = file_size - frame_size; // Subtract title size from file total size.
- frame_size = (long long int) trajInfo->frameSize;
- trajInfo->Nframes = (int) (file_size / frame_size);
-+
-+ // Frame calculation for large gzip files
-+ // If uncompressed size is less than compressed size, uncompressed
-+ // size is likely > 4GB.
-+ if (trajInfo->compressType == 1 && file_size < (long long int)frame_stat.st_size) {
-+ // Since this is gzip compressed, if the file_size % frame size != 0,
-+ // it could be that the uncompressed filesize > 4GB. Since
-+ // ISIZE = uncompressed % 2^32,
-+ // try ((file_size + (2^32 * i)) % frame_size) and see if any are 0.
-+ if ( (file_size % frame_size) != 0) {
-+ // Determine the maximum number of iterations to try based on the
-+ // fact that Amber trajectories typically compress about 3x with
-+ // gzip. If the number of frames cannot accurately be calculated
-+ // use the max estimated file size to estimate # frames so that
-+ // ptraj actions allocate enough memory.
-+ tmpfsize = (long long int) frame_stat.st_size;
-+ tmpfsize *= 4;
-+ tmpfsize = (tmpfsize - file_size) / 4294967296LL;
-+ maxi = (int) tmpfsize;
-+ maxi++;
-+ if (prnlev>1)
-+ printf("\tLooking for uncompressed gzip size > 4GB, %i iterations.\n",maxi);
-+ tmpfsize = 0;
-+ sizeFound=0;
-+ for (i = 0; i < maxi; i++ ) {
-+ tmpfsize = (4294967296LL * i) + file_size;
-+ if ( (tmpfsize % frame_size) == 0) {sizeFound=1; break;}
-+ }
-+ if (sizeFound) {
-+ printf("Warning: Cannot accurately determine # of frames in gzipped trajectory %s.\n",
-+ filename);
-+ printf(" This usually indicates the trajectory is corrupted.\n");
-+ printf(" Ptraj will attempt to estimate the correct number of frames.\n");
-+ }
-+ file_size = tmpfsize;
-+ trajInfo->Nframes = (int) (file_size / frame_size);
-+ }
-+ }
-+
- if (prnlev>0) fprintf(stdout," File has %i frames.\n",trajInfo->Nframes);
- if ( (file_size % frame_size) == 0 ) {
- seekable = 1;
-- stop = trajInfo->Nframes;
- } else {
-- stop = -1;
- seekable = 0;
- fprintf(stderr, "%s: Could not predict number of frames for AMBER trajectory file: %s\n", ROUTINE, filename);
- fprintf(stderr, "\tIf this is not a compressed file then there is a problem\n");
- }
-+ stop = trajInfo->Nframes;
-
- actualAtoms = totalAtoms;
- //trajInfo->frameSize = frame_size;
-@@ -2569,6 +2608,8 @@
- trajInfo->isBox = isBox;
- trajInfo->isVelocity = isVelocity;
- trajInfo->type = type;
-+ // If compressed, no seek possible
-+ if (trajInfo->compressType > 0) trajInfo->seekable=0;
-
- // This should eventually get its own structure
- if (type==COORD_CHARMM_TRAJECTORY)
-diff -urN amber11.orig/AmberTools/src/rism/amber_rism_interface.f amber11/AmberTools/src/rism/amber_rism_interface.f
---- amber11.orig/AmberTools/src/rism/amber_rism_interface.f 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/rism/amber_rism_interface.f 2011-10-25 15:01:28.241288520 +0300
-@@ -815,7 +815,6 @@
- !redo calculation with charges off
- call rism3d_unsetCharges(rism_3d)
- call rism3d_solve(rism_3d,rismprm%saveprogress,rismprm%progress,rismprm%maxstep,rismprm%tolerance)
-- call rism3d_resetCharges(rism_3d)
-
- !setup memory space
- apol_exchem => apol_mpi_buffer(1:rism_3d%solv%natom)
-@@ -825,6 +824,7 @@
- apol_exchem = rism3d_exchem(rism_3d,rismprm%asympCorr)*KB*rism_3d%solv%temperature
- apol_exchemGF = rism3d_exchemGF(rism_3d,rismprm%asympCorr)*KB*rism_3d%solv%temperature
-
-+ call rism3d_resetCharges(rism_3d)
- !parallel communication
- #ifdef MPI
- # ifdef USE_MPI_IN_PLACE
-diff -urN amber11.orig/AmberTools/src/rism/rism1d_potential_c.f amber11/AmberTools/src/rism/rism1d_potential_c.f
---- amber11.orig/AmberTools/src/rism/rism1d_potential_c.f 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/rism/rism1d_potential_c.f 2011-10-25 15:01:28.242288519 +0300
-@@ -124,7 +124,7 @@
- type(solvMDL), intent(in) :: mdl
- _REAL_, intent(in) :: density
- integer :: oldnv
-- integer :: iv1, iv2, ivv, iv, iat, imlt
-+ integer :: iv1, iv2, ivv, iv, iat, imlt, isp
-
- !increment scalar variables
- oldnv = this%nv
-@@ -139,7 +139,10 @@
- this%nat(this%nsp) = mdl%ntype
- this%mta => safemem_realloc(this%mta, max(ubound(this%mta,1),mdl%ntype), this%nsp)
- this%mta(1:mdl%ntype,this%nsp) = mdl%multi
--
-+ !zero out multiplicity for unused indicies in previously add species
-+ do isp=1, this%nsp
-+ this%mta(this%nat(isp)+1:,isp)=0
-+ end do
- this%mtv => safemem_realloc(this%mtv,this%nv)
- this%mtv(oldnv+1:this%nv) = mdl%multi
-
-@@ -178,7 +181,7 @@
- this%rminv => safemem_realloc(this%rminv,this%nv)
- this%rminv(oldnv+1:this%nv) = mdl%rmin/2d0
-
-- this%rma => safemem_realloc(this%rma,3,ubound(this%mta,1),maxval(this%nat),this%nsp)
-+ this%rma => safemem_realloc(this%rma,3,maxval(this%mta),maxval(this%nat),this%nsp,.true.,.false.)
- iv = 0
- do iat=1,this%nat(this%nsp)
- do imlt = 1, this%mta(iat,this%nsp)
-@@ -186,7 +189,7 @@
- this%rma(:,imlt,iat,this%nsp) = mdl%coord(:,iv)
- end do
- end do
-- this%wlmvv => safemem_realloc(this%wlmvv,ubound(this%mta,1),this%nv,this%nv)
-+ this%wlmvv => safemem_realloc(this%wlmvv,maxval(this%mta),this%nv,this%nv)
- call intramolecular_dist(this)
-
- !data arrays in the original 1D-RISM code had an offset of 0 in the first index (like C).
-@@ -269,7 +272,7 @@
- r,rs, rs6,ri6, usr,usra
-
- _REAL_ :: d0x(this%nv), d0y(this%nv), d1z(this%nv), &
-- wkvv(this%nv,this%nv)
-+ wkvv(this%nv,this%nv), erfc_test
- _REAL_, external :: erfc
-
-
-@@ -478,10 +481,21 @@
- r = (ir-1)*this%dr
- k = (ir-1)*this%dk
- qvv = charge*this%qspv(iv1)*this%qspv(iv2)
-- this%hlrvv(ir,ivv) = -qvv/this%dielconst &
-- * 0.5d0 * exp((this%smear*this%kappa/2.d0)**2) &
-- * ( exp(-this%kappa*r)*erfc(this%kappa*this%smear/2.d0 - r/this%smear) &
-- - exp(this%kappa*r)*erfc(this%kappa*this%smear/2.d0 + r/this%smear) )
-+ !for large grids with short Debye lengths the positive
-+ !exponent can overflow. erfc is already zero at this
-+ !point. So we test erfc to see if we can avoid the
-+ !exponent
-+ erfc_test = erfc(this%kappa*this%smear/2.d0 + r/this%smear)
-+ if(erfc_test > sqrt(tiny(1d0)))then
-+ this%hlrvv(ir,ivv) = -qvv/this%dielconst &
-+ * 0.5d0 * exp((this%smear*this%kappa/2.d0)**2) &
-+ * ( exp(-this%kappa*r)*erfc(this%kappa*this%smear/2.d0 - r/this%smear) &
-+ - exp(this%kappa*r)*erfc_test )
-+ else
-+ this%hlrvv(ir,ivv) = -qvv/this%dielconst &
-+ * 0.5d0 * exp((this%smear*this%kappa/2.d0)**2) &
-+ * ( exp(-this%kappa*r)*erfc(this%kappa*this%smear/2.d0 - r/this%smear))
-+ end if
- this%hlkvv(ir,ivv) = -qvv/this%dielconst &
- * 4.d0*pi*exp(-(0.5d0*this%smear*k)**2) * k/(k**2+this%kappa**2)
- enddo
-diff -urN amber11.orig/AmberTools/src/rism/rism3d_c.f amber11/AmberTools/src/rism/rism3d_c.f
---- amber11.orig/AmberTools/src/rism/rism3d_c.f 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/rism/rism3d_c.f 2011-10-25 15:01:28.245288516 +0300
-@@ -1086,26 +1086,26 @@
- !reallocate arrays that require preservation of their contents
- #if defined(MPI)
- this%cuvWRK => safemem_realloc(this%cuvWRK,this%grid%nr(1),this%grid%nr(2),this%grid%nr(3),&
-- this%solv%natom,this%NVec,.true.)
-+ this%solv%natom,this%NVec,.true.,.true.)
- if(rism3d_solu_charged(this%solu))then
- this%oldcuvChg => safemem_realloc(this%oldcuvChg,this%grid%nr(1),this%grid%nr(2),&
-- this%grid%nr(3),this%solv%natom,this%ncuvsteps,.true.)
-+ this%grid%nr(3),this%solv%natom,this%ncuvsteps,.true.,.true.)
- this%oldcuv => this%oldcuvChg
- else
- this%oldcuvNoChg => safemem_realloc(this%oldcuvNoChg,this%grid%nr(1),this%grid%nr(2),&
-- this%grid%nr(3),this%solv%natom,this%ncuvsteps,.true.)
-+ this%grid%nr(3),this%solv%natom,this%ncuvsteps,.true.,.true.)
- this%oldcuv => this%oldcuvNoChg
- end if
- #else
- this%cuvWRK => safemem_realloc(this%cuvWRK,this%grid%nr(1),this%grid%nr(2),this%grid%nr(3),&
-- this%solv%natom,this%NVec,.true.)
-+ this%solv%natom,this%NVec,.true.,.true.)
- if(rism3d_solu_charged(this%solu))then
- this%oldcuvChg => safemem_realloc(this%oldcuvChg,this%grid%nr(1),this%grid%nr(2),&
-- this%grid%nr(3),this%solv%natom,this%ncuvsteps,.true.)
-+ this%grid%nr(3),this%solv%natom,this%ncuvsteps,.true.,.true.)
- this%oldcuv => this%oldcuvChg
- else
- this%oldcuvNoChg => safemem_realloc(this%oldcuvNoChg,this%grid%nr(1),this%grid%nr(2),&
-- this%grid%nr(3),this%solv%natom,this%ncuvsteps,.true.)
-+ this%grid%nr(3),this%solv%natom,this%ncuvsteps,.true.,.true.)
- this%oldcuv => this%oldcuvNoChg
- end if
- !!$ this%oldcuv => safemem_realloc(this%oldcuv,this%grid%nr(1),this%grid%nr(2),&
-diff -urN amber11.orig/AmberTools/src/rism/rism3d_opendx.f amber11/AmberTools/src/rism/rism3d_opendx.f
---- amber11.orig/AmberTools/src/rism/rism3d_opendx.f 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/rism/rism3d_opendx.f 2011-10-25 15:01:28.205288553 +0300
-@@ -49,9 +49,11 @@
- module procedure readDXHeader_file, readDXHeader_unit
- end interface readDXHeader
-
-+#if 0
- interface readDX
- module procedure readDX_3D,readDX_3D_data, readDX_1D, readDX_1D_data
- end interface readDX
-+#endif
- contains
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !!!Reads in a OpenDX file header. Expects
-@@ -160,6 +162,7 @@
- end if
- end subroutine readDXHeader_unit
-
-+#if 0
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !!!Reads in a OpenDX file, returning data in a pointer, allocating necessary memory. Expects
- !!!a 3D, regularly spaced grid in ASCII format.
-@@ -311,6 +314,7 @@
- call readDX_data(unit,data,ndata,npos)
- close(unit)
- end subroutine readDX_1D_data
-+#endif
-
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !!!write to file in open DX format for use in VMD. When writing in
-diff -urN amber11.orig/AmberTools/src/rism/rism3d.snglpnt.nab amber11/AmberTools/src/rism/rism3d.snglpnt.nab
---- amber11.orig/AmberTools/src/rism/rism3d.snglpnt.nab 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/rism/rism3d.snglpnt.nab 2011-10-25 15:01:28.243288518 +0300
-@@ -632,6 +632,7 @@
- mm_options(sprintf("centering=%d, zerofrc=%d, apply_rism_force=%d",rismOpt.centering,rismOpt.zerofrc,rismOpt.apply_rism_force));
- mm_options(sprintf("polarDecomp=%d",rismOpt.polarDecomp));
- mm_options(sprintf("ntwrism=%d, verbose=%d, progress=%d",rismOpt.ntwrism,rismOpt.verbose,rismOpt.progress));
-+mm_options(sprintf("asympCorr=%d",rismOpt.asympcorr));
- mm_options(sprintf("saveprogress=%d",rismOpt.saveprogress));
- mme_init( m, NULL, "::Z", p_xyz, NULL);
-
-diff -urN amber11.orig/AmberTools/src/rism/safemem.f amber11/AmberTools/src/rism/safemem.f
---- amber11.orig/AmberTools/src/rism/safemem.f 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/rism/safemem.f 2011-10-25 15:01:28.247288515 +0300
-@@ -46,13 +46,13 @@
- !logical :: Current number of bytes of logical memory allocated
- !char :: Current number of bytes of character memory allocated
- !total :: Current number of bytes of total memory allocated
-- integer*8 :: int,real,logical,char,total
-+ integer*8 :: int=0,real=0,logical=0,char=0,total=0
- !maxint :: Current number of bytes of integer memory allocated
- !maxreal :: Current number of bytes of real memory allocated
- !maxlogical :: Current number of bytes of logical memory allocated
- !maxchar :: Current number of bytes of character memory allocated
- !max :: Current number of bytes of total memory allocated
-- integer*8 :: maxint,maxreal,maxlogical,maxchar,max
-+ integer*8 :: maxint=0,maxreal=0,maxlogical=0,maxchar=0,max=0
- end type memTracker
-
- !BYTES_PER_GIGABYTES :: used to convert between bytes and GB
-@@ -352,6 +352,9 @@
- !!! n4 :: size of the fourth dimension
- !!! preserve :: boolean indicating whether or not to preserve the contents of
- !!! the array (optional)
-+!!! center :: when preserving the contents of the array, center the
-+!!! data in the array instead of preserving the value at each
-+!!! index
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- FUNCTION safemem_realloc_4d_real(p, n1, n2, n3, n4, preserve, center)
- implicit none
-@@ -369,7 +372,7 @@
- #endif /*RISM_DEBUG*/
- prsrv = .true.
- if(present(preserve)) prsrv=preserve
-- cntr = .true.
-+ cntr = .false.
- if(present(center)) cntr=center
-
- if(.not.prsrv .and. associated(p)) then
-@@ -499,6 +502,9 @@
- !!! n5 :: size of the fifth dimension
- !!! preserve :: boolean indicating whether or not to preserve the contents of
- !!! the array (optional)
-+!!! center :: when preserving the contents of the array, center the
-+!!! data in the array instead of preserving the value at each
-+!!! index
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- FUNCTION safemem_realloc_5d_real(p, n1, n2, n3, n4, n5, preserve, center)
- implicit none
-@@ -516,7 +522,7 @@
- #endif /*RISM_DEBUG*/
- prsrv = .true.
- if(present(preserve)) prsrv = preserve
-- cntr=.true.
-+ cntr=.false.
- if(present(center)) cntr = center
-
- if(.not.prsrv .and. associated(p)) then
-@@ -1006,7 +1012,7 @@
- !work around for old gfortran bug
- ! if(associated(p)) deallocate(p,STAT=safemem_dealloc_pointer_1d_logical)
- if(associated(p))then
-- call memadd_c(totalmem,-product(ubound(p))*kind(p))
-+ call memadd_l(totalmem,-product(ubound(p))*kind(p))
- deallocate(p,STAT=temp)
- end if
- safemem_dealloc_pointer_1d_logical = temp
-diff -urN amber11.orig/AmberTools/src/sqm/qm2_energy.f amber11/AmberTools/src/sqm/qm2_energy.f
---- amber11.orig/AmberTools/src/sqm/qm2_energy.f 2011-03-11 20:43:13.000000000 +0200
-+++ amber11/AmberTools/src/sqm/qm2_energy.f 2011-10-25 15:01:28.206288552 +0300
-@@ -277,7 +277,7 @@
-
- ! Add PM6 corrections to Heat of Formation
- if (qmmm_nml%qmtheory%PM6) then
-- escf = escf + pm6_correction()
-+ escf = escf + hofCorrection()
- end if
-
- call timer_stop(TIME_QMMMENERGYSCF)
-diff -urN amber11.orig/AmberTools/src/sqm/qm2_get_qm_forces.f amber11/AmberTools/src/sqm/qm2_get_qm_forces.f
---- amber11.orig/AmberTools/src/sqm/qm2_get_qm_forces.f 2011-03-11 20:43:13.000000000 +0200
-+++ amber11/AmberTools/src/sqm/qm2_get_qm_forces.f 2011-10-25 15:01:28.208288550 +0300
-@@ -250,7 +250,7 @@
- ! --------------------------------------------
- if (qmmm_nml%qmtheory%PM6) then
- natom = qmmm_struct%nquant_nlink
-- call pm6_correction(natom, dxyzqm)
-+ call hofCorrectionGradient(natom, dxyzqm)
- end if
-
- if(qmmm_nml%peptide_corr) then
-diff -urN amber11.orig/AmberTools/src/sqm/qm2_pm6_hof_module.f amber11/AmberTools/src/sqm/qm2_pm6_hof_module.f
---- amber11.orig/AmberTools/src/sqm/qm2_pm6_hof_module.f 2011-03-11 20:43:13.000000000 +0200
-+++ amber11/AmberTools/src/sqm/qm2_pm6_hof_module.f 2011-10-25 15:01:28.209288549 +0300
-@@ -21,8 +21,7 @@
- implicit none
-
- private
-- public :: pm6_correction
-- public :: corInfoType, print
-+ public :: corInfoType, print, hofCorrection, hofCorrectionGradient
- public :: cct, nsp2
- public :: strlen
-
-@@ -30,11 +29,6 @@
- module procedure printCorInfoType
- end interface
-
-- interface pm6_correction
-- module procedure hofCorrection
-- module procedure hofCorrectionGradient
-- end interface
--
- ! Data type collecting information on PM6 HOF corrections
- type corInfoType
- logical :: inUse ! correction in use ?
-diff -urN amber11.orig/AmberTools/test/cpptraj/Test_General/RunTest.sh amber11/AmberTools/test/cpptraj/Test_General/RunTest.sh
---- amber11.orig/AmberTools/test/cpptraj/Test_General/RunTest.sh 2011-04-14 15:30:21.000000000 +0300
-+++ amber11/AmberTools/test/cpptraj/Test_General/RunTest.sh 2011-10-25 15:01:28.215288544 +0300
-@@ -25,7 +25,7 @@
- DoTest PhiPsi.dat.save PhiPsi.dat
- DoTest test.crd.save test.crd
- DoTest a1.dat.save a1.dat
--DoTest test.rst7.103.save Restart/test.rst7.103
-+DoTest test.rst7.103.save Restart/test.rst7.123
- DoTest test.nc.save test.nc
- DoTest r4.dat.save r4.dat
- DoTest a2.dat.gz.save a2.dat.gz
-diff -urN amber11.orig/AmberTools/test/mmpbsa_py/11_3D-RISM/FINAL_RESULTS_MMPBSA.dat.save amber11/AmberTools/test/mmpbsa_py/11_3D-RISM/FINAL_RESULTS_MMPBSA.dat.save
---- amber11.orig/AmberTools/test/mmpbsa_py/11_3D-RISM/FINAL_RESULTS_MMPBSA.dat.save 2011-04-14 15:30:22.000000000 +0300
-+++ amber11/AmberTools/test/mmpbsa_py/11_3D-RISM/FINAL_RESULTS_MMPBSA.dat.save 2011-10-25 15:01:28.247288515 +0300
-@@ -1,4 +1,4 @@
--| Run on Tue Mar 8 15:33:18 PST 2011
-+| Run on Fri Oct 7 17:12:46 EDT 2011
-
- |Input file:
- |--------------------------------------------------------------
-@@ -32,14 +32,14 @@
- -------------------------------------------------------------------------------
- VDWAALS -4.6380 0.3291 0.2327
- EEL -425.3449 4.5554 3.2212
--ERISM -164.0501 3.9611 2.8009
-- POLAR -219.8772 4.0588 2.8700
-- APOLAR 55.8271 0.0977 0.0691
-+ERISM -164.0499 3.9609 2.8008
-+ POLAR -235.0781 4.4994 3.1816
-+ APOLAR 71.0282 0.5386 0.3808
-
- G gas -429.9829 4.2263 2.9885
--G solv -164.0501 3.9611 2.8009
-+G solv -164.0499 3.9609 2.8008
-
--TOTAL -594.0331 0.2653 0.1876
-+TOTAL -594.0329 0.2655 0.1877
-
-
- Receptor:
-@@ -48,8 +48,8 @@
- VDWAALS -3.9302 0.2702 0.1910
- EEL -254.1833 4.5196 3.1959
- ERISM -79.2939 3.0131 2.1306
-- POLAR -118.9799 3.1556 2.2314
-- APOLAR 39.6860 0.1425 0.1008
-+ POLAR -126.9784 3.4713 2.4546
-+ APOLAR 47.6845 0.4582 0.3240
-
- G gas -258.1136 4.2494 3.0048
- G solv -79.2939 3.0131 2.1306
-@@ -62,12 +62,12 @@
- -------------------------------------------------------------------------------
- VDWAALS -0.7056 0.0606 0.0428
- EEL -170.5448 1.1864 0.8389
--ERISM -85.2510 0.0719 0.0509
-- POLAR -101.3724 0.0489 0.0346
-- APOLAR 16.1214 0.0230 0.0163
-+ERISM -85.2510 0.0719 0.0508
-+ POLAR -108.6574 0.0351 0.0249
-+ APOLAR 23.4064 0.1070 0.0757
-
- G gas -171.2505 1.2470 0.8818
--G solv -85.2510 0.0719 0.0509
-+G solv -85.2510 0.0719 0.0508
-
- TOTAL -256.5015 1.1751 0.8309
-
-@@ -77,15 +77,15 @@
- -------------------------------------------------------------------------------
- VDWAALS -0.0021 0.0017 0.0012
- EEL -0.6167 1.2222 0.8642
--ERISM 0.4947 1.0198 0.7211
-- POLAR 0.4750 0.9520 0.6732
-- APOLAR 0.0198 0.0678 0.0480
-+ERISM 0.4950 1.0196 0.7210
-+ POLAR 0.5577 0.9929 0.7021
-+ APOLAR -0.0627 0.0267 0.0189
-
- DELTA G gas -0.6189 1.2239 0.8654
--DELTA G solv 0.4947 1.0198 0.7211
-+DELTA G solv 0.4950 1.0196 0.7210
-
-
-- DELTA G binding = -0.1241 +/- 0.2041 0.1443
-+ DELTA G binding = -0.1239 +/- 0.2043 0.1445
-
-
- -------------------------------------------------------------------------------
-@@ -99,8 +99,8 @@
- VDWAALS -4.6380 0.3291 0.2327
- EEL -425.3449 4.5554 3.2212
- ERISM -187.9280 4.0576 2.8691
-- POLAR -221.3631 4.0723 2.8795
-- APOLAR 33.4351 0.0147 0.0104
-+ POLAR -236.5648 4.5137 3.1916
-+ APOLAR 48.6367 0.4561 0.3225
-
- G gas -429.9829 4.2263 2.9885
- G solv -187.9280 4.0576 2.8691
-@@ -113,12 +113,12 @@
- -------------------------------------------------------------------------------
- VDWAALS -3.9302 0.2702 0.1910
- EEL -254.1833 4.5196 3.1959
--ERISM -94.4232 3.0803 2.1781
-- POLAR -119.8020 3.1352 2.2169
-- APOLAR 25.3788 0.0549 0.0388
-+ERISM -94.4233 3.0804 2.1781
-+ POLAR -127.8003 3.4511 2.4403
-+ APOLAR 33.3771 0.3707 0.2621
-
- G gas -258.1136 4.2494 3.0048
--G solv -94.4232 3.0803 2.1781
-+G solv -94.4233 3.0804 2.1781
-
- TOTAL -352.5368 1.1691 0.8267
-
-@@ -128,14 +128,14 @@
- -------------------------------------------------------------------------------
- VDWAALS -0.7056 0.0606 0.0428
- EEL -170.5448 1.1864 0.8389
--ERISM -94.0188 0.0538 0.0381
-- POLAR -102.0695 0.0274 0.0194
-- APOLAR 8.0506 0.0264 0.0187
-+ERISM -94.0185 0.0541 0.0383
-+ POLAR -109.3544 0.0565 0.0399
-+ APOLAR 15.3358 0.1106 0.0782
-
- G gas -171.2505 1.2470 0.8818
--G solv -94.0188 0.0538 0.0381
-+G solv -94.0185 0.0541 0.0383
-
--TOTAL -265.2693 1.1932 0.8437
-+TOTAL -265.2690 1.1929 0.8435
-
-
- Differences (Complex - Receptor - Ligand):
-@@ -143,15 +143,15 @@
- -------------------------------------------------------------------------------
- VDWAALS -0.0021 0.0017 0.0012
- EEL -0.6167 1.2222 0.8642
--ERISM 0.5140 1.0311 0.7291
-- POLAR 0.5083 0.9645 0.6820
-- APOLAR 0.0057 0.0666 0.0471
-+ERISM 0.5137 1.0314 0.7293
-+ POLAR 0.5900 1.0061 0.7114
-+ APOLAR -0.0762 0.0253 0.0179
-
- DELTA G gas -0.6189 1.2239 0.8654
--DELTA G solv 0.5140 1.0311 0.7291
-+DELTA G solv 0.5137 1.0314 0.7293
-
-
-- DELTA G binding = -0.1049 +/- 0.1928 0.1363
-+ DELTA G binding = -0.1051 +/- 0.1926 0.1362
-
-
- -------------------------------------------------------------------------------
-diff -urN amber11.orig/AmberTools/test/nab/rism3d.snglpnt.2.out.check amber11/AmberTools/test/nab/rism3d.snglpnt.2.out.check
---- amber11.orig/AmberTools/test/nab/rism3d.snglpnt.2.out.check 2011-04-14 15:30:23.000000000 +0300
-+++ amber11/AmberTools/test/nab/rism3d.snglpnt.2.out.check 2011-10-25 15:01:28.248288514 +0300
-@@ -32,6 +32,7 @@
- mm_options: ntwrism=1
- mm_options: verbose=0
- mm_options: progress=0
-+ mm_options: asympCorr=1
- mm_options: saveprogress=0
- |3D-RISM thermodynamic data key
- |solute_epot [kcal/mol] : Total LJ Coulomb Bond Angle Dihedral H-Bond LJ-14 Coulomb-14 Restraints 3D-RISM
-@@ -74,13 +75,13 @@
- 3D-RISM processing complete.
-
- |Timing summary:
--| Initialize 0.042
-+| Initialize 0.046
- | Molec. Dyn. 0.000
- | Normal Mode 0.000
- | Conj. Grad. 0.000
- | Newton 0.000
- |-------------------------
--| Total 0.042
-+| Total 0.046
-
- |1st derivative timing summary:
- | constraints 0.000
-@@ -91,7 +92,7 @@
- | nonbond 0.000
- | gen. Born 0.000
- | Poisson Boltzmann 0.000
--| 3D-RISM 10.167
-+| 3D-RISM 8.211
- | Other 0.000
- |-------------------------
--| Total 10.167
-+| Total 8.212
-diff -urN amber11.orig/AmberTools/test/nab/rism3d.snglpnt.out.check amber11/AmberTools/test/nab/rism3d.snglpnt.out.check
---- amber11.orig/AmberTools/test/nab/rism3d.snglpnt.out.check 2011-04-14 15:30:23.000000000 +0300
-+++ amber11/AmberTools/test/nab/rism3d.snglpnt.out.check 2011-10-25 15:01:28.248288514 +0300
-@@ -31,6 +31,7 @@
- mm_options: ntwrism=0
- mm_options: verbose=0
- mm_options: progress=0
-+ mm_options: asympCorr=1
- mm_options: saveprogress=0
- |3D-RISM thermodynamic data key
- |solute_epot [kcal/mol] : Total LJ Coulomb Bond Angle Dihedral H-Bond LJ-14 Coulomb-14 Restraints 3D-RISM
-@@ -55,10 +56,10 @@
- rism_volume: 1.93595981E+002
- rism_exNumb: -6.38184158E+000 -1.27637588E+001
- rism_exChrg: -3.20562831E-005 5.40924893E+000 -5.40928099E+000
--rism_polar_: -1.31661477E+001 -4.40204657E+001 3.08543179E+001
--rism_apolar: 2.96543934E+001 7.56776450E+001 -4.60232516E+001
--rism_polGF_: -1.34197324E+001 -4.39508092E+001 3.05310768E+001
--rism_apolGF: 1.97398606E+001 7.11960080E+001 -5.14561474E+001
-+rism_polar_: -1.47850626E+001 -1.09412958E+001 -3.84376682E+000
-+rism_apolar: 3.12733083E+001 4.25984751E+001 -1.13251668E+001
-+rism_polGF_: -1.50386472E+001 -1.08716393E+001 -4.16700794E+000
-+rism_apolGF: 2.13587755E+001 3.81168382E+001 -1.67580627E+001
-
- Frame: 2 of 3
- solute_epot: -3.41386230E-001 2.56854615E+000 -8.23476129E+001 3.38717466E-002 3.59735615E-001 7.49048012E+000 0.00000000E+000 4.97044290E+000 5.01391318E+001 0.00000000E+000 1.64440184E+001
-@@ -68,10 +69,10 @@
- rism_volume: 1.93535504E+002
- rism_exNumb: -6.37993323E+000 -1.27596468E+001
- rism_exChrg: 9.31177385E-005 5.40763142E+000 -5.40753830E+000
--rism_polar_: -1.31967073E+001 -4.40467251E+001 3.08500178E+001
--rism_apolar: 2.96407256E+001 7.56851573E+001 -4.60444317E+001
--rism_polGF_: -1.34505678E+001 -4.39769309E+001 3.05263631E+001
--rism_apolGF: 1.97272712E+001 7.12038497E+001 -5.14765785E+001
-+rism_polar_: -1.48191496E+001 -1.09491800E+001 -3.86996959E+000
-+rism_apolar: 3.12631679E+001 4.25876122E+001 -1.13244443E+001
-+rism_polGF_: -1.50730101E+001 -1.08793858E+001 -4.19362428E+000
-+rism_apolGF: 2.13497135E+001 3.81063046E+001 -1.67565911E+001
-
- Frame: 3 of 3
- solute_epot: -6.77945271E-001 2.31243593E+000 -8.22812685E+001 9.08980189E-002 3.84286510E-001 7.48894041E+000 0.00000000E+000 4.91668330E+000 5.00274224E+001 0.00000000E+000 1.63826567E+001
-@@ -81,21 +82,21 @@
- rism_volume: 1.93468855E+002
- rism_exNumb: -6.37771162E+000 -1.27552065E+001
- rism_exChrg: 9.18518609E-005 5.40574837E+000 -5.40565652E+000
--rism_polar_: -1.32423609E+001 -4.40992117E+001 3.08568508E+001
--rism_apolar: 2.96250176E+001 7.57232232E+001 -4.60982056E+001
--rism_polGF_: -1.34968274E+001 -4.40292606E+001 3.05324332E+001
--rism_apolGF: 1.97126459E+001 7.12421943E+001 -5.15295484E+001
-+rism_polar_: -1.48691739E+001 -1.09507135E+001 -3.91846037E+000
-+rism_apolar: 3.12518306E+001 4.25747250E+001 -1.13228944E+001
-+rism_polGF_: -1.51236404E+001 -1.08807624E+001 -4.24287800E+000
-+rism_apolGF: 2.13394589E+001 3.80936961E+001 -1.67542372E+001
-
- 3D-RISM processing complete.
-
- |Timing summary:
--| Initialize 0.043
-+| Initialize 0.047
- | Molec. Dyn. 0.000
- | Normal Mode 0.000
- | Conj. Grad. 0.000
- | Newton 0.000
- |-------------------------
--| Total 0.043
-+| Total 0.047
-
- |1st derivative timing summary:
- | constraints 0.000
-@@ -106,7 +107,7 @@
- | nonbond 0.000
- | gen. Born 0.000
- | Poisson Boltzmann 0.000
--| 3D-RISM 32.639
-+| 3D-RISM 30.135
- | Other 0.000
- |-------------------------
--| Total 32.639
-+| Total 30.135
-diff -urN amber11.orig/AmberTools/test/nab/Run.prm amber11/AmberTools/test/nab/Run.prm
---- amber11.orig/AmberTools/test/nab/Run.prm 2011-04-14 15:30:23.000000000 +0300
-+++ amber11/AmberTools/test/nab/Run.prm 2011-10-25 15:01:28.133288619 +0300
-@@ -17,7 +17,7 @@
-
- echo "checking the prmtop file:"
- echo ""
--tail -3209 tprmtop > tprmtop1
-+tail -3228 tprmtop > tprmtop1
- ../dacdif tprmtop.check tprmtop1
-
- rm -f prm prm.c tleap.out leap.log tprmcrd prm.out1 tprmtop
-diff -urN amber11.orig/AmberTools/test/nab/tprmtop.check amber11/AmberTools/test/nab/tprmtop.check
---- amber11.orig/AmberTools/test/nab/tprmtop.check 2011-03-10 20:12:18.000000000 +0200
-+++ amber11/AmberTools/test/nab/tprmtop.check 2011-10-25 15:01:28.135288617 +0300
-@@ -1,3 +1,4 @@
-+%VERSION VERSION_STAMP = V0001.000 DATE = 05/09/11 12:59:19
- %FLAG TITLE
- %FORMAT(20a4)
-
-@@ -541,6 +542,24 @@
- 3.14159400E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00
- 3.14159400E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00 3.14159400E+00
- 3.14159400E+00 3.14159400E+00 3.14159400E+00
-+%FLAG SCEE_SCALE_FACTOR
-+%FORMAT(5E16.8)
-+ 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00
-+ 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00
-+ 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00
-+ 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00
-+ 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00
-+ 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00 1.20000000E+00
-+ 0.00000000E+00 0.00000000E+00 0.00000000E+00
-+%FLAG SCNB_SCALE_FACTOR
-+%FORMAT(5E16.8)
-+ 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00
-+ 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00
-+ 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00
-+ 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00
-+ 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00
-+ 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00 2.00000000E+00
-+ 0.00000000E+00 0.00000000E+00 0.00000000E+00
- %FLAG SOLTY
- %FORMAT(5E16.8)
- 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00
-diff -urN amber11.orig/AmberTools/test/rism1d/check1d amber11/AmberTools/test/rism1d/check1d
---- amber11.orig/AmberTools/test/rism1d/check1d 2011-04-14 15:30:29.000000000 +0300
-+++ amber11/AmberTools/test/rism1d/check1d 2011-10-25 15:01:28.249288513 +0300
-@@ -85,7 +85,7 @@
- #It is unrealistic to achieve low relative error for these very small number so we only
- #use the abolute error
- if [ -s $1.bvv.save ]; then
-- $AMBERHOME/AmberTools/test/dacdif -a 1.e-7 $1.bvv.save $1.bvv
-+ $AMBERHOME/AmberTools/test/dacdif -a 2.e-7 $1.bvv.save $1.bvv
- fi
-
- /bin/rm -f $1.xvv.delhv0 $1.xvv.delhv0.save $1.xvv.xvv $1.xvv.xvv.save\
-diff -urN amber11.orig/AT15_Amber11.py amber11/AT15_Amber11.py
---- amber11.orig/AT15_Amber11.py 2011-04-14 15:30:11.000000000 +0300
-+++ amber11/AT15_Amber11.py 2011-10-25 15:01:28.221288538 +0300
-@@ -145,4 +145,29 @@
- makefile.close()
-
- # Now we are done
--print "\nAmber 11 patched for AmberTools 1.5. Run\nmake %s\nto build amber11\n" % buildtype
-+print "\nAmber 11 patched for AmberTools 1.5. Run\ncd src; make %s\nto build amber11\n" % buildtype
-+
-+# Now print out details about expected test FAILUREs and
-+# errors:
-+
-+warning = """NOTE: Because PBSA has changed since Amber 11 was released, some
-+tests are known to fail and others are known to quit in error. These
-+can be safely ignored.
-+
-+Tests that error: Tests in $AMBERHOME/test/sander_pbsa_frc
-+ Run.argasp.min Run.dadt.min Run.dgdc.min
-+ Run.lysasp.min Run.polyALA.min Run.polyAT.min
-+ Run.argasp.min Run.dadt.min Run.dgdc.min
-+ Run.lysasp.min Run.polyALA.min Run.polyAT.min
-+ Run.argasp.min Run.dadt.min Run.dgdc.min
-+ Run.lysasp.min Run.polyALA.min Run.polyAT.min
-+
-+Tests that produce possible FAILUREs:
-+ cd sander_pbsa_ipb2 && ./Run.110D.min
-+ cd sander_pbsa_lpb && ./Run.lsolver.min (only some of them fail here)
-+ cd sander_pbsa_tsr && ./Run.tsrb.min
-+ cd sander_pbsa_decres && ./Run.pbsa_decres
-+ mm_pbsa.pl tests 02, 03, and 05
-+"""
-+
-+print warning
-diff -urN amber11.orig/dat/antechamber/ATOMTYPE_AMBER.DEF amber11/dat/antechamber/ATOMTYPE_AMBER.DEF
---- amber11.orig/dat/antechamber/ATOMTYPE_AMBER.DEF 2011-04-14 15:30:40.000000000 +0300
-+++ amber11/dat/antechamber/ATOMTYPE_AMBER.DEF 2011-10-25 15:01:28.198288560 +0300
-@@ -49,7 +49,7 @@
- ATD F * 9 1 &
- ATD Cl * 17 1 &
- ATD Br * 35 1 &
--ATD F * 53 1 &
-+ATD I * 53 1 &
- ATD P * 15 &
- ATD N1 * 7 1 &
- ATD NB * 7 2 * * [RG5,AR1.AR2.AR3] &
-diff -urN amber11.orig/dat/leap/cmd/leaprc.ff99SBnmr amber11/dat/leap/cmd/leaprc.ff99SBnmr
---- amber11.orig/dat/leap/cmd/leaprc.ff99SBnmr 2011-04-14 15:30:40.000000000 +0300
-+++ amber11/dat/leap/cmd/leaprc.ff99SBnmr 2011-10-25 15:01:28.239288522 +0300
-@@ -74,13 +74,6 @@
- { "OL" "O" "sp3" }
- { "AC" "C" "sp3" }
- { "EC" "C" "sp3" }
--#ildn
-- { "C3" "C" "sp3" }
-- { "C4" "C" "sp3" }
-- { "C5" "C" "sp2" }
-- { "C6" "C" "sp2" }
-- { "NP" "N" "sp2" }
-- { "OM" "O" "sp2" } # guess!!!
- }
- #
- # Load the main parameter set.
-@@ -95,9 +88,9 @@
- # Load main chain and terminating
- # amino acid libraries (i.e. ff94 libs)
- #
--loadOff all_amino94ildn.lib
--loadOff all_aminoct94ildn.lib
--loadOff all_aminont94ildn.lib
-+loadOff all_amino94.lib
-+loadOff all_aminoct94.lib
-+loadOff all_aminont94.lib
- #
- # Load water and ions
- #
-diff -urN amber11.orig/dat/leap/parm/parm10.dat amber11/dat/leap/parm/parm10.dat
---- amber11.orig/dat/leap/parm/parm10.dat 2011-04-14 15:30:40.000000000 +0300
-+++ amber11/dat/leap/parm/parm10.dat 2011-10-25 15:01:28.218288541 +0300
-@@ -783,8 +783,10 @@
- OS-P -OS-CT 1 0.25 0.0 -3. JCC,7,(1986),230
- OS-P -OS-CT 1 1.20 0.0 2. gg&gt ene.631g*/mp2
- H1-CT-C -O 1 0.80 0.0 -1. Junmei et al, 1999
-+H1-CT-C -O 1 0.00 0.0 -2. Explicit of wild card X-C-CT-X
- H1-CT-C -O 1 0.08 180.0 3. Junmei et al, 1999
- H1-CX-C -O 1 0.80 0.0 -1. Junmei et al, 1999 (was H1-CT-C -O )
-+H1-CX-C -O 1 0.00 0.0 -2. Explicit of wild card X-C-CT-X
- H1-CX-C -O 1 0.08 180.0 3. Junmei et al, 1999 (was H1-CT-C -O )
- HC-CT-C -O 1 0.80 0.0 -1. Junmei et al, 1999
- HC-CT-C -O 1 0.00 0.0 -2. Explicit of wild card X-C-CT-X
-diff -urN amber11.orig/dat/leap/parm/parm99.dat amber11/dat/leap/parm/parm99.dat
---- amber11.orig/dat/leap/parm/parm99.dat 2011-04-14 15:30:40.000000000 +0300
-+++ amber11/dat/leap/parm/parm99.dat 2011-10-25 15:01:28.221288538 +0300
-@@ -546,7 +546,7 @@
- OS-P -OS-CT 1 0.25 0.0 -3. JCC,7,(1986),230
- OS-P -OS-CT 1 1.20 0.0 2. gg&gt ene.631g*/mp2
- H1-CT-C -O 1 0.80 0.0 -1. Junmei et al, 1999
--HC-CT-C -O 1 0.00 0.0 -2. Explicit of wild card X-C-CT-X
-+H1-CT-C -O 1 0.00 0.0 -2. Explicit of wild card X-C-CT-X
- H1-CT-C -O 1 0.08 180.0 3. Junmei et al, 1999
- HC-CT-C -O 1 0.80 0.0 -1. Junmei et al, 1999
- HC-CT-C -O 1 0.00 0.0 -2. Explicit of wild card X-C-CT-X
diff --git a/sci-chemistry/ambertools/files/ambertools-1.5-bugfix_22-27.patch b/sci-chemistry/ambertools/files/ambertools-1.5-bugfix_22-27.patch
deleted file mode 100644
index 6df705cff..000000000
--- a/sci-chemistry/ambertools/files/ambertools-1.5-bugfix_22-27.patch
+++ /dev/null
@@ -1,3343 +0,0 @@
-diff -urN amber11.orig/AmberTools/examples/mtkpp/MCPB/run.MCPB.csh amber11/AmberTools/examples/mtkpp/MCPB/run.MCPB.csh
---- amber11.orig/AmberTools/examples/mtkpp/MCPB/run.MCPB.csh 2011-04-14 15:30:12.000000000 +0300
-+++ amber11/AmberTools/examples/mtkpp/MCPB/run.MCPB.csh 2012-03-03 20:03:01.387032575 +0200
-@@ -2,111 +2,10 @@
- echo " "
- echo " MTK++ MCPB example "
- echo " "
--
--# Clean up
--rm -rf 1AMP_OH.README
--rm -rf *.bcl
--rm -rf createLibraries.sh createRespAdditions.sh getCharges.sh
--rm -rf *.pdb
--rm -rf *.log
--
--cp data/*.pdb .
--cp data/*.bcl .
--cp data/*.log .
--cp data/*.fchk .
--
--echo "Generating scripts "
--sh genMetalFF.sh -n 1AMP_OH
--
--cp data/1AMP.pdb .
--cp data/1AMP_OH_fixed.pdb .
--cp data/1AMP_OH_sidechain.bcl .
--cp data/1AMP_OH_addStdMol.bcl .
--cp data/1AMP_OH_large.bcl .
--cp data/1AMP_OH_large_mk.log .
--
--cp data/1AMP_OH_sidechain_fc_md.log .
--cp data/1AMP_OH_sidechain_opt_md.fchk .
--cp data/1AMP_OH_sidechain_opt_md.log .
--
--echo "Adding Hydrogens to pdb file "
--$AMBERHOME/bin/MCPB -i 1AMP_OH_addHs.bcl \
-- -l 1AMP_OH_addHs.bcl.log || goto error
--
--echo "Creating Model 1"
--$AMBERHOME/bin/MCPB -i 1AMP_OH_sidechain.bcl \
-- -l 1AMP_OH_sidechain.bcl.log || goto error
--
--echo "Adding standard molecule to library "
--$AMBERHOME/bin/MCPB -i 1AMP_OH_addStdMol.bcl \
-- -l 1AMP_OH_addStdMol.bcl.log || goto error
--
--echo "Creating Model 2 "
--$AMBERHOME/bin/MCPB -i 1AMP_OH_large.bcl \
-- -l 1AMP_OH_large.bcl.log || goto error
--
--echo "Creating RESP files 0 "
--$AMBERHOME/bin/MCPB -i 1AMP_OH_large_mk0.bcl \
-- -l 1AMP_OH_large_mk0.bcl.log || goto error
--mv 1AMP_OH_large_respAdds 1AMP_OH_large_respAdds0 || goto error
--
--echo "Creating RESP files 1 "
--$AMBERHOME/bin/MCPB -i 1AMP_OH_large_mk1.bcl \
-- -l 1AMP_OH_large_mk1.bcl.log || goto error
--mv 1AMP_OH_large_respAdds 1AMP_OH_large_respAdds1 || goto error
--
--echo "Creating RESP files 2 "
--$AMBERHOME/bin/MCPB -i 1AMP_OH_large_mk2.bcl \
-- -l 1AMP_OH_large_mk2.bcl.log || goto error
--mv 1AMP_OH_large_respAdds 1AMP_OH_large_respAdds2 || goto error
--
--echo "Creating RESP files 3 "
--$AMBERHOME/bin/MCPB -i 1AMP_OH_large_mk3.bcl \
-- -l 1AMP_OH_large_mk3.bcl.log || goto error
--mv 1AMP_OH_large_respAdds 1AMP_OH_large_respAdds3 || goto error
--
--echo "Determining charges "
--sh ./getCharges.sh 0 || goto error
--sh ./getCharges.sh 1 || goto error
--sh ./getCharges.sh 2 || goto error
--sh ./getCharges.sh 3 || goto error
--
--echo "Creating library files "
--$AMBERHOME/bin/MCPB -i 1AMP_OH_large_chg0.bcl \
-- -l 1AMP_OH_large_chg0.bcl.log || goto error
--
--$AMBERHOME/bin/MCPB -i 1AMP_OH_large_chg1.bcl \
-- -l 1AMP_OH_large_chg1.bcl.log || goto error
--
--$AMBERHOME/bin/MCPB -i 1AMP_OH_large_chg2.bcl \
-- -l 1AMP_OH_large_chg2.bcl.log || goto error
--
--$AMBERHOME/bin/MCPB -i 1AMP_OH_large_chg3.bcl \
-- -l 1AMP_OH_large_chg3.bcl.log || goto error
--
--echo "Determining Seminario force constants "
--$AMBERHOME/bin/MCPB -i 1AMP_OH_sidechain_fc_sem.bcl \
-- -l 1AMP_OH_sidechain_fc_sem.bcl.log || goto error
--
--echo "Determining Traditional force constants "
--$AMBERHOME/bin/MCPB -i 1AMP_OH_sidechain_fc_md.bcl \
-- -l 1AMP_OH_sidechain_fc_md.bcl.log || goto error
--
--echo "Exporting Seminario library to AMBER format "
--$AMBERHOME/bin/MCPB -i 1AMP_OH_toAmberFormats_sem.bcl \
-- -l 1AMP_OH_toAmberFormats_sem.bcl.log || goto error
--
--echo "Exporting Traditional library to AMBER format "
--$AMBERHOME/bin/MCPB -i 1AMP_OH_toAmberFormats_md.bcl \
-- -l 1AMP_OH_toAmberFormats_md.bcl.log || goto error
--
--echo "Reading protonated file and updating residue names "
--$AMBERHOME/bin/MCPB -i 1AMP_OH_resNames.bcl \
-- -l 1AMP_OH_resNames.bcl.log || goto error
--
--echo No errors detected
-+echo " "
-+echo " This example has been removed due to incompatibility with"
-+echo " the current minor revision of MTK++. An updated MCPB example"
-+echo " is planned for a future release."
-+echo " "
- exit(0)
-
--error:
--echo Problem: check log files and try again
--exit(1)
-diff -urN amber11.orig/AmberTools/examples/mtkpp/stats/pca1/run.stats.csh amber11/AmberTools/examples/mtkpp/stats/pca1/run.stats.csh
---- amber11.orig/AmberTools/examples/mtkpp/stats/pca1/run.stats.csh 2011-04-14 15:30:12.000000000 +0300
-+++ amber11/AmberTools/examples/mtkpp/stats/pca1/run.stats.csh 2012-03-03 20:03:01.387032575 +0200
-@@ -3,12 +3,12 @@
- echo " MTK++ stats example"
- echo " "
-
--../$AMBERHOME/bin/stats -i pca.stats \
-- -l pca.stats.log || goto error
-+$AMBERHOME/bin/stats -i pca.stats \
-+ -l pca.stats.log || goto error
-
- echo No errors detected
- exit(0)
-
- error:
- echo Problem: check .out and try again
--exit(1)
-\ Nav jaunu rindu faila beigās
-+exit(1)
-diff -urN amber11.orig/AmberTools/src/configure amber11/AmberTools/src/configure
---- amber11.orig/AmberTools/src/configure 2012-03-03 22:42:38.558776473 +0200
-+++ amber11/AmberTools/src/configure 2012-03-03 20:02:57.727033628 +0200
-@@ -61,6 +61,9 @@
- -debug Compile with debug symbols
- -noopt Disable all compiler optimisations (sometimes needed if
- debug symbols are requested)
-+ -nopatch Do NOT run \$AMBERHOME/AT15_Amber11.py after configure writes
-+ the config.h file, even if Amber11 is found in the directory.
-+ This flag has no effect if Amber11 is not present.
-
- Rarely used/tested NAB options:
- -scalapack Use ScaLAPACK for linear algebra. Do not use in
-@@ -165,6 +168,7 @@
- debug='no'
- optimise='yes'
- is_mac='no'
-+nopatch='no'
-
- #------------------------------------------------------------------------------
- # Architecture specific:
-@@ -216,6 +220,7 @@
- -nomtkpp) mtkpp='';;
- -debug) debug='yes';;
- -noopt) optimise='no';;
-+ -nopatch) nopatch='yes';;
- -help) usage;;
- --help) usage;;
- -h) usage;;
-@@ -2144,7 +2149,7 @@
- fi
-
- # For AmberTools 1.5 + Amber 11, print a message about running AT15_Amber11.py
--if [ -d ../../src/sander ]; then
-+if [ -d ../../src/sander -a "$nopatch" = 'yes' ]; then
- echo ""
- echo " NOTE: after installing AmberTools, if you want to compile"
- echo " Amber11 using AmberTools 1.5, you must run the "
-@@ -2155,5 +2160,14 @@
- echo " script will modify your Amber11 files.)"
- fi
-
-+if [ -d ../../src/sander -a "$nopatch" = 'no' ]; then
-+ echo ""
-+ echo " Running \$AMBERHOME/AT15_Amber11.py to patch config.h for building Amber 11."
-+ echo " Check Amber11_Conversion.log for details of what was done. Running this script"
-+ echo " a second time has no effect (positive or negative)"
-+ echo ""
-+ ../../AT15_Amber11.py > Amber11_Conversion.log 2>&1
-+fi
-+
- exit
-
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/AmberRestart.cpp amber11/AmberTools/src/cpptraj/src/AmberRestart.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/AmberRestart.cpp 2012-03-03 22:42:00.557775196 +0200
-+++ amber11/AmberTools/src/cpptraj/src/AmberRestart.cpp 2012-03-03 20:03:06.928030979 +0200
-@@ -53,7 +53,7 @@
- mprintf("Error: AmberRestart::open(): Reading restart atoms/time.\n");
- return 1;
- }
-- nread=sscanf(buffer,"%5i%15lE%15lE",&restartAtoms,&restartTime,&restartTemp);
-+ nread=sscanf(buffer,"%i %lE %lE",&restartAtoms,&restartTime,&restartTemp);
- if (nread<1) {
- mprintf("Error: AmberRestart::open(): Getting restart atoms/time.\n");
- return 1;
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/main.cpp amber11/AmberTools/src/cpptraj/src/main.cpp
---- amber11.orig/AmberTools/src/cpptraj/src/main.cpp 2012-03-03 22:42:47.132776753 +0200
-+++ amber11/AmberTools/src/cpptraj/src/main.cpp 2012-03-03 20:03:06.928030979 +0200
-@@ -6,7 +6,7 @@
- #include "PtrajMpi.h"
- #include "CpptrajStdio.h"
- #ifndef CPPTRAJ_VERSION_STRING
--#define CPPTRAJ_VERSION_STRING "V1.1.1"
-+#define CPPTRAJ_VERSION_STRING "V1.1.2"
- #endif
-
- void Usage(char *programName) {
-diff -urN amber11.orig/AmberTools/src/mmpbsa_py/MMPBSA_mods/amberoutputs.py amber11/AmberTools/src/mmpbsa_py/MMPBSA_mods/amberoutputs.py
---- amber11.orig/AmberTools/src/mmpbsa_py/MMPBSA_mods/amberoutputs.py 2011-04-14 15:30:17.000000000 +0300
-+++ amber11/AmberTools/src/mmpbsa_py/MMPBSA_mods/amberoutputs.py 2012-03-03 20:03:11.481029669 +0200
-@@ -2315,7 +2315,7 @@
- return math.sqrt(abs(_stdev(self.com_data[0]) ** 2 + _stdev(self.rec_data[0]) ** 2 + _stdev(self.lig_data[0]) ** 2))
-
- sum = sum2 = 0
-- for i in range(len(self.com_data)):
-+ for i in range(len(self.com_data[0])):
- sum += self.com_data[0][i] - self.rec_data[0][i] - self.lig_data[0][i]
- sum2 += (self.com_data[0][i] - self.rec_data[0][i] - self.lig_data[0][i]) ** 2
-
-diff -urN amber11.orig/AmberTools/src/mtkpp/configure amber11/AmberTools/src/mtkpp/configure
---- amber11.orig/AmberTools/src/mtkpp/configure 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/configure 2012-03-03 20:03:01.397032571 +0200
-@@ -788,7 +788,6 @@
- with_gnu_ld
- with_sysroot
- enable_libtool_lock
--with_gnu_ld
- with_mkl_dir
- with_mkl_libs
- with_boost
-@@ -811,22 +810,9 @@
- CCC
- CC
- CFLAGS
--LDFLAGS
--LIBS
--CPPFLAGS
- CPP
--CPPFLAGS
- CXXCPP
--CPPFLAGS
--XMKMF
--CXX
--LDFLAGS
--LIBS
--CPPFLAGS
--CCC
--CC
--LDFLAGS
--LIBS'
-+XMKMF'
-
-
- # Initialize some variables set by options.
-@@ -16665,7 +16651,7 @@
- *) platform=UNKNOWN
- is_unknown=yes
- echo 'ERROR: this platform is not supported at this time!'
-- exit 1 ;;
-+ exit ;;
- esac
- if test "$is_darwin" = "yes"; then
- IS_DARWIN_TRUE=
-@@ -17838,8 +17824,8 @@
- $as_echo "#define HAVE_ZLIB 1" >>confdefs.h
-
- CFLAGS=$CFLAGS" -DHAVE_ZLIB"
-- CXXFLAGS=$CXXFLAGS" -DHAVE_ZLIB -DHAVE_ZLIB"
-- defines_string=$defines_string" -DHAVE_ZLIB -DHAVE_ZLIB"
-+ CXXFLAGS=$CXXFLAGS" -DHAVE_ZLIB"
-+ defines_string=$defines_string" -DHAVE_ZLIB"
- FLIBS=$FLIBS" -lz"
- else
-
-diff -urN amber11.orig/AmberTools/src/mtkpp/configure.in amber11/AmberTools/src/mtkpp/configure.in
---- amber11.orig/AmberTools/src/mtkpp/configure.in 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/configure.in 2012-03-03 20:03:01.400032571 +0200
-@@ -383,7 +383,7 @@
- *) platform=UNKNOWN
- is_unknown=yes
- echo 'ERROR: this platform is not supported at this time!'
-- exit 1 ;;
-+ exit ;;
- esac
- AM_CONDITIONAL(IS_DARWIN, test "$is_darwin" = "yes")
- AM_CONDITIONAL(IS_LINUX, test "$is_linux" = "yes")
-@@ -457,8 +457,8 @@
- if test $ac_have_zlibh = yes; then
- AC_DEFINE(HAVE_ZLIB, 1, [Define to 1 if ZLIB is available.])
- CFLAGS=$CFLAGS" -DHAVE_ZLIB"
-- CXXFLAGS=$CXXFLAGS" -DHAVE_ZLIB -DHAVE_ZLIB"
-- defines_string=$defines_string" -DHAVE_ZLIB -DHAVE_ZLIB"
-+ CXXFLAGS=$CXXFLAGS" -DHAVE_ZLIB"
-+ defines_string=$defines_string" -DHAVE_ZLIB"
- FLIBS=$FLIBS" -lz"
- else
- AC_DEFINE(HAVE_ZLIB, 0, [Define to 0 if ZLIB is unavailable.])
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Minimizers/Makefile.am amber11/AmberTools/src/mtkpp/src/Minimizers/Makefile.am
---- amber11.orig/AmberTools/src/mtkpp/src/Minimizers/Makefile.am 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Minimizers/Makefile.am 2012-03-03 20:03:01.400032571 +0200
-@@ -1,4 +1,4 @@
--DIAGNOSTICS_LD=-L$(top_builddir)/src/Diagnostics/$(SRCDIR)
-+DIAGNOSTICS_LD=-L$(abs_top_builddir)/src/Diagnostics/$(SRCDIR)
- DIAGNOSTICS_LIB=-lDiagnostics
- INCLUDES = -I$(srcdir)/..
-
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Minimizers/Makefile.in amber11/AmberTools/src/mtkpp/src/Minimizers/Makefile.in
---- amber11.orig/AmberTools/src/mtkpp/src/Minimizers/Makefile.in 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Minimizers/Makefile.in 2012-03-03 20:03:01.401032571 +0200
-@@ -239,7 +239,7 @@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- xerces_path = @xerces_path@
--DIAGNOSTICS_LD = -L$(top_builddir)/src/Diagnostics/$(SRCDIR)
-+DIAGNOSTICS_LD = -L$(abs_top_builddir)/src/Diagnostics/$(SRCDIR)
- DIAGNOSTICS_LIB = -lDiagnostics
- INCLUDES = -I$(srcdir)/..
- lib_LTLIBRARIES = libMinimizers.la
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/MM/Makefile.am amber11/AmberTools/src/mtkpp/src/MM/Makefile.am
---- amber11.orig/AmberTools/src/mtkpp/src/MM/Makefile.am 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/MM/Makefile.am 2012-03-03 20:03:01.400032571 +0200
-@@ -1,6 +1,6 @@
--DIAGNOSTICS_LD=-L$(top_builddir)/src/Diagnostics/$(SRCDIR)
-+DIAGNOSTICS_LD=-L$(abs_top_builddir)/src/Diagnostics/$(SRCDIR)
- DIAGNOSTICS_LIB=-lDiagnostics
--LOG_LD=-L$(top_builddir)/src/Log/$(SRCDIR)
-+LOG_LD=-L$(abs_top_builddir)/src/Log/$(SRCDIR)
- LOG_LIB=-lLog
-
- INCLUDES = -I@boost_inc@ -I$(srcdir)/..
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/MM/Makefile.in amber11/AmberTools/src/mtkpp/src/MM/Makefile.in
---- amber11.orig/AmberTools/src/mtkpp/src/MM/Makefile.in 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/MM/Makefile.in 2012-03-03 20:03:01.400032571 +0200
-@@ -241,9 +241,9 @@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- xerces_path = @xerces_path@
--DIAGNOSTICS_LD = -L$(top_builddir)/src/Diagnostics/$(SRCDIR)
-+DIAGNOSTICS_LD = -L$(abs_top_builddir)/src/Diagnostics/$(SRCDIR)
- DIAGNOSTICS_LIB = -lDiagnostics
--LOG_LD = -L$(top_builddir)/src/Log/$(SRCDIR)
-+LOG_LD = -L$(abs_top_builddir)/src/Log/$(SRCDIR)
- LOG_LIB = -lLog
- INCLUDES = -I@boost_inc@ -I$(srcdir)/..
- lib_LTLIBRARIES = libMM.la
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Molecule/atomType.h amber11/AmberTools/src/mtkpp/src/Molecule/atomType.h
---- amber11.orig/AmberTools/src/mtkpp/src/Molecule/atomType.h 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Molecule/atomType.h 2012-03-03 20:03:01.402032570 +0200
-@@ -74,6 +74,9 @@
-
- //!
- double evalue;
-+
-+ //! Atomic polarizability in A**3
-+ double atomPolarizability;
- };
-
- // ============================================================
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Molecule/collection.cpp amber11/AmberTools/src/mtkpp/src/Molecule/collection.cpp
---- amber11.orig/AmberTools/src/mtkpp/src/Molecule/collection.cpp 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Molecule/collection.cpp 2012-03-03 20:03:01.403032569 +0200
-@@ -484,6 +484,11 @@
- for (moleculeIterator m = this->itsMoleculeList.begin();
- m != this->itsMoleculeList.end(); m++) {
- pMolecule = *m;
-+
-+ if (pMolecule->getName() == "Reference") {
-+ continue;
-+ }
-+
- std::vector<submolecule*> subMolList = pMolecule->getSubMoleculeList();
- for (sMolIterator c = subMolList.begin(); c != subMolList.end(); c++) {
- pSubMolecule = *c;
-@@ -3408,7 +3413,10 @@
- }
- errMessage += metalAtom->getParent()->getName() + "@|"
- + metalAtom->getName() + "|-"
-- + primShellAtoms[e]->getParent()->getName() + "@|"
-+ + primShellAtoms[e]->getParent()->getName()
-+ + i2s(primShellAtoms[e]->getParent()->getSubMolId())
-+ + primShellAtoms[e]->getParent()->getiCode()
-+ + "@|"
- + primShellAtoms[e]->getName() + "| dist = " + d2s(localBond->size) +"\n";
-
- // Angles
-@@ -3488,7 +3496,8 @@
- std::vector<stdGroup*> stdGrpList = this->pStdLibrary->getStdGroupList();
-
- for (unsigned int i = 0; i < stdGrpList.size(); i++) {
--//std::cout << i << " " << stdGrpList.size() << " " << stdGrpList[i]->getName() << " " << stdGrpList[i]->hasStdMolecule() << std::endl;
-+//std::cout << "\n\ncollection::assignMetalParameters " << i << " " << stdGrpList.size() << " " << stdGrpList[i]->getName() << " "
-+// << stdGrpList[i]->hasStdMolecule() << std::endl;
- if (stdGrpList[i]->hasStdMolecule()) {
- //std::cout << "stdgroup name: " << stdGrpList[i]->getName() << std::endl;
- //stdGroup* pStdGroup = stdGrpList[i];
-@@ -3515,6 +3524,7 @@
-
- // create new molecule
- molecule* pNewMolecule = this->addMolecule();
-+ std::vector<atom*> atomList;
-
- // copy residues
- std::vector<metalCenter*> metCens = itsMetalGroups[j]->getMetalCenters();
-@@ -3536,6 +3546,10 @@
- addedResidues.push_back(primShellAtoms[l]->getParent());
- submolecule* pNewSubmolecule = pNewMolecule->addSubMolecule();
- pNewSubmolecule->copy(primShellAtoms[l]->getParent());
-+ std::vector<atom*> atomListTmp = primShellAtoms[l]->getParent()->getAtomList();
-+ for (unsigned int i = 0 ; i < atomListTmp.size(); i++) {
-+ atomList.push_back(atomListTmp[i]);
-+ }
- /*
- std::cout << "Primary Shell " << primShellAtoms[l]->getParent()->getName() << " "
- << primShellAtoms[l]->getParent()->getSubMolId() << " "
-@@ -3556,6 +3570,11 @@
- addedResidues.push_back(secShellAtoms[l]->getParent());
- submolecule* pNewSubmolecule = pNewMolecule->addSubMolecule();
- pNewSubmolecule->copy(secShellAtoms[l]->getParent());
-+
-+ std::vector<atom*> atomListTmp = secShellAtoms[l]->getParent()->getAtomList();
-+ for (unsigned int i = 0 ; i < atomListTmp.size(); i++) {
-+ atomList.push_back(atomListTmp[i]);
-+ }
- /*
- std::cout << "Secondary Shell " << secShellAtoms[l]->getParent()->getName() << " "
- << secShellAtoms[l]->getParent()->getSubMolId()
-@@ -3573,6 +3592,12 @@
- addedResidues.push_back(metalAtom->getParent());
- submolecule* pNewSubmolecule = pNewMolecule->addSubMolecule();
- pNewSubmolecule->copy(metalAtom->getParent());
-+
-+ std::vector<atom*> atomListTmp = metalAtom->getParent()->getAtomList();
-+ for (unsigned int i = 0 ; i < atomListTmp.size(); i++) {
-+ atomList.push_back(atomListTmp[i]);
-+ }
-+
- /*
- std::cout << "Metal Atom " << metalAtom->getParent()->getName() << " "
- << metalAtom->getParent()->getSubMolId()
-@@ -3582,7 +3607,7 @@
- }
- }
-
--//std::cout << " \n\n NEW MOLECULE \n";
-+//std::cout << "NEW MOLECULE \n";
-
- // Copy bonds
- if (pNewMolecule) {
-@@ -3646,16 +3671,26 @@
- }
- }
- }
-+
-+//std::cout << " After copy " << std::endl;
-+
- int nAtomsA = pStdMolecule->getNumAtoms();
- int nAtomsB = pNewMolecule->getNumAtoms();
-+
-+ int nBondsA = pStdMolecule->getNumBonds();
-+ int nBondsB = pNewMolecule->getNumBonds();
-+
- int nHeavyAtomsA = pStdMolecule->getNumHeavyAtoms();
- int nHeavyAtomsB = pNewMolecule->getNumHeavyAtoms();
-
-+//std::cout << "CHECK " << nAtomsA << " " << nAtomsB << " " << nBondsA << " " << nBondsB << "\n";
- int w = 0;
- if (nAtomsA != nAtomsB) w++;
- int h = 0;
- if (nHeavyAtomsA != nHeavyAtomsB) h++;
-
-+//std::cout << " w = " << w << " h = " << h << std::endl;
-+
- if (w or h) {
- std::string eMes = " " + stdGrpList[i]->getName() + " is not a match \n";
- eMes += " std mol nAtoms: " + i2s(nAtomsA) +
-@@ -3671,8 +3706,17 @@
- // Determine corresponences between two molecules
- std::vector<std::vector<int> > correspondenceMatrices;
- //int cor = 0;
-+//std::cout << " superimpose " << std::endl;
- superimpose* pSuperImpose = new superimpose();
-- int f = pSuperImpose->initializeCorrespondences(pStdMolecule, pNewMolecule, 3, correspondenceMatrices);
-+ int f = 0;
-+ try {
-+ f = pSuperImpose->initializeCorrespondences(pStdMolecule, pNewMolecule, 3, correspondenceMatrices);
-+ }
-+ catch (...) {
-+ f = 1;
-+ }
-+
-+//std::cout << " after superimpose " << std::endl;
-
- if (f != 0) {
- std::string eMes = " Error initializing correspondences\n " + stdGrpList[i]->getName() + " is not a match \n";
-@@ -3689,6 +3733,8 @@
- pNewMolecule->getCoordinates(CoordsB);
- int cor = 0;
-
-+//std::cout << " f = 0 " << std::endl;
-+
- double dRMSD = pSuperImpose->rmsd(pStdMolecule, CoordsB, correspondenceMatrices, cor);
- std::string eMes = " " + stdGrpList[i]->getName() + " is a match with rmsd of " + d2s(dRMSD) + "\n";
- MTKpp::errorLogger.throwError("collection::assignMetalParameters", eMes, INFO);
-@@ -3703,38 +3749,52 @@
- for (int t = 0; t < nHeavyAtoms; t++) {
- for (int t2 = 0; t2 < nHeavyAtoms; t2++) {
- if (correspondenceMatrices[cor][t*nHeavyAtoms+t2]) {
--//std::cout << t+1 << ":" << t2+1 << "; |";
--
- atom* pA1 = molHeavyAtoms1[t];
- atom* pA2 = molHeavyAtoms2[t2];
-
- if (pA1 and pA2) {
--//atom* collection::getAtom(int number, bool atomIndex, bool fileId, bool atomColIndex)
--
-+ // getAtom(int number, bool atomIndex, bool fileId, bool atomColIndex)
- atom* pOrgAtom = this->getAtom(pA2->getFileID(), 0, 1, 0);
--/*
--std::cout << pA1->getName() << "|" << pA2->getName() << "|" << pOrgAtom->getName() << " "
-- << pA1->getParent()->getName() << "|" << pA2->getParent()->getName() << "|" << pOrgAtom->getParent()->getName() << " |"
-- << pA1->getFileID() << "|" << pA2->getFileID() << "|" << pOrgAtom->getFileID() << "|"
-- << pA1->getColIndex() << "|" << pA2->getColIndex() << "|" << pOrgAtom->getColIndex()
-- << " |\n";
--*/
-- pOrgAtom->getParent()->setName(pA1->getParent()->getName());
-+ // atom* pOrgAtom = this->getAtom(pA2->getColIndex(), 0, 0, 1);
-+
-+
-+//std::cout << pA1->getName() << "|" << pA2->getName() << "|" << pOrgAtom->getName() << " "
-+// << pA1->getParent()->getName() << "|" << pA2->getParent()->getName() << "|" << pOrgAtom->getParent()->getName() << " |"
-+// << pA1->getFileID() << "|" << pA2->getFileID() << "|" << pOrgAtom->getFileID() << "|"
-+// << pA1->getColIndex() << "|" << pA2->getColIndex() << "|" << pOrgAtom->getColIndex()
-+// << " |\n";
-+
-+ //pOrgAtom->getParent()->setName(pA1->getParent()->getName());
-+
-+ for (unsigned int i = 0 ; i < atomList.size(); i++) {
-+ if (atomList[i]->getFileID() == pA2->getFileID()) {
-+ //std::cout << "setting " << atomList[i]->getParent()->getName() << " to "
-+ // << pA1->getParent()->getName() << "\n";
-+ atomList[i]->getParent()->setName(pA1->getParent()->getName());
-+ }
- }
-+//std::cout << pOrgAtom->getParent() << " " << pOrgAtom->getParent()->getName() << " "
-+//<< pA2->getFileID()
-+// << " " << pOrgAtom->getParent()->getColIndex() << "\n";
- }
- }
- }
- }
-+
-+ }
- }
- }
- }
-+
- // delete new molecule
-+ if (pNewMolecule) {
- this->delMolecule(pNewMolecule);
- }
- }
- }
- }
- }
-+ }
-
- ///////////////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////////////
-@@ -4377,6 +4437,7 @@
- }
- std::cout << " TOTAL CHARGE = " << localTotalCharge << std::endl;
- */
-+
- }
-
- // ============================================================
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Molecule/hydrophobize.cpp amber11/AmberTools/src/mtkpp/src/Molecule/hydrophobize.cpp
---- amber11.orig/AmberTools/src/mtkpp/src/Molecule/hydrophobize.cpp 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Molecule/hydrophobize.cpp 2012-03-03 20:03:01.404032569 +0200
-@@ -315,7 +315,7 @@
- if (!vertices[i]->isVisited()) {
- graph* subGraph = new graph();
-
-- std::cout << "\n " << vertices[i]->getIndex() << " ";
-+// std::cout << "\n " << vertices[i]->getIndex() << " ";
- molGraph->dfs(vertices[i]);
-
- for (unsigned int j = 0; j < vertices.size(); j++) {
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Molecule/Makefile.am amber11/AmberTools/src/mtkpp/src/Molecule/Makefile.am
---- amber11.orig/AmberTools/src/mtkpp/src/Molecule/Makefile.am 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Molecule/Makefile.am 2012-03-03 20:03:01.401032571 +0200
-@@ -1,8 +1,8 @@
--DIAGNOSTICS_LD=-L$(top_builddir)/src/Diagnostics/$(SRCDIR)
-+DIAGNOSTICS_LD=-L$(abs_top_builddir)/src/Diagnostics/$(SRCDIR)
- DIAGNOSTICS_LIB=-lDiagnostics
--GRAPH_LD=-L$(top_builddir)/src/Graph/$(SRCDIR)
-+GRAPH_LD=-L$(abs_top_builddir)/src/Graph/$(SRCDIR)
- GRAPH_LIB=-lGraph
--LOG_LD=-L$(top_builddir)/src/Log/$(SRCDIR)
-+LOG_LD=-L$(abs_top_builddir)/src/Log/$(SRCDIR)
- LOG_LIB=-lLog
-
- INCLUDES = -I@boost_inc@ -I$(srcdir)/.. -I$(top_srcdir)/src/eigen3b2
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Molecule/Makefile.in amber11/AmberTools/src/mtkpp/src/Molecule/Makefile.in
---- amber11.orig/AmberTools/src/mtkpp/src/Molecule/Makefile.in 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Molecule/Makefile.in 2012-03-03 20:03:01.401032571 +0200
-@@ -248,11 +248,11 @@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- xerces_path = @xerces_path@
--DIAGNOSTICS_LD = -L$(top_builddir)/src/Diagnostics/$(SRCDIR)
-+DIAGNOSTICS_LD = -L$(abs_top_builddir)/src/Diagnostics/$(SRCDIR)
- DIAGNOSTICS_LIB = -lDiagnostics
--GRAPH_LD = -L$(top_builddir)/src/Graph/$(SRCDIR)
-+GRAPH_LD = -L$(abs_top_builddir)/src/Graph/$(SRCDIR)
- GRAPH_LIB = -lGraph
--LOG_LD = -L$(top_builddir)/src/Log/$(SRCDIR)
-+LOG_LD = -L$(abs_top_builddir)/src/Log/$(SRCDIR)
- LOG_LIB = -lLog
- INCLUDES = -I@boost_inc@ -I$(srcdir)/.. -I$(top_srcdir)/src/eigen3b2
- lib_LTLIBRARIES = libMolecule.la
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Molecule/parameters.cpp amber11/AmberTools/src/mtkpp/src/Molecule/parameters.cpp
---- amber11.orig/AmberTools/src/mtkpp/src/Molecule/parameters.cpp 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Molecule/parameters.cpp 2012-03-03 20:03:01.404032569 +0200
-@@ -145,6 +145,7 @@
- pAtomType->description = "";
- pAtomType->rvalue = 0.0;
- pAtomType->evalue = 0.0;
-+ pAtomType->atomPolarizability = 0.0;
- pAtomType->groupName = "";
- pAtomType->optimize = false;
- this->itsTypeList.push_back(pAtomType);
-@@ -184,6 +185,7 @@
- pAtomType->description = a->description;
- pAtomType->rvalue = a->rvalue;
- pAtomType->evalue = a->evalue;
-+ pAtomType->atomPolarizability = a->atomPolarizability;
- pAtomType->groupName = g;
- pAtomType->optimize = a->optimize;
-
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Molecule/parameters.h amber11/AmberTools/src/mtkpp/src/Molecule/parameters.h
---- amber11.orig/AmberTools/src/mtkpp/src/Molecule/parameters.h 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Molecule/parameters.h 2012-03-03 20:03:01.405032569 +0200
-@@ -76,6 +76,9 @@
- //! Well Depth
- double evalue;
-
-+ //! Atomic polarizability in A**3
-+ double atomPolarizability;
-+
- //! group name
- std::string groupName;
-
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Molecule/stdFrag.cpp amber11/AmberTools/src/mtkpp/src/Molecule/stdFrag.cpp
---- amber11.orig/AmberTools/src/mtkpp/src/Molecule/stdFrag.cpp 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Molecule/stdFrag.cpp 2012-03-03 20:03:01.405032569 +0200
-@@ -305,7 +305,8 @@
- this->itsSymbol = symbol;
- }
- else {
-- std::cout << " Length of Fragment Symbol = " << symbol.size()
-+ std::cout << " Length of Fragment Symbol (" << symbol
-+ << ") = " << symbol.size()
- << " --> Must be 3." << std::endl;
- }
- }
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Molecule/stdGroup.cpp amber11/AmberTools/src/mtkpp/src/Molecule/stdGroup.cpp
---- amber11.orig/AmberTools/src/mtkpp/src/Molecule/stdGroup.cpp 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Molecule/stdGroup.cpp 2012-03-03 20:03:01.406032569 +0200
-@@ -35,6 +35,7 @@
- #include "stdLibrary.h"
-
- #include "molecule.h"
-+#include "submolecule.h"
-
- namespace MTKpp
- {
-@@ -258,5 +259,24 @@
- }
- }
-
-+// ============================================================
-+// Function : getCharge()
-+// ------------------------------------------------------------
-+//
-+// ============================================================
-+double stdGroup::getCharge()
-+{
-+ double d = 0.0;
-+ if (pMolecule) {
-+ std::vector<submolecule*> sList = this->pMolecule->getSubMoleculeList();
-+ for (unsigned int p = 0; p < sList.size(); p++) {
-+ this->pStdFrag = this->getStdFrag(sList[p]->getName());
-+ d += this->pStdFrag->getCharge();
-+ //std::cout << this->pStdFrag->getSymbol() << " " << this->pStdFrag->getCharge() << std::endl;
-+ }
-+ }
-+ return d;
-+}
-+
- } // MTKpp namespace
-
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Molecule/stdGroup.h amber11/AmberTools/src/mtkpp/src/Molecule/stdGroup.h
---- amber11.orig/AmberTools/src/mtkpp/src/Molecule/stdGroup.h 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Molecule/stdGroup.h 2012-03-03 20:03:01.406032569 +0200
-@@ -160,6 +160,12 @@
- */
- molecule* getStdMolecule();
-
-+ /*!
-+ \brief Get getCharge
-+ \return molecule charge
-+ */
-+ double getCharge();
-+
- protected:
- //! stdLibrary pointer
- stdLibrary* pParent;
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Parsers/frcmodParser.cpp amber11/AmberTools/src/mtkpp/src/Parsers/frcmodParser.cpp
---- amber11.orig/AmberTools/src/mtkpp/src/Parsers/frcmodParser.cpp 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Parsers/frcmodParser.cpp 2012-03-03 20:03:01.407032569 +0200
-@@ -98,6 +98,7 @@
- while (ifrcmod) {
- std::string buffer(80,'*');
- getline(ifrcmod,fileline);
-+//std::cout << "|" << fileline << "|" << std::endl;
- bMASS = false;
- bBOND = false;
- bANGLE = false;
-@@ -105,118 +106,311 @@
- bIMPROPER = false;
- bNONBON = false;
-
-+ if ( (fileline.size() > 0) and (stripString(fileline, " ") != "") ) {
-+ std::vector<std::string> splitstring;
-+ splitString(fileline, " ", splitstring, 0);
-+
-+ if (splitstring[0] == "MASS") bMASS = true;
-+ if (splitstring[0] == "BOND") bBOND = true;
-+ if (splitstring[0] == "ANGL" or splitstring[0] == "ANGLE") bANGLE = true;
-+ if (splitstring[0] == "DIHE" or splitstring[0] == "DIHEDRAL") bDIHE = true;
-+ if (splitstring[0] == "IMPROP" or splitstring[0] == "IMPROPER") bIMPROPER = true;
-+ if (splitstring[0] == "NONB" or splitstring[0] == "NONBON") bNONBON = true;
-+ }
-+/*
-+ try {
- if (fileline.substr(0,4) == "MASS") bMASS = true;
-+ }
-+ catch (std::out_of_range) {
-+ std::cout << " out_of_range MAS " << std::endl;
-+ }
-+
-+ try {
- if (fileline.substr(0,4) == "BOND") bBOND = true;
-+ }
-+ catch (std::out_of_range) {
-+ std::cout << " out_of_range BOND " << std::endl;
-+ }
-+
-+ try {
- if (fileline.substr(0,5) == "ANGLE") bANGLE = true;
-+ }
-+ catch (std::out_of_range) {
-+ std::cout << " out_of_range ANG" << std::endl;
-+ }
-+
-+ try {
- if (fileline.substr(0,4) == "DIHE") bDIHE = true;
-+ }
-+ catch (std::out_of_range) {
-+ std::cout << " out_of_range DIHE " << std::endl;
-+ }
-+
-+ try {
- if (fileline.substr(0,8) == "IMPROPER") bIMPROPER = true;
-+ }
-+ catch (std::out_of_range) {
-+ std::cout << " out_of_range IMP " << std::endl;
-+ }
-+
-+ try {
- if (fileline.substr(0,6) == "NONBON") bNONBON = true;
-+ }
-+ catch (std::out_of_range) {
-+ std::cout << " out_of_range NONB" << std::endl;
-+ }
-+*/
-
- if (bMASS) {
- getline(ifrcmod,fileline);
-- while (fileline != "") {
-+ while (stripString(fileline, " ") != "") {
-+ //while (GetAlphaChar(fileline, 0) != "0") {
-+ std::vector<std::string> splitLine;
-+ splitString(fileline, " ", splitLine, 0);
-+ if (splitLine.size() >= 2) {
-+ for (unsigned int i = 0; i < 2; i++) {
-+ splitLine[i] = stripString(splitLine[i], " ");
-+ }
- pAtomType = pParameters->addAtomType();
-+ pAtomType->name = splitLine[0];
- pAtomType->groupName = this->groupName;
-- pAtomType->mass = strtod(fileline.substr(3,5).c_str(), 0);
-+ pAtomType->mass = string2Double(splitLine[1]); //strtod(fileline.substr(3,5).c_str(), 0);
-+
-+ if (splitLine.size() > 2) {
-+ char *end;
-+ double ret_double = strtod(splitLine[2].c_str(), &end);
-+ if (!*end) {
-+ pAtomType->atomPolarizability = ret_double;
-+ }
-+//std::cout << splitLine[2] << " " << ret_double << std::endl;
-+ }
-+
- getline(ifrcmod,fileline);
- }
- }
-+ }
-
- if (bBOND) {
- getline(ifrcmod,fileline);
-- while (fileline != "") {
-- std::string atomNames = fileline.substr(0,5);
-+ //while (fileline != "") {
-+ while (stripString(fileline, " ") != "") {
-+ //std::string atomNames = fileline.substr(0,5);
- std::vector<std::string> splitLine;
-- splitString(atomNames, "-", splitLine, 0);
-- if (splitLine.size() == 2) {
-- for (unsigned int i = 0; i < 2; i++) {
-- splitLine[i] = stripString(splitLine[i]," ");
-- }
-+ splitString(fileline, "-", splitLine, 0);
-+
-+ std::vector<std::string> splitLine2;
-+ splitString(splitLine[1], " ", splitLine2, 0);
-+
-+ //if (splitLine.size() == 2) {
-+ //for (unsigned int i = 0; i < 2; i++) {
-+ // splitLine[i] = stripString(splitLine[i]," ");
-+ //}
- pBondParam = pParameters->addBondParam();
- pBondParam->groupName = this->groupName;
-- pBondParam->atomType1 = std::string(splitLine[0]);
-- pBondParam->atomType2 = std::string(splitLine[1]);
-- pBondParam->keq = strtod(fileline.substr(7,5).c_str(), 0);
-- pBondParam->req = strtod(fileline.substr(16,5).c_str(), 0);
-+ pBondParam->atomType1 = stripString(splitLine[0], " ");
-+ pBondParam->atomType2 = stripString(splitLine2[0], " ");
-+//std::cout << "|" << pBondParam->atomType1 << "|" << pBondParam->atomType2 << "|" << std::endl;
-+ pBondParam->keq = string2Double(splitLine2[1]);
-+ pBondParam->req = string2Double(splitLine2[2]);
-+
-+// pBondParam->keq = strtod(fileline.substr(7,5).c_str(), 0);
-+// pBondParam->req = strtod(fileline.substr(16,5).c_str(), 0);
-+
-+//std::cout << "\n " << fileline << std::endl;
-+//std::cout << " BOND " << pBondParam->atomType1 << " " << pBondParam->atomType2 << " " << pBondParam->keq << " " << pBondParam->req << std::endl;
-+//std::cout << " BOND " << fileline.substr(7,5) << " " << fileline.substr(16,5) <<std::endl;
-+
- getline(ifrcmod,fileline);
-- }
-+ //}
- }
- }
-
- if (bANGLE) {
- getline(ifrcmod,fileline);
-- while (fileline != "") {
-- std::string atomNames = fileline.substr(0,8);
-+ //while (fileline != "") {
-+ while (stripString(fileline, " ") != "") {
-+// std::string atomNames = fileline.substr(0,8);
-+
- std::vector<std::string> splitLine;
-- splitString(atomNames, "-", splitLine, 0);
-- if (splitLine.size() == 3) {
-- for (unsigned int i = 0; i < 3; i++) {
-- splitLine[i] = stripString(splitLine[i]," ");
-- }
-+ splitString(fileline, "-", splitLine, 0);
-+
-+ std::vector<std::string> splitLine2;
-+ splitString(splitLine[2], " ", splitLine2, 0);
-+
-+ //std::vector<std::string> splitLine;
-+ //splitString(atomNames, "-", splitLine, 0);
-+
-+ //std::vector<std::string> splitLine2;
-+ //splitString(fileline, " ", splitLine2, 0);
-+
-+ //if (splitLine.size() == 3) {
-+ //for (unsigned int i = 0; i < 3; i++) {
-+ // splitLine[i] = stripString(splitLine[i]," ");
-+ //}
- pAngleParam = pParameters->addAngleParam();
- pAngleParam->groupName = this->groupName;
-- pAngleParam->atomType1 = std::string(splitLine[0]);
-- pAngleParam->atomType2 = std::string(splitLine[1]);
-- pAngleParam->atomType3 = std::string(splitLine[2]);
-- pAngleParam->keq = strtod(fileline.substr(11,7).c_str(), 0);
-- pAngleParam->req = strtod(fileline.substr(20,8).c_str(), 0) * DEG2RAD;
-+ pAngleParam->atomType1 = stripString(splitLine[0], " ");
-+ pAngleParam->atomType2 = stripString(splitLine[1], " ");
-+ pAngleParam->atomType3 = stripString(splitLine2[0], " ");
-+//std::cout << "|" << pAngleParam->atomType1 << "|" << pAngleParam->atomType2 << "|" << pAngleParam->atomType3 << "|" << std::endl;
-+
-+ pAngleParam->keq = string2Double(splitLine2[1]);
-+ pAngleParam->req = string2Double(splitLine2[2]) * DEG2RAD;
-+
-+ //pAngleParam->keq = strtod(fileline.substr(11,7).c_str(), 0);
-+ //pAngleParam->req = strtod(fileline.substr(20,8).c_str(), 0) * DEG2RAD;
-+
-+//std::cout << "\n " << fileline << std::endl;
-+//std::cout << " ANGLE " << pAngleParam->atomType1 << " " << pAngleParam->atomType2 << " " << pAngleParam->atomType3 << " " << pAngleParam->keq << " " << string2Double(splitLine2[2]) << std::endl;
-+
- getline(ifrcmod,fileline);
-- }
-+ //}
- }
- }
-
- if (bDIHE) {
- getline(ifrcmod,fileline);
-- while (fileline != "") {
-- std::string atomNames = fileline.substr(0,11);
-+ //while (fileline != "") {
-+ while (stripString(fileline, " ") != "") {
-+
-+//std::cout << "\n " << fileline << std::endl;
-+
-+//std::cout << fileline.substr(0,12) << std::endl;
-+
-+// snip = str.substr(0,12);
-+//(3) erase the substring of 0..where str.erase(0,where);
-+
-+ std::string atTypes = fileline.substr(0,12);
- std::vector<std::string> splitLine;
-- splitString(atomNames, "-", splitLine, 0);
-- if (splitLine.size() == 4) {
-- for (unsigned int i = 0; i < 4; i++) {
-- splitLine[i] = stripString(splitLine[i]," ");
-- }
-+ splitString(atTypes, "-", splitLine, 0);
-+
-+/*for (unsigned int i = 0; i < splitLine.size(); i++) {
-+ std::cout << splitLine[i] << std::endl;
-+}*/
-+
-+ fileline.erase(0,12);
-+
-+ std::vector<std::string> splitLine2;
-+ splitString(fileline, " ", splitLine2, 0);
-+/*
-+for (unsigned int i = 0; i < splitLine2.size(); i++) {
-+ std::cout << splitLine2[i] << std::endl;
-+}*/
-+
-+ //std::string atomNames = fileline.substr(0,11);
-+ //std::vector<std::string> splitLine;
-+ //splitString(atomNames, "-", splitLine, 0);
-+
-+ //if (splitLine.size() == 4) {
-+ //for (unsigned int i = 0; i < 4; i++) {
-+ //splitLine[i] = stripString(splitLine[i], " ");
-+ //}
- pTorsionParam = pParameters->addTorsionParam();
- pTorsionParam->groupName = this->groupName;
-- pTorsionParam->atomType1 = std::string(splitLine[0]);
-- pTorsionParam->atomType2 = std::string(splitLine[1]);
-- pTorsionParam->atomType3 = std::string(splitLine[2]);
-- pTorsionParam->atomType4 = std::string(splitLine[3]);
-- pTorsionParam->npth = atoi(fileline.substr(11,4).c_str());
-- pTorsionParam->Vn = strtod(fileline.substr(18,8).c_str(), 0);
-- pTorsionParam->gamma = strtod(fileline.substr(31,8).c_str(), 0) * DEG2RAD;
-- pTorsionParam->Nt = strtod(fileline.substr(42,12).c_str(), 0);
-+ pTorsionParam->atomType1 = stripString(splitLine[0], " ");
-+ pTorsionParam->atomType2 = stripString(splitLine[1], " ");
-+ pTorsionParam->atomType3 = stripString(splitLine[2], " ");
-+ pTorsionParam->atomType4 = stripString(splitLine[3], " ");
-+
-+ pTorsionParam->npth = string2Int(splitLine2[0]);
-+ pTorsionParam->Vn = string2Double(splitLine2[1]);
-+ pTorsionParam->gamma = string2Double(splitLine2[2]) * DEG2RAD;
-+ pTorsionParam->Nt = string2Double(splitLine2[3]);
-+
-+ //pTorsionParam->npth = atoi(fileline.substr(11,4).c_str());
-+ //pTorsionParam->Vn = strtod(fileline.substr(18,8).c_str(), 0);
-+ //pTorsionParam->gamma = strtod(fileline.substr(31,8).c_str(), 0) * DEG2RAD;
-+ //pTorsionParam->Nt = strtod(fileline.substr(42,12).c_str(), 0);
-+
-+//std::cout << " DIHE " << pTorsionParam->atomType1 << " " << pTorsionParam->atomType2 << " " << pTorsionParam->atomType3 << " " << pTorsionParam->atomType4 << " " << pTorsionParam->npth << " " << pTorsionParam->Vn << " " << string2Double(splitLine2[2]) << " " << pTorsionParam->Nt << std::endl;
-+
- getline(ifrcmod,fileline);
-- }
-+//std::cout << " DIHE LINE: " << fileline << std::endl;
-+ //}
- }
- }
-
- if (bIMPROPER) {
- getline(ifrcmod,fileline);
-- while (fileline != "") {
-- std::string atomNames = fileline.substr(0,11);
-+ //while (fileline != "") {
-+ while (stripString(fileline, " ") != "") {
-+
-+ std::string atTypes = fileline.substr(0,12);
- std::vector<std::string> splitLine;
-- splitString(atomNames, "-", splitLine, 0);
-- if (splitLine.size() == 4) {
-- for (unsigned int i = 0; i < 4; i++) {
-- splitLine[i] = stripString(splitLine[i]," ");
-- }
-+ splitString(atTypes, "-", splitLine, 0);
-+
-+ fileline.erase(0,12);
-+
-+ std::vector<std::string> splitLine2;
-+ splitString(fileline, " ", splitLine2, 0);
-+
-+// std::vector<std::string> splitLine;
-+// splitString(fileline, "-", splitLine, 0);
-+
-+// std::vector<std::string> splitLine2;
-+// splitString(splitLine[3], " ", splitLine2, 0);
-+
-+ //std::string atomNames = fileline.substr(0,11);
-+ //std::vector<std::string> splitLine;
-+ //splitString(atomNames, "-", splitLine, 0);
-+ //if (splitLine.size() == 4) {
-+ //for (unsigned int i = 0; i < 4; i++) {
-+ //splitLine[i] = stripString(splitLine[i]," ");
-+ //}
- pImproperParam = pParameters->addImproperParam();
- pImproperParam->groupName = this->groupName;
-- pImproperParam->atomType1 = std::string(splitLine[0]);
-- pImproperParam->atomType2 = std::string(splitLine[1]);
-- pImproperParam->atomType3 = std::string(splitLine[2]);
-- pImproperParam->atomType4 = std::string(splitLine[3]);
-- pImproperParam->Vn = strtod(fileline.substr(18,8).c_str(), 0);
-- pImproperParam->gamma = strtod(fileline.substr(31,8).c_str(), 0) * DEG2RAD;
-- pImproperParam->Nt = strtod(fileline.substr(42,12).c_str(), 0);
-+ pImproperParam->atomType1 = stripString(splitLine[0], " ");
-+ pImproperParam->atomType2 = stripString(splitLine[1], " ");
-+ pImproperParam->atomType3 = stripString(splitLine[2], " ");
-+ pImproperParam->atomType4 = stripString(splitLine[3], " ");
-+
-+ pImproperParam->Vn = string2Double(splitLine2[0]);
-+ pImproperParam->gamma = string2Double(splitLine2[1]) * DEG2RAD;
-+ pImproperParam->Nt = string2Double(splitLine2[2]);
-+
-+ //pImproperParam->Vn = strtod(fileline.substr(18,8).c_str(), 0);
-+ //pImproperParam->gamma = strtod(fileline.substr(31,8).c_str(), 0) * DEG2RAD;
-+ //pImproperParam->Nt = strtod(fileline.substr(42,12).c_str(), 0);
-+
-+//std::cout << "\n " << fileline << std::endl;
-+//std::cout << " IMPR " << pImproperParam->atomType1 << " " << pImproperParam->atomType2 << " " << pImproperParam->atomType3 << " " << pImproperParam->atomType4 << " " << pImproperParam->Vn << " " << string2Double(splitLine2[1]) << " " << pImproperParam->Nt << std::endl;
-+
- getline(ifrcmod,fileline);
-- }
-+ //}
- }
- }
- if (bNONBON) {
-+ getline(ifrcmod,fileline);
-+//std::cout << fileline << std::endl;
-+ //while (fileline != "") {
-+ while (stripString(fileline, " ") != "") {
-+ std::vector<std::string> splitLine;
-+ splitString(fileline, " ", splitLine, 0);
-+ if (splitLine.size() >= 3) {
-+ for (unsigned int i = 0; i < 3; i++) {
-+ splitLine[i] = stripString(splitLine[i], " ");
-+ }
-+//std::cout << " |" << splitLine[0] << "|" << std::endl;
-+
-+//std::cout << "\n " << fileline << std::endl;
-+
-+ pAtomType = pParameters->getAtomType(stripString(splitLine[0], " "));
-+ if (pAtomType) {
-+ pAtomType->rvalue = string2Double(splitLine[1]);
-+ pAtomType->evalue = string2Double(splitLine[2]);
-
-+//std::cout << pAtomType->name << " " << pAtomType->rvalue << " " << pAtomType->evalue << std::endl;
-+
-+ }
-+ else {
-+ std::cout << " Can't find atom type " << std::endl;
-+ }
-+ getline(ifrcmod,fileline);
-+ }
-+ }
- }
- }
-+
- ifrcmod.close();
- }
-
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Parsers/gaussianParser.cpp amber11/AmberTools/src/mtkpp/src/Parsers/gaussianParser.cpp
---- amber11.orig/AmberTools/src/mtkpp/src/Parsers/gaussianParser.cpp 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Parsers/gaussianParser.cpp 2012-03-03 20:03:01.408032569 +0200
-@@ -84,7 +84,7 @@
-
- this->bMem = 0;
-
-- this->bnProc = 0;
-+ this->bNProc = 0;
-
- this->bWriteInternalCoords = true;
- this->bWriteCartCoords = false;
-@@ -168,7 +168,7 @@
- while (igau) {
- getline(igau,fileline);
-
-- if (containsSubStr(fileline, "modredundant")) {
-+ if (containsSubStr(fileline, "ModRedundant")) {
- bModRedundant = true;
- }
- if (fileline.substr(0,59) == " Redundant internal coordinates taken from checkpoint file:") {
-@@ -626,6 +626,7 @@
- void gaussianParser::Write(const std::string &gaussfile, molecule* pMolecule,
- std::vector< vector3d > &coordinates)
- {
-+ std::string routecard;
- std::ofstream ogauss;
- ogauss.open(gaussfile.c_str());
-
-@@ -643,52 +644,64 @@
- return;
- }
-
-- ogauss << "$rungauss" << std::endl;
-+ ogauss << "$RunGauss" << std::endl;
-
- if (bChkPt) {
-- ogauss << "%chk=" << this->itsChkPtFile << std::endl;
-+ ogauss << "%Chk=" << this->itsChkPtFile << std::endl;
- }
- if (bMem) {
-- ogauss << "%mem=" << this->itsMem << std::endl;
-+ ogauss << "%Mem=" << this->itsMem << std::endl;
- }
-- if (bnProc) {
-- ogauss << "%nproc=" << this->itsnProc << std::endl;
-+ if (bNProc) {
-+ ogauss << "%NProcShared=" << this->itsNProc << std::endl;
- }
-
-- ogauss << "#" << this->itsVerbosity << " " << this->itsTheory << "/" << this->itsBasisSet << " ";
-+ routecard = "#" + this->itsVerbosity + " " + this->itsTheory + "/" + this->itsBasisSet;
-
- if (!itsCommandOptions.empty()) {
- for (mapIterator p = itsCommandOptions.begin(); p != itsCommandOptions.end(); p++) {
- std::string c = p->first;
- std::vector<std::string> o = p->second;
-+ std::string opts = "";
- if (o.size() == 1) {
-- if ( p->second[0] == "NONE") {
-- ogauss << p->first << " ";
-- }
-- else {
-- ogauss << p->first << "=" << p->second[0] << " ";
-+ if ( p->second[0] != "NONE") {
-+ opts = "=" + p->second[0];
- }
- }
- else {
-- ogauss << p->first << "(";
-+ opts = "(";
- for (unsigned int i = 0; i < o.size(); i++) {
-- if (i == o.size()-1) {
-- ogauss << o[i];
-+ opts = opts + o[i];
-+ if (i != o.size()-1) {
-+ opts = opts + ",";
- }
-- else {
-- ogauss << o[i] << ",";
- }
-+ opts = opts + ")";
- }
-- ogauss << ")" << " ";
-+
-+ if (routecard.length() + c.length() + opts.length() < 72) {
-+ routecard = routecard + " " + c + opts;
-+ } else {
-+ if (routecard.length() != 0) {
-+ ogauss << routecard << std::endl;
-+ }
-+ routecard = c + opts;
- }
- }
- }
- for (unsigned int i = 0; i < this->iops.size(); i++) {
-- ogauss << this->iops[i] << " ";
-+ if (routecard.length() + this->iops[i].length() < 72) {
-+ routecard = routecard + " " + this->iops[i];
-+ } else {
-+ if (routecard.length() != 0) {
-+ ogauss << routecard << std::endl;
-+ }
-+ routecard = this->iops[i];
-+ }
- }
-
- // Flush command block and follow with a blank line
-- ogauss << "\n" << std::endl;
-+ ogauss << routecard << "\n" << std::endl;
-
- // Write name (if required) and follow with a blank line
- if (bWriteMoleculeName) {
-@@ -740,11 +753,11 @@
- ogauss << std::endl;
- }
-
-- std::vector<std::string> optOptions = this->getCommandOption("opt");
-+ std::vector<std::string> optOptions = this->getCommandOption("Opt");
- if (optOptions.size() > 0) {
- bool bMD = 0;
- for (unsigned int x = 0; x < optOptions.size(); x++) {
-- if (optOptions[x] == "modredundant") {
-+ if (optOptions[x] == "ModRedundant") {
- bMD = 1;
- }
- }
-@@ -766,13 +779,13 @@
- }
- }
-
-- if (this->itsBasisSet.substr(0,3) == "GEN") {
-+ if (this->itsBasisSet.substr(0,3) == "Gen") {
- std::ifstream iBSFile;
- iBSFile.open(this->itsBasisSetFile.c_str());
-
- if (!iBSFile) {
- std::cout << "\nERROR!"
-- << "\nBasis set \"GEN\" requires a custom file."
-+ << "\nBasis set \"Gen\" requires a custom file."
- << "\nFile \"" << this->itsBasisSetFile << "\" is missing or unreadable."
- << "\nPlease choose another file. For instructions, consult your program's"
- << "\ndocumentation."
-@@ -789,13 +802,13 @@
- }
-
- // +BPR
-- if (this->getCommandOption("pseudo").size() > 0) {
-+ if (this->getCommandOption("Pseudo").size() > 0) {
- std::ifstream iPseudoFile;
- iPseudoFile.open(this->itsPseudoPotentialFile.c_str());
-
- if (!iPseudoFile) {
- std::cout << "\nERROR!"
-- << "\npseudo=read or pseudo=cards requires a custom file."
-+ << "\nPseudo=Read or Pseudo=Cards requires a custom file."
- << "\nFile \"" << this->itsPseudoPotentialFile << "\" is missing or unreadable."
- << "\nPlease choose another file. For instructions, consult your program's"
- << "\ndocumentation."
-@@ -812,7 +825,7 @@
- }
- // -BPR
-
-- if (this->getCommandOption("pop").size() > 0) {
-+ if (this->getCommandOption("Pop").size() > 0) {
- if (!itsMKRadii.empty()) {
- for (dMapIterator p = itsMKRadii.begin(); p != itsMKRadii.end(); p++) {
- ogauss << p->first << "=" << p->second << "\n";
-@@ -1037,14 +1050,14 @@
- }
-
- // ============================================================
--// Function : setnProc
-+ // Function : setNProc
- // ------------------------------------------------------------
- //
- // ============================================================
--void gaussianParser::setnProc(const std::string &n)
-+ void gaussianParser::setNProc(const std::string &n)
- {
-- this->bnProc = 1;
-- this->itsnProc = n;
-+ this->bNProc = 1;
-+ this->itsNProc = n;
- }
-
- // ============================================================
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Parsers/gaussianParser.h amber11/AmberTools/src/mtkpp/src/Parsers/gaussianParser.h
---- amber11.orig/AmberTools/src/mtkpp/src/Parsers/gaussianParser.h 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Parsers/gaussianParser.h 2012-03-03 20:03:01.408032569 +0200
-@@ -196,9 +196,9 @@
-
- /*!
- \brief Set number of processors to use
-- \param n nprocs
-+ \param n number of processors
- */
-- void setnProc(const std::string &n);
-+ void setNProc(const std::string &n);
-
- /*!
- \brief Set level of theory
-@@ -354,10 +354,10 @@
- bool bMem;
-
- //! number of processors
-- std::string itsnProc;
-+ std::string itsNProc;
-
-- //! Turn on mem
-- bool bnProc;
-+ //! Turn on number of processors
-+ bool bNProc;
-
- //! Use internal or cartesian coordinates
- bool bWriteInternalCoords;
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Parsers/Makefile.am amber11/AmberTools/src/mtkpp/src/Parsers/Makefile.am
---- amber11.orig/AmberTools/src/mtkpp/src/Parsers/Makefile.am 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Parsers/Makefile.am 2012-03-03 20:03:01.406032569 +0200
-@@ -1,15 +1,15 @@
--DIAGNOSTICS_LD=-L$(top_builddir)/src/Diagnostics/$(SRCDIR)
-+DIAGNOSTICS_LD=-L$(abs_top_builddir)/src/Diagnostics/$(SRCDIR)
- DIAGNOSTICS_LIB=-lDiagnostics
--MOLECULE_LD=-L$(top_builddir)/src/Molecule/$(SRCDIR)
-+MOLECULE_LD=-L$(abs_top_builddir)/src/Molecule/$(SRCDIR)
- MOLECULE_LIB=-lMolecule
--GA_LD=-L$(top_builddir)/src/GA/$(SRCDIR)
-+GA_LD=-L$(abs_top_builddir)/src/GA/$(SRCDIR)
- GA_LIB=-lGA
--LOG_LD=-L$(top_builddir)/src/Log/$(SRCDIR)
-+LOG_LD=-L$(abs_top_builddir)/src/Log/$(SRCDIR)
- LOG_LIB=-lLog
--STATS_LD=-L$(top_builddir)/src/Statistics/$(SRCDIR)
-+STATS_LD=-L$(abs_top_builddir)/src/Statistics/$(SRCDIR)
- STATS_LIB=-lStatistics
-
--TINYXML_LD=-L$(top_builddir)/src/tinyxml/$(SRCDIR)
-+TINYXML_LD=-L$(abs_top_builddir)/src/tinyxml/$(SRCDIR)
- TINYXML_LIB=-ltinyxml
-
- if USE_XERCES
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Parsers/Makefile.in amber11/AmberTools/src/mtkpp/src/Parsers/Makefile.in
---- amber11.orig/AmberTools/src/mtkpp/src/Parsers/Makefile.in 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Parsers/Makefile.in 2012-03-03 20:03:01.407032569 +0200
-@@ -267,17 +267,17 @@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- xerces_path = @xerces_path@
--DIAGNOSTICS_LD = -L$(top_builddir)/src/Diagnostics/$(SRCDIR)
-+DIAGNOSTICS_LD = -L$(abs_top_builddir)/src/Diagnostics/$(SRCDIR)
- DIAGNOSTICS_LIB = -lDiagnostics
--MOLECULE_LD = -L$(top_builddir)/src/Molecule/$(SRCDIR)
-+MOLECULE_LD = -L$(abs_top_builddir)/src/Molecule/$(SRCDIR)
- MOLECULE_LIB = -lMolecule
--GA_LD = -L$(top_builddir)/src/GA/$(SRCDIR)
-+GA_LD = -L$(abs_top_builddir)/src/GA/$(SRCDIR)
- GA_LIB = -lGA
--LOG_LD = -L$(top_builddir)/src/Log/$(SRCDIR)
-+LOG_LD = -L$(abs_top_builddir)/src/Log/$(SRCDIR)
- LOG_LIB = -lLog
--STATS_LD = -L$(top_builddir)/src/Statistics/$(SRCDIR)
-+STATS_LD = -L$(abs_top_builddir)/src/Statistics/$(SRCDIR)
- STATS_LIB = -lStatistics
--TINYXML_LD = -L$(top_builddir)/src/tinyxml/$(SRCDIR)
-+TINYXML_LD = -L$(abs_top_builddir)/src/tinyxml/$(SRCDIR)
- TINYXML_LIB = -ltinyxml
- @USE_XERCES_TRUE@XERCES_LD = -L@xerces_path@/lib/
- @USE_XERCES_TRUE@XERCES_LIB = -lxerces-c
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Parsers/mtkppParser.cpp amber11/AmberTools/src/mtkpp/src/Parsers/mtkppParser.cpp
---- amber11.orig/AmberTools/src/mtkpp/src/Parsers/mtkppParser.cpp 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Parsers/mtkppParser.cpp 2012-03-03 20:03:01.409032568 +0200
-@@ -1769,6 +1769,15 @@
- atomElem->SetAttribute("type", int2String(pAtom->getType()));
- atomElem->SetAttribute("formalCharge", int2String(pAtom->getFormalCharge()));
-
-+ // Coordinates
-+ TiXmlElement* coordElem = new TiXmlElement("coord");
-+ atomElem->LinkEndChild(coordElem);
-+
-+ coordElem->SetAttribute("x", double2String(pAtom->getX()));
-+ coordElem->SetAttribute("y", double2String(pAtom->getY()));
-+ coordElem->SetAttribute("z", double2String(pAtom->getZ()));
-+
-+ // Properties
- std::map<std::string, double> atomDMap = pAtom->getPropertyMap();
- std::map<std::string, int> atomIMap = pAtom->getIntPropertyMap();
-
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Parsers/paramParser.cpp amber11/AmberTools/src/mtkpp/src/Parsers/paramParser.cpp
---- amber11.orig/AmberTools/src/mtkpp/src/Parsers/paramParser.cpp 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Parsers/paramParser.cpp 2012-03-03 20:03:01.410032567 +0200
-@@ -144,6 +144,10 @@
- pAtomType->evalue = string2Double(element->Attribute("potentialWellDepth"));
- }
-
-+ if (element->Attribute("atomPolarizability")) {
-+ pAtomType->atomPolarizability = string2Double(element->Attribute("atomPolarizability"));
-+ }
-+
- if (element->Attribute("element")) {
- pAtomType->element = element->Attribute("element");
- }
-@@ -1808,6 +1812,7 @@
- entry->SetAttribute("mass" , double2String(pAtomType->mass).c_str());
- entry->SetAttribute("vdwRadius" , double2String(pAtomType->rvalue).c_str());
- entry->SetAttribute("potentialWellDepth" , double2String(pAtomType->evalue).c_str());
-+ entry->SetAttribute("atomPolarizability" , double2String(pAtomType->atomPolarizability).c_str());
- entry->SetAttribute("element" , pAtomType->element);
- entry->SetAttribute("hybridization" , pAtomType->hybridization);
- entry->SetAttribute("groupName" , pAtomType->groupName);
-@@ -2035,6 +2040,7 @@
- typeElem->setAttribute(X("mass"), X(double2String(pAtomType->mass).c_str()));
- typeElem->setAttribute(X("vdwRadius"), X(double2String(pAtomType->rvalue).c_str()));
- typeElem->setAttribute(X("potentialWellDepth"), X(double2String(pAtomType->evalue).c_str()));
-+ typeElem->setAttribute(X("atomPolarizability"), X(double2String(pAtomType->atomPolarizability).c_str()));
- typeElem->setAttribute(X("element"), X(pAtomType->element.c_str()));
- typeElem->setAttribute(X("hybridization"), X(pAtomType->hybridization.c_str()));
- typeElem->setAttribute(X("groupName"), X(pAtomType->groupName.c_str()));
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Parsers/pdbParser.cpp amber11/AmberTools/src/mtkpp/src/Parsers/pdbParser.cpp
---- amber11.orig/AmberTools/src/mtkpp/src/Parsers/pdbParser.cpp 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Parsers/pdbParser.cpp 2012-03-03 20:03:01.410032567 +0200
-@@ -840,6 +840,7 @@
- for (atomIterator a = atomList.begin(); a != atomList.end(); a++) {
- pAtom = *a;
- pSubMolecule = pAtom->getParent();
-+ //std::cout << pSubMolecule->getColIndex() << std::endl;
- char temp[100];
-
- char tmp_element[3];
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Parsers/prepParser.cpp amber11/AmberTools/src/mtkpp/src/Parsers/prepParser.cpp
---- amber11.orig/AmberTools/src/mtkpp/src/Parsers/prepParser.cpp 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Parsers/prepParser.cpp 2012-03-03 20:03:01.411032567 +0200
-@@ -66,71 +66,106 @@
- prepParser::~prepParser() {}
-
- // =========================================================
--// Function : Read
--// ---------------------------------------------------------
--// parsers a prep file
--// ---------------------------------------------------------
--// Format :
--// =========================================================
--void prepParser::Read(const std::string &prepfile, stdGroup* pStdGroup)
--{
-- std::string errorMessage = " Reading " + prepfile + " " +
-- pStdGroup->getName() + " ... implement ";
-- errorLogger.throwError("prepParser", errorMessage, 1);
--}
--
--// =========================================================
--// Function : Read
-+// Function : openFile
- // ---------------------------------------------------------
--// parsers a prep file
-+// open a prep file
- // ---------------------------------------------------------
- // Format :
- // =========================================================
--void prepParser::Read(const std::string &prepfile, stdFrag* pStdFrag)
-+int prepParser::openFile(const std::string &prepfile)
- {
-- errorLogger.throwError("prepParser", "Read", INFO);
--
-- std::ifstream iprep;
- iprep.open(prepfile.c_str());
-
-+ //std::cout << "\n\n prepParser::openFile " << prepfile << std::endl;
- if (!iprep) {
- setError(1);
- std::string errorMessage = " Error, Can't Find " + prepfile;
- setErrorMessage(errorMessage);
- errorLogger.throwError("prepParser::Read", errorMessage, 1);
-- return;
-+ return 1;
- }
-
- std::string fileline;
-- std::string title;
-- std::string atom;
-- std::string buffer(80,'*');
-
- // SKIP FIRST TWO LINES
- getline(iprep,fileline);
- getline(iprep,fileline);
-+
-+ return 0;
-+}
-+
-+// =========================================================
-+// Function : read fragment header section
-+// ---------------------------------------------------------
-+//
-+// ---------------------------------------------------------
-+// Format :
-+// =========================================================
-+int prepParser::readHeader(std::string &name, std::string &symbol, double &charge)
-+{
-+ std::string fileline;
-+
- getline(iprep,fileline);
-- //std::string name = stripString(fileline," ");
-- //pStdFrag->setName(fileline);
-+ if (stripString(fileline, " ") == "STOP") return 1;
-+
-+ name = stripString(fileline," ");
-+
-+ // blank line
- getline(iprep,fileline);
-+
-+ // symbol
- getline(iprep,fileline);
- std::vector<std::string> splitLine;
- splitString(fileline, " ", splitLine, 0);
-- pStdFrag->setSymbol(splitLine[0]);
-+ symbol = splitLine[0];
-+
-+ //
- getline(iprep,fileline);
-+
-+ // charge
- getline(iprep,fileline);
-- //pStdFrag->setCharge(splitLine[0]);
-+ charge = string2Double(stripString(fileline, " "));
-+
-+ return 0;
-+}
-+
-+// =========================================================
-+// Function : read fragment main section
-+// ---------------------------------------------------------
-+//
-+// ---------------------------------------------------------
-+// Format :
-+// =========================================================
-+void prepParser::readFragment(stdFrag* pStdFrag)
-+{
-+ std::string fileline;
-+
-+ std::vector<stdBond*> todos;
-
- while (iprep) {
- getline(iprep,fileline);
-- if (fileline == "") break;
-+
-+ std::string filelineTest = stripString(fileline, " ");
-+ if (filelineTest == "") break;
-+
-+//std::cout << "|" << fileline << "|" << std::endl;
-
- std::vector<std::string> splitstring;
- splitString(fileline, " ", splitstring, 0);
- if (atoi(splitstring[0].c_str()) > 3) {
- stdAtom* pStdAtom = pStdFrag->addStdAtom();
- int atIndex = atoi(splitstring[0].c_str()) - 3;
-- std::string atomName = fileline.substr(6,4);
-+
-+////////
-+ //std::string atomName = fileline.substr(6,4);
-+ std::string atomName = splitstring[1];
-+ if (atomName.size() == 1) atomName = " " + atomName + " ";
-+ else if (atomName.size() == 2) atomName = " " + atomName + " ";
-+ else if (atomName.size() == 3) atomName = " " + atomName;
-+
-+//std::cout << "|" << atomName << "|" << std::endl;
-+/////////
-+
- std::string atomType = splitstring[2];
- std::string atomChain = splitstring[3];
-
-@@ -170,32 +205,54 @@
- pStdBond->atom1 = pStdAtom->index;
- pStdBond->atom2 = pStdAtom->bond12;
- pStdBond->type = 1;
-+
- if (pStdAtom->atSymbol == "H") {
- if (pStdAtom->bond12 > 0) {
- stdAtom* pStdBondedAtom = pStdFrag->getStdAtom(pStdAtom->bond12);
-+
-+ if (pStdBondedAtom) {
- std::string bondedAtomSymbol = pStdBondedAtom->atSymbol;
- if (bondedAtomSymbol == "N" or bondedAtomSymbol == "O" or bondedAtomSymbol == "S") {
- pStdBond->kind = 1;
- }
- }
-+ else {
-+ todos.push_back(pStdBond);
-+ }
-+ }
- }
- else {
- pStdBond->kind = 0;
- }
-+
- pStdBond->topology = 2;
- pStdBond->stereo = 0;
- pStdBond->length = pStdAtom->bondLength;
- }
- }
-
-+ for (unsigned int x = 0; x < todos.size(); x++) {
-+ stdAtom* pStdBondedAtom1 = pStdFrag->getStdAtom(todos[x]->atom1);
-+ stdAtom* pStdBondedAtom2 = pStdFrag->getStdAtom(todos[x]->atom2);
-+ if (pStdBondedAtom1 and pStdBondedAtom2) {
-+ std::string bondedAtomSymbol = pStdBondedAtom2->atSymbol;
-+ if (bondedAtomSymbol == "N" or bondedAtomSymbol == "O" or bondedAtomSymbol == "S") {
-+ todos[x]->kind = 1;
-+ }
-+ }
-+ }
-+
- // Read charge, alias, loop, and improper data
- while (iprep) {
- getline(iprep,fileline);
-+//std::cout << "!" << fileline << "!" << std::endl;
- if (fileline != "") {
- if (fileline.substr(0,6) == "CHARGE") {
- while (iprep) {
- getline(iprep,fileline);
-- if (fileline == "") break;
-+
-+ std::string filelineTest = stripString(fileline, " ");
-+ if (filelineTest == "") break;
- }
- }
- else if (fileline.substr(0,5) == "ALIAS") {
-@@ -252,7 +309,7 @@
- else {
- std::string errorMessage = " ALIAS Tag Error ... exiting ";
- errorLogger.throwError("prepParser::Read", errorMessage, 1);
-- //exit(0);
-+
- std::stringstream ss;
- ss << "prepParser::Read"<< errorMessage;
- throw MTKException(ss.str());
-@@ -263,11 +320,20 @@
- else if (fileline.substr(0,4) == "LOOP") {
- while (iprep) {
- getline(iprep,fileline);
-- if (fileline == "") break;
-+
-+ std::string filelineTest = stripString(fileline, " ");
-+ if (filelineTest == "") break;
-+
-+ //if (fileline == "") break;
-
- std::vector<std::string> atomNames;
- splitString(fileline, " ", atomNames, 0);
--
-+/*
-+for (unsigned int x = 0; x <atomNames.size();x++){
-+ std::cout << atomNames[x] <<std::endl;
-+}
-+pStdFrag->print();
-+*/
- std::vector< std::vector<std::string> > possibleNames;
- for (int d = 0; d < 2; d++) {
- int atNameSize = atomNames[d].size();
-@@ -315,17 +381,22 @@
- else {
- std::string errorMessage = " LOOP Tag Error ... exiting ";
- errorLogger.throwError("prepParser::Read", errorMessage, 1);
-- //exit(0);
--
- std::stringstream ss;
- ss << "prepParser::Read"<< errorMessage;
- throw MTKException(ss.str());
- }
- }
- }
-+ else if (fileline.substr(0,4) == "DONE") {
-+ break;
-+ }
- else if (fileline.substr(0,8) == "IMPROPER") {
- while (iprep) {
- getline(iprep,fileline);
-+
-+ std::string filelineTest = stripString(fileline, " ");
-+ if (filelineTest == "") break;
-+
- if (fileline == "") break;
-
- std::vector<std::string> atomNames;
-@@ -424,7 +495,6 @@
- else {
- std::string errorMessage = " IMPROPER Tag Error ... exiting ";
- errorLogger.throwError("prepParser::Read", errorMessage, 1);
-- //exit(0);
-
- std::stringstream ss;
- ss << "prepParser::Read" << errorMessage;
-@@ -642,8 +712,112 @@
- }
- // QBio end
- }
--
- errorLogger.throwError("prepParser::Read", eMessage, INFO);
-+}
-+
-+// =========================================================
-+// Function : Read
-+// ---------------------------------------------------------
-+// parsers a prep file
-+// ---------------------------------------------------------
-+// Format :
-+// =========================================================
-+void prepParser::Read(const std::string &prepfile, stdGroup* pStdGroup)
-+{
-+ int r = openFile(prepfile);
-+ if (r == 1) return;
-+
-+ while(iprep) {
-+ std::string name = "";
-+ std::string symbol = "";
-+ double charge = 0.0;
-+ int h = readHeader(name, symbol, charge);
-+ if (h == 1) break;
-+
-+ stdFrag* pStdFrag = pStdGroup->addStdFrag();
-+ if (!pStdFrag) {
-+ setError(1);
-+ std::string errorMessage = " Error creating fragment ";
-+ setErrorMessage(errorMessage);
-+ errorLogger.throwError("prepParser::Read", errorMessage, 1);
-+ return;
-+ }
-+
-+ if (symbol.size() == 1) symbol = symbol + " ";
-+ if (symbol.size() == 2) symbol = symbol + " ";
-+ if (symbol.size() > 3) symbol = symbol.substr(1,3);
-+
-+ pStdFrag->setSymbol(symbol); // 3L code
-+ //pStdFrag->setCode("P2XML"+name); // 8L code
-+ pStdFrag->setName(name); // long name
-+ pStdFrag->setType("m"); // fragment type
-+
-+ //std::cout << " prepParser::Read " << name << " charge " << charge << " symbol " << symbol << std::endl;
-+ readFragment(pStdFrag);
-+ }
-+
-+ iprep.close();
-+
-+ return;
-+}
-+
-+// =========================================================
-+// Function : Read
-+// ---------------------------------------------------------
-+// parsers a prep file
-+// ---------------------------------------------------------
-+// Format :
-+// =========================================================
-+void prepParser::Read(const std::string &prepfile, stdFrag* pStdFrag)
-+{
-+ errorLogger.throwError("prepParser", "Read", INFO);
-+/*
-+ std::ifstream iprep;
-+ iprep.open(prepfile.c_str());
-+
-+ if (!iprep) {
-+ setError(1);
-+ std::string errorMessage = " Error, Can't Find " + prepfile;
-+ setErrorMessage(errorMessage);
-+ errorLogger.throwError("prepParser::Read", errorMessage, 1);
-+ return;
-+ }
-+*/
-+
-+ int r = openFile(prepfile);
-+ if (r == 1) return;
-+
-+ std::string fileline;
-+ std::string title;
-+ std::string atom;
-+ //std::string buffer(80,'*');
-+
-+ // SKIP FIRST TWO LINES
-+ //getline(iprep,fileline);
-+ //getline(iprep,fileline);
-+
-+/*
-+ getline(iprep,fileline);
-+ //std::string name = stripString(fileline," ");
-+ //pStdFrag->setName(fileline);
-+ getline(iprep,fileline);
-+ getline(iprep,fileline);
-+ std::vector<std::string> splitLine;
-+ splitString(fileline, " ", splitLine, 0);
-+ pStdFrag->setSymbol(splitLine[0]);
-+ getline(iprep,fileline);
-+ getline(iprep,fileline);
-+ //pStdFrag->setCharge(splitLine[0]);
-+*/
-+
-+ std::string name = "";
-+ std::string symbol = "";
-+ double charge = 0.0;
-+ readHeader(name, symbol, charge);
-+
-+ pStdFrag->setSymbol(symbol);
-+
-+ readFragment(pStdFrag);
-
- iprep.close();
- }
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Parsers/prepParser.h amber11/AmberTools/src/mtkpp/src/Parsers/prepParser.h
---- amber11.orig/AmberTools/src/mtkpp/src/Parsers/prepParser.h 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Parsers/prepParser.h 2012-03-03 20:03:01.411032567 +0200
-@@ -89,6 +89,25 @@
- ~prepParser();
-
- /*!
-+ \brief open prep file
-+ \param i input file
-+ */
-+ int openFile(const std::string &i);
-+
-+ /*!
-+ \brief read fragment header section
-+ \param name fragment name
-+ \param symbol fragment symbol
-+ \param charge fragment charge
-+ */
-+ int readHeader(std::string &name, std::string &symbol, double &charge);
-+
-+ /*!
-+ \brief read fragment main section
-+ */
-+ void readFragment(stdFrag* pStdFrag);
-+
-+ /*!
- \brief Read prep file
- \param i input file
- \param g stdGroup pointer
-@@ -127,6 +146,9 @@
-
- //! atom pointer
- atom* pAtom;
-+
-+ //! file handler
-+ std::ifstream iprep;
- };
-
- } // MTKpp namespace
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Parsers/stdLibParser.cpp amber11/AmberTools/src/mtkpp/src/Parsers/stdLibParser.cpp
---- amber11.orig/AmberTools/src/mtkpp/src/Parsers/stdLibParser.cpp 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Parsers/stdLibParser.cpp 2012-03-03 20:03:01.412032567 +0200
-@@ -3280,7 +3280,7 @@
- // ------------------------------------------------------------
- // Write xml files using tinyxml
- // ------------------------------------------------------------
--void stdLibParser::Write(std::string fileName)
-+void stdLibParser::Write(std::string fileName) // TinyXML
- {
- std::string errMessage = " Writing " + fileName;
- errorLogger.throwError("stdLibParser", errMessage, INFO);
-@@ -3512,6 +3512,7 @@
- TiXmlElement* impElem = new TiXmlElement("improper");
- frag->LinkEndChild(impElem);
-
-+ /*
- if (improperList[k]->atom1 == -1) {
- impElem->SetAttribute("Atom1", "p1");
- }
-@@ -3520,7 +3521,8 @@
- }
- else {
- impElem->SetAttribute("Atom1", int2String(improperList[k]->atom1));
-- }
-+ }*/
-+ impElem->SetAttribute("Atom1", int2String(improperList[k]->atom1));
- impElem->SetAttribute("Atom2", int2String(improperList[k]->atom2));
- impElem->SetAttribute("Atom3", int2String(improperList[k]->atom3));
- impElem->SetAttribute("Atom4", int2String(improperList[k]->atom4));
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Statistics/Makefile.am amber11/AmberTools/src/mtkpp/src/Statistics/Makefile.am
---- amber11.orig/AmberTools/src/mtkpp/src/Statistics/Makefile.am 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Statistics/Makefile.am 2012-03-03 20:03:01.413032567 +0200
-@@ -1,4 +1,4 @@
--DIAGNOSTICS_LD=-L$(top_builddir)/src/Diagnostics/$(SRCDIR)
-+DIAGNOSTICS_LD=-L$(abs_top_builddir)/src/Diagnostics/$(SRCDIR)
- DIAGNOSTICS_LIB=-lDiagnostics
-
- INCLUDES = -I@boost_inc@ -I$(srcdir)/.. -I$(top_srcdir)/src/eigen3b2
-diff -urN amber11.orig/AmberTools/src/mtkpp/src/Statistics/Makefile.in amber11/AmberTools/src/mtkpp/src/Statistics/Makefile.in
---- amber11.orig/AmberTools/src/mtkpp/src/Statistics/Makefile.in 2011-04-14 15:30:18.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/src/Statistics/Makefile.in 2012-03-03 20:03:01.413032567 +0200
-@@ -241,7 +241,7 @@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- xerces_path = @xerces_path@
--DIAGNOSTICS_LD = -L$(top_builddir)/src/Diagnostics/$(SRCDIR)
-+DIAGNOSTICS_LD = -L$(abs_top_builddir)/src/Diagnostics/$(SRCDIR)
- DIAGNOSTICS_LIB = -lDiagnostics
- INCLUDES = -I@boost_inc@ -I$(srcdir)/.. -I$(top_srcdir)/src/eigen3b2
- lib_LTLIBRARIES = libStatistics.la
-diff -urN amber11.orig/AmberTools/src/mtkpp/tests/Makefile.am amber11/AmberTools/src/mtkpp/tests/Makefile.am
---- amber11.orig/AmberTools/src/mtkpp/tests/Makefile.am 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/tests/Makefile.am 2012-03-03 20:03:01.414032567 +0200
-@@ -42,25 +42,25 @@
- LAPACK_LIB=-llapack -lblas -lg2c
- endif
-
--MOLECULE_LD=-L$(top_builddir)/src/Molecule
-+MOLECULE_LD=-L$(abs_top_builddir)/src/Molecule
- MOLECULE_LIB=-lMolecule
--DIAGNOSTICS_LD=-L$(top_builddir)/src/Diagnostics
-+DIAGNOSTICS_LD=-L$(abs_top_builddir)/src/Diagnostics
- DIAGNOSTICS_LIB=-lDiagnostics
--LOG_LD=-L$(top_builddir)/src/Log
-+LOG_LD=-L$(abs_top_builddir)/src/Log
- LOG_LIB=-lLog
--GRAPH_LD=-L$(top_builddir)/src/Graph
-+GRAPH_LD=-L$(abs_top_builddir)/src/Graph
- GRAPH_LIB=-lGraph
--GA_LD=-L$(top_builddir)/src/GA
-+GA_LD=-L$(abs_top_builddir)/src/GA
- GA_LIB=-lGA
--MM_LD=-L$(top_builddir)/src/MM
-+MM_LD=-L$(abs_top_builddir)/src/MM
- MM_LIB=-lMM
--MINIMIZERS_LD=-L$(top_builddir)/src/Minimizers
-+MINIMIZERS_LD=-L$(abs_top_builddir)/src/Minimizers
- MINIMIZERS_LIB=-lMinimizers
--PARSERS_LD=-L$(top_builddir)/src/Parsers
-+PARSERS_LD=-L$(abs_top_builddir)/src/Parsers
- PARSERS_LIB=-lParsers
--STATS_LD=-L$(top_builddir)/src/Statistics
-+STATS_LD=-L$(abs_top_builddir)/src/Statistics
- STATS_LIB=-lStatistics
--TINYXML_LD=-L$(top_builddir)/src/tinyxml
-+TINYXML_LD=-L$(abs_top_builddir)/src/tinyxml
- TINYXML_LIB=-ltinyxml
-
- # INCLUDES = -I@boost_inc@ -I@xerces_path@/include -I$(top_srcdir)/src -I$(top_srcdir)/include -I$(top_srcdir)/src/tinyxml -I$(top_srcdir)/src/Parsers -I$(top_srcdir)/src/Molecule -I$(top_srcdir)/src/Statistics -I$(top_srcdir)/src/Utils $(tmpQT_INCPATH)
-diff -urN amber11.orig/AmberTools/src/mtkpp/tests/Makefile.in amber11/AmberTools/src/mtkpp/tests/Makefile.in
---- amber11.orig/AmberTools/src/mtkpp/tests/Makefile.in 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/tests/Makefile.in 2012-03-03 20:03:01.414032567 +0200
-@@ -303,25 +303,25 @@
- @USE_QT_TRUE@tmpQT_LIBS = $(QT_LIBS)
- @IS_LINUX_TRUE@LAPACK_LD = -L/usr/lib64
- @IS_LINUX_TRUE@LAPACK_LIB = -llapack -lblas -lg2c
--MOLECULE_LD = -L$(top_builddir)/src/Molecule
-+MOLECULE_LD = -L$(abs_top_builddir)/src/Molecule
- MOLECULE_LIB = -lMolecule
--DIAGNOSTICS_LD = -L$(top_builddir)/src/Diagnostics
-+DIAGNOSTICS_LD = -L$(abs_top_builddir)/src/Diagnostics
- DIAGNOSTICS_LIB = -lDiagnostics
--LOG_LD = -L$(top_builddir)/src/Log
-+LOG_LD = -L$(abs_top_builddir)/src/Log
- LOG_LIB = -lLog
--GRAPH_LD = -L$(top_builddir)/src/Graph
-+GRAPH_LD = -L$(abs_top_builddir)/src/Graph
- GRAPH_LIB = -lGraph
--GA_LD = -L$(top_builddir)/src/GA
-+GA_LD = -L$(abs_top_builddir)/src/GA
- GA_LIB = -lGA
--MM_LD = -L$(top_builddir)/src/MM
-+MM_LD = -L$(abs_top_builddir)/src/MM
- MM_LIB = -lMM
--MINIMIZERS_LD = -L$(top_builddir)/src/Minimizers
-+MINIMIZERS_LD = -L$(abs_top_builddir)/src/Minimizers
- MINIMIZERS_LIB = -lMinimizers
--PARSERS_LD = -L$(top_builddir)/src/Parsers
-+PARSERS_LD = -L$(abs_top_builddir)/src/Parsers
- PARSERS_LIB = -lParsers
--STATS_LD = -L$(top_builddir)/src/Statistics
-+STATS_LD = -L$(abs_top_builddir)/src/Statistics
- STATS_LIB = -lStatistics
--TINYXML_LD = -L$(top_builddir)/src/tinyxml
-+TINYXML_LD = -L$(abs_top_builddir)/src/tinyxml
- TINYXML_LIB = -ltinyxml
-
- # INCLUDES = -I@boost_inc@ -I@xerces_path@/include -I$(top_srcdir)/src -I$(top_srcdir)/include -I$(top_srcdir)/src/tinyxml -I$(top_srcdir)/src/Parsers -I$(top_srcdir)/src/Molecule -I$(top_srcdir)/src/Statistics -I$(top_srcdir)/src/Utils $(tmpQT_INCPATH)
-diff -urN amber11.orig/AmberTools/src/mtkpp/tools/Makefile.am amber11/AmberTools/src/mtkpp/tools/Makefile.am
---- amber11.orig/AmberTools/src/mtkpp/tools/Makefile.am 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/tools/Makefile.am 2012-03-03 20:03:01.417032565 +0200
-@@ -25,7 +25,7 @@
- tmpQT_LIBS = $(QT_LIBS)
- endif
-
--DIAGNOSTICS_LD = -L$(top_builddir)/src/Diagnostics
-+DIAGNOSTICS_LD = -L$(abs_top_builddir)/src/Diagnostics
- DIAGNOSTICS_LIB = -lDiagnostics
- MOLECULE_LD = -L$(top_builddir)/src/Molecule
- MOLECULE_LIB = -lMolecule
-diff -urN amber11.orig/AmberTools/src/mtkpp/tools/Makefile.in amber11/AmberTools/src/mtkpp/tools/Makefile.in
---- amber11.orig/AmberTools/src/mtkpp/tools/Makefile.in 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/tools/Makefile.in 2012-03-03 20:03:01.417032565 +0200
-@@ -392,7 +392,7 @@
- @USE_XERCES_TRUE@XERCES_LIB = -lxerces-c
- @USE_QT_TRUE@tmpQT_INCPATH = $(QT_INCPATH)
- @USE_QT_TRUE@tmpQT_LIBS = $(QT_LIBS)
--DIAGNOSTICS_LD = -L$(top_builddir)/src/Diagnostics
-+DIAGNOSTICS_LD = -L$(abs_top_builddir)/src/Diagnostics
- DIAGNOSTICS_LIB = -lDiagnostics
- MOLECULE_LD = -L$(top_builddir)/src/Molecule
- MOLECULE_LIB = -lMolecule
-diff -urN amber11.orig/AmberTools/src/mtkpp/tools/MCPB.cpp amber11/AmberTools/src/mtkpp/tools/MCPB.cpp
---- amber11.orig/AmberTools/src/mtkpp/tools/MCPB.cpp 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/tools/MCPB.cpp 2012-03-03 20:03:01.416032566 +0200
-@@ -67,6 +67,7 @@
- #include "Parsers/mtkppParser.h"
- #include "Parsers/dMParser.h"
- #include "Parsers/commLineOptions.h"
-+#include "Parsers/StringManip.h"
-
- // - Log
- #include "Log/errorHandler.h"
-@@ -84,6 +85,12 @@
-
- using namespace MTKpp;
-
-+std::string getEnvVar(std::string const& key)
-+{
-+ char const* val = getenv(key.c_str());
-+ return val == NULL ? std::string() : std::string(val);
-+}
-+
- void printFunctionList()
- {
- std::string functionList = "\n MCPB Functions:\n";
-@@ -181,32 +188,32 @@
- functionList += " Find all metal centers in the collection\n";
- functionList += " syntax: findMetalCenters\n";
- functionList += "\n";
-- functionList += " g03Charges\n";
-+ functionList += " gaussianCharges\n";
- functionList += " Generate a Gaussian input file for partial-charge computation\n";
- functionList += " Optional: set the Gaussian job file name\n";
-- functionList += " syntax: g03Charges //cuCYM4 cuCYM4.com\n";
-+ functionList += " syntax: gaussianCharges //cuCYM4 cuCYM4.com\n";
- functionList += "\n";
-- functionList += " g03Mem\n";
-- functionList += " Set amount of memory requested for g03\n";
-- functionList += " syntax: g03Mem 3600MB\n";
-+ functionList += " gaussianMem\n";
-+ functionList += " Set amount of memory requested for Gaussian\n";
-+ functionList += " syntax: gaussianMem 3600MB\n";
- functionList += "\n";
-- functionList += " g03MoldenFormat\n";
-+ functionList += " gaussianMoldenFormat\n";
- functionList += " Request Gaussian log files formatted for viewing in Molden\n";
-- functionList += " (adds the GFINPUT and IOP(6/7=3) keywords)\n";
-- functionList += " syntax: g03MoldenFormat\n";
-+ functionList += " (adds the GFInput and IOp(6/7=3) keywords)\n";
-+ functionList += " syntax: gaussianMoldenFormat\n";
- functionList += "\n";
-- functionList += " g03nProc\n";
-- functionList += " Set number of processors requested for g03\n";
-- functionList += " syntax: g03nProc 2\n";
-+ functionList += " gaussianNProc\n";
-+ functionList += " Set number of processors requested for Gaussian\n";
-+ functionList += " syntax: gaussianNProc 2\n";
- functionList += "\n";
-- functionList += " g03OptAndFC\n";
-+ functionList += " gaussianOptAndFC\n";
- functionList += " Generate Gaussian input files for optimisation and force constants\n";
- functionList += " Optional: set the Gaussian job file name\n";
-- functionList += " syntax: g03OptAndFC //cuCYM4 cuCYM4.com\n";
-+ functionList += " syntax: gaussianOptAndFC //cuCYM4 cuCYM4.com\n";
- functionList += "\n";
-- functionList += " g03Verbosity\n";
-+ functionList += " gaussianVerbosity\n";
- functionList += " Set the verbosity of Gaussian output ([T]erse, [N]ormal, [P]rolix)\n";
-- functionList += " syntax: g03Verbosity [T|N|P]\n";
-+ functionList += " syntax: gaussianVerbosity [T|N|P]\n";
- functionList += "\n";
- functionList += " levelOfTheory\n";
- functionList += " Set Gaussian Theory Level\n";
-@@ -256,9 +263,9 @@
- functionList += " Read Formatted Checkpoint file\n";
- functionList += " syntax: readFormattedChkPtFile file.fchk\n";
- functionList += "\n";
-- functionList += " readG03Output\n";
-- functionList += " Read G03 Output\n";
-- functionList += " syntax: readG03Output cuCYM4.log\n";
-+ functionList += " readGaussianOutput\n";
-+ functionList += " Read Gaussian Output\n";
-+ functionList += " syntax: readGaussianOutput cuCYM4.log\n";
- functionList += "\n";
- functionList += " readMolZmatMapping\n";
- functionList += " Read Molecule <--> Z-Matrix mapping file\n";
-@@ -470,7 +477,7 @@
- else {
- printHeader(std::cout, prog_name, authors);
- clo->printUsage();
-- std::cout << " Please provide a MCPB file " << std::endl;
-+ std::cout << " Please provide an MCPB file " << std::endl;
- return 0;
- }
-
-@@ -515,7 +522,9 @@
- std::string errorMessage = "";
-
- std::vector<std::vector<std::string> > inputFileContents;
-+
- int failure = readInputFile(inputFile, inputFileContents);
-+
- if (failure) {
- printHeader(std::cout, prog_name, authors);
- clo->printUsage();
-@@ -660,7 +669,7 @@
- std::vector<std::vector<std::string> > sourceInputFileContents;
- failure = readInputFile(cur[1], sourceInputFileContents);
- if (failure) {
-- errorMessage = " Error Reading File " + cur[1];
-+ errorMessage = " Error reading file " + cur[1];
- MTKpp::errorLogger.throwError("MCPB::source", errorMessage, 1);
- exit(1);
- }
-@@ -668,7 +677,7 @@
- sourceInputFileContents.end());
- }
- else {
-- errorMessage = " Error Reading File " + cur[1];
-+ errorMessage = " Error reading file " + cur[1];
- MTKpp::errorLogger.throwError("MCPB::source", errorMessage, 1);
- exit(1);
- }
-@@ -742,6 +751,20 @@
- \endcode
- */
- if ((inputFileContents[i].size() == 3)) {
-+ //std::cout << "SET COMMAND " << inputFileContents[i][2] << std::endl;
-+ if (inputFileContents[i][2].compare(0,1,"$") == 0) {
-+ std::string envVariable = "";
-+ std::string tVar = inputFileContents[i][2];
-+ envVariable = getEnvVar(tVar.substr(1,tVar.size()-1));
-+ if (envVariable == "") {
-+ std::cout << " Environment variable " << tVar.substr(1,tVar.size()-1)
-+ << " is unset " << std::endl;
-+ exit(1);
-+ }
-+ //std::cout << "Environment variable = " << envVariable << std::endl;
-+ inputFileContents[i][2] = envVariable;
-+ }
-+
- variableMap[inputFileContents[i][1]] = inputFileContents[i][2];
- for (unsigned int j = i+1; j < inputFileContents.size(); j++) {
- bool bReplaced = false;
-@@ -813,6 +836,115 @@
- }
- }
-
-+ else if (inputFileContents[i][0] == "printGroupCharge") {
-+ /*!
-+ @ingroup MCPB_commands
-+ \code
-+ Function: printFrag
-+
-+ Description: Print fragment details
-+
-+ syntax: printGroupCharge Zn-CCCC
-+
-+ \endcode
-+ */
-+ if ((inputFileContents[i].size() != 2) or (!pCollection)) {
-+ MTKpp::errorLogger.throwError("MCPB::printGroupCharge", " Incorrect use of printGroupCharge ... exiting", MTK_ERROR);
-+ exit(1);
-+ }
-+ else {
-+ stdLibrary* pStdLibrary = pCollection->getStdLibrary();
-+ if (pStdLibrary) {
-+ stdGroup* pStdGroup = pStdLibrary->getStdGroup(inputFileContents[i][1]);
-+ std::cout << " Group " << pStdGroup->getName() << "\n";
-+ if (pStdGroup) {
-+ molecule* pM = pStdGroup->getStdMolecule();
-+ if (pM) {
-+ double groupCharge = 0.0;
-+ std::vector<submolecule*> pSM = pM->getSubMoleculeList();
-+ //std::cout << " Number of submolecules = " << pSM.size() << "\n";
-+ for (unsigned int x = 0; x < pSM.size(); x++) {
-+ stdFrag* pSF = pStdGroup->getStdFrag(pSM[x]->getName());
-+ if (pSF) {
-+ std::cout << " " << pSF->getSymbol() << "\n";
-+ double fCharge = 0.0;
-+ std::vector<atom*> pA = pSM[x]->getAtomList();
-+ for (unsigned int y = 0; y < pA.size(); y++) {
-+ stdAtom* pSA = pA[y]->getStdAtom();
-+ if (pSA) {
-+ fCharge += pSA->atmCharge;
-+ std::cout << " |" << pSA->identity << "| " << pSA->atmCharge << "\n";
-+ }
-+ else {
-+ std::cout << " Error find std atom " << std::endl;
-+ exit(1);
-+ }
-+ }
-+ groupCharge += fCharge;
-+ std::cout << " Total Fragment Charge " << pSF->getCharge() << "\n";
-+ }
-+ }
-+ /*std::vector<stdFrag*> pL = pStdGroup->getStdFragList();
-+ for (unsigned int x = 0; x < pL.size(); x++) {
-+ std::cout << " Fragment " << pL[x]->getSymbol() << "\n";
-+ std::vector<stdAtom*> pL2 = pL[x]->getStdAtomList();
-+ double fCharge = 0.0;
-+ for (unsigned int y = 0; y < pL2.size(); y++) {
-+ fCharge += pL2[y]->atmCharge;
-+ std::cout << " Atom " << pL2[y]->identity << " " << pL2[y]->atmCharge << "\n";
-+ }
-+ groupCharge += fCharge;
-+ //groupCharge += pL[x]->getCharge();
-+ std::cout << " Fragment Charge " << pL[x]->getCharge() << "\n";
-+ }
-+ */
-+
-+ std::cout << " Total Charge = " << groupCharge << "\n" << std::endl;
-+ }
-+ }
-+ }
-+ }
-+ }
-+
-+ else if (inputFileContents[i][0] == "printFrag") {
-+ /*!
-+ @ingroup MCPB_commands
-+ \code
-+ Function: printFrag
-+
-+ Description: Print fragment details
-+
-+ syntax: printFrag Zn-CCCC CY1
-+
-+ \endcode
-+ */
-+ if ((inputFileContents[i].size() != 3) or (!pCollection)) {
-+ MTKpp::errorLogger.throwError("MCPB::printFrag", " Incorrect use of printFrag ... exiting", MTK_ERROR);
-+ exit(1);
-+ }
-+ else {
-+ stdLibrary* pStdLibrary = pCollection->getStdLibrary();
-+ if (pStdLibrary) {
-+ stdGroup* pStdGroup = pStdLibrary->getStdGroup(inputFileContents[i][1]);
-+
-+ double groupCharge = 0.0;
-+ std::vector<stdFrag*> pL = pStdGroup->getStdFragList();
-+ for (unsigned int x = 0; x < pL.size(); x++) {
-+ groupCharge += pL[x]->getCharge();
-+
-+ }
-+ std::cout << " Group " << inputFileContents[i][1] << " charge = "
-+ << groupCharge << std::endl;
-+
-+ stdFrag* pStdFrag = pStdGroup->getStdFrag(inputFileContents[i][2]);
-+ if (pStdFrag) {
-+ std::cout << " Fragment " << inputFileContents[i][2] << " charge = "
-+ << pStdFrag->getCharge() << std::endl;
-+ }
-+ }
-+ }
-+ }
-+
- else if (inputFileContents[i][0] == "readPdb") {
- /*!
- @ingroup MCPB_commands
-@@ -2227,7 +2359,8 @@
- double resCharge = 0.0;
- for (unsigned int y = 0; y < residueAtoms.size(); y++) {
- stdAtom* pLStdAtom = residueAtoms[y]->getStdAtom();
-- std::cout << " " << residueAtoms[y]->getName() << " " << residueAtoms[y]->getFileID()
-+ std::cout << " "
-+ << residueAtoms[y]->getName() << " " << residueAtoms[y]->getFileID()
- << " " << residueAtoms[y]->getType() << " " << residueAtoms[y]->getValence()
- << " " << residueAtoms[y]->getHybridization() << " ";
- if (pLStdAtom) {
-@@ -2437,6 +2570,11 @@
- molecule* selMol = pSel->getMol();
- pPdbParser->Write(inputFileContents[i][2], selMol);
- }
-+ else {
-+ MTKpp::errorLogger.throwError("MCPB::writePdb",
-+ " Error molecule was not selected ... exiting ", MTK_ERROR);
-+ exit(1);
-+ }
- }
- }
-
-@@ -2674,7 +2812,6 @@
-
- syntax: basisSet GEN bs.txt
- syntax: basisSet GEN.6D.7F bs.txt
-- syntax: basisSet GENECP bs.txt pseudo.txt
- \endcode
- */
- if (inputFileContents[i].size() == 2) {
-@@ -2685,6 +2822,11 @@
- pGParser->setBasisSet(inputFileContents[i][1]);
- pGParser->setBasisSetFile(inputFileContents[i][2]);
- }
-+ else {
-+ MTKpp::errorLogger.throwError("MCPB::basisSet",
-+ " Incorrect use ... exiting ", MTK_ERROR);
-+ exit(1);
-+ }
- }
-
- else if (inputFileContents[i][0] == "pseudoPotentials") {
-@@ -2698,8 +2840,15 @@
- syntax: pseudoPotential pseudo.txt
- \endcode
- */
-- pGParser->addCommandOption("pseudo","read");
-+ if (inputFileContents[i].size() == 2) {
-+ pGParser->addCommandOption("Pseudo","Read");
- pGParser->setPseudoPotentialFile(inputFileContents[i][1]);
-+ } else {
-+ MTKpp::errorLogger.throwError("MCPB::pseudoPotentials",
-+ " Incorrect use ... exiting ", MTK_ERROR);
-+ exit(1);
-+ }
-+
- }
-
- else if (inputFileContents[i][0] == "modRedundant") {
-@@ -2713,8 +2862,14 @@
- syntax: modRedundant modred.txt
- \endcode
- */
-- pGParser->addCommandOption("opt","modredundant");
-+ if (inputFileContents[i].size() == 2) {
-+ pGParser->addCommandOption("Opt","ModRedundant");
- pGParser->setModRedundantFile(inputFileContents[i][1]);
-+ } else {
-+ MTKpp::errorLogger.throwError("MCPB::modRedundant",
-+ " Incorrect use ... exiting ", MTK_ERROR);
-+ exit(1);
-+ }
- }
-
- else if (inputFileContents[i][0] == "clusterCharge") {
-@@ -2728,7 +2883,13 @@
- syntax: clusterCharge cuCYM4 -3
- \endcode
- */
-+ if (inputFileContents[i].size() == 3) {
- pGParser->setCharge(atoi(inputFileContents[i][2].c_str()));
-+ } else {
-+ MTKpp::errorLogger.throwError("MCPB::clusterCharge",
-+ " Incorrect use ... exiting ", MTK_ERROR);
-+ exit(1);
-+ }
- }
-
- else if (inputFileContents[i][0] == "clusterSpin") {
-@@ -2742,76 +2903,94 @@
- syntax: clusterSpin 0
- \endcode
- */
-+ if (inputFileContents[i].size() == 2) {
- pGParser->setMultiplicity(atoi(inputFileContents[i][1].c_str()));
-+ } else {
-+ MTKpp::errorLogger.throwError("MCPB::clusterSpin",
-+ " Incorrect use ... exiting ", MTK_ERROR);
-+ exit(1);
-+ }
- }
-
-- else if (inputFileContents[i][0] == "g03MoldenFormat") {
-+ else if (inputFileContents[i][0] == "gaussianMoldenFormat") {
- /*!
- @ingroup MCPB_commands
- \code
-- Function: g03MoldenFormat
-+ Function: gaussianMoldenFormat
-
- Description: Use Molden formatted output in log file. Print out
- details of the basis set and the molecular orbitals.
-
-- syntax: g03MoldenFormat (bare word)
-+ syntax: gaussianMoldenFormat (bare word)
- \endcode
- */
-- pGParser->addCommandOption("gfinput");
-- pGParser->addIop("iop(6/7=3)");
-+ pGParser->addCommandOption("GFInput");
-+ pGParser->addIop("IOp(6/7=3)");
- }
-
-- else if (inputFileContents[i][0] == "g03Verbosity") {
-+ else if (inputFileContents[i][0] == "gaussianVerbosity") {
- if (inputFileContents[i].size() == 2) {
- pGParser->setVerbosity(inputFileContents[i][1]);
-+ } else {
-+ MTKpp::errorLogger.throwError("MCPB::gaussianVerbosity",
-+ " Incorrect use ... exiting ", MTK_ERROR);
-+ exit(1);
- }
- }
-
-- else if (inputFileContents[i][0] == "g03Mem") {
-+ else if (inputFileContents[i][0] == "gaussianMem") {
- /*!
- @ingroup MCPB_commands
- \code
-- Function: g03Mem
-+ Function: gaussianMem
-
-- Description: Set amount of memory requested for g03
-+ Description: Set amount of memory requested for Gaussian
-
-- syntax: g03Mem 3600MB
-+ syntax: gaussianMem 3600MB
- \endcode
- */
- if (inputFileContents[i].size() == 2) {
- pGParser->setMem(inputFileContents[i][1]);
-+ } else {
-+ MTKpp::errorLogger.throwError("MCPB::gaussianMem",
-+ " Incorrect use ... exiting ", MTK_ERROR);
-+ exit(1);
- }
- }
-
-- else if (inputFileContents[i][0] == "g03nProc") {
-+ else if (inputFileContents[i][0] == "gaussianNProc") {
- /*!
- @ingroup MCPB_commands
- \code
-- Function: g03nProc
-+ Function: gaussianNProc
-
-- Description: Set number of processors requested for g03
-+ Description: Set number of processors requested for Gaussian
-
-- syntax: g03nProc 2
-+ syntax: gaussianNProc 2
- \endcode
- */
- if (inputFileContents[i].size() == 2) {
-- pGParser->setnProc(inputFileContents[i][1]);
-+ pGParser->setNProc(inputFileContents[i][1]);
-+ } else {
-+ MTKpp::errorLogger.throwError("MCPB::gaussianNProc",
-+ " Incorrect use ... exiting ", MTK_ERROR);
-+ exit(1);
- }
- }
-
-- else if (inputFileContents[i][0] == "g03OptAndFC") {
-+ else if (inputFileContents[i][0] == "gaussianOptAndFC") {
- /*!
- @ingroup MCPB_commands
- \code
-- Function: g03OptAndFC
-+ Function: gaussianOptAndFC
-
- Description: Set Gaussian input name
-
-- syntax: g03OptAndFC //cuCYM4 cuCYM4.com
-+ syntax: gaussianOptAndFC //cuCYM4 cuCYM4.com
- \endcode
- */
- if ((inputFileContents[i].size() != 3) or (!pCollection)) {
-- MTKpp::errorLogger.throwError("MCPB::g03OptAndFC",
-+ MTKpp::errorLogger.throwError("MCPB::gaussianOptAndFC",
- " Incorrect use ... exiting ", MTK_ERROR);
- exit(1);
- }
-@@ -2819,7 +2998,7 @@
- selection* pSel = new selection(pCollection);
- failure = pSel->parse(inputFileContents[i][1]);
- if (failure) {
-- MTKpp::errorLogger.throwError("MCPB::g03OptAndFC",
-+ MTKpp::errorLogger.throwError("MCPB::gaussianOptAndFC",
- " Error in selection parsing ... exiting ", MTK_ERROR);
- exit(1);
- }
-@@ -2833,17 +3012,17 @@
- pGParser->setCartesian(1);
- pGParser->setWriteMoleculeName(1);
- pGParser->setWriteChargeAndMult(1);
-- pGParser->addCommandOption("integral(Grid=UltraFine)");
-+ pGParser->addCommandOption("Integral", "(Grid=UltraFine)");
-
-- std::vector<std::string> optOptions = pGParser->getCommandOption("opt");
-+ std::vector<std::string> optOptions = pGParser->getCommandOption("Opt");
- if (optOptions.size() == 0) {
-- pGParser->addCommandOption("opt");
-+ pGParser->addCommandOption("Opt");
- }
-
-- pGParser->addCommandOption("scf", "xqc");
-- pGParser->addCommandOption("geom", "PrintInputOrient");
-+ pGParser->addCommandOption("SCF", "XQC");
-+ pGParser->addCommandOption("Geom", "PrintInputOrient");
- pGParser->Write(fileNameBase+"_opt.com", pSelMol);
-- pGParser->removeCommandOption("opt");
-+ pGParser->removeCommandOption("Opt");
-
- // k's
- // Do not write coordinates, name, charge or multiplicity,
-@@ -2851,40 +3030,40 @@
- pGParser->setNoCoords();
- pGParser->setWriteMoleculeName(0);
- pGParser->setWriteChargeAndMult(0);
-- pGParser->addCommandOption("freq", "noraman");
-- pGParser->addCommandOption("geom", "allcheckpoint");
-- pGParser->addCommandOption("guess", "read");
-- pGParser->addIop("iop(7/33=1)");
-+ pGParser->addCommandOption("Freq", "NoRaman");
-+ pGParser->addCommandOption("Geom", "AllCheckpoint");
-+ pGParser->addCommandOption("Guess", "Read");
-+ pGParser->addIop("IOp(7/33=1)");
- pGParser->Write(fileNameBase+"_fc.com", pSelMol);
- pGParser->clearIop();
-
- /*
- // optimization
-- pGParser->addCommandOption("opt", "z-matrix");
-+ pGParser->addCommandOption("Opt", "Z-Matrix");
- pGParser->generateZMatrix(pSelMol);
- // [molecule index] = zmatrix index;
- pGParser->writeMappingFile(fileNameBase+"_zmat.map");
-- pGParser->addCommandOption("geom", "PrintInputOrient");
-+ pGParser->addCommandOption("Geom", "PrintInputOrient");
- pGParser->Write(fileNameBase+"_opt.com", pSelMol);
-- pGParser->removeCommandOption("opt");
-+ pGParser->removeCommandOption("Opt");
- */
- }
- }
- }
-
-- else if (inputFileContents[i][0] == "g03Charges") {
-+ else if (inputFileContents[i][0] == "gaussianCharges") {
- /*!
- @ingroup MCPB_commands
- \code
-- Function: g03Charges
-+ Function: gaussianCharges
-
- Description: Set Gaussian input name
-
-- syntax: g03Charges //cuCYM4 cuCYM4.com
-+ syntax: gaussianCharges //cuCYM4 cuCYM4.com
- \endcode
- */
- if ((inputFileContents[i].size() != 3) or (!pCollection)) {
-- MTKpp::errorLogger.throwError("MCPB::g03Charges",
-+ MTKpp::errorLogger.throwError("MCPB::gaussianCharges",
- " Incorrect use ... exiting ", MTK_ERROR);
- exit(1);
- }
-@@ -2892,7 +3071,7 @@
- selection* pSel = new selection(pCollection);
- failure = pSel->parse(inputFileContents[i][1]);
- if (failure) {
-- MTKpp::errorLogger.throwError("MCPB::g03Charges",
-+ MTKpp::errorLogger.throwError("MCPB::gaussianCharges",
- " Error in selection parsing ... exiting ", MTK_ERROR);
- exit(1);
- }
-@@ -2907,14 +3086,14 @@
-
- // q's
- std::vector<std::string> popOptions;
-- popOptions.push_back("mk");
-- popOptions.push_back("readradii");
-- pGParser->addCommandOption("pop", popOptions);
-- pGParser->removeCommandOption("freq");
-- pGParser->addIop("iop(6/33=2)");
-+ popOptions.push_back("MK");
-+ popOptions.push_back("ReadRadii");
-+ pGParser->addCommandOption("Pop", popOptions);
-+ pGParser->removeCommandOption("Freq");
-+ pGParser->addIop("IOp(6/33=2)");
-
-- pGParser->addCommandOption("integral(Grid=UltraFine)");
-- pGParser->addCommandOption("scf", "xqc");
-+ pGParser->addCommandOption("Integral", "(Grid=UltraFine)");
-+ pGParser->addCommandOption("SCF", "XQC");
-
- pGParser->Write(fileNameBase+"_mk.com", pSelMol);
-
-@@ -3053,7 +3232,8 @@
- result = find(bbb.begin(), bbb.end(), dd);
-
- if (result != bbb.end()) {
-- freezingAtoms += "\n BBB " + submols[s]->getName() + " " + int2String(submols[s]->getSubMolId()) + " " + dd;
-+ freezingAtoms += "\n BBB " + submols[s]->getName() + " "
-+ + int2String(submols[s]->getSubMolId()) + " " + dd;
- sprintf(temp,"%5d%10.5f", 1, pStdAtom_a->atmCharge);
- orespAdd << temp << std::endl;
- sprintf(temp,"%5d%5d", 1, subAtoms[a]->getIndex());
-@@ -3071,7 +3251,6 @@
- MTKpp::errorLogger.throwError("MCPB::respgenAdditions",
- freezingAtoms, INFO);
- }
--
- orespAdd << "\n" << std::endl;
- orespAdd.close();
- }
-@@ -3099,22 +3278,22 @@
- }
- }
-
-- else if (inputFileContents[i][0] == "readG03Output") {
-+ else if (inputFileContents[i][0] == "readGaussianOutput") {
- /*!
- @ingroup MCPB_commands
- \code
-- Function: readG03Output
-+ Function: readGaussianOutput
-
-- Description: Read G03 Output
-+ Description: Read Gaussian Output
-
-- syntax: readG03Output cuCYM4.log
-+ syntax: readGaussianOutput cuCYM4.log
- \endcode
- */
- if ((inputFileContents[i].size() == 2) or (pGParser)) {
- pGParser->Read(inputFileContents[i][1], pSheet);
- }
- else {
-- MTKpp::errorLogger.throwError("MCPB::readG03Output",
-+ MTKpp::errorLogger.throwError("MCPB::readGaussianOutput",
- " Incorrect use ... exiting ", MTK_ERROR);
- exit(1);
- }
-@@ -3481,8 +3660,8 @@
- pGParser->setCartesian(0);
- pGParser->setWriteMoleculeName(1);
- pGParser->setWriteChargeAndMult(1);
-- pGParser->addCommandOption("freq", "noraman");
-- pGParser->addIop("iop(7/33=1)");
-+ pGParser->addCommandOption("Freq", "NoRaman");
-+ pGParser->addIop("IOp(7/33=1)");
- pGParser->Write(inputFileContents[i][2], pSelMol);
- pGParser->writeMappingFile(inputFileContents[i][2]+".map");
- }
-@@ -3826,6 +4005,7 @@
- if (pStdFrag) {
- bool doIt = pStdGroup->hasStdFrag(pStdFrag->getSymbol());
- if (doIt) {
-+ //std::cout << " " << pStdFrag->getSymbol() << "\n";
- //submolecule* pStdSubmol = pStdMolecule->addSubMolecule();
- //pStdSubmol->copy(submolList[t]);
- std::vector<atom*> lAtomList = submolList[t]->getAtomList();
-@@ -3834,7 +4014,8 @@
- if (pStdAtom) {
- //std::cout << " |" << lAtomList[r]->getName() << "| " << lAtomList[r]->getZcharge() << "\n";
- pStdAtom->atmCharge = lAtomList[r]->getZcharge();
-- groupCharge += lAtomList[r]->getZcharge();
-+ //groupCharge += lAtomList[r]->getZcharge();
-+ groupCharge += pStdAtom->atmCharge;
- }
- }
- }
-@@ -3861,11 +4042,398 @@
- */
- }
- updateRespChargesMessage += " Charge: " + double2String(groupCharge, 2);
-+ //std::cout << " Group charge = " << double2String(groupCharge, 2) << "\n";
- MTKpp::errorLogger.throwError("MCPB::updateRespCharges",
- updateRespChargesMessage, INFO);
- }
- }
-
-+ else if (inputFileContents[i][0] == "respgen") {
-+ /*!
-+ @ingroup MCPB_commands
-+ \code
-+ Function: respgen
-+
-+ Description: Create resp1 and resp2 files (recreates functionality of respgen)
-+
-+ syntax: respgen /COL/MOL Group fileName
-+ \endcode
-+ */
-+
-+ if ((inputFileContents[i].size() != 4) or (!pCollection)) {
-+ MTKpp::errorLogger.throwError("MCPB::respgen",
-+ " Incorrect use ... exiting ", MTK_ERROR);
-+ exit(1);
-+ }
-+ else {
-+ selection* pSel = new selection(pCollection);
-+ failure = pSel->parse(inputFileContents[i][1]);
-+ if (failure) {
-+ MTKpp::errorLogger.throwError("MCPB::respgen",
-+ " Error in selection parsing ... exiting ", MTK_ERROR);
-+ exit(1);
-+ }
-+
-+ stdLibrary* pStdLibrary = pCollection->getStdLibrary();
-+ stdGroup* pStdGroup = 0;
-+ if (pStdLibrary) {
-+ pStdGroup = pStdLibrary->getStdGroup(inputFileContents[i][2]);
-+ if (!pStdGroup) {
-+ MTKpp::errorLogger.throwError("MCPB::respgen",
-+ " Can't find stdGroup ... exiting ", MTK_ERROR);
-+ exit(1);
-+ }
-+ }
-+ else {
-+ MTKpp::errorLogger.throwError("MCPB::respgen",
-+ " Error in selection parsing ... exiting ", MTK_ERROR);
-+ }
-+
-+ if (pSel->getSelectionType() == 1) {
-+ molecule* pSelMol = pSel->getMol();
-+ if (!pSelMol) {
-+ std::cout << " Error in respgen selection \n";
-+ exit(1);
-+ }
-+
-+ std::vector<std::string>::iterator result;
-+
-+ acParser* pAcParser = new acParser();
-+ pAcParser->Write(inputFileContents[i][3]+".ac", pCollection);
-+ delete pAcParser;
-+
-+ std::string bb0FileResp1 = inputFileContents[i][3] + "_bb0.resp1";
-+ std::string bb0FileResp2 = inputFileContents[i][3] + "_bb0.resp2";
-+ std::ofstream obb0FileResp1;
-+ std::ofstream obb0FileResp2;
-+ obb0FileResp1.open(bb0FileResp1.c_str());
-+ obb0FileResp2.open(bb0FileResp2.c_str());
-+
-+ std::string bb1FileResp1 = inputFileContents[i][3] + "_bb1.resp1";
-+ std::string bb1FileResp2 = inputFileContents[i][3] + "_bb1.resp2";
-+ std::ofstream obb1FileResp1;
-+ std::ofstream obb1FileResp2;
-+ obb1FileResp1.open(bb1FileResp1.c_str());
-+ obb1FileResp2.open(bb1FileResp2.c_str());
-+
-+ std::string bb2FileResp1 = inputFileContents[i][3] + "_bb2.resp1";
-+ std::string bb2FileResp2 = inputFileContents[i][3] + "_bb2.resp2";
-+ std::ofstream obb2FileResp1;
-+ std::ofstream obb2FileResp2;
-+ obb2FileResp1.open(bb2FileResp1.c_str());
-+ obb2FileResp2.open(bb2FileResp2.c_str());
-+
-+ std::string bb3FileResp1 = inputFileContents[i][3] + "_bb3.resp1";
-+ std::string bb3FileResp2 = inputFileContents[i][3] + "_bb3.resp2";
-+ std::ofstream obb3FileResp1;
-+ std::ofstream obb3FileResp2;
-+ obb3FileResp1.open(bb3FileResp1.c_str());
-+ obb3FileResp2.open(bb3FileResp2.c_str());
-+
-+ if (!obb0FileResp1 or !obb0FileResp2 or !obb1FileResp1 or !obb1FileResp2 or
-+ !obb2FileResp1 or !obb2FileResp2 or !obb3FileResp1 or !obb3FileResp2) {
-+ MTKpp::errorLogger.throwError("MCPB::respgen",
-+ " Unable to open RESP files ... exiting ", MTK_ERROR);
-+ exit(1);
-+ }
-+
-+ std::vector<molecule*> molList = pCollection->getMoleculeList();
-+
-+ std::string terminalFrags = "";
-+ char temp[100];
-+ bool bFirst = true;
-+ for (unsigned int m = 0; m < molList.size(); m++) {
-+ molecule* pMol = molList[m];
-+ std::vector<submolecule*> submols = pMol->getSubMoleculeList();
-+ for (unsigned int s = 0; s < submols.size(); s++) {
-+ if (submols[s]->hasStdFrag()) {
-+ stdFrag* pStdFrag = submols[s]->getStdFrag();
-+ if (pStdFrag->getParent()->getName() != inputFileContents[i][2]) {
-+ if (bFirst) {
-+ sprintf(temp,"%5d%10.5f\n", pStdFrag->numStdAtoms(), 0.0);
-+ bFirst = false;
-+ }
-+ else {
-+ sprintf(temp,"\n%5d%10.5f\n", pStdFrag->numStdAtoms(), 0.0);
-+ }
-+
-+ terminalFrags += std::string(temp);
-+ std::vector<atom*> atomList = submols[s]->getAtomList();
-+ char temp2[80];
-+ int counter = 0;
-+ for (unsigned int a = 0; a < atomList.size(); a++) {
-+ if (counter > 7) { // was 6
-+ terminalFrags += "\n";
-+ counter = 0;
-+ }
-+ sprintf(temp2,"%5d%5d", 1, atomList[a]->getIndex());
-+ terminalFrags += std::string(temp2);
-+ counter++;
-+ }
-+ //terminalFrags += "\n";
-+ }
-+ }
-+ }
-+ }
-+ //std::cout << terminalFrags << std::endl;
-+
-+ std::string bb0 = terminalFrags + "\n";
-+ std::string bb1 = terminalFrags + "\n";
-+ std::string bb2 = terminalFrags + "\n";
-+ std::string bb3 = terminalFrags + "\n";
-+
-+ int lInd = 0;
-+ for (unsigned int m = 0; m < molList.size(); m++) {
-+ molecule* pMol = molList[m];
-+
-+ if (pMol->getName() == "Reference") continue;
-+
-+ std::vector<submolecule*> submols = pMol->getSubMoleculeList();
-+ for (unsigned int s = 0; s < submols.size(); s++) {
-+ if (submols[s]->hasStdFrag()) {
-+ stdFrag* pStdFrag = submols[s]->getStdFrag();
-+ //std::cout << " respgen " << pStdFrag->getParent()->getName() << " " << inputFileContents[i][2] << " \n ";
-+ if (pStdFrag->getParent()->getName() != inputFileContents[i][2]) continue;
-+ std::vector<atom*> subAtoms = submols[s]->getAtomList();
-+ for (unsigned int a = 0; a < subAtoms.size(); a++) {
-+ stdAtom* pStdAtom_a = subAtoms[a]->getStdAtom();
-+ lInd++;
-+ // iBB == 1
-+ if (pStdAtom_a) {
-+ std::string dd = pStdAtom_a->identity + ":" + pStdAtom_a->type;
-+
-+ //result = find(bb_heavy.begin(), bb_heavy.end(), subAtoms[a]->getName());
-+ //result = find(bb_heavy.begin(), bb_heavy.end(), pStdAtom_a->identity);
-+ result = find(bb_heavy.begin(), bb_heavy.end(), dd);
-+
-+ if (result != bb_heavy.end()) {
-+ sprintf(temp,"%5d%10.5f\n", 1, pStdAtom_a->atmCharge);
-+ //freezingAtoms += "\n BB Heavy " + submols[s]->getName() + " " + int2String(submols[s]->getSubMolId()) + " " + dd;
-+ //std::cout << "\n BB Heavy " + submols[s]->getName() + " " + int2String(submols[s]->getSubMolId()) + " " + dd;
-+ //std::cout << dd << " " << subAtoms[a]->getName() << " ---> " << subAtoms[a]->getStdAtom()->type << std::endl;
-+ //orespAdd << temp << std::endl;
-+ bb1 += std::string(temp);
-+ sprintf(temp,"%5d%5d\n", 1, subAtoms[a]->getIndex());
-+ //orespAdd << temp << std::endl;
-+ bb1 += std::string(temp);
-+ }
-+
-+ // iBB == 2
-+ dd = pStdAtom_a->identity + ":" + pStdAtom_a->type;
-+
-+ //result = find(bb.begin(), bb.end(), subAtoms[a]->getName());
-+ result = find(bb.begin(), bb.end(), dd);
-+
-+ if (result != bb.end()) {
-+ //freezingAtoms += "\n BB " + submols[s]->getName() + " " + int2String(submols[s]->getSubMolId()) + " " + dd;
-+ sprintf(temp,"%5d%10.5f\n", 1, pStdAtom_a->atmCharge);
-+ //orespAdd << temp << std::endl;
-+ bb2 += std::string(temp);
-+ sprintf(temp,"%5d%5d\n", 1, subAtoms[a]->getIndex());
-+ //orespAdd << temp << std::endl;
-+ bb2 += std::string(temp);
-+ }
-+ // iBB == 3
-+ dd = pStdAtom_a->identity + ":" + pStdAtom_a->type;
-+
-+ //result = find(bbb.begin(), bbb.end(), subAtoms[a]->getName());
-+ result = find(bbb.begin(), bbb.end(), dd);
-+
-+ if (result != bbb.end()) {
-+ //freezingAtoms += "\n BBB " + submols[s]->getName() + " "
-+ // + int2String(submols[s]->getSubMolId()) + " " + dd;
-+ sprintf(temp,"%5d%10.5f\n", 1, pStdAtom_a->atmCharge);
-+ bb3 += std::string(temp);
-+ //orespAdd << temp << std::endl;
-+ sprintf(temp,"%5d%5d\n", 1, subAtoms[a]->getIndex());
-+ bb3 += std::string(temp);
-+ //orespAdd << temp << std::endl;
-+ }
-+ }
-+ else {
-+ MTKpp::errorLogger.throwError("MCPB::respgen",
-+ " Unknown option ... exiting ", MTK_ERROR);
-+ }
-+ }
-+ }
-+ }
-+ }
-+
-+ std::string resp1 = "";
-+ resp1 += "Resp charges for organic molecule\n";
-+ resp1 += "\n";
-+ resp1 += " &cntrl\n";
-+ resp1 += "\n";
-+ resp1 += " nmol = 1,\n";
-+ resp1 += " ihfree = 1,\n";
-+ resp1 += " ioutopt = 1,\n";
-+ resp1 += "\n";
-+ resp1 += " &end\n";
-+ resp1 += " 1.0\n";
-+ resp1 += "Resp charges for organic molecule\n";
-+
-+ //std::cout << pStdGroup->getCharge() << " " << pSelMol->getNumAtoms() << std::endl;
-+ sprintf(temp,"%5d%5d\n", int(pStdGroup->getCharge()), pSelMol->getNumAtoms());
-+ resp1 += std::string(temp);
-+
-+ std::vector<submolecule*> sList = pSelMol->getSubMoleculeList();
-+ typedef std::map<std::string, int>::iterator mapIterator;
-+
-+ std::map<std::string, int> lMap;
-+ int ind = 0;
-+ for (unsigned int p = 0; p < sList.size(); p++) {
-+ std::vector<atom*> aList = sList[p]->getAtomList();
-+ for (unsigned int a = 0; a < aList.size(); a++) {
-+ if (!aList[a]->getStdAtom()) {
-+ std::cout << " Error ... exiting()\n";
-+ exit(1);
-+ }
-+ int elNum = aList[a]->getAtomicNum();
-+ std::string key = "";
-+ if (elNum == 1) {
-+ std::vector<atom*> hBondedAtoms = aList[a]->getBondedAtoms();
-+ if (hBondedAtoms.size() == 1) {
-+ key = aList[a]->getParent()->getName() + ":" + hBondedAtoms[0]->getName() + ":" + aList[a]->getStdAtom()->type;
-+ }
-+ else {
-+ key = aList[a]->getParent()->getName() + ":" + aList[a]->getStdAtom()->type;
-+ }
-+ }
-+ else {
-+ key = aList[a]->getParent()->getName() + ":" + aList[a]->getName();
-+ }
-+
-+ mapIterator mi = lMap.find(key);
-+
-+ int fg = 0;
-+ if (mi != lMap.end()){
-+ fg = lMap[key]+1;
-+ }
-+ else {
-+ lMap[key] = ind;
-+ }
-+ //sprintf(temp,"%4d %-11s%5d%5d\n", ind+1, key.c_str(), aList[a]->getAtomicNum(), fg);
-+ sprintf(temp,"%5d%5d\n", aList[a]->getAtomicNum(), fg);
-+ resp1 += std::string(temp);
-+ ind++;
-+ }
-+ }
-+
-+ std::string resp2 = "";
-+
-+ resp2 += "Resp charges for organic molecule\n";
-+ resp2 += "\n";
-+ resp2 += " &cntrl\n";
-+ resp2 += "\n";
-+ resp2 += " nmol = 1,\n";
-+ resp2 += " ihfree = 1,\n";
-+ resp2 += " ioutopt = 1,\n";
-+ resp2 += " iqopt = 2,\n";
-+ resp2 += " qwt = 0.001,\n";
-+ resp2 += "\n";
-+ resp2 += " &end\n";
-+ resp2 += " 1.0\n";
-+ resp2 += "Resp charges for organic molecule\n";
-+
-+ sprintf(temp,"%5d%5d\n", int(pStdGroup->getCharge()), pSelMol->getNumAtoms());
-+ resp2 += std::string(temp);
-+
-+ ind = 0;
-+ std::map<std::string, int> lMap2;
-+
-+ for (unsigned int p = 0; p < sList.size(); p++) {
-+ std::vector<atom*> aList = sList[p]->getAtomList();
-+ for (unsigned int a = 0; a < aList.size(); a++) {
-+
-+ if (!aList[a]->getStdAtom()) {
-+ std::cout << " Error ... exiting()\n";
-+ exit(1);
-+ }
-+ int elNum = aList[a]->getAtomicNum();
-+ std::string key = "";
-+ if (elNum == 1) {
-+ std::vector<atom*> hBondedAtoms = aList[a]->getBondedAtoms();
-+ if (hBondedAtoms.size() == 1) {
-+ key = aList[a]->getParent()->getName() + ":" + hBondedAtoms[0]->getName() + ":" +
-+ aList[a]->getStdAtom()->type;
-+ }
-+ else {
-+ key = aList[a]->getParent()->getName() + ":" + aList[a]->getStdAtom()->type;
-+ }
-+ }
-+ else {
-+ key = aList[a]->getParent()->getName() + ":" + aList[a]->getName();
-+ }
-+
-+ mapIterator mi = lMap2.find(key);
-+
-+ int fg = 0;
-+ if (mi != lMap2.end()){
-+ fg = lMap2[key]+1;
-+ }
-+ else {
-+ lMap2[key] = ind;
-+ }
-+ std::string atName = aList[a]->getName();
-+ std::string atType = aList[a]->getStdAtom()->type;
-+ int atNum = aList[a]->getAtomicNum();
-+
-+ if (atName == " CH3" or atName == " CB " or containsSubStr(key, " CB :H1") or
-+ containsSubStr(key, " CB :HC") or
-+ containsSubStr(key, " CH3:HC") or containsSubStr(key, " CH3:H1") or
-+ containsSubStr(key, "GLY: CA ")) {// or (atNum > 16)) {
-+ //if (atName == " CH3" or atName == " CB " or atType == "H1" or atType == "HC") {
-+ //sprintf(temp,"%4d %-11s%5d%5d\n", ind+1, key.c_str(), aList[a]->getAtomicNum(), fg);
-+ sprintf(temp,"%5d%5d\n", aList[a]->getAtomicNum(), fg);
-+ }
-+ else {
-+ //sprintf(temp,"%4d %-11s%5d%5d\n", ind+1, key.c_str(), aList[a]->getAtomicNum(), -99);
-+ sprintf(temp,"%5d%5d\n", aList[a]->getAtomicNum(), -99);
-+ }
-+ resp2 += std::string(temp);
-+
-+ ind++;
-+ }
-+ }
-+
-+ std::string twoBlankLine = "\n\n";
-+ bb0 += twoBlankLine;
-+ bb1 += twoBlankLine;
-+ bb2 += twoBlankLine;
-+ bb3 += twoBlankLine;
-+
-+ obb0FileResp1 << resp1;
-+ obb0FileResp1 << bb0;
-+ obb0FileResp2 << resp2;
-+ obb0FileResp2 << bb0;
-+
-+ obb1FileResp1 << resp1;
-+ obb1FileResp1 << bb1;
-+ obb1FileResp2 << resp2;
-+ obb1FileResp2 << bb1;
-+
-+ obb2FileResp1 << resp1;
-+ obb2FileResp1 << bb2;
-+ obb2FileResp2 << resp2;
-+ obb2FileResp2 << bb2;
-+
-+ obb3FileResp1 << resp1;
-+ obb3FileResp1 << bb3;
-+ obb3FileResp2 << resp2;
-+ obb3FileResp2 << bb3;
-+
-+ obb0FileResp1.close();
-+ obb0FileResp2.close();
-+ obb1FileResp1.close();
-+ obb1FileResp2.close();
-+ obb2FileResp1.close();
-+ obb2FileResp2.close();
-+ obb3FileResp1.close();
-+ obb3FileResp2.close();
-+ }
-+ }
-+ }
-+
- else if (inputFileContents[i][0] == "addStdMol") {
- /*!
- @ingroup MCPB_commands
-@@ -4496,63 +5064,63 @@
- table<double>* nmodeEVectors = pSheet->getTable("NMode EigenVectors");
- ublas::matrix<double> &nmodeEVectorsMatrixT = nmodeEVectors->getMatrix();
-
-- table<double>* g03EValues = pSheet->getTable("Gaussian EigenValues");
-- ublas::matrix<double> &g03EValuesMatrix = g03EValues->getMatrix();
-+ table<double>* gaussianEValues = pSheet->getTable("Gaussian EigenValues");
-+ ublas::matrix<double> &gaussianEValuesMatrix = gaussianEValues->getMatrix();
-
-- table<double>* g03EVectors = pSheet->getTable("Gaussian EigenVectors");
-- ublas::matrix<double> &g03EVectorsMatrixT = g03EVectors->getMatrix();
-+ table<double>* gaussianEVectors = pSheet->getTable("Gaussian EigenVectors");
-+ ublas::matrix<double> &gaussianEVectorsMatrixT = gaussianEVectors->getMatrix();
-
- int nRowsNMode = nmodeEValues->getNumRows();
-- int nRowsG03 = g03EValues->getNumRows();
-+ int nRowsGaussian = gaussianEValues->getNumRows();
-
- int nColsNMode = nmodeEVectors->getNumColumns();
-- int nColsG03 = g03EVectors->getNumColumns();
-+ int nColsGaussian = gaussianEVectors->getNumColumns();
-
-- if (nRowsNMode != nRowsG03 and nColsNMode != nColsG03) {
-+ if (nRowsNMode != nRowsGaussian and nColsNMode != nColsGaussian) {
- std::cout << " PROBLEM " << std::endl;
- }
- else {
- std::cout << " EIGENVALUES " << std::endl;
- for (int z = 0; z < nRowsNMode; z++) {
-- std::cout << nmodeEValuesMatrix(z, 0) << " " << g03EValuesMatrix(z, 0) << std::endl;
-+ std::cout << nmodeEValuesMatrix(z, 0) << " " << gaussianEValuesMatrix(z, 0) << std::endl;
- }
-
- //std::cout << " NMODE " << std::endl;
- //nmodeEVectors->printMatrix();
-
-- //std::cout << " G03 " << std::endl;
-- //g03EVectors->printMatrix();
-+ //std::cout << " Gaussian " << std::endl;
-+ //gaussianEVectors->printMatrix();
- //std::cout << " \n\n " << std::endl;
-
- // Normalize Eigenvector matrices
- for (int zi = 0; zi < nRowsNMode; zi++) {
- double normNMode = 0.0;
-- double normG03 = 0.0;
-+ double normGaussian = 0.0;
- for (int zk = 0; zk < nColsNMode; zk++) {
- normNMode += (nmodeEVectorsMatrixT(zi, zk) * nmodeEVectorsMatrixT(zi, zk));
-- normG03 += (g03EVectorsMatrixT(zi, zk) * g03EVectorsMatrixT(zi, zk));
-+ normGaussian += (gaussianEVectorsMatrixT(zi, zk) * gaussianEVectorsMatrixT(zi, zk));
- }
- normNMode = sqrt(normNMode);
-- normG03 = sqrt(normG03);
-+ normGaussian = sqrt(normGaussian);
- for (int zk = 0; zk < nColsNMode; zk++) {
-- //std::cout << g03EVectorsMatrixT(zi, zk) << " " << normG03 << " "
-- // << g03EVectorsMatrixT(zi, zk) / normG03 << " ";
-+ //std::cout << gaussianEVectorsMatrixT(zi, zk) << " " << normGaussian << " "
-+ // << gaussianEVectorsMatrixT(zi, zk) / normGaussian << " ";
- double newValue1 = nmodeEVectorsMatrixT(zi, zk) / normNMode;
-- double newValue2 = g03EVectorsMatrixT(zi, zk) / normG03;
-+ double newValue2 = gaussianEVectorsMatrixT(zi, zk) / normGaussian;
- nmodeEVectors->setCellValue(zi, zk, newValue1);
-- g03EVectors->setCellValue(zi, zk, newValue2);
-- //std::cout << g03EVectors->getCellValue(zi, zk) << std::endl;
-+ gaussianEVectors->setCellValue(zi, zk, newValue2);
-+ //std::cout << gaussianEVectors->getCellValue(zi, zk) << std::endl;
- }
- }
-
- ublas::matrix<double> &nmodeEVectorsMatrix = nmodeEVectors->getMatrix();
-- ublas::matrix<double> &g03EVectorsMatrix = g03EVectors->getMatrix();
-+ ublas::matrix<double> &gaussianEVectorsMatrix = gaussianEVectors->getMatrix();
-
- //std::cout << " NMODE " << std::endl;
- //nmodeEVectors->printMatrix();
-
-- //std::cout << " G03 " << std::endl;
-- //g03EVectors->printMatrix();
-+ //std::cout << " Gaussian " << std::endl;
-+ //gaussianEVectors->printMatrix();
- //std::cout << " \n\n " << std::endl;
-
- // dot product
-@@ -4563,12 +5131,12 @@
- double eN2 = 0.0;
- double dff = 0.0;
- for (int zi = 0; zi < nRowsNMode; zi++) { // NMode
-- for (int zj = 0; zj < nRowsNMode; zj++) { // G03
-+ for (int zj = 0; zj < nRowsNMode; zj++) { // Gaussian
- for (int zk = 0; zk < nColsNMode; zk++) { // Loop over coordinates in Eigenvector
-- //std::cout << nmodeEVectorsMatrix(zi, zk) << " " << g03EVectorsMatrix(zj, zk) << " ";
-+ //std::cout << nmodeEVectorsMatrix(zi, zk) << " " << gaussianEVectorsMatrix(zj, zk) << " ";
- eN += (nmodeEVectorsMatrix(zi, zk) * nmodeEVectorsMatrix(zi, zk));
-- eN2 += (g03EVectorsMatrix(zj, zk) * g03EVectorsMatrix(zj, zk));
-- dotProduct += (nmodeEVectorsMatrix(zi, zk) * g03EVectorsMatrix(zj, zk));
-+ eN2 += (gaussianEVectorsMatrix(zj, zk) * gaussianEVectorsMatrix(zj, zk));
-+ dotProduct += (nmodeEVectorsMatrix(zi, zk) * gaussianEVectorsMatrix(zj, zk));
- }
- //std::cout << " eN = " << sqrt(eN) << " eN2 = " << sqrt(eN2) << " ";
- std::cout << zi << " - " << zj << " " << dotProduct << " " << dotProductMax << std::endl;
-@@ -4582,11 +5150,11 @@
- }
- dotProduct = 0.0;
- }
-- double dffL = nmodeEValuesMatrix(zi, 0) - g03EValuesMatrix(dotProductMaxIndex, 0);
-+ double dffL = nmodeEValuesMatrix(zi, 0) - gaussianEValuesMatrix(dotProductMaxIndex, 0);
- dffL *= dffL;
- std::cout << " nmode index = " << zi << " BestMatch = " << dotProductMaxIndex
- << " => dotProduct =" << dotProductMax << " EVALUES: "
-- << " " << nmodeEValuesMatrix(zi, 0) << " " << g03EValuesMatrix(dotProductMaxIndex, 0) << " "
-+ << " " << nmodeEValuesMatrix(zi, 0) << " " << gaussianEValuesMatrix(dotProductMaxIndex, 0) << " "
- << dffL
- << std::endl;
-
-@@ -4617,7 +5185,7 @@
- }
-
- else {
-- std::string unknownCommand = " Unknown command " + inputFileContents[i][0];
-+ std::string unknownCommand = " Unknown command: \"" + inputFileContents[i][0] + "\"";
- MTKpp::errorLogger.throwError("MCPB", unknownCommand, MTK_ERROR);
- }
- }
-@@ -4628,4 +5196,3 @@
- delete pSheet;
- return 0;
- }
--
-diff -urN amber11.orig/AmberTools/src/mtkpp/tools/prep2xml.cpp amber11/AmberTools/src/mtkpp/tools/prep2xml.cpp
---- amber11.orig/AmberTools/src/mtkpp/tools/prep2xml.cpp 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/tools/prep2xml.cpp 2012-03-03 20:03:01.418032565 +0200
-@@ -86,6 +86,7 @@
- clo->addUsage( " -a log file " );
- clo->addUsage( " -l hybridize name \n" );
- clo->addUsage( " flags: " );
-+ clo->addUsage( " -c convert only " );
- clo->addUsage( " -h help \n" );
-
- // 4. SET THE OPTION STRINGS/CHARACTERS
-@@ -97,6 +98,7 @@
- clo->setOption( "hyb", 'l' );
- clo->setOption( "log", 'a' );
-
-+ clo->setFlag ( "convert", 'c' );
- clo->setFlag ( "help", 'h' );
-
- // 5. PROVIDE THE COMMANDLINE
-@@ -117,6 +119,11 @@
- std::string fragName = "";
- std::string molName = "";
- std::string logFile = "";
-+ bool bConvertOnly = 0;
-+
-+ if ( clo->getFlag( "convert" ) || clo->getFlag( 'c' ) ) {
-+ bConvertOnly = 1;
-+ }
-
- std::string AMBERHOME = getenv("AMBERHOME");
- std::string parametersFile = AMBERHOME + "/dat/mtkpp/hybridize/labute.txt";
-@@ -166,13 +173,13 @@
- else if ( clo->getValue( "frag" ) != 0 ) {
- fragName = clo->getValue( "frag" );
- }
-- else {
-+/* else {
- printHeader(std::cout, prog_name, authors);
- clo->printUsage();
- std::cout << " Please provide a fragment name " << std::endl;
- return 0;
- }
--
-+*/
- if ( clo->getValue( "l" ) != 0 ) {
- parametersFile = clo->getValue( "l" );
- }
-@@ -186,13 +193,14 @@
- else if ( clo->getValue( "mol" ) != 0 ) {
- molName = clo->getValue( "mol" );
- }
-+/*
- else {
- printHeader(std::cout, prog_name, authors);
- clo->printUsage();
- std::cout << " Please provide a molecule name " << std::endl;
- return 0;
- }
--
-+*/
- if ( clo->getValue( "a" ) != 0 ) {
- logFile = clo->getValue( "a" );
- }
-@@ -307,6 +315,22 @@
- std::cout << " Incorrect use of prep2xml " << std::endl;
- exit(1);
- }
-+
-+ /////////
-+ if (fragName == "") {
-+ prepParser* pPrepParser = new prepParser();
-+ pPrepParser->Read(prepFile, pStdGroup);
-+ delete pPrepParser;
-+
-+ pStdLibParser->Write(libXmlFile, groupName);
-+ delete pStdLibParser;
-+
-+ // - Clean up - //
-+ delete pCollection;
-+ return 0;
-+ }
-+ ///////////
-+
- stdFrag* pStdFrag = pStdGroup->addStdFrag();
- if (!pStdFrag) {
- std::cout << " Incorrect use of prep2xml " << std::endl;
-@@ -322,6 +346,15 @@
- pPrepParser->Read(prepFile, pStdFrag);
- delete pPrepParser;
-
-+ if (bConvertOnly) {
-+ pStdLibParser->Write(libXmlFile, groupName);
-+ delete pStdLibParser;
-+
-+ // - Clean up - //
-+ delete pCollection;
-+ return 0;
-+ }
-+
- int f = pStdFrag->generateCoordinates();
- if (f) {
- std::cout << " Incorrect use of prep2xml " << std::endl;
-@@ -443,7 +476,7 @@
- // atoms
- for (unsigned int i = 0; i < atomList.size(); i++) {
- stdAtoms[i]->kind = atomList[i]->getType();
-- std::cout << atomList[i]->getIndex() << " " << atomList[i]->getName() << " " << atomList[i]->getType() << std::endl;
-+ //std::cout << atomList[i]->getIndex() << " " << atomList[i]->getName() << " " << atomList[i]->getType() << std::endl;
- }
-
- // bonds
-diff -urN amber11.orig/AmberTools/src/mtkpp/tools/stdLib2Sdf.cpp amber11/AmberTools/src/mtkpp/tools/stdLib2Sdf.cpp
---- amber11.orig/AmberTools/src/mtkpp/tools/stdLib2Sdf.cpp 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/mtkpp/tools/stdLib2Sdf.cpp 2012-03-03 20:03:01.418032565 +0200
-@@ -42,6 +42,9 @@
- // - COMMAND LINE OPTIONS
- #include "Parsers/commLineOptions.h"
-
-+// - Log
-+#include "Log/errorHandler.h"
-+
- // temp
- #include "time.h"
-
-@@ -174,7 +177,7 @@
- }
-
- // Set errorLog stream to the log file
-- //MTKpp::errorLogger.setStream(&oLog);
-+ MTKpp::errorLogger.setStream(&oLog);
-
- // Print MTK++ copyright message
- printHeader(oLog, prog_name, authors);
-diff -urN amber11.orig/AmberTools/src/pbsa/pb_list.f amber11/AmberTools/src/pbsa/pb_list.f
---- amber11.orig/AmberTools/src/pbsa/pb_list.f 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/pbsa/pb_list.f 2012-03-03 20:02:55.131034376 +0200
-@@ -949,7 +949,7 @@
- ymin == ZERO .and. ymax == ZERO .and. &
- zmin == ZERO .and. zmax == ZERO ) newbox = .true.
-
-- if ( newbox ) then
-+ if ( .not. ligand ) then
- if ( ifcap == 0 .or. ifcap == 5 ) then
- xmin = 9999.0; ymin = 9999.0; zmin = 9999.0
- xmax = -9999.0; ymax = -9999.0; zmax = -9999.0
-diff -urN amber11.orig/AmberTools/src/rism/safemem.f amber11/AmberTools/src/rism/safemem.f
---- amber11.orig/AmberTools/src/rism/safemem.f 2012-03-03 22:43:02.986777264 +0200
-+++ amber11/AmberTools/src/rism/safemem.f 2012-03-03 20:02:52.131035237 +0200
-@@ -62,7 +62,7 @@
- !BYTES_PER_KILOBYTES :: used to convert between bytes and KB
- integer*8,parameter :: BYTES_PER_KB = 1024**1
-
-- type(memTracker),private :: totalMem
-+ type(memTracker),save,private :: totalMem
-
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
diff --git a/sci-chemistry/ambertools/files/ambertools-1.5-bugfix_28.patch b/sci-chemistry/ambertools/files/ambertools-1.5-bugfix_28.patch
deleted file mode 100644
index f186f3387..000000000
--- a/sci-chemistry/ambertools/files/ambertools-1.5-bugfix_28.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff -urN amber11.orig/AmberTools/src/mmpbsa_py/MMPBSA_mods/amberoutputs.py amber11/AmberTools/src/mmpbsa_py/MMPBSA_mods/amberoutputs.py
---- amber11.orig/AmberTools/src/mmpbsa_py/MMPBSA_mods/amberoutputs.py 2012-08-28 13:38:00.864249769 +0300
-+++ amber11/AmberTools/src/mmpbsa_py/MMPBSA_mods/amberoutputs.py 2012-08-28 13:39:15.141238742 +0300
-@@ -2311,7 +2311,7 @@
- def _tot_stdevs(self):
- """ Returns the standard deviations of the total based on whether or not we were able to
- calculate all frames or not. Use a sample stdev if we were, sum-of-squares if we weren't """
-- if len(self.com_data) != len(self.rec_data) or len(self.com_data) != len(self.lig_data):
-+ if len(self.com_data[0]) != len(self.rec_data[0]) or len(self.com_data[0]) != len(self.lig_data[0]):
- return math.sqrt(abs(_stdev(self.com_data[0]) ** 2 + _stdev(self.rec_data[0]) ** 2 + _stdev(self.lig_data[0]) ** 2))
-
- sum = sum2 = 0
-@@ -2319,8 +2319,8 @@
- sum += self.com_data[0][i] - self.rec_data[0][i] - self.lig_data[0][i]
- sum2 += (self.com_data[0][i] - self.rec_data[0][i] - self.lig_data[0][i]) ** 2
-
-- avg = sum / len(self.com_data)
-- return math.sqrt(abs(sum2 / len(self.com_data) - avg * avg))
-+ avg = sum / len(self.com_data[0])
-+ return math.sqrt(abs(sum2 / len(self.com_data[0]) - avg * avg))
-
- #==============================
-
diff --git a/sci-chemistry/ambertools/files/ambertools-1.5-gentoo2.patch b/sci-chemistry/ambertools/files/ambertools-1.5-gentoo2.patch
deleted file mode 100644
index 1023b50db..000000000
--- a/sci-chemistry/ambertools/files/ambertools-1.5-gentoo2.patch
+++ /dev/null
@@ -1,1068 +0,0 @@
-diff -urN amber11.orig/AmberTools/src/configure amber11/AmberTools/src/configure
---- amber11.orig/AmberTools/src/configure 2011-10-25 15:01:28.222288537 +0300
-+++ amber11/AmberTools/src/configure 2011-10-25 23:57:37.732371794 +0300
-@@ -293,7 +293,7 @@
- echo "Your AMBERHOME environment variable is not set! It should be set to"
- echo "$ambhome NOT doing so may cause errors when you compile. Continue"
- echo "anyway? (yes or no)"
-- read answer
-+ answer='yes'
- if [ "$answer" = 'yes' -o "$answer" = 'Yes' -o "$answer" = 'YES' -o "$answer" = 'y' -o "$answer" = 'Y' ]; then
- echo ""
- echo "Continuing anyway... Setting AMBERHOME to $ambhome temporarily"
-@@ -356,11 +356,11 @@
- mpi_flag=
- lex=flex
- flibs_mkl=
--lapack=install
--blas=install
-+lapack=skip
-+blas=skip
- f2c=skip
--ucpp=install
--cpp="\$(BINDIR)/ucpp -l"
-+ucpp=skip
-+cpp="\$(EPREFIX)/usr/bin/ucpp -l"
-
- #-----------------------------------
- # skip building of sleap?
-@@ -548,13 +548,14 @@
- flibs_arch=-lgfortran
- flibsf_arch=
- cc=gcc
-- cflags=
-+ cflags="GENTOO_CFLAGS"
- # ambercflags="-Wall"
- cplusplus=g++
-- cxxflags=
-+ cxxflags="GENTOO_CXXFLAGS"
- # ambercxxflags="-Wall"
- fc=gfortran
-- fflags=
-+ fflags="GENTOO_FFLAGS"
-+ ldflags="GENTOO_LDFLAGS"
- staticflag='-static'
-
- # If -noopt has been requested, force lack of optimisation;
-@@ -575,11 +576,11 @@
- foptflags=""
- else
- cnooptflags=
-- coptflags="-O3"
-+ coptflags="GENTOO_CFLAGS"
- cxxnooptflags=
-- cxxoptflags="-O3"
-+ cxxoptflags="GENTOO_CXXFLAGS"
- fnooptflags="-O0"
-- foptflags="-O3"
-+ foptflags="GENTOO_FFLAGS"
- fi
-
- # Debugging options
-@@ -1653,28 +1654,6 @@
- /bin/rm -f testp.c testp$objsuffix testp$suffix
-
- #--------------------------------------------------------------------------
-- # Configure fftw-3.2.2:
-- #--------------------------------------------------------------------------
-- if [ "$mdgx" = 'yes' ]; then
-- mdgxflag="--prefix=$AMBERHOME --disable-fortran"
-- echo
-- echo "Configuring fftw-3.2.2 (may be time-consuming)..."
-- echo
-- cd fftw-3.2.2 && \
-- env CC="$cc" CFLAGS="$cflags $cnooptflags" \
-- ./configure $mdgxflag > ../fftw3_config.log 2>&1
-- ncerror=$?
-- if [ $ncerror -gt 0 ]; then
-- echo " Error: FFTW configure returned $ncerror"
-- echo " FFTW configure failed! Check the fftw3_config.log file."
-- exit 1
-- else
-- echo " fftw-3.2.2 configure succeeded."
-- fi
-- cd ..
-- fi
--
-- #--------------------------------------------------------------------------
- # Configure python
- #--------------------------------------------------------------------------
- if [ "$pyinstall" = 'python' ]; then
-@@ -1792,27 +1771,6 @@
- echo
- echo "Configuring fftw-2.1.5 (may be time-consuming)..."
- echo
-- cd fftw-2.1.5
-- if [ "$mpi" = 'yes' ]; then
-- ./configure $rismflag --enable-mpi \
-- CC="$cc" CFLAGS="$cflags $coptflags" \
-- F77="$fc" FFLAGS="$fflags $foptflags" \
-- FLIBS="$flibs_arch" > ../fftw2_config.log 2>&1
-- else
-- ./configure $rismflag \
-- CC="$cc" CFLAGS="$cflags $coptflags" \
-- F77="$fc" FFLAGS="$fflags $foptflags" \
-- FLIBS="$flibs_arch" > ../fftw2_config.log 2>&1
-- fi
-- ncerror=$?
-- if [ $ncerror -gt 0 ]; then
-- echo " Error: fftw configure returned $ncerror"
-- echo " fftw configure failed! Check the fftw2_config.log file."
-- exit 1
-- else
-- echo " fftw-2.1.5 configure succeeded."
-- fi
-- cd ..
- flibs_fftw2="-ldrfftw -ldfftw"
- if [ "$mpi" = 'yes' ]; then
- flibs_fftw2="-ldrfftw_mpi -ldfftw_mpi $flibs_fftw2"
-@@ -2004,7 +1962,7 @@
- AMBERLDFLAGS=\$(AMBERBUILDFLAGS)
-
- LEX= $lex
--YACC= \$(BINDIR)/yacc
-+YACC= byacc
- AR= ar rv
- M4= $m4
- RANLIB=$ranlib
-diff -urN amber11.orig/AmberTools/src/cpptraj/src/Makefile_at amber11/AmberTools/src/cpptraj/src/Makefile_at
---- amber11.orig/AmberTools/src/cpptraj/src/Makefile_at 2011-10-25 15:01:28.076288672 +0300
-+++ amber11/AmberTools/src/cpptraj/src/Makefile_at 2011-10-25 17:57:48.553749686 +0300
-@@ -68,11 +68,8 @@
- -/bin/rm FindDepend.o
- -/bin/rm findDepend
-
--cpptraj$(SFX): $(NETCDFLIB) $(OBJECTS)
-- $(CXX) $(LDFLAGS) -o cpptraj$(SFX) $(OBJECTS) $(NETCDFLIB) $(ZLIB) $(BZLIB)
--
--$(NETCDFLIB): ../../netcdf_config.log
-- cd ../../netcdf/src && $(MAKE) install
-+cpptraj$(SFX): $(OBJECTS)
-+ $(CXX) $(LDFLAGS) -o cpptraj$(SFX) $(OBJECTS) $(NETCDFLIB) $(ZLIB) $(BZLIB) -lgomp
-
- .c.o:
- $(CC) -c $(CPPTRAJ_FLAGS) -o $@ $<
-diff -urN amber11.orig/AmberTools/src/Makefile amber11/AmberTools/src/Makefile
---- amber11.orig/AmberTools/src/Makefile 2011-04-14 15:30:12.000000000 +0300
-+++ amber11/AmberTools/src/Makefile 2011-10-26 00:07:12.902565336 +0300
-@@ -8,15 +8,9 @@
-
- install: $(INSTALLTYPE)
-
--serial: configured_serial $(NETCDFLIB) $(PYINSTALL) $(MTKPP)
-+serial: configured_serial
- @echo "Starting installation of ${AMBERTOOLS} serial at `date`".
- # utility routines and libraries:
-- (cd ucpp-1.3 && $(MAKE) $(UCPP) )
-- (cd byacc && $(MAKE) install )
-- (cd arpack && $(MAKE) install );
-- (cd lapack && $(MAKE) $(LAPACK) )
-- (cd blas && $(MAKE) $(BLAS) )
-- (cd c9x-complex && $(MAKE) $(C9XCOMPLEX) )
- (cd etc && $(MAKE) install )
- (cd chamber && $(MAKE) install )
- (cd pbsa && $(MAKE) install )
-@@ -32,7 +26,6 @@
- (cd cpptraj && $(MAKE) $(CPPTRAJ))
-
- # miscellaneous:
-- (cd reduce && $(MAKE) install )
-
- # leap and gleap:
- (cd leap && $(MAKE) install )
-@@ -42,7 +35,6 @@
- (cd rism && $(MAKE) install )
-
- # nab:
-- (cd cifparse && $(MAKE) install )
- (cd sff && $(MAKE) install )
- (cd pbsa && $(MAKE) libinstall )
- (cd nab && $(MAKE) install )
-@@ -63,19 +55,12 @@
- @echo "Installation of ${AMBERTOOLS} serial is complete at `date`."
- @echo ""
-
--nabonly: $(NETCDFLIB)
-+nabonly:
- # utility routines and libraries:
-- (cd ucpp-1.3 && $(MAKE) $(UCPP) )
-- (cd byacc && $(MAKE) install )
-- (cd arpack && $(MAKE) install );
-- (cd lapack && $(MAKE) $(LAPACK) )
-- (cd blas && $(MAKE) $(BLAS) )
-- (cd c9x-complex && $(MAKE) $(C9XCOMPLEX) )
- (cd pbsa && $(MAKE) libinstall )
- (cd rism && $(MAKE) install )
-
- # nab:
-- (cd cifparse && $(MAKE) install )
- (cd sff && $(MAKE) install )
- (cd nab && $(MAKE) install )
- (cd nss && $(MAKE) install )
-diff -urN amber11.orig/AmberTools/src/mdgx/Makefile amber11/AmberTools/src/mdgx/Makefile
---- amber11.orig/AmberTools/src/mdgx/Makefile 2011-04-14 15:30:17.000000000 +0300
-+++ amber11/AmberTools/src/mdgx/Makefile 2011-10-25 15:32:04.007129323 +0300
-@@ -109,7 +109,7 @@
-
- FFTW_LIBS = $(LIBDIR)/libfftw3.a
-
--mdgx$(SFX) : $(MDGX_OBJS) $(FFTW_LIBS) $(NETCDFLIB)
-+mdgx$(SFX) : $(MDGX_OBJS)
- $(CC) $(COPTFLAGS) $(CFLAGS) $(AMBERCFLAGS) \
- -o $@ $(MDGX_OBJS) $(FFTW_LIBS) $(NETCDFLIB) $(LM)
-
-diff -urN amber11.orig/AmberTools/src/pbsa/Makefile amber11/AmberTools/src/pbsa/Makefile
---- amber11.orig/AmberTools/src/pbsa/Makefile 2011-10-25 15:01:28.228288532 +0300
-+++ amber11/AmberTools/src/pbsa/Makefile 2011-10-25 22:15:38.721245308 +0300
-@@ -148,7 +148,7 @@
- )
-
- #---------------------------------------------------------------------------
--pbsa$(SFX): $(OBJ) syslib netlib c9x-complex configured_serial
-+pbsa$(SFX): $(OBJ) syslib configured_serial
- $(FC) $(FFLAGS) $(AMBERFFLAGS) -o pbsa$(SFX) $(OBJ) \
- ../lib/nxtsec.o ../lib/random.o \
- $(FLIBSF) $(LDFLAGS) $(AMBERLDFLAGS)
-@@ -158,7 +158,7 @@
- ../lib/nxtsec.o ../lib/random.o \
- $(FLIBSF) $(LDFLAGS) $(AMBERLDFLAGS)
-
--simplepbsa$(SFX): simplepbsa.o gopt.o libpbsa.a sfflib syslib netlib c9x-complex
-+simplepbsa$(SFX): simplepbsa.o gopt.o libpbsa.a sfflib syslib
- $(FC) $(FFLAGS) $(AMBERFFLAGS) -o simplepbsa$(SFX) simplepbsa.o gopt.o \
- libpbsa.a $(LIBDIR)/libsff.a ../lib/nxtsec.o $(FLIBSF) \
- $(LDFLAGS) $(AMBERLDFLAGS)
-@@ -194,16 +194,6 @@
- sfflib:
- cd ../sff && $(MAKE) install
-
--netlib:
-- cd ../lapack && $(MAKE) $(LAPACK)
-- cd ../blas && $(MAKE) $(BLAS)
-- cd ../arpack && $(MAKE) install
--
--c9x-complex:
-- @if test $(C9XCOMPLEX) != "skip"; then \
-- cd ../c9x-complex && $(MAKE) libmc.a; \
-- fi
--
- pb_init.o: pb_init.f
- $(FPP) $(FPPFLAGS) $(AMBERFPPFLAGS) $< > _$<
- $(FC) -c -O0 $(FFLAGS) $(AMBERFFLAGS) -o $@ _$<
-diff -urN amber11.orig/AmberTools/src/ptraj/Makefile amber11/AmberTools/src/ptraj/Makefile
---- amber11.orig/AmberTools/src/ptraj/Makefile 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/ptraj/Makefile 2011-10-25 22:16:34.407661018 +0300
-@@ -57,25 +57,20 @@
- pubfft.o: pubfft.f
- $(FC) -c $(FREEFORMAT_FLAG) $(FOPTFLAGS) $(FFLAGS) $(AMBERFFLAGS) -o $@ $<
-
--rdparm$(SFX): libs $(NETCDFLIB) $(OBJECTS)
-+rdparm$(SFX): libs $(OBJECTS)
- $(CC) $(CFLAGS) $(AMBERCFLAGS) $(LDFLAGS) $(AMBERLDFLAGS) \
- -o rdparm$(SFX) $(OBJECTS) $(LIBS) $(NETCDFLIB) $(LM)
-
--ptraj$(SFX): libs netlib $(NETCDFLIB) $(OBJECTS)
-+ptraj$(SFX): libs $(OBJECTS)
- $(CC) $(CFLAGS) $(AMBERCFLAGS) $(LDFLAGS) $(AMBERLDFLAGS) \
- -o ptraj$(SFX) $(OBJECTS) $(LIBS) $(NETCDFLIB) $(LM)
-
--ptraj.MPI$(SFX): libs netlib $(PNETCDFLIB) $(OBJECTS)
-+ptraj.MPI$(SFX): libs $(PNETCDFLIB) $(OBJECTS)
- $(CC) $(CFLAGS) $(AMBERCFLAGS) $(LDFLAGS) $(AMBERLDFLAGS) \
- -o ptraj.MPI$(SFX) $(OBJECTS) $(LIBS) $(PNETCDFLIB) $(LM)
-
- libs:
- cd pdb && $(MAKE)
-- cd ../arpack && $(MAKE)
--
--netlib:
-- cd ../lapack && $(MAKE) $(LAPACK)
-- cd ../blas && $(MAKE) $(BLAS)
-
- clean:
- cd pdb && $(MAKE) clean
-diff -urN amber11.orig/AmberTools/src/ptraj/netcdf_ptraj.h amber11/AmberTools/src/ptraj/netcdf_ptraj.h
---- amber11.orig/AmberTools/src/ptraj/netcdf_ptraj.h 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/ptraj/netcdf_ptraj.h 2011-10-25 15:32:04.009129320 +0300
-@@ -4,7 +4,7 @@
- # include "../../include/pnetcdf.h"
- # define nc_strerror ncmpi_strerror
- # else
--# include "../../include/netcdf.h"
-+# include <netcdf.h>
- # endif
- #endif
-
-diff -urN amber11.orig/AmberTools/src/ptraj/ptraj.h amber11/AmberTools/src/ptraj/ptraj.h
---- amber11.orig/AmberTools/src/ptraj/ptraj.h 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/ptraj/ptraj.h 2011-10-25 15:32:04.009129320 +0300
-@@ -94,7 +94,7 @@
- #define nc_strerror ncmpi_strerror
- #include "../../include/pnetcdf.h"
- #else
--#include "../../include/netcdf.h"
-+#include <netcdf.h>
- #endif
- #endif
-
-diff -urN amber11.orig/AmberTools/src/ptraj/trajectory.c amber11/AmberTools/src/ptraj/trajectory.c
---- amber11.orig/AmberTools/src/ptraj/trajectory.c 2011-03-10 20:12:15.000000000 +0200
-+++ amber11/AmberTools/src/ptraj/trajectory.c 2011-10-26 22:25:04.192375511 +0300
-@@ -1314,7 +1314,7 @@
- {
- fpos_t fileMarker; /* marker for current file postition */
- char *junk;
-- char buffer[120];
-+ char buffer[BUFFER_SIZE];
- char coords[26]; /* room for 24 characters (3f8.3) + \n + (char) 0 */
- char c;
- int j,ret;
-diff -urN amber11.orig/AmberTools/src/rism/Makefile amber11/AmberTools/src/rism/Makefile
---- amber11.orig/AmberTools/src/rism/Makefile 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/rism/Makefile 2011-10-25 15:32:04.010129318 +0300
-@@ -49,7 +49,7 @@
- mdiis_orig_c.o mdiis_blas_c.o mdiis_blas2_c.o mdiis_c.o \
- fce_c.o erfcfun.o safemem.o blend.o timer_c.o
-
--librism: $(LIBOBJ) $(FLIBS_FFTW2)
-+librism: $(LIBOBJ)
- $(AR) $(LIBDIR)/$@.a $(LIBOBJ)
- $(RANLIB) $(LIBDIR)/$@.a
-
-diff -urN amber11.orig/AmberTools/src/sff/AmberNetcdf.c amber11/AmberTools/src/sff/AmberNetcdf.c
---- amber11.orig/AmberTools/src/sff/AmberNetcdf.c 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/sff/AmberNetcdf.c 2011-10-25 15:32:04.010129318 +0300
-@@ -27,7 +27,7 @@
- #endif
-
- #ifdef BINTRAJ
--#include "../../include/netcdf.h"
-+#include <netcdf.h>
-
- #define NCFRAME "frame"
- #define NCSPATIAL "spatial"
-diff -urN amber11.orig/AmberTools/src/sff/dsarpack.f amber11/AmberTools/src/sff/dsarpack.f
---- amber11.orig/AmberTools/src/sff/dsarpack.f 1970-01-01 03:00:00.000000000 +0300
-+++ amber11/AmberTools/src/sff/dsarpack.f 2011-10-25 19:52:58.579517634 +0300
-@@ -0,0 +1,654 @@
-+ subroutine dsarpack(n_dim,n_eig_in,n_eig_out,ncv_in,itr_in,
-+ & eigval_tol,eigvals,eigvecs,spectrum,
-+ & need_eigvecs,ierr,debug_arpack,
-+ & v,workl,workd,d,resid,ax,select,
-+ & xyz,grad,return_flag,label)
-+c
-+ implicit none
-+c
-+c %-----------------%
-+c | Dummy Arguments |
-+c %-----------------%
-+c
-+ integer n_dim,n_eig_in,n_eig_out,ncv_in,itr_in,spectrum,
-+ & need_eigvecs,ierr,debug_arpack,return_flag,label
-+ Double precision eigval_tol
-+ Double precision eigvals(n_eig_in),eigvecs(n_dim * n_eig_in)
-+ Double precision v(n_dim,ncv_in),
-+ & workl(ncv_in*(ncv_in+8)),workd(3*n_dim),
-+ & d(ncv_in,2),resid(n_dim),ax(n_dim),
-+ & xyz(n_dim),grad(n_dim)
-+ logical select(ncv_in)
-+c
-+ save
-+c
-+c %---------------%
-+c | Include Files |
-+c %---------------%
-+c
-+c include 'debug.h'
-+c
-+c\SCCS Information: @(#)
-+c FILE: debug.h SID: 2.3 DATE OF SID: 11/16/95 RELEASE: 2
-+c
-+c %---------------------------------%
-+c | See debug.doc for documentation |
-+c %---------------------------------%
-+ integer logfil, ndigit, mgetv0,
-+ & msaupd, msaup2, msaitr, mseigt, msapps, msgets, mseupd,
-+ & mnaupd, mnaup2, mnaitr, mneigh, mnapps, mngets, mneupd,
-+ & mcaupd, mcaup2, mcaitr, mceigh, mcapps, mcgets, mceupd
-+ common /debug/
-+ & logfil, ndigit, mgetv0,
-+ & msaupd, msaup2, msaitr, mseigt, msapps, msgets, mseupd,
-+ & mnaupd, mnaup2, mnaitr, mneigh, mnapps, mngets, mneupd,
-+ & mcaupd, mcaup2, mcaitr, mceigh, mcapps, mcgets, mceupd
-+c
-+c This code shows how to use ARPACK to find a few eigenvalues
-+c (lambda) and corresponding eigenvectors (x) for the standard
-+c eigenvalue problem:
-+c
-+c A*x = lambda*x
-+c
-+c where A is an n by n real symmetric matrix.
-+c
-+c The main points illustrated here are
-+c
-+c 1) How to declare sufficient memory to find NEV
-+c eigenvalues of largest magnitude. Other options
-+c are available.
-+c
-+c 2) Illustration of the reverse communication interface
-+c needed to utilize the top level ARPACK routine DSAUPD
-+c that computes the quantities needed to construct
-+c the desired eigenvalues and eigenvectors(if requested).
-+c
-+c 3) How to extract the desired eigenvalues and eigenvectors
-+c using the ARPACK routine DSEUPD.
-+c
-+c The only thing that must be supplied in order to use this
-+c routine on your problem is to change the array dimensions
-+c appropriately, to specify WHICH eigenvalues you want to compute
-+c and to supply a matrix-vector product
-+c
-+c w <- Av
-+c
-+c in place of the call to AV( ) below.
-+c
-+c Once usage of this routine is understood, you may wish to explore
-+c the other available options to improve convergence, to solve generalized
-+c problems, etc. Look at the file ex-sym.doc in DOCUMENTS directory.
-+c This codes implements
-+c
-+c\Example-1
-+c ... Suppose we want to solve A*x = lambda*x in regular mode,
-+c where A is derived from the central difference discretization
-+c of the 2-dimensional Laplacian on the unit square with
-+c zero Dirichlet boundary condition.
-+c ... OP = A and B = I.
-+c ... Assume "call av (n,x,y)" computes y = A*x
-+c ... Use mode 1 of DSAUPD.
-+c
-+c\BeginLib
-+c
-+c\Routines called:
-+c dsaupd ARPACK reverse communication interface routine.
-+c dseupd ARPACK routine that returns Ritz values and (optionally)
-+c Ritz vectors.
-+c dnrm2 Level 1 BLAS that computes the norm of a vector.
-+c daxpy Level 1 BLAS that computes y <- alpha*x+y.
-+c
-+c\Author
-+c Richard Lehoucq
-+c Danny Sorensen
-+c Chao Yang
-+c Dept. of Computational &
-+c Applied Mathematics
-+c Rice University
-+c Houston, Texas
-+c
-+c\SCCS Information: %Z%
-+c FILE: %M% SID: %I% DATE OF SID: %G% RELEASE: %R%
-+c
-+c\Remarks
-+c 1. None
-+c
-+c\EndLib
-+c
-+c-----------------------------------------------------------------------
-+c
-+c %-------------------------------------------------------%
-+c | Storage Declarations: |
-+c | |
-+c | The maximum dimensions for all arrays are |
-+c | set here to accommodate a problem size of |
-+c | N .le. MAXN |
-+c | |
-+c | NEV is the number of eigenvalues requested. |
-+c | See specifications for ARPACK usage below. |
-+c | |
-+c | NCV is the largest number of basis vectors that will |
-+c | be used in the Implicitly Restarted Arnoldi |
-+c | Process. Work per major iteration is |
-+c | proportional to N*NCV*NCV. |
-+c | |
-+c | You must set: |
-+c | |
-+c | MAXN: Maximum dimension of the A allowed. (dynamic) |
-+c | MAXNEV: Maximum NEV allowed. (dynamic) |
-+c | MAXNCV: Maximum NCV allowed. (dynamic) |
-+c %-------------------------------------------------------%
-+c
-+C %--------------------------------------%
-+C | F90 Allocatable Arrays (on the heap) |
-+C %--------------------------------------%
-+c
-+C Double precision,allocatable,save :: v(:,:)
-+C integer,save :: v_row_allocated = 0, v_col_allocated = 0
-+c
-+c %----------------------------------------------%
-+c | Originally, as F77 parameters, the following |
-+c | integers were used to dimension work arrays. |
-+c | They are replaced by dummy arguments used to |
-+c | dimension the work arrays as F90 automatic |
-+c | arrays, but the integers are still used for |
-+c | passing the dimensions to lower level ARPACK |
-+c | routines dsaupd, dseupd and dmout. |
-+c %----------------------------------------------%
-+c
-+ integer maxn, maxnev, maxncv, ldv
-+c
-+c %-------------------------------------------%
-+c | Local F90 Automatic Arrays (on the stack) |
-+c %-------------------------------------------%
-+c
-+ Double precision
-+C & workl(ncv_in*(ncv_in+8)),
-+C & workd(3*n_dim), d(ncv_in,2), resid(n_dim),
-+C & ax(n_dim),
-+ & cg_dstat(4)
-+C logical select(ncv_in)
-+ integer iparam(11), ipntr(11),
-+ & cg_istat(4)
-+c
-+c %---------------%
-+c | Local Scalars |
-+c %---------------%
-+c
-+ character bmat*1, which*2
-+ integer ido, n, nev, ncv, lworkl, info,
-+ & i, j, nx, ishfts, maxitr, mode1, nconv
-+ integer L12, L18, ARPACK_ERROR, status_flag
-+ data L12, L18, ARPACK_ERROR /1, 2, -2/
-+C integer v_row_needed, v_col_needed
-+ logical rvec
-+ Double precision
-+ & tol, sigma
-+c
-+c %------------%
-+c | Parameters |
-+c %------------%
-+c
-+ Double precision
-+ & zero
-+ parameter (zero = 0.0D+0)
-+c
-+c %-----------------------------%
-+c | BLAS & LAPACK routines used |
-+c %-----------------------------%
-+c
-+ Double precision
-+ & dnrm2
-+ external dnrm2, daxpy, hessvec
-+c
-+c %--------------------%
-+c | Intrinsic function |
-+c %--------------------%
-+c
-+ intrinsic abs
-+c
-+c %-----------------------%
-+c | Executable Statements |
-+c %-----------------------%
-+c
-+ if ( label.eq.0 ) go to 1
-+ go to (12,18) label
-+ 1 continue
-+c
-+c %------------------------------------------------%
-+c | Values used to calculate work array dimensions |
-+c %------------------------------------------------%
-+c
-+ maxn = n_dim
-+ maxnev = n_eig_in
-+ maxncv = ncv_in
-+ ldv = maxn
-+c
-+c %---------------------------------------------------%
-+c | The include debug.h statement above and |
-+c | assignments here initiate trace output from the |
-+c | internal actions of ARPACK. See debug.doc in the |
-+c | DOCUMENTS directory for usage. Initially, the |
-+c | most useful information will be a breakdown of |
-+c | time spent in the various stages of computation |
-+c | given by setting msaupd = 1. |
-+c %---------------------------------------------------%
-+c
-+ ndigit = -5
-+ logfil = 6
-+ msgets = 0
-+ msaitr = 0
-+ msapps = 0
-+ if ( debug_arpack.eq.1 ) then
-+ msaupd = 1
-+ else
-+ msaupd = 0
-+ endif
-+ msaup2 = 0
-+ mseigt = 0
-+ mseupd = 0
-+c
-+c *** Allocatable array v will be allowed to grow to its largest size;
-+c *** it is never deallocated:
-+C v_row_needed = n_dim !!! ldv
-+C v_col_needed = ncv_in !!! maxncv
-+C if( allocated(v) )then
-+C if( (v_row_needed .gt. v_row_allocated)
-+C & .or. (v_col_needed .gt. v_col_allocated) )then
-+C deallocate(v,stat=ierr)
-+C if( ierr .ne. 0 )then
-+C write( logfil, '(a,i16,1x,i8)' )
-+C & 'ARPACK: could not deallocate v'
-+C go to 9000
-+C endif
-+C endif
-+C endif
-+C if( .not. allocated(v) )then
-+C allocate( v(v_row_needed,v_col_needed), stat=ierr )
-+C if( ierr .ne. 0 )then
-+C write( logfil, '(a,2i10)' )
-+C & 'ARPACK: could not allocate v'
-+C go to 9000
-+C endif
-+C v_row_allocated = v_row_needed
-+C v_col_allocated = v_col_needed
-+C endif
-+C v = zero !!! zero out entire v array
-+c
-+c %-------------------------------------------------%
-+c | The following sets dimensions for this problem. |
-+c %-------------------------------------------------%
-+c
-+ n = n_dim
-+c
-+c %----------------------------------------------%
-+c | |
-+c | Specifications for ARPACK usage are set |
-+c | below: |
-+c | |
-+c | 1) NEV = N_EIG_IN asks for N_EIG_IN |
-+c | eigenvalues to be computed. |
-+c | |
-+c | 2) NCV = NCV_IN sets the length of the |
-+c | Arnoldi factorization |
-+c | |
-+c | 3) This is a standard problem |
-+c | (indicated by bmat = 'I') |
-+c | |
-+c | 4) Ask for the NEV eigenvalues of |
-+c | smallest magnitude |
-+c | (indicated by which = 'SM') |
-+c | See documentation in SSAUPD for the |
-+c | other options SA, LA, LM, BE. |
-+c | |
-+c | Note: NEV and NCV must satisfy the following |
-+c | conditions: |
-+c | NEV <= MAXNEV |
-+c | NEV + 1 <= NCV <= MAXNCV |
-+c %----------------------------------------------%
-+c
-+ nev = n_eig_in
-+ ncv = ncv_in
-+ bmat = 'I'
-+ if ( spectrum .eq. 1 ) then
-+ which = 'SM'
-+ else if ( spectrum .eq. 2 ) then
-+ which = 'SA'
-+ else if ( spectrum .eq. 3 ) then
-+ which = 'LM'
-+ else if ( spectrum .eq. 4 ) then
-+ which = 'LA'
-+ else if ( spectrum .eq. 5 ) then
-+ which = 'BE'
-+ else
-+ print *, ' ERROR with _SSIMP: Spectrum .NE. (SM|SA|LA|LM|BE)'
-+ go to 9000
-+ end if
-+c
-+ if ( n .gt. maxn ) then
-+ print *, ' ERROR with _SSIMP: N is greater than MAXN '
-+ go to 9000
-+ else if ( nev .gt. maxnev ) then
-+ print *, ' ERROR with _SSIMP: NEV is greater than MAXNEV '
-+ go to 9000
-+ else if ( ncv .gt. maxncv ) then
-+ print *, ' ERROR with _SSIMP: NCV is greater than MAXNCV '
-+ go to 9000
-+ end if
-+c
-+c %-----------------------------------------------------%
-+c | |
-+c | Specification of stopping rules and initial |
-+c | conditions before calling DSAUPD |
-+c | |
-+c | TOL determines the stopping criterion. |
-+c | |
-+c | Expect |
-+c | abs(lambdaC - lambdaT) < TOL*abs(lambdaC) |
-+c | computed true |
-+c | |
-+c | If TOL .le. 0, then TOL <- macheps |
-+c | (machine precision) is used. |
-+c | |
-+c | IDO is the REVERSE COMMUNICATION parameter |
-+c | used to specify actions to be taken on return |
-+c | from DSAUPD. (See usage below.) |
-+c | |
-+c | It MUST initially be set to 0 before the first |
-+c | call to DSAUPD. |
-+c | |
-+c | INFO on entry specifies starting vector information |
-+c | and on return indicates error codes |
-+c | |
-+c | Initially, setting INFO=0 indicates that a |
-+c | random starting vector is requested to |
-+c | start the ARNOLDI iteration. Setting INFO to |
-+c | a nonzero value on the initial call is used |
-+c | if you want to specify your own starting |
-+c | vector (This vector must be placed in RESID.) |
-+c | |
-+c | The work array WORKL is used in DSAUPD as |
-+c | workspace. Its dimension LWORKL is set as |
-+c | illustrated below. |
-+c | |
-+c %-----------------------------------------------------%
-+c
-+ lworkl = ncv*(ncv+8)
-+ tol = eigval_tol
-+ info = 0
-+ ido = 0
-+c
-+c %---------------------------------------------------%
-+c | Specification of Algorithm Mode: |
-+c | |
-+c | This program uses the exact shift strategy |
-+c | (indicated by setting PARAM(1) = 1). |
-+c | IPARAM(3) specifies the maximum number of Arnoldi |
-+c | iterations allowed. Mode 1 of DSAUPD is used |
-+c | (IPARAM(7) = 1). All these options can be changed |
-+c | by the user. For details see the documentation in |
-+c | DSAUPD. |
-+c %---------------------------------------------------%
-+c
-+ ishfts = 1
-+ maxitr = itr_in
-+ mode1 = 1
-+c
-+ iparam(1) = ishfts
-+c
-+ iparam(3) = maxitr
-+c
-+ iparam(7) = mode1
-+c
-+c %------------------------------------------------%
-+c | M A I N L O O P (Reverse communication loop) |
-+c %------------------------------------------------%
-+c
-+ 10 continue
-+c
-+c %---------------------------------------------%
-+c | Repeatedly call the routine DSAUPD and take |
-+c | actions indicated by parameter IDO until |
-+c | either convergence is indicated or maxitr |
-+c | has been exceeded. |
-+c %---------------------------------------------%
-+c
-+ call dsaupd ( ido, bmat, n, which, nev, tol, resid,
-+ & ncv, v, ldv, iparam, ipntr, workd, workl,
-+ & lworkl, info )
-+c
-+ if (ido .eq. -1 .or. ido .eq. 1) then
-+c
-+c %--------------------------------------%
-+c | Perform matrix vector multiplication |
-+c | y <--- OP*x |
-+c | The user should supply his/her own |
-+c | matrix vector multiplication routine |
-+c | here that takes workd(ipntr(1)) as |
-+c | the input, and return the result to |
-+c | workd(ipntr(2)). |
-+c %--------------------------------------%
-+c
-+ status_flag = 0
-+ 11 continue
-+ call hessvec ( n, workd(ipntr(1)), workd(ipntr(2)),
-+ & xyz, grad, return_flag, status_flag )
-+ if ( status_flag.eq.0 ) go to 13
-+ if ( status_flag.lt.0 ) go to 9000
-+ label = L12
-+ return
-+ 12 go to 11
-+ 13 continue
-+c
-+c %-----------------------------------------%
-+c | L O O P B A C K to call DSAUPD again. |
-+c %-----------------------------------------%
-+c
-+ go to 10
-+c
-+ end if
-+c
-+c %----------------------------------------%
-+c | Either we have convergence or there is |
-+c | an error. |
-+c %----------------------------------------%
-+c
-+ if ( info .lt. 0 ) then
-+c
-+c %--------------------------%
-+c | Error message. Check the |
-+c | documentation in DSAUPD. |
-+c %--------------------------%
-+c
-+ print *, ' '
-+ print *, ' Error with _saupd, info = ', info
-+ print *, ' Check documentation in _saupd '
-+ print *, ' '
-+ go to 9000
-+c
-+ else
-+c
-+c %-------------------------------------------%
-+c | No fatal errors occurred. |
-+c | Post-Process using DSEUPD. |
-+c | |
-+c | Computed eigenvalues may be extracted. |
-+c | |
-+c | Eigenvectors may be also computed now if |
-+c | desired. (indicated by rvec = .true.) |
-+c | |
-+c | The routine DSEUPD now called to do this |
-+c | post processing (Other modes may require |
-+c | more complicated post processing than |
-+c | mode1.) |
-+c | |
-+c %-------------------------------------------%
-+c
-+ if ( need_eigvecs .eq. 1 ) then
-+ rvec = .true.
-+ else
-+ rvec = .false.
-+ end if
-+c
-+ call dseupd ( rvec, 'All', select, d, v, ldv, sigma,
-+ & bmat, n, which, nev, tol, resid, ncv, v, ldv,
-+ & iparam, ipntr, workd, workl, lworkl, ierr )
-+c
-+c %----------------------------------------------%
-+c | Eigenvalues are returned in the first column |
-+c | of the two dimensional array D and the |
-+c | corresponding eigenvectors are returned in |
-+c | the first NCONV (=IPARAM(5)) columns of the |
-+c | two dimensional array V if requested. |
-+c | Otherwise, an orthogonal basis for the |
-+c | invariant subspace corresponding to the |
-+c | eigenvalues in D is returned in V. |
-+c %----------------------------------------------%
-+c
-+ if ( ierr .ne. 0) then
-+c
-+c %------------------------------------%
-+c | Error condition: |
-+c | Check the documentation of DSEUPD. |
-+c %------------------------------------%
-+c
-+ print *, ' '
-+ print *, ' Error with _seupd, info = ', ierr
-+ print *, ' Check the documentation of _seupd. '
-+ print *, ' '
-+ go to 9000
-+c
-+ else if ( debug_arpack.eq.1 ) then
-+c
-+ nconv = iparam(5)
-+ n_eig_out = nconv
-+ if ( nconv .le. 0 ) then
-+ print *, ' '
-+ print *, ' ARPACK: Not a single mode converged.'
-+ print *, ' '
-+ go to 9000
-+ endif
-+c
-+C %--------------------------------------------%
-+C | "UnDO" DO 20 j=1,nconv loop, because it is |
-+C | illegal to jump in and out from a DO loop. |
-+C %--------------------------------------------%
-+c
-+ j = 1
-+ 16 continue
-+c
-+c %---------------------------%
-+c | Compute the residual norm |
-+c | |
-+c | || A*x - lambda*x || |
-+c | |
-+c | for the NCONV accurately |
-+c | computed eigenvalues and |
-+c | eigenvectors. (iparam(5) |
-+c | indicates how many are |
-+c | accurate to the requested |
-+c | tolerance) |
-+c %---------------------------%
-+c
-+ status_flag = 0
-+ 17 continue
-+ call hessvec ( n, v(1,j), ax, xyz, grad,
-+ & return_flag, status_flag )
-+ if ( status_flag.eq.0 ) go to 19
-+ if ( status_flag.lt.0 ) go to 9000
-+ label = L18
-+ return
-+ 18 go to 17
-+ 19 continue
-+c
-+ call daxpy(n, -d(j,1), v(1,j), 1, ax, 1)
-+ d(j,2) = dnrm2(n, ax, 1)
-+ d(j,2) = d(j,2) / abs(d(j,1))
-+c
-+ j = j + 1
-+ if ( j .gt. nconv ) go to 20
-+c
-+ go to 16
-+c
-+ 20 continue
-+c
-+c %-----------------------------%
-+c | Display computed residuals. |
-+c %-----------------------------%
-+c
-+ call dmout(6, nconv, 2, d, maxncv, -6,
-+ & 'Ritz values and relative residuals')
-+c
-+c %-------------------------------------------%
-+c | Print additional convergence information. |
-+c %-------------------------------------------%
-+c
-+ if ( info .eq. 1) then
-+ print *, ' '
-+ print *, ' Maximum number of iterations reached.'
-+ print *, ' '
-+ else if ( info .eq. 3) then
-+ print *, ' '
-+ print *, ' No shifts could be applied during implicit',
-+ & ' Arnoldi update, try increasing NCV.'
-+ print *, ' '
-+ end if
-+c
-+ print *, ' '
-+ print *, ' _SSIMP '
-+ print *, ' ====== '
-+ print *, ' '
-+ print *, ' Size of the matrix is ', n
-+ print *, ' The number of Ritz values requested is ', nev
-+ print *, ' The number of Arnoldi vectors generated',
-+ & ' (NCV) is ', ncv
-+ print *, ' What portion of the spectrum: ', which
-+ print *, ' The number of converged Ritz values is ',
-+ & nconv
-+ print *, ' The number of Implicit Arnoldi update',
-+ & ' iterations taken is ', iparam(3)
-+ print *, ' The number of OP*x is ', iparam(9)
-+ print *, ' The convergence criterion is ', tol
-+ print *, ' '
-+ end if
-+c
-+c %----------------------------%
-+c | Return eigvals and eigvecs |
-+c %----------------------------%
-+c
-+ nconv = iparam(5)
-+ n_eig_out = nconv
-+ if ( nconv .le. 0 ) then
-+ print *, ' '
-+ print *, ' ARPACK: Not a single mode converged.'
-+ print *, ' '
-+ go to 9000
-+ endif
-+c
-+ do 40 j=1, nconv
-+ eigvals(j) = d(j,1)
-+c
-+ do 30 i=1, n
-+ eigvecs((j-1)*n+i) = v(i,j)
-+ 30 continue
-+ 40 continue
-+c
-+ end if
-+c
-+c %--------------------------------%
-+c | Done with subroutine dsarpack. |
-+c %--------------------------------%
-+c
-+ label = 0
-+ return
-+c
-+ 9000 continue !!! Error
-+c
-+ if( status_flag.eq.0 ) status_flag = ARPACK_ERROR
-+c
-+ label = status_flag
-+ return
-+c
-+ end
-+c
-+c ------------------------------------------------------------------
-diff -urN amber11.orig/AmberTools/src/sff/Makefile amber11/AmberTools/src/sff/Makefile
---- amber11.orig/AmberTools/src/sff/Makefile 2011-04-14 15:30:19.000000000 +0300
-+++ amber11/AmberTools/src/sff/Makefile 2011-10-25 22:11:23.964319736 +0300
-@@ -1,11 +1,12 @@
- include ../config.h
-
- .c.o:
-- $(CC) -c -Dflex $(COPTFLAGS) $(CFLAGS) $(AMBERCFLAGS) $(RISMSFF) -o $@ $<
-+ $(CC) -c -Dflex $(COPTFLAGS) $(CFLAGS) $(AMBERCFLAGS) $(RISMSFF) $(NETCDFLIB) -o $@ $<
-
- OBJS = binpos.o conjgrad.o lmodC.o memutil.o nblist.o newton.o nmode.o \
- prm.o rand2.o sasad.o sff.o time.o xminC.o AmberNetcdf.o \
-- amber_rism_interface.o
-+ amber_rism_interface.o \
-+ dsarpack.o \
-
- install: libsff hcp_getpdb
-
-diff -urN amber11.orig/AmberTools/src/sqm/Makefile amber11/AmberTools/src/sqm/Makefile
---- amber11.orig/AmberTools/src/sqm/Makefile 2011-04-14 15:30:20.000000000 +0300
-+++ amber11/AmberTools/src/sqm/Makefile 2011-10-25 22:17:29.627071134 +0300
-@@ -77,7 +77,7 @@
- install: sqm$(SFX)
- mv sqm$(SFX) $(BINDIR)
-
--sqm$(SFX): $(SQMOBJ) $(QMOBJ) netlib sys
-+sqm$(SFX): $(SQMOBJ) $(QMOBJ) sys
- $(FC) $(FFLAGS) $(AMBERFFLAGS) -o sqm$(SFX) $(SQMOBJ) $(QMOBJ) \
- $(FLIBSF) ../lib/sys.a $(LDFLAGS) $(AMBERLDFLAGS)
-
-@@ -94,11 +94,6 @@
- sys:
- cd ../lib; $(MAKE) sys.a
-
--netlib:
-- cd ../lapack; $(MAKE) $(LAPACK)
-- cd ../blas; $(MAKE) $(BLAS)
-- cd ../arpack && $(MAKE) install
--
- clean:
- /bin/rm -f *.o _*.f *.mod *.d sqm$(SFX)
-
-diff -urN amber11.orig/AmberTools/test/Makefile amber11/AmberTools/test/Makefile
---- amber11.orig/AmberTools/test/Makefile 2011-04-14 15:30:55.000000000 +0300
-+++ amber11/AmberTools/test/Makefile 2011-10-25 22:36:59.285906153 +0300
-@@ -12,7 +12,7 @@
-
- test.serial: clean is_amberhome_defined \
- test.nab test.ptraj test.cpptraj test.antechamber \
-- test.leap test.sleap test.resp test.pbsa test.mmpbsa \
-+ test.leap test.resp test.pbsa test.mmpbsa \
- test.ambpdb test.elsize test.chamber test.sqm test.rism1d \
- finished
-
-diff -urN amber11.orig/AmberTools/test/test_at_serial.sh amber11/AmberTools/test/test_at_serial.sh
---- amber11.orig/AmberTools/test/test_at_serial.sh 2011-03-10 20:12:24.000000000 +0200
-+++ amber11/AmberTools/test/test_at_serial.sh 2011-10-25 21:52:52.178189963 +0300
-@@ -50,3 +50,9 @@
- else
- echo "No test diffs to save!"
- fi
-+
-+if [ "${questionable_count}" -ne 0 -o "${error_count}" -ne 0 ]
-+then
-+ # Tests failed
-+ exit 1
-+fi
diff --git a/sci-chemistry/ambertools/files/ambertools-1.5-overflow.patch b/sci-chemistry/ambertools/files/ambertools-1.5-overflow.patch
deleted file mode 100644
index 14455f1ba..000000000
--- a/sci-chemistry/ambertools/files/ambertools-1.5-overflow.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-diff -urN amber11.orig/AmberTools/src/nab/database.c amber11/AmberTools/src/nab/database.c
---- amber11.orig/AmberTools/src/nab/database.c 2011-03-10 20:12:15.000000000 +0200
-+++ amber11/AmberTools/src/nab/database.c 2012-03-03 23:59:25.225368331 +0200
-@@ -671,7 +671,7 @@
-
- static Bool zbDBReadLine( db, sLine )
- DATABASE db;
--char* sLine;
-+char sLine[MAXDATALINELEN];
- {
-
-
-@@ -706,7 +706,7 @@
-
- static Bool zbDBReadDataLine( db, sLine )
- DATABASE db;
--char* sLine;
-+char sLine[MAXDATALINELEN];
- {
-
-
-@@ -1135,7 +1135,7 @@
- char* PBuffer;
- int iBufferInc;
- {
--String sLine;
-+String sLine[MAXDATALINELEN];
-
-
-
diff --git a/sci-chemistry/ambertools/files/ambertools-12-bugfix_14-26.patch b/sci-chemistry/ambertools/files/ambertools-12-bugfix_14-26.patch
deleted file mode 100644
index da9712cbb..000000000
--- a/sci-chemistry/ambertools/files/ambertools-12-bugfix_14-26.patch
+++ /dev/null
@@ -1,14856 +0,0 @@
-diff --git a/AmberTools/src/configure2 b/AmberTools/src/configure2
-index 25d3f0a..9ce5ef0 100755
---- a/AmberTools/src/configure2
-+++ b/AmberTools/src/configure2
-@@ -24,17 +24,19 @@ Usage: ./configure [flags] compiler
- in your PATH; Note: you must first configure and build
- a serial AmberTools.
- -cuda Builds the NVIDIA GPU version of pmemd (pmemd.cuda and
-- pmemd.cuda.MPI) with default SPDP hybrid precision.
-+ pmemd.cuda.MPI) with default SPFP mixed single/double/
-+ fixed-point precision.
- (Note: Set CUDA_HOME to your cuda build tools installation
- path.)
-- -cuda_SPDP Currently just an alias to CUDA
-- -cuda_DPDP Builds the NVIDIA GPU version of pmemd (pmemd.cuda and
-- pmemd.cuda.MPI) with full double precision. (Considerably
-- slower than SPDP for many cards without a meaningful gain
-- in accuracy)
-- -cuda_SPSP Builds the NVIDIA GPU version of pmemd (pmemd.cuda and
-- pmemd.cuda.MPI) with full single precision. (Not a good
-- choice for production runs!)
-+ -cuda_SPDP Builds the NVIDIA GPU version of pmemd (pmemd_SPDP.cuda and
-+ pmemd.cuda_SPDP.MPI) with SPDP hybrid precision. (This was
-+ the default for previous versions of AMBER but has now been
-+ superseded by the SPFP mixed precision model).
-+ -cuda_DPDP Builds the NVIDIA GPU version of pmemd (pmemd.cuda_DPDP and
-+ pmemd.cuda_DPDP.MPI) with full double precision. (Considerably
-+ slower than SPDP and SPFP for many cards without a meaningful
-+ gain in accuracy)
-+ -cuda_SPFP Currently an alias to -cuda.
- -openmp Use OpenMP pragmas to parallelize NAB and paramfit
- (not available for pgi).
- Do not use -openmp and -mpi at the same time. Type "make
-@@ -149,8 +151,8 @@ fi
- #------------------------------------------------------------------------------
- mpi='no'
- mpinab=''
--cuda='no'
--cuda_SPSP='no'
-+cuda_SPFP='no'
-+cuda_SPDP='no'
- cuda_DPDP='no'
- scali='no'
- scalapack='no'
-@@ -222,9 +224,9 @@ if [ $# -lt 1 ]; then usage; fi
- while [ $# -gt 0 ]; do
- case "$1" in
- -mpi) mpi='yes'; mpinab='mpi'; mdgx='no';mtkpp='' ;;
-- -cuda) cuda='yes';rism='no';pbsaflag='';mdgx='no';mtkpp='' ;;
-- -cuda_SPDP) cuda='yes';rism='no';pbsaflag='';mdgx='no';mtkpp='' ;;
-- -cuda_SPSP) cuda_SPSP='yes';rism='no';pbsaflag='';mdgx='no';mtkpp='' ;;
-+ -cuda) cuda_SPFP='yes';rism='no';pbsaflag='';mdgx='no';mtkpp='' ;;
-+ -cuda_SPFP) cuda_SPFP='yes';rism='no';pbsaflag='';mdgx='no';mtkpp='' ;;
-+ -cuda_SPDP) cuda_SPDP='yes';rism='no';pbsaflag='';mdgx='no';mtkpp='' ;;
- -cuda_DPDP) cuda_DPDP='yes';rism='no';pbsaflag='';mdgx='no';mtkpp='' ;;
- -scali) scali='yes' ;;
- -scalapack) scalapack='yes' ;;
-@@ -443,22 +445,22 @@ if [ "$noX11" = "false" ]; then
- echo " On old Fedora OS's install the xorg-x11-devel package."
- echo " On RedHat OS's install the XFree86-devel package."
- echo " On Ubuntu OS's install the xorg-dev package."
-- echo " To build Amber without XLEaP, re-run configure with '-no-X11:"
-- echo " `mod_command_args '' '-no-X11'`"
-- exit 1
-+ echo " To build Amber without XLEaP, re-run configure with '-noX11:"
-+ echo " `mod_command_args '' '-noX11'`"
-+ exit 1
- fi
-
- if [ -d /usr/include/X11/extensions ]
- then
- empty_statement=
-- else
-+ elif [ "$is_mac" = "no" ]; then
- echo "ERROR: the X11 extensions headers are not in the usual location!"
- echo " To search for them try the command: locate X11/extensions"
- echo " On new Fedora OSes install libXext-devel"
- echo " On RedHat OSes install libXext-devel"
-- echo " To build Amber without XLEaP, re-run configure with '-no-X11:"
-- echo " `mod_command_args '' '-no-X11'`"
-- exit 1
-+ echo " To build Amber without XLEaP, re-run configure with '-noX11:"
-+ echo " `mod_command_args '' '-noX11'`"
-+ exit 1
- fi
- fi
-
-@@ -544,7 +546,7 @@ fi
- #------------------------------------------------------------------------------
- # Determine which type of installation we're doing
- #------------------------------------------------------------------------------
--if [ "$cuda" = 'yes' -o "$cuda_SPSP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
-+if [ "$cuda_SPFP" = 'yes' -o "$cuda_SPDP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
- if [ "$mpi" = 'yes' ]; then
- installtype='cuda_parallel'
- else
-@@ -559,7 +561,7 @@ fi
- #------------------------------------------------------------------------------
- # Check for cuda incompatibilities or missing files:
- #------------------------------------------------------------------------------
--if [ "$cuda" = 'yes' -o "$cuda_SPSP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
-+if [ "$cuda_SPFP" = 'yes' -o "$cuda_SPDP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
- if [ -z "$CUDA_HOME" ]; then
- echo "Error: CUDA_HOME is not set. This must point to your NVIDIA tools installation"
- exit 1
-@@ -572,25 +574,26 @@ if [ "$cuda" = 'yes' -o "$cuda_SPSP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
- echo "Error: nvcc cuda compiler not found in $CUDA_HOME/bin/"
- exit 1
- fi
-- #Check for mixing of cuda with cuda_SPSP or cuda_DPDP debugging options.
-- #cuda = SPDP mixed precision (default)
-- #cuda_SPSP = SPSP single precision only - except shake (debug option!)
-+ #Check for mixing of cuda with cuda_SPDP or cuda_DPDP debugging options.
-+ #cuda = SPFP mixed single/double/fixed-point precision (default)
-+ #cuda_SPFP = SPFP mixed single/double/fixed-point precision (default)
-+ #cuda_SPDP = SPDP hybrid single/double precision (debug option!)
- #cuda_DPDP = DPDP double precision only (debug option!)
-- if [ "$cuda" = 'yes' ]; then
-- if [ "$cuda_SPSP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
-- echo "Error: specification of -cuda, -cuda_SPSP and -cuda_DPDP are mutually exclusive"
-+ if [ "$cuda_SPFP" = 'yes' ]; then
-+ if [ "$cuda_SPDP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
-+ echo "Error: specification of -cuda, -cuda_SPDP and -cuda_DPDP are mutually exclusive"
- exit 1
- fi
- fi
-- if [ "$cuda_SPSP" = 'yes' ]; then
-- if [ "$cuda" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
-- echo "Error: specification of -cuda, -cuda_SPSP and -cuda_DPDP are mutually exclusive"
-+ if [ "$cuda_SPDP" = 'yes' ]; then
-+ if [ "$cuda_SPFP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
-+ echo "Error: specification of -cuda, -cuda_SPDP and -cuda_DPDP are mutually exclusive"
- exit 1
- fi
- fi
- if [ "$cuda_DPDP" = 'yes' ]; then
-- if [ "$cuda" = 'yes' -o "$cuda_SPSP" = 'yes' ]; then
-- echo "Error: specification of -cuda, -cuda_SPSP and -cuda_DPDP are mutually exclusive"
-+ if [ "$cuda_SPFP" = 'yes' -o "$cuda_SPDP" = 'yes' ]; then
-+ echo "Error: specification of -cuda, -cuda_SPDP and -cuda_DPDP are mutually exclusive"
- exit 1
- fi
- fi
-@@ -736,14 +739,15 @@ gnu)
- pmemd_coptflags="$coptflags"
-
- #CUDA Specifics
-- if [ "$cuda" = 'yes' -o "$cuda_SPSP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
-+ if [ "$cuda_SPFP" = 'yes' -o "$cuda_SPDP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
- pmemd_cu_includes='-I$(CUDA_HOME)/include -IB40C -IB40C/KernelCommon'
- pmemd_cu_defines='-DCUDA'
- pmemd_cu_libs='./cuda/cuda.a -L$(CUDA_HOME)/lib64 -L$(CUDA_HOME)/lib -lcurand -lcufft -lcudart'
- if [ "$optimise" = 'no' ]; then
-- nvcc='$(CUDA_HOME)/bin/nvcc -use_fast_math -O0 -gencode arch=compute_13,code=sm_13 -gencode arch=compute_20,code=sm_20'
-+ nvcc='$(CUDA_HOME)/bin/nvcc -use_fast_math -O0 -gencode arch=compute_13,code=sm_13 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30'
- else
-- nvcc='$(CUDA_HOME)/bin/nvcc -use_fast_math -O3 -gencode arch=compute_13,code=sm_13 -gencode arch=compute_20,code=sm_20'
-+ #2012/05/30 - Removed -O3 here because of 'possible' performance regression. - Scott sees this. Ross can't reproduce it.
-+ nvcc='$(CUDA_HOME)/bin/nvcc -use_fast_math -gencode arch=compute_13,code=sm_13 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30'
- fi
- if [ "$mpi" = 'yes' ]; then
- mpi_inc=`(mpicc -show 2>&1) | awk 'BEGIN{i=0} {while (i < NF) {if ( substr($i, 1, 2) == "-I" ) {printf("%s ", $i);}; i++;}}'`
-@@ -752,8 +756,11 @@ gnu)
- pmemd_coptflags="$coptflags -DMPICH_IGNORE_CXX_SEEK"
- fi
- fi
-- if [ "$cuda_SPSP" = 'yes' ]; then
-- pmemd_cu_defines="$pmemd_cu_defines -Duse_SPSP"
-+ if [ "$cuda_SPFP" = 'yes' ]; then
-+ pmemd_cu_defines="$pmemd_cu_defines -Duse_SPFP"
-+ fi
-+ if [ "$cuda_SPDP" = 'yes' ]; then
-+ pmemd_cu_defines="$pmemd_cu_defines -Duse_SPDP"
- fi
- if [ "$cuda_DPDP" = 'yes' ]; then
- pmemd_cu_defines="$pmemd_cu_defines -Duse_DPDP"
-@@ -1001,7 +1008,7 @@ intel)
- fi
-
- #CUDA Specifics
-- if [ "$cuda" = 'yes' -o "$cuda_SPSP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
-+ if [ "$cuda_SPFP" = 'yes' -o "$cuda_SPDP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
-
- # -ipo (multi-file Interprocedural Optimizations optimizations) causes issues with
- # CUDA c code linking. Leave at a single-file IPO for the moment MJW
-@@ -1012,9 +1019,10 @@ intel)
- pmemd_cu_defines='-DCUDA'
- pmemd_cu_libs='./cuda/cuda.a -L$(CUDA_HOME)/lib64 -L$(CUDA_HOME)/lib -lcurand -lcufft -lcudart'
- if [ "$optimise" = 'yes' ]; then
-- nvcc='$(CUDA_HOME)/bin/nvcc -use_fast_math -O3 -gencode arch=compute_13,code=sm_13 -gencode arch=compute_20,code=sm_20'
-+ #2012/05/30 - Removed -O3 here because of 'possible' performance regression. - Scott sees this. Ross can't reproduce it.
-+ nvcc='$(CUDA_HOME)/bin/nvcc -use_fast_math -gencode arch=compute_13,code=sm_13 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30'
- else
-- nvcc='$(CUDA_HOME)/bin/nvcc -use_fast_math -O0 -gencode arch=compute_13,code=sm_13 -gencode arch=compute_20,code=sm_20'
-+ nvcc='$(CUDA_HOME)/bin/nvcc -use_fast_math -O0 -gencode arch=compute_13,code=sm_13 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30'
- fi
-
- if [ "$mpi" = 'yes' ]; then
-@@ -1024,8 +1032,11 @@ intel)
- pmemd_coptflags="$pmemd_coptflags -DMPICH_IGNORE_CXX_SEEK"
- fi
- fi
-- if [ "$cuda_SPSP" = 'yes' ]; then
-- pmemd_cu_defines="$pmemd_cu_defines -Duse_SPSP"
-+ if [ "$cuda_SPFP" = 'yes' ]; then
-+ pmemd_cu_defines="$pmemd_cu_defines -Duse_SPFP"
-+ fi
-+ if [ "$cuda_SPDP" = 'yes' ]; then
-+ pmemd_cu_defines="$pmemd_cu_defines -Duse_SPDP"
- fi
- if [ "$cuda_DPDP" = 'yes' ]; then
- pmemd_cu_defines="$pmemd_cu_defines -Duse_DPDP"
-@@ -1131,7 +1142,7 @@ pgi)
- foptflags="$foptflags -fastsse"
- fi
-
-- if [ "$cuda" = "yes" -o "$cuda_SPSP" = "yes" -o "$cuda_DPDP" = "yes" ]; then
-+ if [ "$cuda_SPFP" = "yes" -o "$cuda_SPDP" = "yes" -o "$cuda_DPDP" = "yes" ]; then
- echo "ERROR: cuda is not available for pgi."
- echo " Please re-run configure without CUDA flags to use this compiler:"
- echo " `mod_command_args '-cuda -cuda_SPDP -cuda_DPDP' ''`"
-@@ -1258,7 +1269,7 @@ solaris)
- flibs_arch="$flibs_arch $SCALAPACKHOME/scalapack_SUN64.a $BLACSHOME/blacsF77init_MPI-SUN64-0.a $BLACSHOME/blacs_MPI-SUN64-0.a $BLACSHOME/blacsCinit_MPI-SUN64-0.a -lmpi"
- fi
-
-- if [ "$cuda" = 'yes' -o "$cuda_SPSP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
-+ if [ "$cuda_SPFP" = 'yes' -o "$cuda_SPDP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
- echo "ERROR: cuda is not available for solaris."
- echo " Please re-run configure without CUDA flags to use this compiler:"
- echo " `mod_command_args '-cuda -cuda_SPDP -cuda_DPDP' ''`"
-@@ -1306,6 +1317,13 @@ open64)
- echo "open64 setting is experimental."
- fi
-
-+ if [ "$cuda_SPFP" = 'yes' -o "$cuda_SPDP" = 'yes' -o "$cuda_DPDP" = 'yes' ]; then
-+ echo "ERROR: CUDA is not compatible with this compiler"
-+ echo " Please re-run configure without CUDA flags to use this compiler:"
-+ echo " `mod_command_args '-cuda -cuda_SPDP -cuda_DPDP' ''`"
-+ exit 1
-+ fi
-+
- if [ "$mpi" = 'yes' ]; then
- ld=' mpif90 '
- else
-diff --git a/AmberTools/src/cpptraj/src/ActionList.cpp b/AmberTools/src/cpptraj/src/ActionList.cpp
-index db3a157..f999e7f 100644
---- a/AmberTools/src/cpptraj/src/ActionList.cpp
-+++ b/AmberTools/src/cpptraj/src/ActionList.cpp
-@@ -33,6 +33,7 @@
- #include "Action_Rotdif.h"
- #include "Action_RunningAvg.h"
- #include "Action_RmsAvgCorr.h"
-+#include "Action_AutoImage.h"
-
- // CONSTRUCTOR
- ActionList::ActionList() {
-@@ -77,7 +78,7 @@ int ActionList::AddAction(ArgList &argIn) {
- else if (argIn.CommandIs("secstruct")) {Act=new DSSP; }
- else if (argIn.CommandIs("center")) {Act=new Center; }
- else if (argIn.CommandIs("hbond")) {Act=new Hbond; }
-- else if (argIn.CommandIs("image")) {Act=new Image; }
-+ else if (argIn.CommandIs("image")) {Act=new Action_Image; }
- else if (argIn.CommandIs("surf")) {Act=new Surf; }
- else if (argIn.CommandIs("radgyr")) {Act=new Radgyr; }
- else if (argIn.CommandIs("mask")) {Act=new ActionMask;}
-@@ -101,6 +102,7 @@ int ActionList::AddAction(ArgList &argIn) {
- else if (argIn.CommandIs("runningaverage")) {Act=new RunningAvg;}
- else if (argIn.CommandIs("runavg")) {Act=new RunningAvg;}
- else if (argIn.CommandIs("rmsavgcorr")) {Act=new RmsAvgCorr;}
-+ else if (argIn.CommandIs("autoimage")) {Act=new Action_AutoImage;}
- // PTRAJ
- else if (argIn.CommandIs("atomicfluct") ||
- argIn.CommandIs("atomicfluct3D") ||
-diff --git a/AmberTools/src/cpptraj/src/Action_AutoImage.cpp b/AmberTools/src/cpptraj/src/Action_AutoImage.cpp
-index e69de29..ca61dc6 100644
---- a/AmberTools/src/cpptraj/src/Action_AutoImage.cpp
-+++ b/AmberTools/src/cpptraj/src/Action_AutoImage.cpp
-@@ -0,0 +1,273 @@
-+#include "Action_AutoImage.h"
-+#include "CpptrajStdio.h"
-+#include "DistRoutines.h"
-+
-+// CONSTRUCTOR
-+Action_AutoImage::Action_AutoImage() :
-+ origin_(false),
-+ ortho_(false),
-+ center_(false),
-+ truncoct_(false),
-+ triclinic_(OFF)
-+{}
-+
-+// Action_AutoImage::init()
-+/** Usage: autoimage <mask> | anchor <mask> [fixed <fmask>] [mobile <mmask>]
-+ * [origin] [familiar | triclinic]
-+ */
-+int Action_AutoImage::init() {
-+ // Get keywords
-+ origin_ = actionArgs.hasKey("origin");
-+ center_ = actionArgs.hasKey("center");
-+ if (actionArgs.hasKey("familiar")) triclinic_ = FAMILIAR;
-+ if (actionArgs.hasKey("triclinic")) triclinic_ = FORCE;
-+ anchor_ = actionArgs.getKeyString("anchor",NULL);
-+ fixed_ = actionArgs.getKeyString("fixed",NULL);
-+ mobile_ = actionArgs.getKeyString("mobile",NULL);
-+ // Get mask expression for anchor if none yet specified
-+ if (anchor_==NULL)
-+ anchor_ = actionArgs.getNextMask();
-+
-+ mprintf(" AUTOIMAGE: To");
-+ if (origin_)
-+ mprintf(" origin");
-+ else
-+ mprintf(" box center");
-+ mprintf(" based on");
-+ if (center_)
-+ mprintf(" center of mass");
-+ else
-+ mprintf(" first atom position");
-+ if (anchor_!=NULL)
-+ mprintf(", anchor mask is [%s]\n", anchor_);
-+ else
-+ mprintf(", anchor is first molecule.\n");
-+ if (fixed_!=NULL)
-+ mprintf("\tAtoms in mask [%s] will be fixed to anchor region.\n", fixed_);
-+ if (mobile_!=NULL)
-+ mprintf("\tAtoms in mask [%s] will be imaged independently of anchor region.\n",
-+ mobile_);
-+
-+ return 0;
-+}
-+
-+// Action_AutoImage::SetupAtomRanges()
-+/** Based on the given atom mask expression determine what molecules are
-+ * selected by the mask.
-+ * \return A list of atom pairs that mark the beginning and end of each
-+ * selected molecule.
-+ */
-+Action_AutoImage::pairList Action_AutoImage::SetupAtomRanges( const char* maskexpr )
-+{
-+ pairList imageList;
-+ AtomMask Mask1;
-+ if (Mask1.SetMaskString( (char*)maskexpr )) return imageList;
-+
-+ if (currentParm->SetupCharMask( Mask1, activeReference )) return imageList;
-+ if (Mask1.None()) return imageList;
-+
-+ int* AtomsPerMol = currentParm->AtomsPerMol_ptr();
-+ int firstAtom = 0;
-+ int lastAtom = 0;
-+ for (int molnum = 0; molnum < currentParm->Nmol(); ++molnum)
-+ {
-+ firstAtom = lastAtom;
-+ lastAtom += AtomsPerMol[ molnum ];
-+ // Check that each atom in the range is in Mask1
-+ bool rangeIsValid = true;
-+ for (int atom = firstAtom; atom < lastAtom; ++atom) {
-+ if (!Mask1.AtomInCharMask(atom)) {
-+ rangeIsValid = false;
-+ break;
-+ }
-+ }
-+ if (rangeIsValid) {
-+ imageList.push_back( firstAtom );
-+ imageList.push_back( lastAtom );
-+ }
-+ }
-+ mprintf("\tMask [%s] corresponds to %zu molecules\n", Mask1.MaskString(), imageList.size()/2);
-+ return imageList;
-+}
-+
-+// Action_AutoImage::setup()
-+int Action_AutoImage::setup() {
-+ bool fixedauto = false;
-+ bool mobileauto = false;
-+
-+ // Require molecule info
-+ int* AtomsPerMol = currentParm->AtomsPerMol_ptr();
-+ if (AtomsPerMol == NULL) {
-+ mprinterr("Error: AutoImage: No molecule information in %s\n", currentParm->parmName);
-+ return 1;
-+ }
-+ // Determine Box info
-+ if (currentParm->boxType==NOBOX) {
-+ mprintf("Warning: Image::setup: Parm %s does not contain box information.\n",
-+ currentParm->parmName);
-+ return 1;
-+ }
-+ ortho_ = false;
-+ if (currentParm->boxType==ORTHO && triclinic_==OFF) ortho_=true;
-+ // If box is originally truncated oct and not forcing triclinic,
-+ // turn familiar on.
-+ if (AmberIfbox( currentParm->Box[4] )==2 && triclinic_!=FORCE && triclinic_!=FAMILIAR) {
-+ mprintf("\tOriginal box is truncated octahedron, turning on 'familiar'.\n");
-+ triclinic_=FAMILIAR;
-+ }
-+
-+ // Set up anchor region
-+ if (anchor_!=NULL) {
-+ anchorList_ = SetupAtomRanges( anchor_ );
-+ } else {
-+ anchorList_.clear();
-+ anchorList_.push_back( 0 );
-+ anchorList_.push_back( AtomsPerMol[0] );
-+ }
-+ if (anchorList_.empty() || anchorList_.size() > 2) {
-+ mprinterr("Error: Anchor mask [%s] corresponds to %zu mols, should only be 1.\n",
-+ anchor_, anchorList_.size() / 2);
-+ return 1;
-+ }
-+ // Set up mask for centering anchor
-+ anchorMask_.AddAtomRange( anchorList_[0], anchorList_[1] );
-+ int anchormolnum = currentParm->atomToMolecule( anchorList_[0] );
-+ mprintf("\tAnchor molecule is %i\n", anchormolnum+1);
-+ // Set up fixed region
-+ if (fixed_!=NULL)
-+ fixedList_ = SetupAtomRanges( fixed_ );
-+ else
-+ fixedauto = true;
-+ // Set up mobile region
-+ if (mobile_!=NULL)
-+ mobileList_ = SetupAtomRanges( mobile_ );
-+ else
-+ mobileauto = true;
-+ // Automatic search through molecules for fixed/mobile
-+ if (fixedauto || mobileauto) {
-+ int firstAtom = 0;
-+ int lastAtom = 0;
-+ for (int molnum = 0; molnum < currentParm->Nmol(); ++molnum)
-+ {
-+ firstAtom = lastAtom;
-+ lastAtom += AtomsPerMol[ molnum ];
-+ // Skip the anchor molecule
-+ if (molnum != anchormolnum) {
-+ // Solvent and 1 atom molecules (prob. ions) go in mobile list,
-+ // everything else into fixed list.
-+ bool isSolventMol = false;
-+ if ( currentParm->solventMask != NULL && currentParm->solventMask[firstAtom] == 'T' )
-+ isSolventMol = true;
-+ if ( isSolventMol || (lastAtom - firstAtom) == 1 )
-+ {
-+ if (mobileauto) {
-+ mobileList_.push_back( firstAtom );
-+ mobileList_.push_back( lastAtom );
-+ }
-+ } else {
-+ if (fixedauto) {
-+ fixedList_.push_back( firstAtom );
-+ fixedList_.push_back( lastAtom );
-+ }
-+ }
-+ }
-+ }
-+ }
-+ // DEBUG: Print fixed and mobile lists
-+ if (!fixedList_.empty()) {
-+ mprintf("\tThe following molecules are fixed to anchor:");
-+ for (pairList::iterator atom = fixedList_.begin();
-+ atom != fixedList_.end(); atom += 2)
-+ mprintf(" %i", currentParm->atomToMolecule( *atom ) + 1 );
-+ mprintf("\n");
-+ }
-+ mprintf("\t%zu molecules are mobile.\n", mobileList_.size() / 2 );
-+ //mprintf("\tThe following molecules are mobile:\n");
-+ //for (pairList::iterator atom = mobileList_.begin();
-+ // atom != mobileList_.end(); atom += 2)
-+ // mprintf("\t\t%i\n", (*currentParm)[ *atom ].Mol()+1 );
-+
-+ truncoct_ = (triclinic_==FAMILIAR);
-+
-+ return 0;
-+}
-+
-+// Action_AutoImage::action()
-+int Action_AutoImage::action() {
-+ double center[3], ucell[9], recip[9], imagedcenter[3], framecenter[3];
-+ double fcom[3];
-+ double bp[3], bm[3];
-+ double Trans[3];
-+
-+ // Center w.r.t. anchor
-+ currentFrame->Center( anchorMask_, origin_, useMass);
-+ // Determine whether anchor center is at box center or coordinate origin
-+ if (origin_) {
-+ center[0] = 0;
-+ center[1] = 0;
-+ center[2] = 0;
-+ } else {
-+ center[0] = currentFrame->box[0] / 2;
-+ center[1] = currentFrame->box[1] / 2;
-+ center[2] = currentFrame->box[2] / 2;
-+ }
-+
-+ // Setup imaging, and image everything in currentFrame
-+ // according to mobileList.
-+ if (ortho_) {
-+ currentFrame->SetupImageOrtho(bp, bm, origin_);
-+ currentFrame->ImageOrtho(bp, bm, center_, useMass, mobileList_);
-+ } else {
-+ currentFrame->BoxToRecip(ucell, recip);
-+ if (truncoct_)
-+ currentFrame->SetupImageTruncoct( fcom, NULL, useMass, origin_ );
-+ currentFrame->ImageNonortho(origin_, fcom, ucell, recip, truncoct_,
-+ center_, useMass, mobileList_);
-+ }
-+
-+ // For each molecule defined by atom pairs in fixedList, determine if the
-+ // imaged position is closer to anchor center than the current position.
-+ // Always use molecule center when imaging fixedList.
-+ for (pairList::iterator atom1 = fixedList_.begin();
-+ atom1 != fixedList_.end(); ++atom1)
-+ {
-+ int firstAtom = *atom1;
-+ ++atom1;
-+ int lastAtom = *atom1;
-+ Trans[0] = 0;
-+ Trans[1] = 0;
-+ Trans[2] = 0;
-+ if (useMass)
-+ currentFrame->CenterOfMass(framecenter, firstAtom, lastAtom);
-+ else
-+ currentFrame->GeometricCenter(framecenter, firstAtom, lastAtom);
-+ // NOTE: imaging routines will modify input coords.
-+ imagedcenter[0] = framecenter[0];
-+ imagedcenter[1] = framecenter[1];
-+ imagedcenter[2] = framecenter[2];
-+ if (ortho_)
-+ currentFrame->ImageOrtho(Trans, imagedcenter, bp, bm);
-+ else
-+ currentFrame->ImageNonortho(Trans, imagedcenter, truncoct_, origin_, ucell, recip, fcom);
-+ // If molecule was imaged, determine whether imaged position is closer to anchor.
-+ if (Trans[0] != 0 || Trans[1] != 0 || Trans[2] != 0) {
-+ imagedcenter[0] = framecenter[0] + Trans[0];
-+ imagedcenter[1] = framecenter[1] + Trans[1];
-+ imagedcenter[2] = framecenter[2] + Trans[2];
-+ double framedist2 = DIST2_NoImage( center, framecenter );
-+ double imageddist2 = DIST2_NoImage( center, imagedcenter );
-+ //mprintf("DBG: [%5i] Fixed @%i-%i frame dist2=%lf, imaged dist2=%lf\n", frameNum,
-+ // firstAtom+1, lastAtom+1,
-+ // framedist2, imageddist2);
-+ if (imageddist2 < framedist2) {
-+ // Imaging these atoms moved them closer to anchor. Update coords in currentFrame.
-+ currentFrame->Translate(Trans, firstAtom, lastAtom);
-+ //for (int idx = firstAtom*3; idx < lastAtom*3; ++idx)
-+ // (*currentFrame)[idx] = fixedFrame[idx];
-+ }
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-diff --git a/AmberTools/src/cpptraj/src/Action_AutoImage.h b/AmberTools/src/cpptraj/src/Action_AutoImage.h
-index e69de29..5ee24d6 100644
---- a/AmberTools/src/cpptraj/src/Action_AutoImage.h
-+++ b/AmberTools/src/cpptraj/src/Action_AutoImage.h
-@@ -0,0 +1,32 @@
-+#ifndef INC_ACTION_AUTOIMAGE_H
-+#define INC_ACTION_AUTOIMAGE_H
-+#include "Action.h"
-+class Action_AutoImage : public Action {
-+ public:
-+ Action_AutoImage();
-+
-+ private:
-+ int init();
-+ int setup();
-+ int action();
-+
-+ AtomMask anchorMask_; ///< Used to center anchor region.
-+ char* anchor_; ///< Mask expression for anchor region.
-+ char* fixed_; ///< Mask expression for fixed region.
-+ char* mobile_; ///< Mask expression for mobile region.
-+
-+ bool origin_; ///< If true imaging occurs w.r.t. coordinate origin.
-+ bool ortho_; ///< If true imaging is orthogonal.
-+ bool center_; ///< If true imaging of mobile region uses molecule center.
-+ bool truncoct_;
-+ enum TriclinicArg {OFF, FORCE, FAMILIAR};
-+ TriclinicArg triclinic_; ///< Determine whether triclinic code should be used.
-+
-+ typedef std::vector<int> pairList;
-+ pairList anchorList_;
-+ pairList fixedList_;
-+ pairList mobileList_;
-+
-+ pairList SetupAtomRanges(const char*);
-+};
-+#endif
-diff --git a/AmberTools/src/cpptraj/src/Action_Center.cpp b/AmberTools/src/cpptraj/src/Action_Center.cpp
-index a496a7f..cb841b8 100644
---- a/AmberTools/src/cpptraj/src/Action_Center.cpp
-+++ b/AmberTools/src/cpptraj/src/Action_Center.cpp
-@@ -68,14 +68,7 @@ int Center::setup() {
- */
- int Center::action() {
-
-- // Set up box
-- if (!origin) {
-- box[0] = currentFrame->box[0] / 2.0;
-- box[1] = currentFrame->box[1] / 2.0;
-- box[2] = currentFrame->box[2] / 2.0;
-- }
--
-- currentFrame->Center(&Mask1, box, useMass);
-+ currentFrame->Center(Mask1, origin, useMass);
-
- return 0;
- }
-diff --git a/AmberTools/src/cpptraj/src/Action_Image.cpp b/AmberTools/src/cpptraj/src/Action_Image.cpp
-index 023b26a..5e1dec8 100644
---- a/AmberTools/src/cpptraj/src/Action_Image.cpp
-+++ b/AmberTools/src/cpptraj/src/Action_Image.cpp
-@@ -1,26 +1,26 @@
--// Image
--#include <cmath> //for floor
-+// Action_Image
- #include "Action_Image.h"
--#include "DistRoutines.h"
- #include "CpptrajStdio.h"
-
- // CONSTRUCTOR
--Image::Image() {
-+Action_Image::Action_Image() :
-+ ComMask_(NULL),
-+ origin_(false),
-+ center_(false),
-+ ortho_(false),
-+ truncoct_(false),
-+ triclinic_(OFF)
-+{
- //fprintf(stderr,"Image Con\n");
-- ComMask=NULL;
-- origin = false;
-- center = false;
-- ortho = false;
- useMass = true;
-- triclinic = OFF;
- }
-
- // DESTRUCTOR
--Image::~Image() {
-- if (ComMask!=NULL) delete ComMask;
-+Action_Image::~Action_Image() {
-+ if (ComMask_!=NULL) delete ComMask_;
- }
-
--// Image::init()
-+// Action_Image::init()
- /** Expected call: image [origin] [center] [triclinic | familiar [com <mask>]] <mask>
- * - origin: center at 0.0, 0.0, 0.0, otherwise center at box center.
- * - center: Use center of mass for imaging, otherwise use first atom.
-@@ -33,86 +33,86 @@ Image::~Image() {
- // Check order is:
- // 1) Keywords
- // 2) Masks
--int Image::init() {
-+int Action_Image::init() {
- char *mask1;
-
- // Get keywords
-- origin = actionArgs.hasKey("origin");
-- center = actionArgs.hasKey("center");
-- if (actionArgs.hasKey("familiar")) triclinic = FAMILIAR;
-- if (actionArgs.hasKey("triclinic")) triclinic = FORCE;
-+ origin_ = actionArgs.hasKey("origin");
-+ center_ = actionArgs.hasKey("center");
-+ if (actionArgs.hasKey("familiar")) triclinic_ = FAMILIAR;
-+ if (actionArgs.hasKey("triclinic")) triclinic_ = FORCE;
-
- // Get Masks
-- if (triclinic == FAMILIAR) {
-+ if (triclinic_ == FAMILIAR) {
- mask1 = actionArgs.getKeyString("com",NULL);
- if (mask1!=NULL) {
-- ComMask = new AtomMask();
-- ComMask->SetMaskString(mask1);
-+ ComMask_ = new AtomMask();
-+ ComMask_->SetMaskString(mask1);
- }
- }
- mask1 = actionArgs.getNextMask();
-- Mask1.SetMaskString(mask1);
-+ Mask1_.SetMaskString(mask1);
-
- mprintf(" IMAGE: To");
-- if (origin)
-+ if (origin_)
- mprintf(" origin");
- else
- mprintf(" box center");
- mprintf(" based on");
-- if (center)
-+ if (center_)
- mprintf(" center of mass");
- else
- mprintf(" first atom position");
-- mprintf(" using atoms in mask %s\n",Mask1.MaskString());
-- if (triclinic == FORCE)
-+ mprintf(" using atoms in mask %s\n",Mask1_.MaskString());
-+ if (triclinic_ == FORCE)
- mprintf( " Triclinic On.\n");
-- else if (triclinic == FAMILIAR) {
-+ else if (triclinic_ == FAMILIAR) {
- mprintf( " Triclinic On, familiar shape");
-- if (ComMask!=NULL)
-- mprintf( " centering on atoms in mask %s", ComMask->MaskString());
-+ if (ComMask_!=NULL)
-+ mprintf( " centering on atoms in mask %s", ComMask_->MaskString());
- mprintf(".\n");
- }
-
- return 0;
- }
-
--// Image::setup()
-+// Action_Image::setup()
- /** Set Imaging up for this parmtop. Get masks etc.
- * currentParm is set in Action::Setup
- */
--int Image::setup() {
-- atomPair apair;
-+int Action_Image::setup() {
-+ //atomPair apair;
-
-- if ( currentParm->SetupCharMask( Mask1, activeReference ) ) return 1;
-- if (Mask1.None()) {
-+ if ( currentParm->SetupCharMask( Mask1_, activeReference ) ) return 1;
-+ if (Mask1_.None()) {
- mprintf("Warning: Image::setup: Mask contains 0 atoms.\n");
- return 1;
- }
-
-- if (currentParm->boxType==NOBOX) {
-+ if (currentParm->boxType == NOBOX) {
- mprintf("Warning: Image::setup: Parm %s does not contain box information.\n",
- currentParm->parmName);
- return 1;
- }
-
-- ortho = false;
-- if (currentParm->boxType==ORTHO && triclinic==OFF) ortho=true;
-+ ortho_ = false;
-+ if (currentParm->boxType == ORTHO && triclinic_==OFF) ortho_=true;
-
- // If box is originally truncated oct and not forcing triclinic,
- // turn familiar on.
-- if (AmberIfbox(currentParm->Box[5])==2 && triclinic!=FORCE && triclinic!=FAMILIAR) {
-+ if ( AmberIfbox( currentParm->Box[4] ) == 2 && triclinic_!=FORCE && triclinic_!=FAMILIAR) {
- mprintf("\tOriginal box is truncated octahedron, turning on 'familiar'.\n");
-- triclinic=FAMILIAR;
-+ triclinic_=FAMILIAR;
- }
-
-- if (triclinic == FAMILIAR) {
-- if (ComMask!=NULL) {
-- if ( currentParm->SetupIntegerMask( *ComMask, activeReference) ) return 1;
-- if (ComMask->None()) {
-+ if (triclinic_ == FAMILIAR) {
-+ if (ComMask_!=NULL) {
-+ if ( currentParm->SetupIntegerMask( *ComMask_, activeReference ) ) return 1;
-+ if (ComMask_->None()) {
- mprintf("Warning: Image::setup: Mask for 'familiar com' contains no atoms.\n");
- return 1;
- }
-- mprintf("\tcom: mask [%s] contains %i atoms.\n",ComMask->MaskString(),ComMask->Nselected);
-+ mprintf("\tcom: mask [%s] contains %i atoms.\n",ComMask_->MaskString(),ComMask_->Nselected);
- }
- }
-
-@@ -120,178 +120,64 @@ int Image::setup() {
- // Currently imaging by molecule only, so each pair will be the first and
- // last atom of each molecule. Check that all atoms between first and last
- // are actually in the mask.
-- imageList.clear();
-- imageList.reserve( currentParm->Nmol() );
-- apair.firstAtom = 0;
-- apair.lastAtom = 0;
-- for (int mol = 0; mol < currentParm->Nmol(); mol++) {
-- apair.firstAtom = apair.lastAtom;
-- apair.lastAtom = apair.firstAtom + currentParm->AtomsPerMol(mol);
-+ imageList_.clear();
-+ imageList_.reserve( currentParm->Nmol() );
-+ int* AtomsPerMol = currentParm->AtomsPerMol_ptr();
-+ if (AtomsPerMol == NULL) {
-+ mprinterr("Error: Image: No molecule information in %s\n", currentParm->parmName);
-+ return 1;
-+ }
-+ int firstAtom = 0;
-+ int lastAtom = 0;
-+
-+ for (int molnum = 0; molnum < currentParm->Nmol(); ++molnum)
-+ {
-+ firstAtom = lastAtom;
-+ lastAtom += AtomsPerMol[ molnum ];
- // Check that each atom in the range is in Mask1
- bool rangeIsValid = true;
-- for (int atom = apair.firstAtom; atom < apair.lastAtom; atom++)
-- if (!Mask1.AtomInCharMask(atom)) {rangeIsValid = false; break;}
-- if (rangeIsValid) imageList.push_back( apair );
-+ for (int atom = firstAtom; atom < lastAtom; atom++) {
-+ if (!Mask1_.AtomInCharMask(atom)) {
-+ rangeIsValid = false;
-+ break;
-+ }
-+ }
-+ if (rangeIsValid) {
-+ imageList_.push_back( firstAtom );
-+ imageList_.push_back( lastAtom );
-+ }
- }
-- mprintf("\tNumber of molecules to be imaged is %u based on mask [%s]\n", imageList.size(),
-- Mask1.MaskString());
-+ mprintf("\tNumber of molecules to be imaged is %u based on mask [%s]\n", imageList_.size()/2,
-+ Mask1_.MaskString());
- // DEBUG: Print all pairs
-- //for (std::vector<atomPair>::iterator ap = imageList.begin();
-- // ap != imageList.end();
-- // ap++)
-- //{
-- // mprintf("\tPair: %i - %i\n",(*ap).firstAtom+1,(*ap).lastAtom);
-- //}
-+ if (debug>0) {
-+ for (std::vector<int>::iterator ap = imageList_.begin();
-+ ap != imageList_.end(); ap+=2)
-+ mprintf("\t\tMol First-Last atom#: %i - %i\n", (*ap)+1, *(ap+1) );
-+ }
-+
-+ // Truncoct flag
-+ truncoct_ = (triclinic_==FAMILIAR);
-
- return 0;
- }
-
--// Image::action()
--int Image::action() {
-- // Orthorhombic
-- double bp[3];
-- double bm[3];
-- // Non-orthorhombic
-- double ucell[9];
-- double recip[9];
-- double fc[3], ffc[3];
-- // Familiar
-- double fcom[3];
-- int ixyz[3];
-- // General
-- double boxTrans[3];
-- double Coord[3];
--
-- // Set up information for orthorhombic cell
-- if (ortho) {
-- if ( origin ) {
-- bp[0] = currentFrame->box[0] / 2.0;
-- bp[1] = currentFrame->box[1] / 2.0;
-- bp[2] = currentFrame->box[2] / 2.0;
-- bm[0] = -bp[0];
-- bm[1] = -bp[1];
-- bm[2] = -bp[2];
-- } else {
-- bp[0] = currentFrame->box[0];
-- bp[1] = currentFrame->box[1];
-- bp[2] = currentFrame->box[2];
-- bm[0] = 0.0;
-- bm[1] = 0.0;
-- bm[2] = 0.0;
-- }
--
-- // Set up information for non-orthorhombic cell
-+// Action_Image::action()
-+int Action_Image::action() {
-+ // Ortho
-+ double bp[3], bm[3];
-+ // Nonortho
-+ double ucell[9], recip[9], fcom[3];
-+
-+ if (ortho_) {
-+ currentFrame->SetupImageOrtho(bp, bm, origin_);
-+ currentFrame->ImageOrtho(bp, bm, center_, useMass, imageList_);
- } else {
-- // NOTE: Does this need to be done every time?
-- currentFrame->BoxToRecip(ucell, recip);
-- // Set up centering if putting nonortho cell into familiar trunc. oct. shape
-- if (triclinic == FAMILIAR) {
-- // Use center of mask of atoms in mask
-- if (ComMask!=NULL) {
-- if (useMass)
-- currentFrame->CenterOfMass(ComMask, fcom);
-- else
-- currentFrame->GeometricCenter(ComMask,fcom);
-- // Use origin
-- } else if (origin) {
-- fcom[0]=0.0;
-- fcom[1]=0.0;
-- fcom[2]=0.0;
-- // Use box center
-- } else {
-- fcom[0]=currentFrame->box[0] / 2.0;
-- fcom[1]=currentFrame->box[1] / 2.0;
-- fcom[2]=currentFrame->box[2] / 2.0;
-- }
-- //fprintf(stdout,"DEBUG: fcom = %lf %lf %lf\n",fcom[0],fcom[1],fcom[2]);
-- }
-+ currentFrame->BoxToRecip( ucell, recip );
-+ if (truncoct_)
-+ currentFrame->SetupImageTruncoct( fcom, ComMask_, useMass, origin_ );
-+ currentFrame->ImageNonortho(origin_, fcom, ucell, recip, truncoct_,
-+ center_, useMass, imageList_);
- }
--
-- // Loop over Atom pairs
-- for (std::vector<atomPair>::iterator apair = imageList.begin();
-- apair != imageList.end();
-- apair++)
-- {
-- int firstAtom = (*apair).firstAtom;
-- int lastAtom = (*apair).lastAtom;
--
-- //if (debug>2)
-- // mprintf( " IMAGE processing atoms %i to %i\n", firstAtom+1, lastAtom);
--
-- // boxTrans will hold calculated translation needed to move atoms back into box
-- boxTrans[0] = 0.0;
-- boxTrans[1] = 0.0;
-- boxTrans[2] = 0.0;
--
-- // Set up position based on first atom or center of mass
-- if (center) {
-- if (useMass)
-- currentFrame->CenterOfMass(Coord,firstAtom,lastAtom);
-- else
-- currentFrame->GeometricCenter(Coord,firstAtom,lastAtom);
-- } else
-- currentFrame->GetCoord(Coord,firstAtom);
--
-- // ORTHORHOMBIC
-- if (ortho) {
-- // Determine how far coords are out of box
-- for (int i=0; i<3; i++) {
-- while (Coord[i] < bm[i]) {
-- Coord[i] += currentFrame->box[i];
-- boxTrans[i] += currentFrame->box[i];
-- }
-- while (Coord[i] > bp[i]) {
-- Coord[i] -= currentFrame->box[i];
-- boxTrans[i] -= currentFrame->box[i];
-- }
-- }
--
-- // NON-ORTHORHOMBIC
-- } else {
-- fc[0]=(Coord[0]*recip[0]) + (Coord[1]*recip[1]) + (Coord[2]*recip[2]);
-- fc[1]=(Coord[0]*recip[3]) + (Coord[1]*recip[4]) + (Coord[2]*recip[5]);
-- fc[2]=(Coord[0]*recip[6]) + (Coord[1]*recip[7]) + (Coord[2]*recip[8]);
--
-- if ( origin ) {
-- fc[0] += 0.5;
-- fc[1] += 0.5;
-- fc[2] += 0.5;
-- }
--
-- ffc[0] = floor(fc[0]);
-- ffc[1] = floor(fc[1]);
-- ffc[2] = floor(fc[2]);
--
-- boxTrans[0] -= (ffc[0]*ucell[0] + ffc[1]*ucell[3] + ffc[2]*ucell[6]);
-- boxTrans[1] -= (ffc[0]*ucell[1] + ffc[1]*ucell[4] + ffc[2]*ucell[7]);
-- boxTrans[2] -= (ffc[0]*ucell[2] + ffc[1]*ucell[5] + ffc[2]*ucell[8]);
--
-- // Put into familiar trunc. oct. shape
-- if (triclinic == FAMILIAR) {
-- Coord[0] += boxTrans[0];
-- Coord[1] += boxTrans[1];
-- Coord[2] += boxTrans[2];
-- MinImageNonOrtho2(Coord, fcom, currentFrame->box, (int)origin, ixyz, ucell, recip);
-- if (ixyz[0] != 0 || ixyz[1] != 0 || ixyz[2] != 0) {
-- boxTrans[0] += (ixyz[0]*ucell[0] + ixyz[1]*ucell[3] + ixyz[2]*ucell[6]);
-- boxTrans[1] += (ixyz[0]*ucell[1] + ixyz[1]*ucell[4] + ixyz[2]*ucell[7]);
-- boxTrans[2] += (ixyz[0]*ucell[2] + ixyz[1]*ucell[5] + ixyz[2]*ucell[8]);
--
-- //if (debug > 2)
-- // mprintf( " IMAGING, FAMILIAR OFFSETS ARE %i %i %i\n",
-- // ixyz[0], ixyz[1], ixyz[2]);
-- }
-- }
-- }
--
-- //fprintf(stdout,"DEBUG: BoxTrans: %lf %lf %lf\n",boxTrans[0],boxTrans[1],boxTrans[2]);
--
-- // Translate atoms back into the box
-- currentFrame->Translate(boxTrans,firstAtom,lastAtom);
--
-- } // END loop over atom pairs
--
- return 0;
- }
--
--
-diff --git a/AmberTools/src/cpptraj/src/Action_Image.h b/AmberTools/src/cpptraj/src/Action_Image.h
-index ba233c1..139246e 100644
---- a/AmberTools/src/cpptraj/src/Action_Image.h
-+++ b/AmberTools/src/cpptraj/src/Action_Image.h
-@@ -1,31 +1,28 @@
- #ifndef INC_ACTION_IMAGE_H
- #define INC_ACTION_IMAGE_H
--// Class: Image
-+// Class: Action_Image
- /// Action to wrap coordinates back into primary box
- #include "Action.h"
--class Image: public Action {
-+class Action_Image: public Action {
-+ public:
-+ Action_Image();
-+ ~Action_Image();
-+ private:
- /// Only atoms in Mask1 will be imaged
-- AtomMask Mask1;
-+ AtomMask Mask1_;
- /// If defined, image w.r.t. the center of atoms in ComMask.
-- AtomMask *ComMask;
-+ AtomMask *ComMask_;
- /// If true image w.r.t. coordinate origin, otherwise box center
-- bool origin;
-+ bool origin_;
- /// If true molecules will be imaged w.r.t. their center, otherwise first atom will be used
-- bool center;
-+ bool center_;
- /// True if orthorhombic cell, false otherwise.
-- bool ortho;
-+ bool ortho_;
-+ bool truncoct_;
- enum TriclinicArg {OFF, FORCE, FAMILIAR};
-- TriclinicArg triclinic;
-- struct atomPair {
-- int firstAtom;
-- int lastAtom;
-- };
-+ TriclinicArg triclinic_;
- /// Vector containing atom ranges to be imaged (first to last)
-- std::vector<atomPair> imageList;
--
-- public:
-- Image();
-- ~Image();
-+ std::vector<int> imageList_;
-
- int init();
- int setup();
-diff --git a/AmberTools/src/cpptraj/src/CpptrajState.cpp b/AmberTools/src/cpptraj/src/CpptrajState.cpp
-index 7aa0e9e..4ce4228 100644
---- a/AmberTools/src/cpptraj/src/CpptrajState.cpp
-+++ b/AmberTools/src/cpptraj/src/CpptrajState.cpp
-@@ -209,11 +209,16 @@ int CpptrajState::Run() {
- }
- // Set current parm from current traj.
- CurrentParm = traj->TrajParm();
-+ // Check if parm has changed
-+ bool parmHasChanged = (lastPindex != CurrentParm->pindex);
-
-- // If Parm has changed, reset Frame and actions for new topology.
-- if (lastPindex != CurrentParm->pindex) {
-- // Set up the incoming trajectory frame for this parm
-+ // If Parm has changed or trajectory velocity status has changed,
-+ // reset the frame.
-+ if (parmHasChanged || ((TrajFrame.V != NULL) != traj->HasVelocity()))
- TrajFrame.SetupFrameV(CurrentParm->natom, CurrentParm->mass, traj->HasVelocity());
-+
-+ // If Parm has changed, reset actions for new topology.
-+ if (parmHasChanged) {
- // Set up actions for this parm
- if (actionList.Setup( &CurrentParm )) {
- mprintf("WARNING: Could not set up actions for %s: skipping.\n",
-diff --git a/AmberTools/src/cpptraj/src/Frame.cpp b/AmberTools/src/cpptraj/src/Frame.cpp
-index 3a8add6..0adbe67 100644
---- a/AmberTools/src/cpptraj/src/Frame.cpp
-+++ b/AmberTools/src/cpptraj/src/Frame.cpp
-@@ -462,20 +462,29 @@ void Frame::InverseRotate(double *T) {
- * or box center. Use geometric center if mass is NULL, otherwise center
- * of mass will be used.
- */
--void Frame::Center(AtomMask *Mask, double *boxcoord, bool useMassIn) {
-+void Frame::Center(AtomMask& Mask, bool origin, bool useMassIn) {
- double center[3];
-
- if (useMassIn)
-- this->CenterOfMass(Mask, center);
-+ this->CenterOfMass(&Mask, center);
- else
-- this->GeometricCenter(Mask, center);
-+ this->GeometricCenter(&Mask, center);
- //mprinterr(" FRAME CENTER: %lf %lf %lf\n",center[0],center[1],center[2]); //DEBUG
-
-- // Shift to whatever is in boxcoord (origin or center of box in Action_Center)
-- center[0] = boxcoord[0] - center[0];
-- center[1] = boxcoord[1] - center[1];
-- center[2] = boxcoord[2] - center[2];
-+ if (origin) {
-+ // Shift to coordinate origin (0,0,0)
-+ center[0] = -center[0];
-+ center[1] = -center[1];
-+ center[2] = -center[2];
-+ } else {
-+ // Shift to box center
-+ center[0] = (box[0] / 2) - center[0];
-+ center[1] = (box[1] / 2) - center[1];
-+ center[2] = (box[2] / 2) - center[2];
-+ }
-+
- this->Translate(center);
-+
- }
-
- // Frame::CenterReference()
-@@ -510,6 +519,202 @@ void Frame::ShiftToGeometricCenter( ) {
- this->Translate(frameCOM);
- }
-
-+void Frame::SetupImageTruncoct( double* fcom, AtomMask* ComMask, bool useMass, bool origin )
-+{
-+ // Set up centering if putting nonortho cell into familiar trunc. oct. shape
-+ //if (truncoct) {
-+ if (ComMask!=NULL) {
-+ // Use center of atoms in mask
-+ if (useMass)
-+ CenterOfMass(ComMask, fcom);
-+ else
-+ GeometricCenter(ComMask, fcom);
-+ } else if (origin) {
-+ // Use origin
-+ fcom[0] = 0;
-+ fcom[1] = 0;
-+ fcom[2] = 0;
-+ } else {
-+ // Use box center
-+ fcom[0] = box[0] / 2;
-+ fcom[1] = box[1] / 2;
-+ fcom[2] = box[2] / 2;
-+ }
-+ //fprintf(stdout,"DEBUG: fcom = %lf %lf %lf\n",fcom[0],fcom[1],fcom[2]);
-+ //}
-+}
-+
-+// Frame::ImageNonortho()
-+void Frame::ImageNonortho(bool origin, double* fcom, double* ucell, double* recip,
-+ bool truncoct, bool center,
-+ bool useMass, std::vector<int> &AtomPairs)
-+{
-+ //double ucell[9], recip[9],
-+ double boxTrans[3], Coord[3];
-+ // fcom and ixyz only needed for truncoct
-+ //double fcom[3];
-+
-+ //BoxToRecip(ucell, recip);
-+
-+ // Loop over atom pairs
-+ for (std::vector<int>::iterator atom = AtomPairs.begin();
-+ atom != AtomPairs.end();
-+ atom++)
-+ {
-+ int firstAtom = *atom;
-+ ++atom;
-+ int lastAtom = *atom;
-+ //if (debug>2)
-+ // mprintf( " IMAGE processing atoms %i to %i\n", firstAtom+1, lastAtom);
-+ // boxTrans will hold calculated translation needed to move atoms back into box
-+ boxTrans[0] = 0;
-+ boxTrans[1] = 0;
-+ boxTrans[2] = 0;
-+ // Set up Coord with position to check for imaging based on first atom or
-+ // center of mass of atoms first to last.
-+ if (center) {
-+ if (useMass)
-+ CenterOfMass(Coord,firstAtom,lastAtom);
-+ else
-+ GeometricCenter(Coord,firstAtom,lastAtom);
-+ } else {
-+ int atomidx = firstAtom * 3;
-+ Coord[0] = X[atomidx];
-+ ++atomidx;
-+ Coord[1] = X[atomidx];
-+ ++atomidx;
-+ Coord[2] = X[atomidx];
-+ }
-+
-+ ImageNonortho(boxTrans, Coord, truncoct, origin,
-+ ucell, recip, fcom);
-+
-+ Translate(boxTrans, firstAtom, lastAtom);
-+
-+ } // END loop over atom pairs
-+}
-+
-+// Frame::ImageNonortho()
-+void Frame::ImageNonortho(double* boxTrans, double* Coord,
-+ bool truncoct, bool origin,
-+ double* ucell, double* recip, double* fcom)
-+{
-+ double fc[3], ffc[3];
-+ int ixyz[3];
-+
-+ fc[0]=(Coord[0]*recip[0]) + (Coord[1]*recip[1]) + (Coord[2]*recip[2]);
-+ fc[1]=(Coord[0]*recip[3]) + (Coord[1]*recip[4]) + (Coord[2]*recip[5]);
-+ fc[2]=(Coord[0]*recip[6]) + (Coord[1]*recip[7]) + (Coord[2]*recip[8]);
-+
-+ if ( origin ) {
-+ fc[0] += 0.5;
-+ fc[1] += 0.5;
-+ fc[2] += 0.5;
-+ }
-+
-+ ffc[0] = floor(fc[0]);
-+ ffc[1] = floor(fc[1]);
-+ ffc[2] = floor(fc[2]);
-+
-+ boxTrans[0] -= (ffc[0]*ucell[0] + ffc[1]*ucell[3] + ffc[2]*ucell[6]);
-+ boxTrans[1] -= (ffc[0]*ucell[1] + ffc[1]*ucell[4] + ffc[2]*ucell[7]);
-+ boxTrans[2] -= (ffc[0]*ucell[2] + ffc[1]*ucell[5] + ffc[2]*ucell[8]);
-+
-+ // Put into familiar trunc. oct. shape
-+ if (truncoct) {
-+ Coord[0] += boxTrans[0];
-+ Coord[1] += boxTrans[1];
-+ Coord[2] += boxTrans[2];
-+ MinImageNonOrtho2(Coord, fcom, box, (int)origin, ixyz, ucell, recip);
-+ if (ixyz[0] != 0 || ixyz[1] != 0 || ixyz[2] != 0) {
-+ boxTrans[0] += (ixyz[0]*ucell[0] + ixyz[1]*ucell[3] + ixyz[2]*ucell[6]);
-+ boxTrans[1] += (ixyz[0]*ucell[1] + ixyz[1]*ucell[4] + ixyz[2]*ucell[7]);
-+ boxTrans[2] += (ixyz[0]*ucell[2] + ixyz[1]*ucell[5] + ixyz[2]*ucell[8]);
-+
-+ //if (debug > 2)
-+ // mprintf( " IMAGING, FAMILIAR OFFSETS ARE %i %i %i\n",
-+ // ixyz[0], ixyz[1], ixyz[2]);
-+ }
-+ }
-+}
-+
-+void Frame::SetupImageOrtho(double* bp, double* bm, bool origin) {
-+ // Set up boundary information for orthorhombic cell
-+ if (origin) {
-+ bp[0] = box[0] / 2;
-+ bp[1] = box[1] / 2;
-+ bp[2] = box[2] / 2;
-+ bm[0] = -bp[0];
-+ bm[1] = -bp[1];
-+ bm[2] = -bp[2];
-+ } else {
-+ bp[0] = box[0];
-+ bp[1] = box[1];
-+ bp[2] = box[2];
-+ bm[0] = 0;
-+ bm[1] = 0;
-+ bm[2] = 0;
-+ }
-+}
-+
-+// Frame::ImageOrtho()
-+void Frame::ImageOrtho(double* bp, double* bm, bool center, bool useMass,
-+ std::vector<int> &AtomPairs)
-+{
-+ double boxTrans[3], Coord[3];
-+
-+ // Loop over atom pairs
-+ for (std::vector<int>::iterator atom = AtomPairs.begin();
-+ atom != AtomPairs.end();
-+ atom++)
-+ {
-+ int firstAtom = *atom;
-+ ++atom;
-+ int lastAtom = *atom;
-+ //if (debug>2)
-+ // mprintf( " IMAGE processing atoms %i to %i\n", firstAtom+1, lastAtom);
-+ // boxTrans will hold calculated translation needed to move atoms back into box
-+ boxTrans[0] = 0;
-+ boxTrans[1] = 0;
-+ boxTrans[2] = 0;
-+ // Set up Coord with position to check for imaging based on first atom or
-+ // center of mass of atoms first to last.
-+ if (center) {
-+ if (useMass)
-+ CenterOfMass(Coord,firstAtom,lastAtom);
-+ else
-+ GeometricCenter(Coord,firstAtom,lastAtom);
-+ } else {
-+ int atomidx = firstAtom * 3;
-+ Coord[0] = X[atomidx];
-+ ++atomidx;
-+ Coord[1] = X[atomidx];
-+ ++atomidx;
-+ Coord[2] = X[atomidx];
-+ }
-+ ImageOrtho(boxTrans, Coord,bp,bm);
-+
-+ // Translate atoms according to Coord
-+ Translate(boxTrans,firstAtom,lastAtom);
-+ } // END loop over atom pairs
-+}
-+
-+void Frame::ImageOrtho(double* boxTrans, double* Coord, double* bp, double* bm)
-+{
-+ // Determine how far Coord is out of box
-+ for (int i=0; i < 3; i++) {
-+ while (Coord[i] < bm[i]) {
-+ Coord[i] += box[i];
-+ boxTrans[i] += box[i];
-+ }
-+ while (Coord[i] > bp[i]) {
-+ Coord[i] -= box[i];
-+ boxTrans[i] -= box[i];
-+ }
-+ }
-+}
-+
-+
- /* -------------- Coordinate Assignment/Extraction Routines ----------------- */
- // Frame::printAtomCoord()
- /** Print XYZ coords of given atom */
-diff --git a/AmberTools/src/cpptraj/src/Frame.h b/AmberTools/src/cpptraj/src/Frame.h
-index fb9be8b..b24f86c 100644
---- a/AmberTools/src/cpptraj/src/Frame.h
-+++ b/AmberTools/src/cpptraj/src/Frame.h
-@@ -53,9 +53,15 @@ class Frame {
- void Trans_Rot_Trans(double *, double *);
- void Rotate(double *);
- void InverseRotate(double *);
-- void Center(AtomMask *, double *,bool);
-+ void Center(AtomMask&, bool,bool);
- void CenterReference(double *, bool);
- void ShiftToGeometricCenter();
-+ void SetupImageTruncoct(double*, AtomMask*,bool,bool);
-+ void ImageNonortho(bool, double*, double*, double*, bool, bool, bool, std::vector<int> &);
-+ void ImageNonortho(double*, double*, bool, bool, double*, double*, double*);
-+ void SetupImageOrtho(double*, double*, bool);
-+ void ImageOrtho(double*,double*, bool, bool, std::vector<int> &);
-+ void ImageOrtho(double*, double*, double*, double*);
- // Coordinate assignment/extraction
- void printAtomCoord(int);
- void GetCoord(double *, int);
-diff --git a/AmberTools/src/cpptraj/src/Parm_CharmmPsf.cpp b/AmberTools/src/cpptraj/src/Parm_CharmmPsf.cpp
-index 98d1059..c11edc1 100644
---- a/AmberTools/src/cpptraj/src/Parm_CharmmPsf.cpp
-+++ b/AmberTools/src/cpptraj/src/Parm_CharmmPsf.cpp
-@@ -14,7 +14,7 @@ int CharmmPsfParmFile::ReadParm(AmberParm &parmOut, CpptrajFile &parmfile) {
- int bondatoms[8];
- int currResnum;
- int psfresnum;
-- int psfattype;
-+ char psfattype[6];
- int nbond,nlines;
-
- mprintf(" Reading Charmm PSF file %s as topology file.\n",parmOut.parmName);
-@@ -58,8 +58,8 @@ int CharmmPsfParmFile::ReadParm(AmberParm &parmOut, CpptrajFile &parmfile) {
- //if (buffer[bufferLen-1] == '\n') buffer[bufferLen-1]='\0';
- // Read line
- // ATOM# SEGID RES# RES ATNAME ATTYPE CHRG MASS (REST OF COLUMNS ARE LIKELY FOR CMAP AND CHEQ)
-- sscanf(buffer,"%*i %*s %i %s %s %i %lf %lf",&psfresnum,psfresname,psfname,
-- &psfattype,parmOut.charge+atom,parmOut.mass+atom);
-+ sscanf(buffer,"%*i %*s %i %s %s %s %lf %lf",&psfresnum,psfresname,psfname,
-+ psfattype,parmOut.charge+atom,parmOut.mass+atom);
- // Ensure name has 4 chars
- PadWithSpaces( psfname );
- strcpy(parmOut.names[atom],psfname);
-diff --git a/AmberTools/src/cpptraj/src/Traj_AmberRestart.cpp b/AmberTools/src/cpptraj/src/Traj_AmberRestart.cpp
-index d2a398a..6d060a6 100644
---- a/AmberTools/src/cpptraj/src/Traj_AmberRestart.cpp
-+++ b/AmberTools/src/cpptraj/src/Traj_AmberRestart.cpp
-@@ -9,6 +9,7 @@
- // CONSTRUCTOR
- AmberRestart::AmberRestart() {
- restartAtoms=0;
-+ coordSize_ = 0;
- frameSize=0;
- frameBuffer=NULL;
- numBoxCoords=0;
-@@ -218,6 +219,7 @@ int AmberRestart::setupRead(AmberParm *trajParm) {
- // For DOS files CR present before newline
- if (tfile->isDos) frame_lines*=2;
- frameSize = ((natom3 * 12) + frame_lines);
-+ coordSize_ = frameSize;
- frameBuffer=(char*) malloc(frameSize*sizeof(char));
- //if (debug>0) mprintf(" Amber Restart frameSize= %i\n",frameSize);
-
-@@ -302,13 +304,16 @@ int AmberRestart::readFrame(int set,double *X,double *V,double *box, double *T)
- return 1;
- }
- // Get velocity from buffer if present
-- if (hasVelocity && V!=NULL) {
-- if ( (bufferPosition = BufferToDouble(bufferPosition, V, natom3, 12))==NULL ) {
-- mprinterr("Error: AmberRestart::getFrame: * detected in velocities of %s\n",
-- tfile->filename);
-- return 1;
-+ if (hasVelocity) {
-+ if (V != NULL) {
-+ if ( (bufferPosition = BufferToDouble(bufferPosition, V, natom3, 12))==NULL ) {
-+ mprinterr("Error: AmberRestart::getFrame: * detected in velocities of %s\n",
-+ tfile->filename);
-+ return 1;
-+ }
-+ } else {
-+ bufferPosition += coordSize_;
- }
-- //F->V->printAtomCoord(0);
- }
- // Get box from buffer if present
- if (hasBox) {
-diff --git a/AmberTools/src/cpptraj/src/Traj_AmberRestart.h b/AmberTools/src/cpptraj/src/Traj_AmberRestart.h
-index ba21b2a..b231874 100644
---- a/AmberTools/src/cpptraj/src/Traj_AmberRestart.h
-+++ b/AmberTools/src/cpptraj/src/Traj_AmberRestart.h
-@@ -7,6 +7,7 @@ class AmberRestart : public TrajectoryIO {
- int restartAtoms; ///< Number of atoms in restart file
- int natom3; ///< Number of coords
- int frameSize; ///< Size of 1 coord frame in bytes, inc box & velo if present
-+ size_t coordSize_; ///< Size of 1 coord frame in bytes, used for blank reads.
- char *frameBuffer; ///< Used to read in restart coord
- int numBoxCoords; ///< Number of box coords (3 or 6)
- double restartTime; ///< Time in restart file, read in
-diff --git a/AmberTools/src/cpptraj/src/Traj_CharmmDcd.cpp b/AmberTools/src/cpptraj/src/Traj_CharmmDcd.cpp
-index 8563938..6074b05 100644
---- a/AmberTools/src/cpptraj/src/Traj_CharmmDcd.cpp
-+++ b/AmberTools/src/cpptraj/src/Traj_CharmmDcd.cpp
-@@ -203,7 +203,39 @@ int CharmmDcd::WriteBlock(int blocksize) {
- /** Call openTraj, which reads the DCD header and all necessary info.
- */
- int CharmmDcd::setupRead(AmberParm *trajParm) {
-+ size_t boxBytes, dim;
- if ( openTraj() ) return -1;
-+ // DCD file may have less frames than is stored in the header.
-+ // Check the file size against the reported number of frames.
-+ if (hasBox)
-+ boxBytes = 56; // 6(crds) * 8(double) + 4(hdr) + 4(end hdr)
-+ else
-+ boxBytes = 0;
-+ if (dcd4D)
-+ dim = 4;
-+ else
-+ dim = 3;
-+ size_t dimBytes = dim * sizeof(float);
-+ size_t frame1Bytes = (((size_t) dcdatom+2 ) * dimBytes) + boxBytes;
-+ size_t frameNBytes = (((size_t)(dcdatom - namnf)+2) * dimBytes) + boxBytes;
-+ // Header size should be current position after open, which automatically
-+ // reads DCD header.
-+ size_t headerBytes = (size_t)tfile->IO->Tell();
-+ size_t file_size = (size_t)tfile->file_size - headerBytes - frame1Bytes;
-+ if ( (file_size % frameNBytes) != 0 ) {
-+ mprintf("Warning: %s: Number of frames in DCD file could not be accurately determined.\n",
-+ tfile->filename);
-+ mprintf("Warning:\t\tFile may be corrupted.\n");
-+ }
-+ int nframes = (int)(file_size / frameNBytes) + 1; // +1 for first frame
-+ if (nframes != dcdframes) {
-+ mprintf("Warning: %s: Reported number of frames in DCD file is %i,\n",
-+ tfile->filename, dcdframes);
-+ mprintf("Warning:\tactual number of frames is %i. Only reading %i frames.\n",
-+ nframes, nframes);
-+ dcdframes = nframes;
-+ }
-+
- closeTraj();
- return dcdframes;
- }
-diff --git a/AmberTools/src/cpptraj/src/TrajectoryFile.cpp b/AmberTools/src/cpptraj/src/TrajectoryFile.cpp
-index e51b442..1fb8d14 100644
---- a/AmberTools/src/cpptraj/src/TrajectoryFile.cpp
-+++ b/AmberTools/src/cpptraj/src/TrajectoryFile.cpp
-@@ -635,6 +635,7 @@ FileFormat TrajectoryFile::getFmtFromArg(ArgList *argIn, FileFormat def) {
- else if ( argIn->hasKey("restartnc")) writeFormat=AMBERRESTARTNC;
- else if ( argIn->hasKey("mol2") ) writeFormat=MOL2FILE;
- else if ( argIn->hasKey("dcd") ) writeFormat=CHARMMDCD;
-+ else if ( argIn->hasKey("charmm") ) writeFormat=CHARMMDCD;
- return writeFormat;
- }
-
-diff --git a/AmberTools/src/cpptraj/src/cpptrajdepend b/AmberTools/src/cpptraj/src/cpptrajdepend
-index c8a9751..27016ab 100644
---- a/AmberTools/src/cpptraj/src/cpptrajdepend
-+++ b/AmberTools/src/cpptraj/src/cpptrajdepend
-@@ -38,13 +38,14 @@ Action_Center.o : Action_Center.cpp Action.h Action_Center.h AmberParm.h ArgList
- FileIO_Bzip2.o : FileIO_Bzip2.cpp CpptrajStdio.h FileIO.h FileIO_Bzip2.h
- Action_Hbond.o : Action_Hbond.cpp Action.h Action_Hbond.h AmberParm.h ArgList.h AtomMask.h Bonds.h BoxType.h CharBuffer.h Constants.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h FileIO.h FileRoutines.h Frame.h FrameList.h Name.h ParmFileList.h
- DataSet_integer.o : DataSet_integer.cpp CharBuffer.h CpptrajStdio.h DataSet.h DataSet_integer.h MpiRoutines.h
--Action_Image.o : Action_Image.cpp Action.h Action_Image.h AmberParm.h ArgList.h AtomMask.h Bonds.h BoxType.h CharBuffer.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DistRoutines.h FileIO.h FileRoutines.h Frame.h FrameList.h Name.h ParmFileList.h
-+Action_Image.o : Action_Image.cpp Action.h Action_Image.h AmberParm.h ArgList.h AtomMask.h Bonds.h BoxType.h CharBuffer.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h FileIO.h FileRoutines.h Frame.h FrameList.h Name.h ParmFileList.h
- Action_Surf.o : Action_Surf.cpp Action.h Action_Surf.h AmberParm.h ArgList.h AtomMask.h Bonds.h BoxType.h CharBuffer.h Constants.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h FileIO.h FileRoutines.h Frame.h FrameList.h Name.h ParmFileList.h
- Action_Radgyr.o : Action_Radgyr.cpp Action.h Action_Radgyr.h AmberParm.h ArgList.h AtomMask.h Bonds.h BoxType.h CharBuffer.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h FileIO.h FileRoutines.h Frame.h FrameList.h Name.h ParmFileList.h
- Action_Mask.o : Action_Mask.cpp Action.h Action_Mask.h AmberParm.h ArgList.h AtomMask.h Bonds.h BoxType.h CharBuffer.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h FileIO.h FileRoutines.h Frame.h FrameList.h Name.h ParmFileList.h ProgressBar.h Range.h TrajectoryFile.h TrajectoryIO.h
- Action_Closest.o : Action_Closest.cpp Action.h Action_Closest.h AmberParm.h ArgList.h AtomMask.h Bonds.h BoxType.h CharBuffer.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h FileIO.h FileRoutines.h Frame.h FrameList.h Name.h ParmFile.h ParmFileList.h
- NetcdfRoutines.o : NetcdfRoutines.cpp CpptrajStdio.h NetcdfRoutines.h
- CpptrajStdio.o : CpptrajStdio.cpp MpiRoutines.h
-+Action_AutoImage.o : Action_AutoImage.cpp Action.h Action_AutoImage.h AmberParm.h ArgList.h AtomMask.h Bonds.h BoxType.h CharBuffer.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DistRoutines.h FileIO.h FileRoutines.h Frame.h FrameList.h Name.h ParmFileList.h
- Mol2FileRoutines.o : Mol2FileRoutines.cpp CharBuffer.h CpptrajFile.h CpptrajStdio.h FileIO.h FileRoutines.h Mol2FileRoutines.h Name.h
- Action_NAstruct.o : Action_NAstruct.cpp Action.h Action_NAstruct.h AmberParm.h ArgList.h AtomMask.h AxisType.h Bonds.h BoxType.h CharBuffer.h Constants.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DistRoutines.h FileIO.h FileRoutines.h Frame.h FrameList.h Name.h ParmFileList.h Range.h vectormath.h
- DistRoutines.o : DistRoutines.cpp Constants.h DistRoutines.h
-@@ -80,7 +81,7 @@ Action_Jcoupling.o : Action_Jcoupling.cpp Action.h Action_Jcoupling.h AmberParm.
- TriangleMatrix.o : TriangleMatrix.cpp CpptrajStdio.h TriangleMatrix.h
- Action_Clustering.o : Action_Clustering.cpp Action.h Action_Clustering.h AmberParm.h ArgList.h AtomMask.h Bonds.h BoxType.h CharBuffer.h ClusterList.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h FileIO.h FileRoutines.h Frame.h FrameList.h Name.h ParmFileList.h ProgressBar.h Range.h TrajectoryFile.h TrajectoryIO.h TriangleMatrix.h
- ClusterList.o : ClusterList.cpp CharBuffer.h ClusterList.h CpptrajFile.h CpptrajStdio.h FileIO.h FileRoutines.h TriangleMatrix.h
--Traj_CharmmDcd.o : Traj_CharmmDcd.cpp AmberParm.h ArgList.h AtomMask.h Bonds.h BoxType.h CharBuffer.h CpptrajFile.h CpptrajStdio.h FileIO.h FileRoutines.h Name.h Traj_CharmmDcd.h TrajectoryIO.h
-+Traj_CharmmDcd.o : Traj_CharmmDcd.cpp AmberParm.h ArgList.h AtomMask.h Bonds.h BoxType.h CharBuffer.h Constants.h CpptrajFile.h CpptrajStdio.h FileIO.h FileRoutines.h Name.h Traj_CharmmDcd.h TrajectoryIO.h
- Bonds.o : Bonds.cpp Bonds.h CpptrajStdio.h Name.h
- FileRoutines.o : FileRoutines.cpp FileRoutines.h
- Action_Pairwise.o : Action_Pairwise.cpp Action.h Action_Pairwise.h AmberParm.h ArgList.h AtomMask.h Bonds.h BoxType.h CharBuffer.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h FileIO.h FileRoutines.h Frame.h FrameList.h Name.h ParmFileList.h ProgressBar.h Range.h TrajectoryFile.h TrajectoryIO.h vectormath.h
-diff --git a/AmberTools/src/cpptraj/src/cpptrajfiles b/AmberTools/src/cpptraj/src/cpptrajfiles
-index f7ecc50..9c05282 100644
---- a/AmberTools/src/cpptraj/src/cpptrajfiles
-+++ b/AmberTools/src/cpptraj/src/cpptrajfiles
-@@ -10,7 +10,7 @@ SOURCE=main.cpp AmberParm.cpp \
- Action_DSSP.cpp DataSet_string.cpp Action_Center.cpp FileIO_Bzip2.cpp \
- Action_Hbond.cpp DataSet_integer.cpp Action_Image.cpp Action_Surf.cpp \
- Action_Radgyr.cpp Action_Mask.cpp Action_Closest.cpp \
-- NetcdfRoutines.cpp CpptrajStdio.cpp \
-+ NetcdfRoutines.cpp CpptrajStdio.cpp Action_AutoImage.cpp \
- Mol2FileRoutines.cpp Action_NAstruct.cpp DistRoutines.cpp AxisType.cpp \
- TorsionRoutines.cpp Action_Pucker.cpp Range.cpp Action_Outtraj.cpp \
- Action_Rms2d.cpp ProgressBar.cpp TrajectoryIO.cpp \
-@@ -42,7 +42,7 @@ OBJECTS=main.o AmberParm.o \
- Action_DSSP.o DataSet_string.o Action_Center.o FileIO_Bzip2.o \
- Action_Hbond.o DataSet_integer.o Action_Image.o Action_Surf.o \
- Action_Radgyr.o Action_Mask.o Action_Closest.o \
-- NetcdfRoutines.o CpptrajStdio.o \
-+ NetcdfRoutines.o CpptrajStdio.o Action_AutoImage.o \
- Mol2FileRoutines.o Action_NAstruct.o DistRoutines.o AxisType.o \
- TorsionRoutines.o Action_Pucker.o Range.o Action_Outtraj.o \
- Action_Rms2d.o ProgressBar.o TrajectoryIO.o \
-@@ -74,7 +74,7 @@ HEADERS=AmberParm.h \
- Action_DSSP.h DataSet_string.h Action_Center.h FileIO_Bzip2.h \
- Action_Hbond.h DataSet_integer.h Action_Image.h Action_Surf.h \
- Action_Radgyr.h Action_Mask.h Action_Closest.h \
-- NetcdfRoutines.h CpptrajStdio.h \
-+ NetcdfRoutines.h CpptrajStdio.h Action_AutoImage.h \
- Mol2FileRoutines.h Action_NAstruct.h DistRoutines.h AxisType.h \
- TorsionRoutines.h Action_Pucker.h Range.h Action_Outtraj.h \
- Action_Rms2d.h ProgressBar.h TrajectoryIO.h \
-diff --git a/AmberTools/src/cpptraj/src/main.cpp b/AmberTools/src/cpptraj/src/main.cpp
-index 23f290e..4fc0434 100644
---- a/AmberTools/src/cpptraj/src/main.cpp
-+++ b/AmberTools/src/cpptraj/src/main.cpp
-@@ -9,7 +9,7 @@
- #include <cstdio>
- #include <cstdlib> // atoi
- #ifndef CPPTRAJ_VERSION_STRING
--#define CPPTRAJ_VERSION_STRING "V12.1"
-+#define CPPTRAJ_VERSION_STRING "V12.4"
- #define CPPTRAJ_INTERNAL_VERSION "V2.4.7b"
- #endif
-
-diff --git a/AmberTools/src/mmpbsa_py/MMPBSA_mods/amber_outputs.py b/AmberTools/src/mmpbsa_py/MMPBSA_mods/amber_outputs.py
-index b01b891..0349ba9 100644
---- a/AmberTools/src/mmpbsa_py/MMPBSA_mods/amber_outputs.py
-+++ b/AmberTools/src/mmpbsa_py/MMPBSA_mods/amber_outputs.py
-@@ -1152,7 +1152,7 @@ class BindingStatistics(object):
- classes and returns the average and standard deviation of that diff.
- """
- if len(self.data[key1]) != len(other.data[key2]):
-- return (self.data[key1].avg() - self.data[key2].avg(),
-+ return (self.data[key1].avg() - other.data[key2].avg(),
- sqrt(self.data[key1].stdev()**2 + other.data[key2].stdev()**2))
-
- mydiff = self.data[key1] - other.data[key2]
-diff --git a/AmberTools/src/mmpbsa_py/MMPBSA_mods/calculation.py b/AmberTools/src/mmpbsa_py/MMPBSA_mods/calculation.py
-index dd010e7..6a2cd98 100644
---- a/AmberTools/src/mmpbsa_py/MMPBSA_mods/calculation.py
-+++ b/AmberTools/src/mmpbsa_py/MMPBSA_mods/calculation.py
-@@ -104,7 +104,8 @@ def run_calculations(FILES, INPUT, rank, MMPBSA_Timer, extern_progs, prefix,
-
- if not stability:
- # Don't re-run the receptor if we don't have to
-- if mutant and FILES.receptor_prmtop == FILES.mutant_receptor_prmtop:
-+ if mutant and FILES.receptor_prmtop == FILES.mutant_receptor_prmtop \
-+ and not INPUT['mutant_only']:
- print ' no mutation found in receptor -- using unmutated files'
- shutil.copy('%sreceptor_gb.mdout.%d' % (
- prefix[:prefix.index('mutant')], rank),
-@@ -127,7 +128,8 @@ def run_calculations(FILES, INPUT, rank, MMPBSA_Timer, extern_progs, prefix,
- calc.Setup()
- calc.Run()
-
-- if mutant and FILES.ligand_prmtop == FILES.mutant_ligand_prmtop:
-+ if mutant and FILES.ligand_prmtop == FILES.mutant_ligand_prmtop \
-+ and not INPUT['mutant_only']:
- print ' no mutation found in ligand -- using unmutated files'
- shutil.copy('%sligand_gb.mdout.%d' % (
- prefix[:prefix.index('mutant')], rank),
-@@ -166,15 +168,16 @@ def run_calculations(FILES, INPUT, rank, MMPBSA_Timer, extern_progs, prefix,
-
- print ' calculating complex contribution...'
-
-- calc = EnergyCalculation(progs['pb'], parmsystem.complex_prmtop,
-+ calc = PBEnergyCalculation(progs['pb'], parmsystem.complex_prmtop,
- incrd, '%scomplex.%s.%d' % (prefix, trj_sfx, rank), mdin,
- '%scomplex_pb.mdout.%d' % (prefix, rank),
- '_MMPBSA_restrt.%d' % rank)
- calc.Setup()
-- calc.Run(stdout=os.devnull)
-+ calc.Run()
-
- if not stability:
-- if mutant and FILES.receptor_prmtop == FILES.mutant_receptor_prmtop:
-+ if mutant and FILES.receptor_prmtop == FILES.mutant_receptor_prmtop \
-+ and not INPUT['mutant_only']:
- print ' no mutation found in receptor -- using unmutated files'
- shutil.copy('%sreceptor_pb.mdout.%d' % (
- prefix[:prefix.index('mutant')], rank),
-@@ -188,14 +191,15 @@ def run_calculations(FILES, INPUT, rank, MMPBSA_Timer, extern_progs, prefix,
- if 'mmpbsa_py_energy' in progs['pb']: incrd = '%sreceptor.pdb' % prefix
- else: incrd = '%sdummyreceptor.inpcrd' % prefix
-
-- calc = EnergyCalculation(progs['pb'], parmsystem.receptor_prmtop,
-+ calc = PBEnergyCalculation(progs['pb'], parmsystem.receptor_prmtop,
- incrd, '%sreceptor.%s.%d' % (prefix, trj_sfx, rank), mdin,
- '%sreceptor_pb.mdout.%d' % (prefix, rank),
- '_MMPBSA_restrt.%d' % rank)
- calc.Setup()
-- calc.Run(stdout=os.devnull)
-+ calc.Run()
-
-- if mutant and FILES.ligand_prmtop == FILES.mutant_ligand_prmtop:
-+ if mutant and FILES.ligand_prmtop == FILES.mutant_ligand_prmtop \
-+ and not INPUT['mutant_only']:
- print ' no mutation found in ligand -- using unmutated files'
- shutil.copy('%sligand_pb.mdout.%d' % (
- prefix[:prefix.index('mutant')], rank),
-@@ -207,12 +211,12 @@ def run_calculations(FILES, INPUT, rank, MMPBSA_Timer, extern_progs, prefix,
- if 'mmpbsa_py_energy' in progs['pb']: incrd = '%sligand.pdb' % prefix
- else: incrd = '%sdummyligand.inpcrd' % prefix
-
-- calc = EnergyCalculation(progs['pb'], parmsystem.ligand_prmtop,
-+ calc = PBEnergyCalculation(progs['pb'], parmsystem.ligand_prmtop,
- incrd, '%sligand.%s.%d' % (prefix, trj_sfx, rank), mdin,
- '%sligand_pb.mdout.%d' % (prefix, rank),
- '_MMPBSA_restrt.%d' % rank)
- calc.Setup()
-- calc.Run(stdout=os.devnull)
-+ calc.Run()
-
- MMPBSA_Timer.StopTimer('pb')
-
-@@ -232,7 +236,8 @@ def run_calculations(FILES, INPUT, rank, MMPBSA_Timer, extern_progs, prefix,
- calc.Run()
-
- if not stability:
-- if mutant and FILES.receptor_prmtop == FILES.mutant_receptor_prmtop:
-+ if mutant and FILES.receptor_prmtop == FILES.mutant_receptor_prmtop \
-+ and not INPUT['mutant_only']:
- print ' no mutation found in receptor -- using unmutated files'
- shutil.copy('%sreceptor_rism.mdout.%d' % (
- prefix[:prefix.index('mutant')], rank),
-@@ -246,7 +251,8 @@ def run_calculations(FILES, INPUT, rank, MMPBSA_Timer, extern_progs, prefix,
- calc.Setup()
- calc.Run()
-
-- if mutant and FILES.ligand_prmtop == FILES.mutant_ligand_prmtop:
-+ if mutant and FILES.ligand_prmtop == FILES.mutant_ligand_prmtop \
-+ and not INPUT['mutant_only']:
- print ' no mutation found in ligand -- using unmutated files'
- shutil.copy('%sligand_rism.mdout.%d' % (
- prefix[:prefix.index('mutant')], rank),
-@@ -278,7 +284,8 @@ def run_calculations(FILES, INPUT, rank, MMPBSA_Timer, extern_progs, prefix,
- calc.Run()
-
- if not stability:
-- if mutant and FILES.receptor_prmtop == FILES.mutant_receptor_prmtop:
-+ if mutant and FILES.receptor_prmtop == FILES.mutant_receptor_prmtop \
-+ and not INPUT['mutant_only']:
- print ' no mutation found in receptor -- using unmutated files'
- shutil.copy('%sreceptor_nm.out.%d' % (
- prefix[:prefix.index('mutant')], rank),
-@@ -291,7 +298,8 @@ def run_calculations(FILES, INPUT, rank, MMPBSA_Timer, extern_progs, prefix,
- calc.Setup()
- calc.Run()
-
-- if mutant and FILES.ligand_prmtop == FILES.mutant_ligand_prmtop:
-+ if mutant and FILES.ligand_prmtop == FILES.mutant_ligand_prmtop \
-+ and not INPUT['mutant_only']:
- print ' no mutation found in ligand -- using unmutated files'
- shutil.copy('%sligand_nm.out.%d' % (
- prefix[:prefix.index('mutant')], rank),
-@@ -605,3 +613,55 @@ class QuasiHarmCalc(Calculation):
- Calculation.Run(self, stdout=self.output)
-
- #+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-+
-+class PBEnergyCalculation(EnergyCalculation):
-+ """
-+ Specially handle the PB calculations to extract warnings and errors PBSA
-+ prints to stdout and redirect them to the user
-+ """
-+ def Run(self, stderr=sys.stderr):
-+ """ Runs the program. All command-line arguments must be set before
-+ calling this method. Command-line arguments should be set in Setup()
-+ """
-+ import re
-+ from subprocess import Popen, PIPE
-+
-+ # If this has not been set up yet
-+ # then raise a stink
-+ if not self.calc_setup:
-+ raise CalcError('Cannot run a calculation without calling its' +
-+ ' its Setup() function!')
-+
-+ errorre = re.compile('(pb (?:bomb)|(?:warning))', re.I)
-+ # Here, make sure that we could pass a file *OR* a string as stderr.
-+ if type(stderr).__name__ == 'str':
-+ stderr_is_string = True
-+ process_stderr = open(stderr, 'w', 0)
-+ else:
-+ stderr_is_string = False
-+ process_stderr = stderr
-+
-+ # The Setup() method sets the command-line arguments and makes sure that
-+ # all of the CL arguments are set. Now all we have to do is start the
-+ # process and monitor it for success.
-+
-+ # Popen can only take strings as command-line arguments, so convert
-+ # everything to a string here
-+ for i in range(len(self.command_args)):
-+ self.command_args[i] = str(self.command_args[i])
-+
-+ process = Popen(self.command_args, stdin=None, stdout=PIPE,
-+ stderr=process_stderr)
-+
-+ out, err = process.communicate('')
-+ calc_failed = bool(process.wait())
-+
-+ if stderr_is_string: process_stderr.close()
-+
-+ if calc_failed:
-+ error_list = [s.strip() for s in out.split('\n')
-+ if errorre.match(s.strip())]
-+ raise CalcError('%s failed with prmtop %s!\n\t' % (self.program,
-+ self.prmtop) + '\n\t'.join(error_list) + '\n')
-+
-+#+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-diff --git a/AmberTools/src/parmed/ParmedTools/ParmedActions.py b/AmberTools/src/parmed/ParmedTools/ParmedActions.py
-index 4dd905f..4ea4a52 100644
---- a/AmberTools/src/parmed/ParmedTools/ParmedActions.py
-+++ b/AmberTools/src/parmed/ParmedTools/ParmedActions.py
-@@ -604,16 +604,15 @@ class changeljsingletype(Action):
- from math import sqrt
- from ParmedTools.exceptions import LJ_TypeError
- # If this is an empty mask do nothing
-- if not self.orig_radius: return
-+ if self.orig_radius is None: return
- # Make sure we've only selected a single atom type with our mask
- attype = None
-- iter = 0
-- for sel in self.mask.Selection():
-+ for i, sel in enumerate(self.mask.Selection()):
- if sel == 1:
-- if not attype:
-- attype = self.parm.parm_data['ATOM_TYPE_INDEX'][iter]
-+ if attype is None:
-+ attype = self.parm.parm_data['ATOM_TYPE_INDEX'][i]
- else:
-- if attype != self.parm.parm_data['ATOM_TYPE_INDEX'][iter]:
-+ if attype != self.parm.parm_data['ATOM_TYPE_INDEX'][i]:
- raise LJ_TypeError('changeLJSingleType: ' +
- 'Selection mask has multiple atom types!')
- # Fill the Lennard-Jones radius and depth arrays to make sure they're
-@@ -631,10 +630,6 @@ class changeljsingletype(Action):
- bcoef = 2 * wij * rij ** 6
- self.parm.parm_data['LENNARD_JONES_ACOEF'][lj_index] = acoef
- self.parm.parm_data['LENNARD_JONES_BCOEF'][lj_index] = bcoef
-- lj_index = self.parm.parm_data['NONBONDED_PARM_INDEX'][
-- self.parm.ptr('ntypes') * (attype-1) + i] - 1
-- self.parm.parm_data['LENNARD_JONES_ACOEF'][lj_index] = acoef
-- self.parm.parm_data['LENNARD_JONES_BCOEF'][lj_index] = bcoef
-
- #+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
-diff --git a/AmberTools/src/pbsa/gen_dx_file.F90 b/AmberTools/src/pbsa/gen_dx_file.F90
-index 475b6ef..d50e453 100644
---- a/AmberTools/src/pbsa/gen_dx_file.F90
-+++ b/AmberTools/src/pbsa/gen_dx_file.F90
-@@ -37,6 +37,7 @@ subroutine gen_dx_file(xm,ym,zm,h,gox,goy,goz,voldata,filename,fn,dataname)
- end if
- end do
- end do; end do
-+ if (.not.(MOD(cnt,3).eq. 0) ) write(fn,*) ''
- write(fn,*) 'attribute "dep" string "positions"'
- write(fn,*) 'object "',dataname,'" class field'
- write(fn,*) 'component "positions" value 1'
-diff --git a/AmberTools/src/pbsa/pb_force.F90 b/AmberTools/src/pbsa/pb_force.F90
-index 37337bd..52f1edf 100644
---- a/AmberTools/src/pbsa/pb_force.F90
-+++ b/AmberTools/src/pbsa/pb_force.F90
-@@ -1399,7 +1399,7 @@ subroutine pb_fdfrc( pbverbose,pbprint,pbgrid,ifcap,ipb,imin,natom,atmlast,npdec
- close(64)
- elseif ( phiform == 2 ) then
- !write dx format phi
-- call gen_dx_file(xm,ym,zm,h,gox,goy,goz,phi(1:xmymzm),&
-+ call gen_dx_file(xm,ym,zm,h,gox,goy,goz,frcfac*phi(1:xmymzm),&
- phifilename,phifilenum,phidataname)
- ! write(6,*) 'writing potential map in dx format'
- ! open(67,file='pbsa_phi.dx')
-diff --git a/AmberTools/src/sqm/constants.F90 b/AmberTools/src/sqm/constants.F90
-index 590cc71..c19fd06 100644
---- a/AmberTools/src/sqm/constants.F90
-+++ b/AmberTools/src/sqm/constants.F90
-@@ -84,18 +84,23 @@ module constants
- !------------------------------------------------------------
- ! THE ARRAY FC(I) CONTAINS THE FACTORIALS OF (I-1).
-
-- _REAL_, parameter :: FC(1:17) =&
-- (/ 1.0D0,1.0D0, 2.0D0, 6.0D0, 24.0D0, 120.0D0, 720.0D0, 5040.0D0, &
-- 40320.0D0, 362880.0D0, 3628800.0D0, 39916800.0D0, &
-- 4.790016D+08, 6.2270208D+09, 8.71782912D+10, &
-- 1.307674368D+12, 2.092278989D+13 /)
-+ _REAL_, parameter :: FC(1:25) =&
-+ (/ 1.0D0,1.0D0, 2.0D0, 6.0D0, 24.0D0, &
-+ 120.0D0, 720.0D0, 5040.0D0, 40320.0D0, 362880.0D0, &
-+ 3628800.0D0, 39916800.0D0, 4.790016D+08, 6.2270208D+09, 8.71782912D+10, &
-+ 1.307674368D+12, 2.092278989D+13, 3.55687428096D+14, 6.402373705728D+15, 1.21645100408832D+17, &
-+ 2.43290200817664D+18, 5.109094217170944D+19, 1.12400072777760768D+21, 2.585201673888497664D+22, &
-+ 6.2044840173323943936D+23 /)
-
-- _REAL_, parameter :: logFC(1:17) = (/ 0.0D0, 0.0D0, 0.6931471805599D0, &
-+ _REAL_, parameter :: logFC(1:25) = (/ 0.0D0, 0.0D0, 0.6931471805599D0, &
- & 1.7917594692281D0, 3.1780538303479D0, 4.7874917427820D0, &
- & 6.5792512120101D0, 8.5251613610654D0, 10.6046029027453D0, &
- & 12.8018274800815D0, 15.1044125730755D0, 17.5023078458739D0, &
- & 19.9872144956619D0, 22.5521638531234D0, 25.1912211827387D0, &
-- & 27.8992713838409D0, 30.6718601061763D0 /)
-+ & 27.8992713838409D0, 30.6718601061763D0, 33.5050734501369D0, &
-+ 36.3954452080331D0, 39.3398841871995D0, 42.3356164607535D0, &
-+ 45.3801388984769D0, 48.4711813518352D0, 51.6066755677644D0, &
-+ 54.7847293981123D0 /)
-
- ! DEFINE C COEFFICIENTS FOR ASSOCIATE LEGENDRE POLYNOMIALS.
- _REAL_, parameter::CC(1:21,1:3) = reshape ( (/ &
-diff --git a/AmberTools/src/sqm/depend b/AmberTools/src/sqm/depend
-index 357ef59..0d3db38 100644
---- a/AmberTools/src/sqm/depend
-+++ b/AmberTools/src/sqm/depend
-@@ -599,7 +599,8 @@ qm2_h1elec_d.o: \
- rotation.o\
- elementOrbitalIndex.o\
- slater_overlap.o\
-- qmmm_module.o
-+ qmmm_module.o\
-+ utilitiesModule.o
-
-
- qm2_h1elec_d.o: qm2_h1elec_d.F90
-@@ -668,7 +669,8 @@ qm2_parameters.o: \
- elementOrbitalIndex.o\
- qmmm_qmtheorymodule.o\
- parameterReader.o\
-- qmmm_module.o
-+ qmmm_module.o\
-+ utilitiesModule.o
-
-
- qm2_parameters.o: qm2_parameters.F90
-@@ -679,7 +681,8 @@ qm2_params_module.o: \
- ../include/assert.fh\
- ../include/dprec.fh\
- elementOrbitalIndex.o\
-- qmmm_qmtheorymodule.o
-+ qmmm_qmtheorymodule.o\
-+ constants.o
-
-
- qm2_params_module.o: qm2_params_module.F90
-diff --git a/AmberTools/src/sqm/qm2_parameters.F90 b/AmberTools/src/sqm/qm2_parameters.F90
-index 9985f1f..e762063 100644
---- a/AmberTools/src/sqm/qm2_parameters.F90
-+++ b/AmberTools/src/sqm/qm2_parameters.F90
-@@ -263,6 +263,8 @@ if (currentTheory%MNDOD) then
- core_chg( 15) = 5; natomic_orbs( 15) = 9; heat_of_form( 15) = 75.570D0 !P
- core_chg( 16) = 6; natomic_orbs( 16) = 9; heat_of_form( 16) = 66.400D0 !S
- core_chg( 17) = 7; natomic_orbs( 17) = 9; heat_of_form( 17) = 28.990D0 !Cl
-+ core_chg( 35) = 7; natomic_orbs( 35) = 9; heat_of_form( 35) = 26.740D0 !Br
-+ core_chg( 53) = 7; natomic_orbs( 53) = 9; heat_of_form( 53) = 25.517D0 !I
- end if
-
- if (currentTheory%AM1D) then
-diff --git a/AmberTools/test/mmpbsa_py/04_Per_Residue_Decomp/FINAL_RESULTS_MMPBSA.dat.save b/AmberTools/test/mmpbsa_py/04_Per_Residue_Decomp/FINAL_RESULTS_MMPBSA.dat.save
-index 0390673..f9c1daf 100644
---- a/AmberTools/test/mmpbsa_py/04_Per_Residue_Decomp/FINAL_RESULTS_MMPBSA.dat.save
-+++ b/AmberTools/test/mmpbsa_py/04_Per_Residue_Decomp/FINAL_RESULTS_MMPBSA.dat.save
-@@ -1,11 +1,11 @@
--| Run on Fri Oct 21 16:59:53 2011
-+| Run on Thu Aug 23 19:08:46 2012
- |
- |Input file:
- |--------------------------------------------------------------
- |MMPBSA input file for running per-residue decomp
- |&general
- | startframe=1, endframe=2, interval=1,
--| keep_files=2, debug_printlevel=2
-+| keep_files=1, debug_printlevel=2
- |/
- |&gb
- | igb=5, saltcon=0.1
-@@ -14,7 +14,7 @@
- | idecomp=1, print_res='1-10; 200-241', csv_format=0,
- |/
- |--------------------------------------------------------------
--|MMPBSA.py Version=3.0
-+|MMPBSA.py Version=12.0
- |Solvated complex topology file: ../EstRAL_Files/sol.top
- |Complex topology file: ../EstRAL_Files/com.top
- |Receptor topology file: ../EstRAL_Files/rec.top
-@@ -38,13 +38,13 @@ Energy Component Average Std. Dev. Std. Err. of Mean
- -------------------------------------------------------------------------------
- VDWAALS -2027.4585 6.6828 4.7254
- EEL -17102.0128 39.7611 28.1154
--EGB -3036.0661 15.1517 10.7138
--ESURF 92.0643 0.2456 0.1737
-+EGB -3036.2753 15.1544 10.7158
-+ESURF 92.0404 0.2552 0.1805
-
- G gas -19129.4713 46.4439 32.8408
--G solv -2944.0018 15.3973 10.8875
-+G solv -2944.2348 15.4096 10.8963
-
--TOTAL -22073.4731 31.0467 21.9533
-+TOTAL -22073.7061 31.0343 21.9445
-
-
- Receptor:
-@@ -52,13 +52,13 @@ Energy Component Average Std. Dev. Std. Err. of Mean
- -------------------------------------------------------------------------------
- VDWAALS -1963.0469 6.3796 4.5110
- EEL -17062.3941 41.4017 29.2755
--EGB -3045.5263 17.9328 12.6804
--ESURF 94.5901 0.3006 0.2125
-+EGB -3045.7452 17.9344 12.6815
-+ESURF 94.5395 0.3071 0.2171
-
- G gas -19025.4410 47.7813 33.7865
--G solv -2950.9362 18.2334 12.8929
-+G solv -2951.2056 18.2415 12.8987
-
--TOTAL -21976.3773 29.5480 20.8936
-+TOTAL -21976.6467 29.5398 20.8878
-
-
- Ligand:
-@@ -66,13 +66,13 @@ Energy Component Average Std. Dev. Std. Err. of Mean
- -------------------------------------------------------------------------------
- VDWAALS -2.1842 0.9276 0.6559
- EEL -5.8905 0.2643 0.1869
--EGB -28.9823 0.3972 0.2809
--ESURF 5.5752 0.0080 0.0057
-+EGB -28.9847 0.3972 0.2809
-+ESURF 5.5941 0.0255 0.0181
-
- G gas -8.0747 1.1919 0.8428
--G solv -23.4071 0.4052 0.2865
-+G solv -23.3905 0.4228 0.2989
-
--TOTAL -31.4819 1.5971 1.1293
-+TOTAL -31.4653 1.6146 1.1417
-
-
- Differences (Complex - Receptor - Ligand):
-@@ -80,13 +80,13 @@ Energy Component Average Std. Dev. Std. Err. of Mean
- -------------------------------------------------------------------------------
- VDWAALS -62.2274 1.2308 0.8703
- EEL -33.7281 1.3763 0.9732
--EGB 38.4425 3.1784 2.2474
--ESURF -8.1010 0.0630 0.0445
-+EGB 38.4546 3.1772 2.2466
-+ESURF -8.0932 0.0774 0.0547
-
- DELTA G gas -95.9555 0.1455 0.1029
--DELTA G solv 30.3415 3.2413 2.2919
-+DELTA G solv 30.3614 3.2545 2.3013
-
--DELTA TOTAL -65.6140 3.0958 2.1890
-+DELTA TOTAL -65.5942 3.1090 2.1984
-
-
- -------------------------------------------------------------------------------
-diff --git a/AmberTools/test/mmpbsa_py/05_Pairwise_Decomp/FINAL_RESULTS_MMPBSA.dat.save b/AmberTools/test/mmpbsa_py/05_Pairwise_Decomp/FINAL_RESULTS_MMPBSA.dat.save
-index f7cbe88..2135ffe 100644
---- a/AmberTools/test/mmpbsa_py/05_Pairwise_Decomp/FINAL_RESULTS_MMPBSA.dat.save
-+++ b/AmberTools/test/mmpbsa_py/05_Pairwise_Decomp/FINAL_RESULTS_MMPBSA.dat.save
-@@ -1,11 +1,11 @@
--| Run on Fri Oct 21 17:35:19 2011
-+| Run on Thu Aug 23 19:09:35 2012
- |
- |Input file:
- |--------------------------------------------------------------
- |MMPBSA input file for running per-residue decomp
- |&general
- | startframe=1, endframe=2, interval=1,
--| keep_files=2, debug_printlevel=2,
-+| keep_files=0, debug_printlevel=2,
- |/
- |&gb
- | igb=5, saltcon=0.1
-@@ -15,7 +15,7 @@
- | csv_format=0,
- |/
- |--------------------------------------------------------------
--|MMPBSA.py Version=3.0
-+|MMPBSA.py Version=12.0
- |Solvated complex topology file: ../EstRAL_Files/sol.top
- |Complex topology file: ../EstRAL_Files/com.top
- |Receptor topology file: ../EstRAL_Files/rec.top
-@@ -39,13 +39,13 @@ Energy Component Average Std. Dev. Std. Err. of Mean
- -------------------------------------------------------------------------------
- VDWAALS -2027.4585 6.6828 4.7254
- EEL -17102.0128 39.7611 28.1154
--EGB -3036.0661 15.1517 10.7138
--ESURF 92.0643 0.2456 0.1737
-+EGB -3036.2753 15.1544 10.7158
-+ESURF 92.0404 0.2552 0.1805
-
- G gas -19129.4713 46.4439 32.8408
--G solv -2944.0018 15.3973 10.8875
-+G solv -2944.2348 15.4096 10.8963
-
--TOTAL -22073.4731 31.0467 21.9533
-+TOTAL -22073.7061 31.0343 21.9445
-
-
- Receptor:
-@@ -53,13 +53,13 @@ Energy Component Average Std. Dev. Std. Err. of Mean
- -------------------------------------------------------------------------------
- VDWAALS -1963.0469 6.3796 4.5110
- EEL -17062.3941 41.4017 29.2755
--EGB -3045.5263 17.9328 12.6804
--ESURF 94.5901 0.3006 0.2125
-+EGB -3045.7452 17.9344 12.6815
-+ESURF 94.5395 0.3071 0.2171
-
- G gas -19025.4410 47.7813 33.7865
--G solv -2950.9362 18.2334 12.8929
-+G solv -2951.2056 18.2415 12.8987
-
--TOTAL -21976.3773 29.5480 20.8936
-+TOTAL -21976.6467 29.5398 20.8878
-
-
- Ligand:
-@@ -67,13 +67,13 @@ Energy Component Average Std. Dev. Std. Err. of Mean
- -------------------------------------------------------------------------------
- VDWAALS -2.1842 0.9276 0.6559
- EEL -5.8905 0.2643 0.1869
--EGB -28.9823 0.3972 0.2809
--ESURF 5.5752 0.0080 0.0057
-+EGB -28.9847 0.3972 0.2809
-+ESURF 5.5941 0.0255 0.0181
-
- G gas -8.0747 1.1919 0.8428
--G solv -23.4071 0.4052 0.2865
-+G solv -23.3905 0.4228 0.2989
-
--TOTAL -31.4819 1.5971 1.1293
-+TOTAL -31.4653 1.6146 1.1417
-
-
- Differences (Complex - Receptor - Ligand):
-@@ -81,13 +81,13 @@ Energy Component Average Std. Dev. Std. Err. of Mean
- -------------------------------------------------------------------------------
- VDWAALS -62.2274 1.2308 0.8703
- EEL -33.7281 1.3763 0.9732
--EGB 38.4425 3.1784 2.2474
--ESURF -8.1010 0.0630 0.0445
-+EGB 38.4546 3.1772 2.2466
-+ESURF -8.0932 0.0774 0.0547
-
- DELTA G gas -95.9555 0.1455 0.1029
--DELTA G solv 30.3415 3.2413 2.2919
-+DELTA G solv 30.3614 3.2545 2.3013
-
--DELTA TOTAL -65.6140 3.0958 2.1890
-+DELTA TOTAL -65.5942 3.1090 2.1984
-
-
- -------------------------------------------------------------------------------
-diff --git a/AmberTools/test/mmpbsa_py/10_QM_MMGBSA/FINAL_RESULTS_MMPBSA.dat.save b/AmberTools/test/mmpbsa_py/10_QM_MMGBSA/FINAL_RESULTS_MMPBSA.dat.save
-index 1c6672d..4dc52b5 100644
---- a/AmberTools/test/mmpbsa_py/10_QM_MMGBSA/FINAL_RESULTS_MMPBSA.dat.save
-+++ b/AmberTools/test/mmpbsa_py/10_QM_MMGBSA/FINAL_RESULTS_MMPBSA.dat.save
-@@ -1,4 +1,4 @@
--| Run on Sun Feb 19 11:48:15 2012
-+| Run on Thu Aug 23 19:12:17 2012
- |
- |Input file:
- |--------------------------------------------------------------
-@@ -13,7 +13,7 @@
- | qm_theory='PM3',
- |/
- |--------------------------------------------------------------
--|MMPBSA.py Version=3.1
-+|MMPBSA.py Version=12.0
- |Solvated complex topology file: ../EstRAL_Files/sol.top
- |Complex topology file: ../EstRAL_Files/com.top
- |Receptor topology file: ../EstRAL_Files/rec.top
-@@ -38,14 +38,14 @@ Energy Component Average Std. Dev. Std. Err. of Mean
- -------------------------------------------------------------------------------
- VDWAALS -2025.2744 7.6103 5.3813
- EEL -17062.4395 41.4020 29.2756
--EGB -3038.1307 14.7141 10.4045
-+EGB -3038.3396 14.7163 10.4060
- ESURF 96.5366 0.2385 0.1686
--ESCF -21.6928 3.7699 2.6658
-+ESCF -21.6939 3.7699 2.6657
-
- G gas -19087.7139 49.0123 34.6570
--G solv -2941.5940 14.4757 10.2358
-+G solv -2941.8030 14.4778 10.2374
-
--TOTAL -22051.0007 30.7667 21.7554
-+TOTAL -22051.2107 30.7647 21.7539
-
-
- Receptor:
-@@ -53,26 +53,26 @@ Energy Component Average Std. Dev. Std. Err. of Mean
- -------------------------------------------------------------------------------
- VDWAALS -1963.0469 6.3796 4.5110
- EEL -17062.3941 41.4017 29.2755
--EGB -3045.5263 17.9328 12.6804
-+EGB -3045.7452 17.9344 12.6815
- ESURF 100.5546 0.3074 0.2173
-
- G gas -19025.4410 47.7813 33.7865
--G solv -2944.9718 17.6255 12.4631
-+G solv -2945.1907 17.6270 12.4642
-
--TOTAL -21970.4127 30.1558 21.3234
-+TOTAL -21970.6316 30.1543 21.3223
-
-
- Ligand:
- Energy Component Average Std. Dev. Std. Err. of Mean
- -------------------------------------------------------------------------------
--EGB -24.0340 0.8659 0.6123
-+EGB -24.0371 0.8661 0.6124
- ESURF 4.4275 0.0229 0.0162
--ESCF 6.8997 1.2609 0.8916
-+ESCF 6.9011 1.2609 0.8916
-
- G gas 0.0000 0.0000 0.0000
--G solv -19.6065 0.8889 0.6285
-+G solv -19.6096 0.8891 0.6287
-
--TOTAL -12.7069 2.1498 1.5201
-+TOTAL -12.7085 2.1499 1.5202
-
-
- Differences (Complex - Receptor - Ligand):
-@@ -80,14 +80,14 @@ Energy Component Average Std. Dev. Std. Err. of Mean
- -------------------------------------------------------------------------------
- VDWAALS -62.2274 1.2308 0.8703
- EEL -0.0454 0.0003 0.0002
--EGB 31.4297 4.0846 2.8882
-+EGB 31.4427 4.0842 2.8880
- ESURF -8.4454 0.0459 0.0325
--ESCF -28.5925 2.5090 1.7741
-+ESCF -28.5950 2.5090 1.7741
-
- DELTA G gas -62.2728 1.2310 0.8705
--DELTA G solv 22.9843 4.0386 2.8558
-+DELTA G solv 22.9973 4.0383 2.8555
-
--DELTA TOTAL -67.8811 2.7607 1.9521
-+DELTA TOTAL -67.8705 2.7603 1.9519
-
-
- -------------------------------------------------------------------------------
-diff --git a/AmberTools/test/parmed/normal_prmtop/final.prmtop.save b/AmberTools/test/parmed/normal_prmtop/final.prmtop.save
-index a7e4428..3ce70b7 100644
---- a/AmberTools/test/parmed/normal_prmtop/final.prmtop.save
-+++ b/AmberTools/test/parmed/normal_prmtop/final.prmtop.save
-@@ -1,4 +1,4 @@
--%VERSION VERSION_STAMP = V0001.000 DATE = 02/28/12 13:10:17
-+%VERSION VERSION_STAMP = V0001.000 DATE = 07/08/12 15:11:06
- %FLAG TITLE
- %FORMAT(20a4)
-
-@@ -1245,63 +1245,63 @@ GLU PHE LEU ASP ALA ASN LEU ALA
- 0.00000000E+00 0.00000000E+00
- %FLAG LENNARD_JONES_ACOEF
- %FORMAT(5E16.8)
-- 9.44293233E+05 2.12601181E+03 1.39982777E-01 9.95480466E+05 2.56678134E+03
-- 1.04308023E+06 2.01791425E+04 9.14716912E+00 2.27401052E+04 2.01823541E+02
-- 6.20665997E+04 5.94667300E+01 6.78771368E+04 8.79040886E+02 3.25969625E+03
-- 7.44975864E+05 1.40467023E+03 7.91544157E+05 1.45985502E+04 4.66922514E+04
-+ 9.44293233E+05 2.12601181E+03 1.39982777E-01 9.96389997E+05 2.56912650E+03
-+ 1.04498714E+06 2.01791425E+04 9.14716912E+00 2.27608820E+04 2.01823541E+02
-+ 6.20665997E+04 5.94667300E+01 6.79391534E+04 8.79040886E+02 3.25969625E+03
-+ 7.44975864E+05 1.40467023E+03 7.92267358E+05 1.45985502E+04 4.66922514E+04
- 5.81803229E+05 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00
- 0.00000000E+00 0.00000000E+00 0.00000000E+00 8.82619071E+05 2.27577561E+03
-- 9.24822270E+05 2.01619733E+04 6.01816484E+04 7.01803794E+05 0.00000000E+00
-- 8.19971662E+05 6.06829342E+05 1.02595236E+03 6.47841731E+05 1.12780457E+04
-+ 9.25667242E+05 2.01619733E+04 6.01816484E+04 7.01803794E+05 0.00000000E+00
-+ 8.19971662E+05 6.06829342E+05 1.02595236E+03 6.48433639E+05 1.12780457E+04
- 3.69471530E+04 4.71003287E+05 0.00000000E+00 5.74393458E+05 3.79876399E+05
-- 8.96776989E+04 1.07193646E+02 9.71708117E+04 1.41077189E+03 4.98586848E+03
-+ 8.96776989E+04 1.07193646E+02 9.72595927E+04 1.41077189E+03 4.98586848E+03
- 6.82786631E+04 0.00000000E+00 8.61541883E+04 5.44261042E+04 7.51607703E+03
-- 5.46147253E+04 4.90239937E+01 5.98885646E+04 7.50063100E+02 2.82099197E+03
-+ 5.46147253E+04 4.90239937E+01 5.99432824E+04 7.50063100E+02 2.82099197E+03
- 4.09427581E+04 0.00000000E+00 5.30987710E+04 3.23283631E+04 4.33325458E+03
-- 2.43828624E+03 6.58473870E+04 6.63368273E+01 7.18621074E+04 9.55000044E+02
-+ 2.43828624E+03 6.58473870E+04 6.63368273E+01 7.19277648E+04 9.55000044E+02
- 3.50301067E+03 4.96707306E+04 0.00000000E+00 6.37148278E+04 3.93690817E+04
- 5.34045360E+03 3.03448006E+03 3.76169105E+03 7.91627154E+04 8.90987508E+01
-- 8.59947003E+04 1.21014911E+03 4.33325458E+03 6.00750218E+04 0.00000000E+00
-+ 8.60732702E+04 1.21014911E+03 4.33325458E+03 6.00750218E+04 0.00000000E+00
- 7.62451550E+04 4.77908183E+04 6.55825601E+03 3.76169105E+03 4.64559155E+03
-- 5.71629601E+03 2.01562190E+06 5.97860700E+03 2.09861767E+06 4.93469320E+04
-+ 5.71629601E+03 2.01562190E+06 5.97860700E+03 2.10053510E+06 4.93469320E+04
- 1.42791446E+05 1.61587928E+06 0.00000000E+00 1.86068943E+06 1.32911052E+06
- 2.02461849E+05 1.26338489E+05 1.50848032E+05 1.79647996E+05 4.19430400E+06
-- 9.96389997E+05 2.56912650E+03 1.04403325E+06 2.27608820E+04 6.79391534E+04
-- 7.92267358E+05 0.00000000E+00 9.25667242E+05 6.48433639E+05 9.72595927E+04
-- 5.99432824E+04 7.19277648E+04 8.60732702E+04 2.10053510E+06 1.04498714E+06
-- 8.82619071E+05 2.27577560E+03 9.24822269E+05 2.01619733E+04 6.01816484E+04
-+ 9.44293233E+05 2.12601181E+03 9.96389997E+05 2.01791425E+04 6.20665998E+04
-+ 7.44975864E+05 0.00000000E+00 8.82619071E+05 6.06829343E+05 8.96776989E+04
-+ 5.46147253E+04 6.58473870E+04 7.91627155E+04 2.01562190E+06 9.44293233E+05
-+ 8.82619071E+05 2.27577560E+03 9.25667242E+05 2.01619733E+04 6.01816484E+04
- 7.01803794E+05 0.00000000E+00 8.19971662E+05 5.74393458E+05 8.61541883E+04
-- 5.30987710E+04 6.37148277E+04 7.62451551E+04 1.86068943E+06 9.25667242E+05
-+ 5.30987710E+04 6.37148277E+04 7.62451551E+04 1.86068943E+06 2.00000000E+00
- 8.19971662E+05
- %FLAG LENNARD_JONES_BCOEF
- %FORMAT(5E16.8)
-- 8.01323529E+02 2.09604198E+01 9.37598976E-02 7.36907417E+02 2.06278363E+01
-- 6.75612247E+02 6.45756063E+01 7.57919667E-01 6.13981767E+01 3.56012899E+00
-- 1.13252061E+02 1.93248820E+00 1.06076943E+02 7.42992380E+00 1.43076527E+01
-- 7.50714425E+02 1.79702257E+01 6.93079947E+02 5.79323581E+01 1.03606917E+02
-+ 8.01323529E+02 2.09604198E+01 9.37598976E-02 7.37580700E+02 2.06466831E+01
-+ 6.76847370E+02 6.45756063E+01 7.57919667E-01 6.14542738E+01 3.56012899E+00
-+ 1.13252061E+02 1.93248820E+00 1.06173862E+02 7.42992380E+00 1.43076527E+01
-+ 7.50714425E+02 1.79702257E+01 6.93713186E+02 5.79323581E+01 1.03606917E+02
- 6.99746810E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00
- 0.00000000E+00 0.00000000E+00 0.00000000E+00 6.53361429E+02 1.82891803E+01
-- 5.99015525E+02 5.44372326E+01 9.40505980E+01 6.14502845E+02 0.00000000E+00
-- 5.31102864E+02 6.77220874E+02 1.53505284E+01 6.26720080E+02 5.08951803E+01
-+ 5.99562822E+02 5.44372326E+01 9.40505980E+01 6.14502845E+02 0.00000000E+00
-+ 5.31102864E+02 6.77220874E+02 1.53505284E+01 6.27292689E+02 5.08951803E+01
- 9.21192136E+01 6.29300710E+02 0.00000000E+00 5.55666448E+02 5.64885984E+02
-- 1.36131731E+02 2.59456373E+00 1.26919150E+02 9.41257003E+00 1.76949863E+01
-+ 1.36131731E+02 2.59456373E+00 1.27035111E+02 9.41257003E+00 1.76949863E+01
- 1.25287818E+02 0.00000000E+00 1.12529845E+02 1.11805549E+02 2.17257828E+01
-- 1.05031585E+02 1.73473071E+00 9.85097219E+01 6.78541827E+00 1.31591746E+01
-+ 1.05031585E+02 1.73473071E+00 9.85997263E+01 6.78541827E+00 1.31591746E+01
- 9.59185913E+01 0.00000000E+00 8.73413012E+01 8.51921330E+01 1.63092814E+01
-- 1.20953369E+01 1.15327881E+02 2.01792524E+00 1.07908863E+02 7.65648470E+00
-+ 1.20953369E+01 1.15327881E+02 2.01792524E+00 1.08007455E+02 7.65648470E+00
- 1.46638650E+01 1.05648788E+02 0.00000000E+00 9.56748258E+01 9.40124296E+01
- 1.81057616E+01 1.34932874E+01 1.50233639E+01 1.26451907E+02 2.33864085E+00
-- 1.18043746E+02 8.61880722E+00 1.63092814E+01 1.16187983E+02 0.00000000E+00
-+ 1.18151598E+02 8.61880722E+00 1.63092814E+01 1.16187983E+02 0.00000000E+00
- 1.04660679E+02 1.03580945E+02 2.00642027E+01 1.50233639E+01 1.66953734E+01
-- 1.85196588E+01 1.28923404E+03 3.87070358E+01 1.17824605E+03 1.11203892E+02
-+ 1.85196588E+01 1.28923404E+03 3.87070358E+01 1.17932256E+03 1.11203892E+02
- 1.89165096E+02 1.21753341E+03 0.00000000E+00 1.04466382E+03 1.10369829E+03
- 2.25248294E+02 1.75916126E+02 1.92224012E+02 2.09772716E+02 2.04800000E+03
-- 7.37580700E+02 2.06466831E+01 6.76229527E+02 6.14542738E+01 1.06173862E+02
-- 6.93713186E+02 0.00000000E+00 5.99562822E+02 6.27292689E+02 1.27035111E+02
-- 9.85997263E+01 1.08007455E+02 1.18151598E+02 1.17932256E+03 6.76847370E+02
-- 6.53361429E+02 1.82891803E+01 5.99015525E+02 5.44372327E+01 9.40505981E+01
-+ 8.01323529E+02 2.09604198E+01 7.37580700E+02 6.45756063E+01 1.13252062E+02
-+ 7.50714426E+02 0.00000000E+00 6.53361429E+02 6.77220874E+02 1.36131731E+02
-+ 1.05031585E+02 1.15327881E+02 1.26451907E+02 1.28923404E+03 8.01323529E+02
-+ 6.53361429E+02 1.82891803E+01 5.99562822E+02 5.44372327E+01 9.40505981E+01
- 6.14502846E+02 0.00000000E+00 5.31102864E+02 5.55666449E+02 1.12529845E+02
-- 8.73413013E+01 9.56748257E+01 1.04660679E+02 1.04466382E+03 5.99562822E+02
-+ 8.73413013E+01 9.56748257E+01 1.04660679E+02 1.04466382E+03 4.00000000E+00
- 5.31102864E+02
- %FLAG BONDS_INC_HYDROGEN
- %FORMAT(10I8)
-diff --git a/AmberTools/test/parmed/normal_prmtop/prmtop.add_AtNum.save b/AmberTools/test/parmed/normal_prmtop/prmtop.add_AtNum.save
-index a7e4428..3ce70b7 100644
---- a/AmberTools/test/parmed/normal_prmtop/prmtop.add_AtNum.save
-+++ b/AmberTools/test/parmed/normal_prmtop/prmtop.add_AtNum.save
-@@ -1,4 +1,4 @@
--%VERSION VERSION_STAMP = V0001.000 DATE = 02/28/12 13:10:17
-+%VERSION VERSION_STAMP = V0001.000 DATE = 07/08/12 15:11:06
- %FLAG TITLE
- %FORMAT(20a4)
-
-@@ -1245,63 +1245,63 @@ GLU PHE LEU ASP ALA ASN LEU ALA
- 0.00000000E+00 0.00000000E+00
- %FLAG LENNARD_JONES_ACOEF
- %FORMAT(5E16.8)
-- 9.44293233E+05 2.12601181E+03 1.39982777E-01 9.95480466E+05 2.56678134E+03
-- 1.04308023E+06 2.01791425E+04 9.14716912E+00 2.27401052E+04 2.01823541E+02
-- 6.20665997E+04 5.94667300E+01 6.78771368E+04 8.79040886E+02 3.25969625E+03
-- 7.44975864E+05 1.40467023E+03 7.91544157E+05 1.45985502E+04 4.66922514E+04
-+ 9.44293233E+05 2.12601181E+03 1.39982777E-01 9.96389997E+05 2.56912650E+03
-+ 1.04498714E+06 2.01791425E+04 9.14716912E+00 2.27608820E+04 2.01823541E+02
-+ 6.20665997E+04 5.94667300E+01 6.79391534E+04 8.79040886E+02 3.25969625E+03
-+ 7.44975864E+05 1.40467023E+03 7.92267358E+05 1.45985502E+04 4.66922514E+04
- 5.81803229E+05 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00
- 0.00000000E+00 0.00000000E+00 0.00000000E+00 8.82619071E+05 2.27577561E+03
-- 9.24822270E+05 2.01619733E+04 6.01816484E+04 7.01803794E+05 0.00000000E+00
-- 8.19971662E+05 6.06829342E+05 1.02595236E+03 6.47841731E+05 1.12780457E+04
-+ 9.25667242E+05 2.01619733E+04 6.01816484E+04 7.01803794E+05 0.00000000E+00
-+ 8.19971662E+05 6.06829342E+05 1.02595236E+03 6.48433639E+05 1.12780457E+04
- 3.69471530E+04 4.71003287E+05 0.00000000E+00 5.74393458E+05 3.79876399E+05
-- 8.96776989E+04 1.07193646E+02 9.71708117E+04 1.41077189E+03 4.98586848E+03
-+ 8.96776989E+04 1.07193646E+02 9.72595927E+04 1.41077189E+03 4.98586848E+03
- 6.82786631E+04 0.00000000E+00 8.61541883E+04 5.44261042E+04 7.51607703E+03
-- 5.46147253E+04 4.90239937E+01 5.98885646E+04 7.50063100E+02 2.82099197E+03
-+ 5.46147253E+04 4.90239937E+01 5.99432824E+04 7.50063100E+02 2.82099197E+03
- 4.09427581E+04 0.00000000E+00 5.30987710E+04 3.23283631E+04 4.33325458E+03
-- 2.43828624E+03 6.58473870E+04 6.63368273E+01 7.18621074E+04 9.55000044E+02
-+ 2.43828624E+03 6.58473870E+04 6.63368273E+01 7.19277648E+04 9.55000044E+02
- 3.50301067E+03 4.96707306E+04 0.00000000E+00 6.37148278E+04 3.93690817E+04
- 5.34045360E+03 3.03448006E+03 3.76169105E+03 7.91627154E+04 8.90987508E+01
-- 8.59947003E+04 1.21014911E+03 4.33325458E+03 6.00750218E+04 0.00000000E+00
-+ 8.60732702E+04 1.21014911E+03 4.33325458E+03 6.00750218E+04 0.00000000E+00
- 7.62451550E+04 4.77908183E+04 6.55825601E+03 3.76169105E+03 4.64559155E+03
-- 5.71629601E+03 2.01562190E+06 5.97860700E+03 2.09861767E+06 4.93469320E+04
-+ 5.71629601E+03 2.01562190E+06 5.97860700E+03 2.10053510E+06 4.93469320E+04
- 1.42791446E+05 1.61587928E+06 0.00000000E+00 1.86068943E+06 1.32911052E+06
- 2.02461849E+05 1.26338489E+05 1.50848032E+05 1.79647996E+05 4.19430400E+06
-- 9.96389997E+05 2.56912650E+03 1.04403325E+06 2.27608820E+04 6.79391534E+04
-- 7.92267358E+05 0.00000000E+00 9.25667242E+05 6.48433639E+05 9.72595927E+04
-- 5.99432824E+04 7.19277648E+04 8.60732702E+04 2.10053510E+06 1.04498714E+06
-- 8.82619071E+05 2.27577560E+03 9.24822269E+05 2.01619733E+04 6.01816484E+04
-+ 9.44293233E+05 2.12601181E+03 9.96389997E+05 2.01791425E+04 6.20665998E+04
-+ 7.44975864E+05 0.00000000E+00 8.82619071E+05 6.06829343E+05 8.96776989E+04
-+ 5.46147253E+04 6.58473870E+04 7.91627155E+04 2.01562190E+06 9.44293233E+05
-+ 8.82619071E+05 2.27577560E+03 9.25667242E+05 2.01619733E+04 6.01816484E+04
- 7.01803794E+05 0.00000000E+00 8.19971662E+05 5.74393458E+05 8.61541883E+04
-- 5.30987710E+04 6.37148277E+04 7.62451551E+04 1.86068943E+06 9.25667242E+05
-+ 5.30987710E+04 6.37148277E+04 7.62451551E+04 1.86068943E+06 2.00000000E+00
- 8.19971662E+05
- %FLAG LENNARD_JONES_BCOEF
- %FORMAT(5E16.8)
-- 8.01323529E+02 2.09604198E+01 9.37598976E-02 7.36907417E+02 2.06278363E+01
-- 6.75612247E+02 6.45756063E+01 7.57919667E-01 6.13981767E+01 3.56012899E+00
-- 1.13252061E+02 1.93248820E+00 1.06076943E+02 7.42992380E+00 1.43076527E+01
-- 7.50714425E+02 1.79702257E+01 6.93079947E+02 5.79323581E+01 1.03606917E+02
-+ 8.01323529E+02 2.09604198E+01 9.37598976E-02 7.37580700E+02 2.06466831E+01
-+ 6.76847370E+02 6.45756063E+01 7.57919667E-01 6.14542738E+01 3.56012899E+00
-+ 1.13252061E+02 1.93248820E+00 1.06173862E+02 7.42992380E+00 1.43076527E+01
-+ 7.50714425E+02 1.79702257E+01 6.93713186E+02 5.79323581E+01 1.03606917E+02
- 6.99746810E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00
- 0.00000000E+00 0.00000000E+00 0.00000000E+00 6.53361429E+02 1.82891803E+01
-- 5.99015525E+02 5.44372326E+01 9.40505980E+01 6.14502845E+02 0.00000000E+00
-- 5.31102864E+02 6.77220874E+02 1.53505284E+01 6.26720080E+02 5.08951803E+01
-+ 5.99562822E+02 5.44372326E+01 9.40505980E+01 6.14502845E+02 0.00000000E+00
-+ 5.31102864E+02 6.77220874E+02 1.53505284E+01 6.27292689E+02 5.08951803E+01
- 9.21192136E+01 6.29300710E+02 0.00000000E+00 5.55666448E+02 5.64885984E+02
-- 1.36131731E+02 2.59456373E+00 1.26919150E+02 9.41257003E+00 1.76949863E+01
-+ 1.36131731E+02 2.59456373E+00 1.27035111E+02 9.41257003E+00 1.76949863E+01
- 1.25287818E+02 0.00000000E+00 1.12529845E+02 1.11805549E+02 2.17257828E+01
-- 1.05031585E+02 1.73473071E+00 9.85097219E+01 6.78541827E+00 1.31591746E+01
-+ 1.05031585E+02 1.73473071E+00 9.85997263E+01 6.78541827E+00 1.31591746E+01
- 9.59185913E+01 0.00000000E+00 8.73413012E+01 8.51921330E+01 1.63092814E+01
-- 1.20953369E+01 1.15327881E+02 2.01792524E+00 1.07908863E+02 7.65648470E+00
-+ 1.20953369E+01 1.15327881E+02 2.01792524E+00 1.08007455E+02 7.65648470E+00
- 1.46638650E+01 1.05648788E+02 0.00000000E+00 9.56748258E+01 9.40124296E+01
- 1.81057616E+01 1.34932874E+01 1.50233639E+01 1.26451907E+02 2.33864085E+00
-- 1.18043746E+02 8.61880722E+00 1.63092814E+01 1.16187983E+02 0.00000000E+00
-+ 1.18151598E+02 8.61880722E+00 1.63092814E+01 1.16187983E+02 0.00000000E+00
- 1.04660679E+02 1.03580945E+02 2.00642027E+01 1.50233639E+01 1.66953734E+01
-- 1.85196588E+01 1.28923404E+03 3.87070358E+01 1.17824605E+03 1.11203892E+02
-+ 1.85196588E+01 1.28923404E+03 3.87070358E+01 1.17932256E+03 1.11203892E+02
- 1.89165096E+02 1.21753341E+03 0.00000000E+00 1.04466382E+03 1.10369829E+03
- 2.25248294E+02 1.75916126E+02 1.92224012E+02 2.09772716E+02 2.04800000E+03
-- 7.37580700E+02 2.06466831E+01 6.76229527E+02 6.14542738E+01 1.06173862E+02
-- 6.93713186E+02 0.00000000E+00 5.99562822E+02 6.27292689E+02 1.27035111E+02
-- 9.85997263E+01 1.08007455E+02 1.18151598E+02 1.17932256E+03 6.76847370E+02
-- 6.53361429E+02 1.82891803E+01 5.99015525E+02 5.44372327E+01 9.40505981E+01
-+ 8.01323529E+02 2.09604198E+01 7.37580700E+02 6.45756063E+01 1.13252062E+02
-+ 7.50714426E+02 0.00000000E+00 6.53361429E+02 6.77220874E+02 1.36131731E+02
-+ 1.05031585E+02 1.15327881E+02 1.26451907E+02 1.28923404E+03 8.01323529E+02
-+ 6.53361429E+02 1.82891803E+01 5.99562822E+02 5.44372327E+01 9.40505981E+01
- 6.14502846E+02 0.00000000E+00 5.31102864E+02 5.55666449E+02 1.12529845E+02
-- 8.73413013E+01 9.56748257E+01 1.04660679E+02 1.04466382E+03 5.99562822E+02
-+ 8.73413013E+01 9.56748257E+01 1.04660679E+02 1.04466382E+03 4.00000000E+00
- 5.31102864E+02
- %FLAG BONDS_INC_HYDROGEN
- %FORMAT(10I8)
-diff --git a/AmberTools/test/parmed/normal_prmtop/prmtop.new_lj.save b/AmberTools/test/parmed/normal_prmtop/prmtop.new_lj.save
-index 0a2a704..d984445 100644
---- a/AmberTools/test/parmed/normal_prmtop/prmtop.new_lj.save
-+++ b/AmberTools/test/parmed/normal_prmtop/prmtop.new_lj.save
-@@ -1,4 +1,4 @@
--%VERSION VERSION_STAMP = V0001.000 DATE = 02/21/12 17:31:04
-+%VERSION VERSION_STAMP = V0001.000 DATE = 07/08/12 15:11:06
- %FLAG TITLE
- %FORMAT(20a4)
-
-@@ -1245,63 +1245,63 @@ GLU PHE LEU ASP ALA ASN LEU ALA
- 0.00000000E+00 0.00000000E+00
- %FLAG LENNARD_JONES_ACOEF
- %FORMAT(5E16.8)
-- 9.44293233E+05 2.12601181E+03 1.39982777E-01 9.95480466E+05 2.56678134E+03
-- 1.04308023E+06 2.01791425E+04 9.14716912E+00 2.27401052E+04 2.01823541E+02
-- 6.20665997E+04 5.94667300E+01 6.78771368E+04 8.79040886E+02 3.25969625E+03
-- 7.44975864E+05 1.40467023E+03 7.91544157E+05 1.45985502E+04 4.66922514E+04
-+ 9.44293233E+05 2.12601181E+03 1.39982777E-01 9.96389997E+05 2.56912650E+03
-+ 1.04498714E+06 2.01791425E+04 9.14716912E+00 2.27608820E+04 2.01823541E+02
-+ 6.20665997E+04 5.94667300E+01 6.79391534E+04 8.79040886E+02 3.25969625E+03
-+ 7.44975864E+05 1.40467023E+03 7.92267358E+05 1.45985502E+04 4.66922514E+04
- 5.81803229E+05 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00
- 0.00000000E+00 0.00000000E+00 0.00000000E+00 8.82619071E+05 2.27577561E+03
-- 9.24822270E+05 2.01619733E+04 6.01816484E+04 7.01803794E+05 0.00000000E+00
-- 8.19971662E+05 6.06829342E+05 1.02595236E+03 6.47841731E+05 1.12780457E+04
-+ 9.25667242E+05 2.01619733E+04 6.01816484E+04 7.01803794E+05 0.00000000E+00
-+ 8.19971662E+05 6.06829342E+05 1.02595236E+03 6.48433639E+05 1.12780457E+04
- 3.69471530E+04 4.71003287E+05 0.00000000E+00 5.74393458E+05 3.79876399E+05
-- 8.96776989E+04 1.07193646E+02 9.71708117E+04 1.41077189E+03 4.98586848E+03
-+ 8.96776989E+04 1.07193646E+02 9.72595927E+04 1.41077189E+03 4.98586848E+03
- 6.82786631E+04 0.00000000E+00 8.61541883E+04 5.44261042E+04 7.51607703E+03
-- 5.46147253E+04 4.90239937E+01 5.98885646E+04 7.50063100E+02 2.82099197E+03
-+ 5.46147253E+04 4.90239937E+01 5.99432824E+04 7.50063100E+02 2.82099197E+03
- 4.09427581E+04 0.00000000E+00 5.30987710E+04 3.23283631E+04 4.33325458E+03
-- 2.43828624E+03 6.58473870E+04 6.63368273E+01 7.18621074E+04 9.55000044E+02
-+ 2.43828624E+03 6.58473870E+04 6.63368273E+01 7.19277648E+04 9.55000044E+02
- 3.50301067E+03 4.96707306E+04 0.00000000E+00 6.37148278E+04 3.93690817E+04
- 5.34045360E+03 3.03448006E+03 3.76169105E+03 7.91627154E+04 8.90987508E+01
-- 8.59947003E+04 1.21014911E+03 4.33325458E+03 6.00750218E+04 0.00000000E+00
-+ 8.60732702E+04 1.21014911E+03 4.33325458E+03 6.00750218E+04 0.00000000E+00
- 7.62451550E+04 4.77908183E+04 6.55825601E+03 3.76169105E+03 4.64559155E+03
-- 5.71629601E+03 2.01562190E+06 5.97860700E+03 2.09861767E+06 4.93469320E+04
-+ 5.71629601E+03 2.01562190E+06 5.97860700E+03 2.10053510E+06 4.93469320E+04
- 1.42791446E+05 1.61587928E+06 0.00000000E+00 1.86068943E+06 1.32911052E+06
- 2.02461849E+05 1.26338489E+05 1.50848032E+05 1.79647996E+05 4.19430400E+06
-- 9.96389997E+05 2.56912650E+03 1.04403325E+06 2.27608820E+04 6.79391534E+04
-- 7.92267358E+05 0.00000000E+00 9.25667242E+05 6.48433639E+05 9.72595927E+04
-- 5.99432824E+04 7.19277648E+04 8.60732702E+04 2.10053510E+06 1.04498714E+06
-- 8.82619071E+05 2.27577560E+03 9.24822269E+05 2.01619733E+04 6.01816484E+04
-+ 9.44293233E+05 2.12601181E+03 9.96389997E+05 2.01791425E+04 6.20665998E+04
-+ 7.44975864E+05 0.00000000E+00 8.82619071E+05 6.06829343E+05 8.96776989E+04
-+ 5.46147253E+04 6.58473870E+04 7.91627155E+04 2.01562190E+06 9.44293233E+05
-+ 8.82619071E+05 2.27577560E+03 9.25667242E+05 2.01619733E+04 6.01816484E+04
- 7.01803794E+05 0.00000000E+00 8.19971662E+05 5.74393458E+05 8.61541883E+04
-- 5.30987710E+04 6.37148277E+04 7.62451551E+04 1.86068943E+06 9.25667242E+05
-+ 5.30987710E+04 6.37148277E+04 7.62451551E+04 1.86068943E+06 2.00000000E+00
- 8.19971662E+05
- %FLAG LENNARD_JONES_BCOEF
- %FORMAT(5E16.8)
-- 8.01323529E+02 2.09604198E+01 9.37598976E-02 7.36907417E+02 2.06278363E+01
-- 6.75612247E+02 6.45756063E+01 7.57919667E-01 6.13981767E+01 3.56012899E+00
-- 1.13252061E+02 1.93248820E+00 1.06076943E+02 7.42992380E+00 1.43076527E+01
-- 7.50714425E+02 1.79702257E+01 6.93079947E+02 5.79323581E+01 1.03606917E+02
-+ 8.01323529E+02 2.09604198E+01 9.37598976E-02 7.37580700E+02 2.06466831E+01
-+ 6.76847370E+02 6.45756063E+01 7.57919667E-01 6.14542738E+01 3.56012899E+00
-+ 1.13252061E+02 1.93248820E+00 1.06173862E+02 7.42992380E+00 1.43076527E+01
-+ 7.50714425E+02 1.79702257E+01 6.93713186E+02 5.79323581E+01 1.03606917E+02
- 6.99746810E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00
- 0.00000000E+00 0.00000000E+00 0.00000000E+00 6.53361429E+02 1.82891803E+01
-- 5.99015525E+02 5.44372326E+01 9.40505980E+01 6.14502845E+02 0.00000000E+00
-- 5.31102864E+02 6.77220874E+02 1.53505284E+01 6.26720080E+02 5.08951803E+01
-+ 5.99562822E+02 5.44372326E+01 9.40505980E+01 6.14502845E+02 0.00000000E+00
-+ 5.31102864E+02 6.77220874E+02 1.53505284E+01 6.27292689E+02 5.08951803E+01
- 9.21192136E+01 6.29300710E+02 0.00000000E+00 5.55666448E+02 5.64885984E+02
-- 1.36131731E+02 2.59456373E+00 1.26919150E+02 9.41257003E+00 1.76949863E+01
-+ 1.36131731E+02 2.59456373E+00 1.27035111E+02 9.41257003E+00 1.76949863E+01
- 1.25287818E+02 0.00000000E+00 1.12529845E+02 1.11805549E+02 2.17257828E+01
-- 1.05031585E+02 1.73473071E+00 9.85097219E+01 6.78541827E+00 1.31591746E+01
-+ 1.05031585E+02 1.73473071E+00 9.85997263E+01 6.78541827E+00 1.31591746E+01
- 9.59185913E+01 0.00000000E+00 8.73413012E+01 8.51921330E+01 1.63092814E+01
-- 1.20953369E+01 1.15327881E+02 2.01792524E+00 1.07908863E+02 7.65648470E+00
-+ 1.20953369E+01 1.15327881E+02 2.01792524E+00 1.08007455E+02 7.65648470E+00
- 1.46638650E+01 1.05648788E+02 0.00000000E+00 9.56748258E+01 9.40124296E+01
- 1.81057616E+01 1.34932874E+01 1.50233639E+01 1.26451907E+02 2.33864085E+00
-- 1.18043746E+02 8.61880722E+00 1.63092814E+01 1.16187983E+02 0.00000000E+00
-+ 1.18151598E+02 8.61880722E+00 1.63092814E+01 1.16187983E+02 0.00000000E+00
- 1.04660679E+02 1.03580945E+02 2.00642027E+01 1.50233639E+01 1.66953734E+01
-- 1.85196588E+01 1.28923404E+03 3.87070358E+01 1.17824605E+03 1.11203892E+02
-+ 1.85196588E+01 1.28923404E+03 3.87070358E+01 1.17932256E+03 1.11203892E+02
- 1.89165096E+02 1.21753341E+03 0.00000000E+00 1.04466382E+03 1.10369829E+03
- 2.25248294E+02 1.75916126E+02 1.92224012E+02 2.09772716E+02 2.04800000E+03
-- 7.37580700E+02 2.06466831E+01 6.76229527E+02 6.14542738E+01 1.06173862E+02
-- 6.93713186E+02 0.00000000E+00 5.99562822E+02 6.27292689E+02 1.27035111E+02
-- 9.85997263E+01 1.08007455E+02 1.18151598E+02 1.17932256E+03 6.76847370E+02
-- 6.53361429E+02 1.82891803E+01 5.99015525E+02 5.44372327E+01 9.40505981E+01
-+ 8.01323529E+02 2.09604198E+01 7.37580700E+02 6.45756063E+01 1.13252062E+02
-+ 7.50714426E+02 0.00000000E+00 6.53361429E+02 6.77220874E+02 1.36131731E+02
-+ 1.05031585E+02 1.15327881E+02 1.26451907E+02 1.28923404E+03 8.01323529E+02
-+ 6.53361429E+02 1.82891803E+01 5.99562822E+02 5.44372327E+01 9.40505981E+01
- 6.14502846E+02 0.00000000E+00 5.31102864E+02 5.55666449E+02 1.12529845E+02
-- 8.73413013E+01 9.56748257E+01 1.04660679E+02 1.04466382E+03 5.99562822E+02
-+ 8.73413013E+01 9.56748257E+01 1.04660679E+02 1.04466382E+03 4.00000000E+00
- 5.31102864E+02
- %FLAG BONDS_INC_HYDROGEN
- %FORMAT(10I8)
-diff --git a/dat/leap/cmd/leaprc.pol12 b/dat/leap/cmd/leaprc.pol12
-deleted file mode 100644
-index 2bb10c7..0000000
---- a/dat/leap/cmd/leaprc.pol12
-+++ /dev/null
-@@ -1,182 +0,0 @@
--logFile leap.log
--#
--# ----- leaprc for loading pol12, the 2012 pol. force field, no lone pairs
--#
--#
--addAtomTypes {
-- { "H" "H" "sp3" }
-- { "HO" "H" "sp3" }
-- { "HS" "H" "sp3" }
-- { "H1" "H" "sp3" }
-- { "H2" "H" "sp3" }
-- { "H3" "H" "sp3" }
-- { "H4" "H" "sp3" }
-- { "H5" "H" "sp3" }
-- { "HW" "H" "sp3" }
-- { "HC" "H" "sp3" }
-- { "HA" "H" "sp3" }
-- { "HP" "H" "sp3" }
-- { "OH" "O" "sp3" }
-- { "OS" "O" "sp3" }
-- { "O" "O" "sp2" }
-- { "O2" "O" "sp2" }
-- { "OW" "O" "sp3" }
-- { "CT" "C" "sp3" }
-- { "CH" "C" "sp3" }
-- { "C2" "C" "sp3" }
-- { "C3" "C" "sp3" }
-- { "C" "C" "sp2" }
-- { "C*" "C" "sp2" }
-- { "CA" "C" "sp2" }
-- { "CB" "C" "sp2" }
-- { "CC" "C" "sp2" }
-- { "CN" "C" "sp2" }
-- { "CM" "C" "sp2" }
-- { "CK" "C" "sp2" }
-- { "CQ" "C" "sp2" }
-- { "CD" "C" "sp2" }
-- { "CE" "C" "sp2" }
-- { "CF" "C" "sp2" }
-- { "CP" "C" "sp2" }
-- { "CI" "C" "sp2" }
-- { "CJ" "C" "sp2" }
-- { "CW" "C" "sp2" }
-- { "CV" "C" "sp2" }
-- { "CR" "C" "sp2" }
-- { "CA" "C" "sp2" }
-- { "CY" "C" "sp2" }
-- { "C0" "Ca" "sp3" }
-- { "MG" "Mg" "sp3" }
-- { "N" "N" "sp2" }
-- { "NA" "N" "sp2" }
-- { "N2" "N" "sp2" }
-- { "N*" "N" "sp2" }
-- { "NP" "N" "sp2" }
-- { "NQ" "N" "sp2" }
-- { "NB" "N" "sp2" }
-- { "NC" "N" "sp2" }
-- { "NT" "N" "sp3" }
-- { "N3" "N" "sp3" }
-- { "S" "S" "sp3" }
-- { "SH" "S" "sp3" }
-- { "P" "P" "sp3" }
-- { "EP" "" "sp3" }
-- { "F" "F" "sp3" }
-- { "CL" "Cl" "sp3" }
-- { "BR" "Br" "sp3" }
-- { "I" "I" "sp3" }
-- { "FE" "Fe" "sp3" }
--# things should be there
-- { "IM" "Cl" "sp3" }
-- { "IP" "Na" "sp3" }
-- { "Li" "Li" "sp3" }
-- { "K" "K" "sp3" }
-- { "Rb" "Rb" "sp3" }
-- { "Cs" "Cs" "sp3" }
-- { "Zn" "Zn" "sp3" }
-- { "IB" "Na" "sp3" }
--# "new" types
-- { "H0" "H" "sp3" }
--
--}
--#
--# Load the main parameter set.
--#
--set default DIPOLE_DAMP_FACTOR 2.5873
--set default sceescalefactor 1.0
--set default scnbscalefactor 2.0
--set default CMAP on
--
--parm11 = loadamberparams parmpol12.dat
--parmpol= loadamberparams frcmod.pol12
--#
--# Load main chain and terminating
--# amino acid libraries.
--#
--loadOff aminoctpol12.lib
--loadOff aminontpol12.lib
--loadOff aminopol12.lib
--
--loadOff ions94.lib
--loadOff solvents.lib
--#HOH = TP3
--#WAT = TP3
--HOH = PL3
--WAT = PL3
--
--#
--# Define the PDB name map for the amino acids and DNA.
--#
--addPdbResMap {
-- { 0 "ALA" "NALA" } { 1 "ALA" "CALA" }
-- { 0 "ARG" "NARG" } { 1 "ARG" "CARG" }
-- { 0 "ASN" "NASN" } { 1 "ASN" "CASN" }
-- { 0 "ASP" "NASP" } { 1 "ASP" "CASP" }
-- { 0 "CYS" "NCYS" } { 1 "CYS" "CCYS" }
-- { 0 "CYX" "NCYX" } { 1 "CYX" "CCYX" }
-- { 0 "GLN" "NGLN" } { 1 "GLN" "CGLN" }
-- { 0 "GLU" "NGLU" } { 1 "GLU" "CGLU" }
-- { 0 "GLY" "NGLY" } { 1 "GLY" "CGLY" }
-- { 0 "HID" "NHID" } { 1 "HID" "CHID" }
-- { 0 "HIE" "NHIE" } { 1 "HIE" "CHIE" }
-- { 0 "HIP" "NHIP" } { 1 "HIP" "CHIP" }
-- { 0 "ILE" "NILE" } { 1 "ILE" "CILE" }
-- { 0 "LEU" "NLEU" } { 1 "LEU" "CLEU" }
-- { 0 "LYS" "NLYS" } { 1 "LYS" "CLYS" }
-- { 0 "MET" "NMET" } { 1 "MET" "CMET" }
-- { 0 "PHE" "NPHE" } { 1 "PHE" "CPHE" }
-- { 0 "PRO" "NPRO" } { 1 "PRO" "CPRO" }
-- { 0 "SER" "NSER" } { 1 "SER" "CSER" }
-- { 0 "THR" "NTHR" } { 1 "THR" "CTHR" }
-- { 0 "TRP" "NTRP" } { 1 "TRP" "CTRP" }
-- { 0 "TYR" "NTYR" } { 1 "TYR" "CTYR" }
-- { 0 "VAL" "NVAL" } { 1 "VAL" "CVAL" }
-- { 0 "HIS" "NHIS" } { 1 "HIS" "CHIS" }
-- { 0 "GUA" "DG5" } { 1 "GUA" "DG3" } { "GUA" "DG" }
-- { 0 "ADE" "DA5" } { 1 "ADE" "DA3" } { "ADE" "DA" }
-- { 0 "CYT" "DC5" } { 1 "CYT" "DC3" } { "CYT" "DC" }
-- { 0 "THY" "DT5" } { 1 "THY" "DT3" } { "THY" "DT" }
-- { 0 "G" "DG5" } { 1 "G" "DG3" } { "G" "DG" } { "GN" "DGN" }
-- { 0 "A" "DA5" } { 1 "A" "DA3" } { "A" "DA" } { "AN" "DAN" }
-- { 0 "C" "DC5" } { 1 "C" "DC3" } { "C" "DC" } { "CN" "DCN" }
-- { 0 "T" "DT5" } { 1 "T" "DT3" } { "T" "DT" } { "TN" "DTN" }
-- { 0 "C5" "DC5" }
-- { 0 "G5" "DG5" }
-- { 0 "A5" "DA5" }
-- { 0 "T5" "DT5" }
-- { 1 "C3" "DC3" }
-- { 1 "G3" "DG3" }
-- { 1 "A3" "DA3" }
-- { 1 "T3" "DT3" }
--
--}
--
--addPdbAtomMap {
-- { "O5*" "O5'" }
-- { "C5*" "C5'" }
-- { "C4*" "C4'" }
-- { "O4*" "O4'" }
-- { "C3*" "C3'" }
-- { "O3*" "O3'" }
-- { "C2*" "C2'" }
-- { "C1*" "C1'" }
-- { "C5M" "C7" }
-- { "H1*" "H1'" }
-- { "H2*1" "H2'1" }
-- { "H2*2" "H2'2" }
-- { "H3*" "H3'" }
-- { "H4*" "H4'" }
-- { "H5*1" "H5'1" }
-- { "H5*2" "H5'2" }
--# old ff atom names -> new
-- { "O1'" "O4'" }
-- { "OA" "O1P" }
-- { "OB" "O2P" }
--}
--
--#
--# assumed that most often proteins use HIE
--#
--NHIS = NHIE
--HIS = HIE
--CHIS = CHIE
-diff --git a/dat/leap/lib/aminoctpol12.lib b/dat/leap/lib/aminoctpol12.lib
-deleted file mode 100644
-index fa60138..0000000
---- a/dat/leap/lib/aminoctpol12.lib
-+++ /dev/null
-@@ -1,3677 +0,0 @@
--!!index array str
-- "CALA"
-- "CARG"
-- "CASH"
-- "CASN"
-- "CASP"
-- "CCYM"
-- "CCYS"
-- "CCYX"
-- "CGLH"
-- "CGLN"
-- "CGLU"
-- "CGLY"
-- "CHID"
-- "CHIE"
-- "CHIP"
-- "CILE"
-- "CLEU"
-- "CLYN"
-- "CLYS"
-- "CMET"
-- "CPHE"
-- "CPRO"
-- "CSER"
-- "CTHR"
-- "CTRP"
-- "CTYR"
-- "CVAL"
-- "NME"
--!entry.CALA.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.139420
-- "HA" "H1" 0 1 131072 4 1 0.100300
-- "CB" "CT" 0 1 131072 5 6 -0.168880
-- "HB1" "HC" 0 1 131072 6 1 0.087020
-- "HB2" "HC" 0 1 131072 7 1 0.087020
-- "HB3" "HC" 0 1 131072 8 1 0.087020
-- "C" "C" 0 1 131072 9 6 0.705530
-- "O" "O2" 0 1 131072 10 8 -0.822990
-- "OXT" "O2" 0 1 131072 11 8 -0.822990
--!entry.CALA.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB1" "HC" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CALA.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CALA.unit.childsequence single int
-- 2
--!entry.CALA.unit.connect array int
-- 1
-- 0
--!entry.CALA.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 9 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 9 10 1
-- 9 11 1
--!entry.CALA.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
--!entry.CALA.unit.name single str
-- "CALA"
--!entry.CALA.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 3.877484 3.115795 2.131197
-- 4.075059 4.623017 1.205786
-- 2.496995 3.801075 1.241379
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CALA.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CALA.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CALA" 1 12 1 "p" 0
--!entry.CALA.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CALA.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CALA.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CARG.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.246160
-- "HA" "H1" 0 1 131072 4 1 0.166180
-- "CB" "CT" 0 1 131072 5 6 0.246480
-- "HB2" "HC" 0 1 131072 6 1 -0.008560
-- "HB3" "HC" 0 1 131072 7 1 -0.008560
-- "CG" "CT" 0 1 131072 8 6 -0.353440
-- "HG2" "HC" 0 1 131072 9 1 0.103290
-- "HG3" "HC" 0 1 131072 10 1 0.103290
-- "CD" "CT" 0 1 131072 11 6 0.608250
-- "HD2" "H1" 0 1 131072 12 1 -0.078660
-- "HD3" "H1" 0 1 131072 13 1 -0.078660
-- "NE" "N2" 0 1 131072 14 7 -0.792460
-- "HE" "H" 0 1 131072 15 1 0.406710
-- "CZ" "CA" 0 1 131072 16 6 1.125120
-- "NH1" "N2" 0 1 131072 17 7 -0.963900
-- "HH11" "H" 0 1 131072 18 1 0.447010
-- "HH12" "H" 0 1 131072 19 1 0.447010
-- "NH2" "N2" 0 1 131072 20 7 -0.963900
-- "HH21" "H" 0 1 131072 21 1 0.447010
-- "HH22" "H" 0 1 131072 22 1 0.447010
-- "C" "C" 0 1 131072 23 6 0.705530
-- "O" "O2" 0 1 131072 24 8 -0.822990
-- "OXT" "O2" 0 1 131072 25 8 -0.822990
--!entry.CARG.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "CT" 0 -1 0.0
-- "HG2" "HC" 0 -1 0.0
-- "HG3" "HC" 0 -1 0.0
-- "CD" "CT" 0 -1 0.0
-- "HD2" "H1" 0 -1 0.0
-- "HD3" "H1" 0 -1 0.0
-- "NE" "N2" 0 -1 0.0
-- "HE" "H" 0 -1 0.0
-- "CZ" "CA" 0 -1 0.0
-- "NH1" "N2" 0 -1 0.0
-- "HH11" "H" 0 -1 0.0
-- "HH12" "H" 0 -1 0.0
-- "NH2" "N2" 0 -1 0.0
-- "HH21" "H" 0 -1 0.0
-- "HH22" "H" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CARG.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CARG.unit.childsequence single int
-- 2
--!entry.CARG.unit.connect array int
-- 1
-- 0
--!entry.CARG.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 23 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 10 1
-- 8 11 1
-- 11 12 1
-- 11 13 1
-- 11 14 1
-- 14 15 1
-- 14 16 1
-- 16 17 1
-- 16 20 1
-- 17 18 1
-- 17 19 1
-- 20 21 1
-- 20 22 1
-- 23 24 1
-- 23 25 1
--!entry.CARG.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
-- "R" 1 "A" 18
-- "R" 1 "A" 19
-- "R" 1 "A" 20
-- "R" 1 "A" 21
-- "R" 1 "A" 22
-- "R" 1 "A" 23
-- "R" 1 "A" 24
-- "R" 1 "A" 25
--!entry.CARG.unit.name single str
-- "CARG"
--!entry.CARG.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.274186 5.009602 1.194577
-- 5.354271 4.863178 1.185788
-- 3.973781 5.548460 0.295972
-- 3.881105 5.817645 2.426721
-- 2.801135 5.964881 2.435959
-- 4.181626 5.279602 3.325774
-- 4.540320 7.142723 2.424483
-- 5.151805 7.375492 1.655065
-- 4.364284 8.040989 3.389382
-- 3.575026 7.807606 4.434133
-- 3.088949 6.925423 4.508848
-- 3.465367 8.513631 5.147998
-- 5.006254 9.201287 3.286991
-- 5.604855 9.375325 2.492329
-- 4.892216 9.903045 4.004368
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CARG.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CARG.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CARG" 1 26 1 "p" 0
--!entry.CARG.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CARG.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CARG.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CASH.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 0.020630
-- "HA" "H1" 0 1 131072 4 1 0.028510
-- "CB" "CT" 0 1 131072 5 6 -0.181320
-- "HB2" "HC" 0 1 131072 6 1 0.139090
-- "HB3" "HC" 0 1 131072 7 1 0.139090
-- "CG" "C" 0 1 131072 8 6 0.590540
-- "OD1" "O" 0 1 131072 9 8 -0.551750
-- "OD2" "OH" 0 1 131072 10 8 -0.583910
-- "HD2" "HO" 0 1 131072 11 1 0.452180
-- "C" "C" 0 1 131072 12 6 0.705530
-- "O" "O2" 0 1 131072 13 8 -0.822990
-- "OXT" "O2" 0 1 131072 14 8 -0.822990
--!entry.CASH.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "C" 0 -1 0.0
-- "OD1" "O" 0 -1 0.0
-- "OD2" "OH" 0 -1 0.0
-- "HD2" "HO" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CASH.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CASH.unit.childsequence single int
-- 2
--!entry.CASH.unit.connect array int
-- 1
-- 0
--!entry.CASH.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 12 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 10 1
-- 10 11 1
-- 12 13 1
-- 12 14 1
--!entry.CASH.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
--!entry.CASH.unit.name single str
-- "CASH"
--!entry.CASH.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.275101 5.011380 1.194527
-- 3.669108 5.954940 0.620011
-- 5.407731 5.091879 1.740667
-- 5.742902 5.987179 1.652920
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CASH.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CASH.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CASH" 1 15 1 "p" 0
--!entry.CASH.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CASH.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CASH.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CASN.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.052240
-- "HA" "H1" 0 1 131072 4 1 0.042740
-- "CB" "CT" 0 1 131072 5 6 -0.207320
-- "HB2" "HC" 0 1 131072 6 1 0.119980
-- "HB3" "HC" 0 1 131072 7 1 0.119980
-- "CG" "C" 0 1 131072 8 6 0.659810
-- "OD1" "O" 0 1 131072 9 8 -0.563050
-- "ND2" "N" 0 1 131072 10 7 -0.856360
-- "HD21" "H" 0 1 131072 11 1 0.394760
-- "HD22" "H" 0 1 131072 12 1 0.394760
-- "C" "C" 0 1 131072 13 6 0.705530
-- "O" "O2" 0 1 131072 14 8 -0.822990
-- "OXT" "O2" 0 1 131072 15 8 -0.822990
--!entry.CASN.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "C" 0 -1 0.0
-- "OD1" "O" 0 -1 0.0
-- "ND2" "N" 0 -1 0.0
-- "HD21" "H" 0 -1 0.0
-- "HD22" "H" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CASN.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CASN.unit.childsequence single int
-- 2
--!entry.CASN.unit.connect array int
-- 1
-- 0
--!entry.CASN.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 13 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 10 1
-- 10 11 1
-- 10 12 1
-- 13 14 1
-- 13 15 1
--!entry.CASN.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
--!entry.CASN.unit.name single str
-- "CASN"
--!entry.CASN.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.253700 5.017112 1.232144
-- 5.005299 5.340406 0.315072
-- 3.984885 5.817909 2.265917
-- 4.408015 6.733702 2.314743
-- 3.359611 5.504297 2.994464
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CASN.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CASN.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CASN" 1 16 1 "p" 0
--!entry.CASN.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CASN.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CASN.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CASP.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.132120
-- "HA" "H1" 0 1 131072 4 1 0.050730
-- "CB" "CT" 0 1 131072 5 6 -0.282900
-- "HB2" "HC" 0 1 131072 6 1 0.084070
-- "HB3" "HC" 0 1 131072 7 1 0.084070
-- "CG" "C" 0 1 131072 8 6 0.894610
-- "OD1" "O2" 0 1 131072 9 8 -0.822700
-- "OD2" "O2" 0 1 131072 10 8 -0.822700
-- "C" "C" 0 1 131072 11 6 0.705530
-- "O" "O2" 0 1 131072 12 8 -0.822990
-- "OXT" "O2" 0 1 131072 13 8 -0.822990
--!entry.CASP.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "C" 0 -1 0.0
-- "OD1" "O2" 0 -1 0.0
-- "OD2" "O2" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CASP.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CASP.unit.childsequence single int
-- 2
--!entry.CASP.unit.connect array int
-- 1
-- 0
--!entry.CASP.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 11 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 10 1
-- 11 12 1
-- 11 13 1
--!entry.CASP.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
--!entry.CASP.unit.name single str
-- "CASP"
--!entry.CASP.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.275101 5.011380 1.194527
-- 3.669108 5.954940 0.620011
-- 5.407731 5.091879 1.740667
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CASP.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CASP.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CASP" 1 14 1 "p" 0
--!entry.CASP.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CASP.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CASP.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CCYM.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "HN" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.165660
-- "HA" "H1" 0 1 131072 4 1 0.090680
-- "CB" "CT" 0 1 131072 5 6 0.044510
-- "HB3" "H1" 0 1 131072 6 1 0.006690
-- "HB2" "H1" 0 1 131072 7 1 0.006690
-- "SG" "SH" 0 1 131072 8 16 -0.929850
-- "C" "C" 0 1 131072 9 6 0.705530
-- "O" "O2" 0 1 131072 10 8 -0.822990
-- "OXT" "O2" 0 1 131072 11 8 -0.822990
--!entry.CCYM.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "HN" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB3" "H1" 0 -1 0.0
-- "HB2" "H1" 0 -1 0.0
-- "SG" "SH" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CCYM.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CCYM.unit.childsequence single int
-- 2
--!entry.CCYM.unit.connect array int
-- 1
-- 0
--!entry.CCYM.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 9 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 9 10 1
-- 9 11 1
--!entry.CCYM.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
--!entry.CCYM.unit.name single str
-- "CCYM"
--!entry.CCYM.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 3.877484 3.115795 2.131197
-- 2.496995 3.801075 1.241379
-- 4.309573 5.303523 1.366036
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CCYM.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CCYM.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CCYM" 1 12 1 "p" 0
--!entry.CCYM.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CCYM.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CCYM.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CCYS.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.010480
-- "HA" "H1" 0 1 131072 4 1 0.057060
-- "CB" "CT" 0 1 131072 5 6 -0.033990
-- "HB2" "H1" 0 1 131072 6 1 0.066220
-- "HB3" "H1" 0 1 131072 7 1 0.066220
-- "SG" "SH" 0 1 131072 8 16 -0.244870
-- "HG" "HS" 0 1 131072 9 1 0.152900
-- "C" "C" 0 1 131072 10 6 0.705530
-- "O" "O2" 0 1 131072 11 8 -0.822990
-- "OXT" "O2" 0 1 131072 12 8 -0.822990
--!entry.CCYS.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "H1" 0 -1 0.0
-- "HB3" "H1" 0 -1 0.0
-- "SG" "SH" 0 -1 0.0
-- "HG" "HS" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CCYS.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CCYS.unit.childsequence single int
-- 2
--!entry.CCYS.unit.connect array int
-- 1
-- 0
--!entry.CCYS.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 10 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 10 11 1
-- 10 12 1
--!entry.CCYS.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
--!entry.CCYS.unit.name single str
-- "CCYS"
--!entry.CCYS.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.309573 5.303523 1.366036
-- 3.725392 5.622018 2.517640
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CCYS.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CCYS.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CCYS" 1 13 1 "p" 0
--!entry.CCYS.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CCYS.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CCYS.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CCYX.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.030070
-- "HA" "H1" 0 1 131072 4 1 0.037000
-- "CB" "CT" 0 1 131072 5 6 -0.043690
-- "HB2" "H1" 0 1 131072 6 1 0.084380
-- "HB3" "H1" 0 1 131072 7 1 0.084380
-- "SG" "S" 0 1 131072 8 16 -0.078940
-- "C" "C" 0 1 131072 9 6 0.705530
-- "O" "O2" 0 1 131072 10 8 -0.822990
-- "OXT" "O2" 0 1 131072 11 8 -0.822990
--!entry.CCYX.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "H1" 0 -1 0.0
-- "HB3" "H1" 0 -1 0.0
-- "SG" "S" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CCYX.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CCYX.unit.childsequence single int
-- 2
--!entry.CCYX.unit.connect array int
-- 1
-- 0
--!entry.CCYX.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 9 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 9 10 1
-- 9 11 1
--!entry.CCYX.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
--!entry.CCYX.unit.name single str
-- "CCYX"
--!entry.CCYX.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.309573 5.303523 1.366036
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CCYX.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 8 0 0 0
--!entry.CCYX.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CCYX" 1 12 1 "p" 0
--!entry.CCYX.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CCYX.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CCYX.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CGLH.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.165080
-- "HA" "H1" 0 1 131072 4 1 0.120280
-- "CB" "CT" 0 1 131072 5 6 0.110660
-- "HB2" "HC" 0 1 131072 6 1 0.016640
-- "HB3" "HC" 0 1 131072 7 1 0.016640
-- "CG" "CT" 0 1 131072 8 6 -0.317930
-- "HG2" "HC" 0 1 131072 9 1 0.173880
-- "HG3" "HC" 0 1 131072 10 1 0.173880
-- "CD" "C" 0 1 131072 11 6 0.664690
-- "OE1" "O" 0 1 131072 12 8 -0.583590
-- "OE2" "OH" 0 1 131072 13 8 -0.613880
-- "HE2" "HO" 0 1 131072 14 1 0.456870
-- "C" "C" 0 1 131072 15 6 0.705530
-- "O" "O2" 0 1 131072 16 8 -0.822990
-- "OXT" "O2" 0 1 131072 17 8 -0.822990
--!entry.CGLH.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "CT" 0 -1 0.0
-- "HG2" "HC" 0 -1 0.0
-- "HG3" "HC" 0 -1 0.0
-- "CD" "C" 0 -1 0.0
-- "OE1" "O" 0 -1 0.0
-- "OE2" "OH" 0 -1 0.0
-- "HE2" "HO" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CGLH.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CGLH.unit.childsequence single int
-- 2
--!entry.CGLH.unit.connect array int
-- 1
-- 0
--!entry.CGLH.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 15 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 10 1
-- 8 11 1
-- 11 12 1
-- 11 13 1
-- 13 14 1
-- 15 16 1
-- 15 17 1
--!entry.CGLH.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
--!entry.CGLH.unit.name single str
-- "CGLH"
--!entry.CGLH.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.267328 4.996267 1.194946
-- 5.347413 4.849843 1.186158
-- 3.966923 5.535124 0.296342
-- 3.873732 5.805369 2.428706
-- 4.594590 5.679012 3.454376
-- 2.855965 6.542070 2.333721
-- 2.710526 6.996624 3.166684
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CGLH.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CGLH.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CGLH" 1 18 1 "p" 0
--!entry.CGLH.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CGLH.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CGLH.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CGLN.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.174080
-- "HA" "H1" 0 1 131072 4 1 0.063260
-- "CB" "CT" 0 1 131072 5 6 0.396380
-- "HB2" "HC" 0 1 131072 6 1 -0.058620
-- "HB3" "HC" 0 1 131072 7 1 -0.058620
-- "CG" "CT" 0 1 131072 8 6 -0.593580
-- "HG2" "HC" 0 1 131072 9 1 0.218390
-- "HG3" "HC" 0 1 131072 10 1 0.218390
-- "CD" "C" 0 1 131072 11 6 0.770410
-- "OE1" "O" 0 1 131072 12 8 -0.650910
-- "NE2" "N" 0 1 131072 13 7 -0.874140
-- "HE21" "H" 0 1 131072 14 1 0.398090
-- "HE22" "H" 0 1 131072 15 1 0.398090
-- "C" "C" 0 1 131072 16 6 0.705530
-- "O" "O2" 0 1 131072 17 8 -0.822990
-- "OXT" "O2" 0 1 131072 18 8 -0.822990
--!entry.CGLN.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "CT" 0 -1 0.0
-- "HG2" "HC" 0 -1 0.0
-- "HG3" "HC" 0 -1 0.0
-- "CD" "C" 0 -1 0.0
-- "OE1" "O" 0 -1 0.0
-- "NE2" "N" 0 -1 0.0
-- "HE21" "H" 0 -1 0.0
-- "HE22" "H" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CGLN.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CGLN.unit.childsequence single int
-- 2
--!entry.CGLN.unit.connect array int
-- 1
-- 0
--!entry.CGLN.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 16 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 10 1
-- 8 11 1
-- 11 12 1
-- 11 13 1
-- 13 14 1
-- 13 15 1
-- 16 17 1
-- 16 18 1
--!entry.CGLN.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
-- "R" 1 "A" 18
--!entry.CGLN.unit.name single str
-- "CGLN"
--!entry.CGLN.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.274186 5.009602 1.194577
-- 5.354271 4.863178 1.185788
-- 3.973781 5.548460 0.295972
-- 3.906976 5.848443 2.410302
-- 3.138962 5.408349 3.262893
-- 4.458856 7.061523 2.488333
-- 4.248434 7.659045 3.274966
-- 5.084281 7.376210 1.760379
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CGLN.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CGLN.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CGLN" 1 19 1 "p" 0
--!entry.CGLN.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CGLN.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CGLN.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CGLU.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.265130
-- "HA" "H1" 0 1 131072 4 1 0.127760
-- "CB" "CT" 0 1 131072 5 6 0.520990
-- "HB2" "HC" 0 1 131072 6 1 -0.129940
-- "HB3" "HC" 0 1 131072 7 1 -0.129940
-- "CG" "CT" 0 1 131072 8 6 -0.693830
-- "HG2" "HC" 0 1 131072 9 1 0.205050
-- "HG3" "HC" 0 1 131072 10 1 0.205050
-- "CD" "C" 0 1 131072 11 6 0.835690
-- "OE1" "O2" 0 1 131072 12 8 -0.811320
-- "OE2" "O2" 0 1 131072 13 8 -0.811320
-- "C" "C" 0 1 131072 14 6 0.705530
-- "O" "O2" 0 1 131072 15 8 -0.822990
-- "OXT" "O2" 0 1 131072 16 8 -0.822990
--!entry.CGLU.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "CT" 0 -1 0.0
-- "HG2" "HC" 0 -1 0.0
-- "HG3" "HC" 0 -1 0.0
-- "CD" "C" 0 -1 0.0
-- "OE1" "O2" 0 -1 0.0
-- "OE2" "O2" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CGLU.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CGLU.unit.childsequence single int
-- 2
--!entry.CGLU.unit.connect array int
-- 1
-- 0
--!entry.CGLU.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 14 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 10 1
-- 8 11 1
-- 11 12 1
-- 11 13 1
-- 14 15 1
-- 14 16 1
--!entry.CGLU.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
--!entry.CGLU.unit.name single str
-- "CGLU"
--!entry.CGLU.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.267328 4.996267 1.194946
-- 5.347413 4.849843 1.186158
-- 3.966923 5.535124 0.296342
-- 3.873732 5.805369 2.428706
-- 4.594590 5.679012 3.454376
-- 2.855965 6.542070 2.333721
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CGLU.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CGLU.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CGLU" 1 17 1 "p" 0
--!entry.CGLU.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CGLU.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CGLU.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CGLY.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.195060
-- "HA2" "H1" 0 1 131072 4 1 0.124060
-- "HA3" "H1" 0 1 131072 5 1 0.124060
-- "C" "C" 0 1 131072 6 6 0.705530
-- "O" "O2" 0 1 131072 7 8 -0.822990
-- "OXT" "O2" 0 1 131072 8 8 -0.822990
--!entry.CGLY.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA2" "H1" 0 -1 0.0
-- "HA3" "H1" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CGLY.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CGLY.unit.childsequence single int
-- 2
--!entry.CGLY.unit.connect array int
-- 1
-- 0
--!entry.CGLY.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 6 1
-- 6 7 1
-- 6 8 1
--!entry.CGLY.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
--!entry.CGLY.unit.name single str
-- "CGLY"
--!entry.CGLY.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.671668 3.400125 0.889824
-- 5.483710 2.686702 -4.438857E-06
-- 5.993369 1.568360 -8.469843E-06
-- 6.214748 3.674642 -2.512987E-06
--!entry.CGLY.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CGLY.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CGLY" 1 9 1 "p" 0
--!entry.CGLY.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CGLY.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CGLY.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CHID.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.027370
-- "HA" "H1" 0 1 131072 4 1 0.038450
-- "CB" "CT" 0 1 131072 5 6 -0.339570
-- "HB2" "HC" 0 1 131072 6 1 0.133210
-- "HB3" "HC" 0 1 131072 7 1 0.133210
-- "CG" "CC" 0 1 131072 8 6 0.324210
-- "ND1" "NA" 0 1 131072 9 7 -0.387720
-- "HD1" "H" 0 1 131072 10 1 0.367140
-- "CE1" "CR" 0 1 131072 11 6 0.234580
-- "HE1" "H5" 0 1 131072 12 1 0.060770
-- "NE2" "NB" 0 1 131072 13 7 -0.513820
-- "CD2" "CV" 0 1 131072 14 6 -0.060620
-- "HD2" "H4" 0 1 131072 15 1 0.090590
-- "C" "C" 0 1 131072 16 6 0.705530
-- "O" "O2" 0 1 131072 17 8 -0.822990
-- "OXT" "O2" 0 1 131072 18 8 -0.822990
--!entry.CHID.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "CC" 0 -1 0.0
-- "ND1" "NA" 0 -1 0.0
-- "HD1" "H" 0 -1 0.0
-- "CE1" "CR" 0 -1 0.0
-- "HE1" "H5" 0 -1 0.0
-- "NE2" "NB" 0 -1 0.0
-- "CD2" "CV" 0 -1 0.0
-- "HD2" "H4" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CHID.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CHID.unit.childsequence single int
-- 2
--!entry.CHID.unit.connect array int
-- 1
-- 0
--!entry.CHID.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 16 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 14 1
-- 9 10 1
-- 9 11 1
-- 11 12 1
-- 11 13 1
-- 13 14 1
-- 14 15 1
-- 16 17 1
-- 16 18 1
--!entry.CHID.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
-- "R" 1 "A" 18
--!entry.CHID.unit.name single str
-- "CHID"
--!entry.CHID.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.200813 5.026064 1.321087
-- 3.942782 5.885086 2.382972
-- 3.339725 5.691913 3.169805
-- 4.624274 6.997642 2.182500
-- 4.563048 7.811875 2.904563
-- 5.294011 6.891451 1.061663
-- 5.058974 5.678868 0.492453
-- 5.537741 5.417846 -0.451343
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CHID.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CHID.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CHID" 1 19 1 "p" 0
--!entry.CHID.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CHID.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CHID.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CHIE.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.124850
-- "HA" "H1" 0 1 131072 4 1 0.066680
-- "CB" "CT" 0 1 131072 5 6 -0.261430
-- "HB2" "HC" 0 1 131072 6 1 0.140860
-- "HB3" "HC" 0 1 131072 7 1 0.140860
-- "CG" "CC" 0 1 131072 8 6 0.443190
-- "ND1" "NB" 0 1 131072 9 7 -0.679990
-- "CE1" "CR" 0 1 131072 10 6 0.325720
-- "HE1" "H5" 0 1 131072 11 1 0.037400
-- "NE2" "NA" 0 1 131072 12 7 -0.315320
-- "HE2" "H" 0 1 131072 13 1 0.339080
-- "CD2" "CW" 0 1 131072 14 6 -0.228430
-- "HD2" "H4" 0 1 131072 15 1 0.169290
-- "C" "C" 0 1 131072 16 6 0.705530
-- "O" "O2" 0 1 131072 17 8 -0.822990
-- "OXT" "O2" 0 1 131072 18 8 -0.822990
--!entry.CHIE.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "CC" 0 -1 0.0
-- "ND1" "NB" 0 -1 0.0
-- "CE1" "CR" 0 -1 0.0
-- "HE1" "H5" 0 -1 0.0
-- "NE2" "NA" 0 -1 0.0
-- "HE2" "H" 0 -1 0.0
-- "CD2" "CW" 0 -1 0.0
-- "HD2" "H4" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CHIE.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CHIE.unit.childsequence single int
-- 2
--!entry.CHIE.unit.connect array int
-- 1
-- 0
--!entry.CHIE.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 16 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 14 1
-- 9 10 1
-- 10 11 1
-- 10 12 1
-- 12 13 1
-- 12 14 1
-- 14 15 1
-- 16 17 1
-- 16 18 1
--!entry.CHIE.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
-- "R" 1 "A" 18
--!entry.CHIE.unit.name single str
-- "CHIE"
--!entry.CHIE.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.200813 5.026064 1.321087
-- 3.942782 5.885086 2.382972
-- 4.624274 6.997642 2.182500
-- 4.563048 7.811875 2.904563
-- 5.294011 6.891451 1.061663
-- 5.896297 7.605085 0.676854
-- 5.058974 5.678868 0.492453
-- 5.537741 5.417846 -0.451343
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CHIE.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CHIE.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CHIE" 1 19 1 "p" 0
--!entry.CHIE.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CHIE.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CHIE.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CHIP.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.029340
-- "HA" "H1" 0 1 131072 4 1 0.065870
-- "CB" "CT" 0 1 131072 5 6 -0.093770
-- "HB2" "HC" 0 1 131072 6 1 0.087980
-- "HB3" "HC" 0 1 131072 7 1 0.087980
-- "CG" "CC" 0 1 131072 8 6 0.263950
-- "ND1" "NA" 0 1 131072 9 7 -0.125480
-- "HD1" "H" 0 1 131072 10 1 0.367860
-- "CE1" "CR" 0 1 131072 11 6 -0.069000
-- "HE1" "H5" 0 1 131072 12 1 0.195860
-- "NE2" "NA" 0 1 131072 13 7 0.034660
-- "HE2" "H" 0 1 131072 14 1 0.297530
-- "CD2" "CW" 0 1 131072 15 6 -0.181280
-- "HD2" "H4" 0 1 131072 16 1 0.150240
-- "C" "C" 0 1 131072 17 6 0.705530
-- "O" "O2" 0 1 131072 18 8 -0.822990
-- "OXT" "O2" 0 1 131072 19 8 -0.822990
--!entry.CHIP.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "CC" 0 -1 0.0
-- "ND1" "NA" 0 -1 0.0
-- "HD1" "H" 0 -1 0.0
-- "CE1" "CR" 0 -1 0.0
-- "HE1" "H5" 0 -1 0.0
-- "NE2" "NA" 0 -1 0.0
-- "HE2" "H" 0 -1 0.0
-- "CD2" "CW" 0 -1 0.0
-- "HD2" "H4" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CHIP.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CHIP.unit.childsequence single int
-- 2
--!entry.CHIP.unit.connect array int
-- 1
-- 0
--!entry.CHIP.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 17 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 15 1
-- 9 10 1
-- 9 11 1
-- 11 12 1
-- 11 13 1
-- 13 14 1
-- 13 15 1
-- 15 16 1
-- 17 18 1
-- 17 19 1
--!entry.CHIP.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
-- "R" 1 "A" 18
-- "R" 1 "A" 19
--!entry.CHIP.unit.name single str
-- "CHIP"
--!entry.CHIP.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.200813 5.026064 1.321087
-- 3.942782 5.885086 2.382972
-- 3.339725 5.691913 3.169805
-- 4.624274 6.997642 2.182500
-- 4.563048 7.811875 2.904563
-- 5.294011 6.891451 1.061663
-- 5.896297 7.605085 0.676854
-- 5.058974 5.678868 0.492453
-- 5.537741 5.417846 -0.451343
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CHIP.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CHIP.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CHIP" 1 20 1 "p" 0
--!entry.CHIP.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CHIP.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CHIP.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CILE.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.287930
-- "HA" "H1" 0 1 131072 4 1 0.135390
-- "CB" "CT" 0 1 131072 5 6 0.357940
-- "HB" "HC" 0 1 131072 6 1 -0.079320
-- "CG2" "CT" 0 1 131072 7 6 -0.501190
-- "HG21" "HC" 0 1 131072 8 1 0.140430
-- "HG22" "HC" 0 1 131072 9 1 0.140430
-- "HG23" "HC" 0 1 131072 10 1 0.140430
-- "CG1" "CT" 0 1 131072 11 6 -0.081150
-- "HG12" "HC" 0 1 131072 12 1 0.048560
-- "HG13" "HC" 0 1 131072 13 1 0.048560
-- "CD1" "CT" 0 1 131072 14 6 -0.094950
-- "HD11" "HC" 0 1 131072 15 1 0.028620
-- "HD12" "HC" 0 1 131072 16 1 0.028620
-- "HD13" "HC" 0 1 131072 17 1 0.028620
-- "C" "C" 0 1 131072 18 6 0.705530
-- "O" "O2" 0 1 131072 19 8 -0.822990
-- "OXT" "O2" 0 1 131072 20 8 -0.822990
--!entry.CILE.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB" "HC" 0 -1 0.0
-- "CG2" "CT" 0 -1 0.0
-- "HG21" "HC" 0 -1 0.0
-- "HG22" "HC" 0 -1 0.0
-- "HG23" "HC" 0 -1 0.0
-- "CG1" "CT" 0 -1 0.0
-- "HG12" "HC" 0 -1 0.0
-- "HG13" "HC" 0 -1 0.0
-- "CD1" "CT" 0 -1 0.0
-- "HD11" "HC" 0 -1 0.0
-- "HD12" "HC" 0 -1 0.0
-- "HD13" "HC" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CILE.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CILE.unit.childsequence single int
-- 2
--!entry.CILE.unit.connect array int
-- 1
-- 0
--!entry.CILE.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 18 1
-- 5 6 1
-- 5 7 1
-- 5 11 1
-- 7 8 1
-- 7 9 1
-- 7 10 1
-- 11 12 1
-- 11 13 1
-- 11 14 1
-- 14 15 1
-- 14 16 1
-- 14 17 1
-- 18 19 1
-- 18 20 1
--!entry.CILE.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
-- "R" 1 "A" 18
-- "R" 1 "A" 19
-- "R" 1 "A" 20
--!entry.CILE.unit.name single str
-- "CILE"
--!entry.CILE.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.552136 3.620733 1.245168
-- 2.470128 3.752486 1.245640
-- 3.970045 2.845728 2.490296
-- 5.052053 2.713974 2.490763
-- 3.671561 3.399208 3.380615
-- 3.485650 1.869275 2.490737
-- 4.230204 4.986694 1.245169
-- 5.312310 4.855746 1.245164
-- 3.931820 5.541027 0.355348
-- 3.812294 5.761632 2.490339
-- 4.110777 5.208104 3.380628
-- 4.296689 6.738085 2.490833
-- 2.730286 5.893383 2.490813
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CILE.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CILE.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CILE" 1 21 1 "p" 0
--!entry.CILE.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CILE.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CILE.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CLEU.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.151630
-- "HA" "H1" 0 1 131072 4 1 0.080730
-- "CB" "CT" 0 1 131072 5 6 -0.251240
-- "HB2" "HC" 0 1 131072 6 1 0.113740
-- "HB3" "HC" 0 1 131072 7 1 0.113740
-- "CG" "CT" 0 1 131072 8 6 0.579270
-- "HG" "HC" 0 1 131072 9 1 -0.096890
-- "CD1" "CT" 0 1 131072 10 6 -0.760610
-- "HD11" "HC" 0 1 131072 11 1 0.197760
-- "HD12" "HC" 0 1 131072 12 1 0.197760
-- "HD13" "HC" 0 1 131072 13 1 0.197760
-- "CD2" "CT" 0 1 131072 14 6 -0.760610
-- "HD21" "HC" 0 1 131072 15 1 0.197760
-- "HD22" "HC" 0 1 131072 16 1 0.197760
-- "HD23" "HC" 0 1 131072 17 1 0.197760
-- "C" "C" 0 1 131072 18 6 0.705530
-- "O" "O2" 0 1 131072 19 8 -0.822990
-- "OXT" "O2" 0 1 131072 20 8 -0.822990
--!entry.CLEU.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "CT" 0 -1 0.0
-- "HG" "HC" 0 -1 0.0
-- "CD1" "CT" 0 -1 0.0
-- "HD11" "HC" 0 -1 0.0
-- "HD12" "HC" 0 -1 0.0
-- "HD13" "HC" 0 -1 0.0
-- "CD2" "CT" 0 -1 0.0
-- "HD21" "HC" 0 -1 0.0
-- "HD22" "HC" 0 -1 0.0
-- "HD23" "HC" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CLEU.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CLEU.unit.childsequence single int
-- 2
--!entry.CLEU.unit.connect array int
-- 1
-- 0
--!entry.CLEU.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 18 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 10 1
-- 8 14 1
-- 10 11 1
-- 10 12 1
-- 10 13 1
-- 14 15 1
-- 14 16 1
-- 14 17 1
-- 18 19 1
-- 18 20 1
--!entry.CLEU.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
-- "R" 1 "A" 18
-- "R" 1 "A" 19
-- "R" 1 "A" 20
--!entry.CLEU.unit.name single str
-- "CLEU"
--!entry.CLEU.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.274186 5.009602 1.194577
-- 5.354271 4.863178 1.185788
-- 3.853429 5.762895 -0.062857
-- 2.773449 5.910113 -0.054557
-- 4.351513 6.732052 -0.090203
-- 4.134159 5.185704 -0.943846
-- 3.881105 5.817645 2.426721
-- 4.181626 5.279602 3.325774
-- 4.379198 6.786825 2.400363
-- 2.801135 5.964881 2.435959
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CLEU.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CLEU.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CLEU" 1 21 1 "p" 0
--!entry.CLEU.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CLEU.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CLEU.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CLYN.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.163200
-- "HA" "H1" 0 1 131072 4 1 0.095860
-- "CB" "CT" 0 1 131072 5 6 0.095690
-- "HB2" "HC" 0 1 131072 6 1 -0.015960
-- "HB3" "HC" 0 1 131072 7 1 -0.015960
-- "CG" "CT" 0 1 131072 8 6 0.018310
-- "HG2" "HC" 0 1 131072 9 1 0.010750
-- "HG3" "HC" 0 1 131072 10 1 0.010750
-- "CD" "CT" 0 1 131072 11 6 -0.229410
-- "HD2" "HC" 0 1 131072 12 1 0.104310
-- "HD3" "HC" 0 1 131072 13 1 0.104310
-- "CE" "CT" 0 1 131072 14 6 0.528910
-- "HE2" "H1" 0 1 131072 15 1 -0.110750
-- "HE3" "H1" 0 1 131072 16 1 -0.110750
-- "NZ" "NT" 0 1 131072 17 7 -0.980200
-- "HZ2" "H" 0 1 131072 18 1 0.355200
-- "HZ3" "H" 0 1 131072 19 1 0.355200
-- "C" "C" 0 1 131072 20 6 0.705530
-- "O" "O2" 0 1 131072 21 8 -0.822990
-- "OXT" "O2" 0 1 131072 22 8 -0.822990
--!entry.CLYN.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "CT" 0 -1 0.0
-- "HG2" "HC" 0 -1 0.0
-- "HG3" "HC" 0 -1 0.0
-- "CD" "CT" 0 -1 0.0
-- "HD2" "HC" 0 -1 0.0
-- "HD3" "HC" 0 -1 0.0
-- "CE" "CT" 0 -1 0.0
-- "HE2" "H1" 0 -1 0.0
-- "HE3" "H1" 0 -1 0.0
-- "NZ" "NT" 0 -1 0.0
-- "HZ2" "H" 0 -1 0.0
-- "HZ3" "H" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CLYN.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CLYN.unit.childsequence single int
-- 2
--!entry.CLYN.unit.connect array int
-- 1
-- 0
--!entry.CLYN.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 20 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 10 1
-- 8 11 1
-- 11 12 1
-- 11 13 1
-- 11 14 1
-- 14 15 1
-- 14 16 1
-- 14 17 1
-- 17 18 1
-- 17 19 1
-- 20 21 1
-- 20 22 1
--!entry.CLYN.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
-- "R" 1 "A" 18
-- "R" 1 "A" 19
-- "R" 1 "A" 20
-- "R" 1 "A" 21
-- "R" 1 "A" 22
--!entry.CLYN.unit.name single str
-- "CLYN"
--!entry.CLYN.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.274186 5.009602 1.194577
-- 5.354271 4.863178 1.185788
-- 3.973781 5.548460 0.295972
-- 3.881105 5.817645 2.426721
-- 2.801135 5.964881 2.435959
-- 4.181626 5.279602 3.325774
-- 4.578325 7.173410 2.389153
-- 5.658410 7.026987 2.380363
-- 4.277917 7.712267 1.490550
-- 4.199422 7.952309 3.576860
-- 4.661186 8.850226 3.551979
-- 3.198675 8.088466 3.584971
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CLYN.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CLYN.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CLYN" 1 23 1 "p" 0
--!entry.CLYN.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CLYN.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CLYN.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CLYS.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.185190
-- "HA" "H1" 0 1 131072 4 1 0.120990
-- "CB" "CT" 0 1 131072 5 6 0.035190
-- "HB2" "HC" 0 1 131072 6 1 0.015850
-- "HB3" "HC" 0 1 131072 7 1 0.015850
-- "CG" "CT" 0 1 131072 8 6 -0.039190
-- "HG2" "HC" 0 1 131072 9 1 0.047540
-- "HG3" "HC" 0 1 131072 10 1 0.047540
-- "CD" "CT" 0 1 131072 11 6 -0.190030
-- "HD2" "HC" 0 1 131072 12 1 0.094440
-- "HD3" "HC" 0 1 131072 13 1 0.094440
-- "CE" "CT" 0 1 131072 14 6 0.457400
-- "HE2" "HP" 0 1 131072 15 1 -0.049110
-- "HE3" "HP" 0 1 131072 16 1 -0.049110
-- "NZ" "N3" 0 1 131072 17 7 -0.371640
-- "HZ1" "H" 0 1 131072 18 1 0.336030
-- "HZ2" "H" 0 1 131072 19 1 0.336030
-- "HZ3" "H" 0 1 131072 20 1 0.336030
-- "C" "C" 0 1 131072 21 6 0.705530
-- "O" "O2" 0 1 131072 22 8 -0.822990
-- "OXT" "O2" 0 1 131072 23 8 -0.822990
--!entry.CLYS.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "CT" 0 -1 0.0
-- "HG2" "HC" 0 -1 0.0
-- "HG3" "HC" 0 -1 0.0
-- "CD" "CT" 0 -1 0.0
-- "HD2" "HC" 0 -1 0.0
-- "HD3" "HC" 0 -1 0.0
-- "CE" "CT" 0 -1 0.0
-- "HE2" "HP" 0 -1 0.0
-- "HE3" "HP" 0 -1 0.0
-- "NZ" "N3" 0 -1 0.0
-- "HZ1" "H" 0 -1 0.0
-- "HZ2" "H" 0 -1 0.0
-- "HZ3" "H" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CLYS.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CLYS.unit.childsequence single int
-- 2
--!entry.CLYS.unit.connect array int
-- 1
-- 0
--!entry.CLYS.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 21 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 10 1
-- 8 11 1
-- 11 12 1
-- 11 13 1
-- 11 14 1
-- 14 15 1
-- 14 16 1
-- 14 17 1
-- 17 18 1
-- 17 19 1
-- 17 20 1
-- 21 22 1
-- 21 23 1
--!entry.CLYS.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
-- "R" 1 "A" 18
-- "R" 1 "A" 19
-- "R" 1 "A" 20
-- "R" 1 "A" 21
-- "R" 1 "A" 22
-- "R" 1 "A" 23
--!entry.CLYS.unit.name single str
-- "CLYS"
--!entry.CLYS.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.274186 5.009602 1.194577
-- 5.354271 4.863178 1.185788
-- 3.973781 5.548460 0.295972
-- 3.881105 5.817645 2.426721
-- 2.801135 5.964881 2.435959
-- 4.181626 5.279602 3.325774
-- 4.578325 7.173410 2.389153
-- 5.658410 7.026987 2.380363
-- 4.277917 7.712267 1.490550
-- 4.199422 7.952309 3.576860
-- 4.478085 7.453366 4.409628
-- 4.661186 8.850226 3.551979
-- 3.198675 8.088466 3.584971
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CLYS.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CLYS.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CLYS" 1 24 1 "p" 0
--!entry.CLYS.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CLYS.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CLYS.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CMET.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.171820
-- "HA" "H1" 0 1 131072 4 1 0.129660
-- "CB" "CT" 0 1 131072 5 6 0.250160
-- "HB2" "HC" 0 1 131072 6 1 -0.026630
-- "HB3" "HC" 0 1 131072 7 1 -0.026630
-- "CG" "CT" 0 1 131072 8 6 -0.366710
-- "HG2" "H1" 0 1 131072 9 1 0.160270
-- "HG3" "H1" 0 1 131072 10 1 0.160270
-- "SD" "S" 0 1 131072 11 16 -0.122120
-- "CE" "CT" 0 1 131072 12 6 -0.263690
-- "HE1" "H1" 0 1 131072 13 1 0.110100
-- "HE2" "H1" 0 1 131072 14 1 0.110100
-- "HE3" "H1" 0 1 131072 15 1 0.110100
-- "C" "C" 0 1 131072 16 6 0.705530
-- "O" "O2" 0 1 131072 17 8 -0.822990
-- "OXT" "O2" 0 1 131072 18 8 -0.822990
--!entry.CMET.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "CT" 0 -1 0.0
-- "HG2" "H1" 0 -1 0.0
-- "HG3" "H1" 0 -1 0.0
-- "SD" "S" 0 -1 0.0
-- "CE" "CT" 0 -1 0.0
-- "HE1" "H1" 0 -1 0.0
-- "HE2" "H1" 0 -1 0.0
-- "HE3" "H1" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CMET.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CMET.unit.childsequence single int
-- 2
--!entry.CMET.unit.connect array int
-- 1
-- 0
--!entry.CMET.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 16 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 10 1
-- 8 11 1
-- 11 12 1
-- 12 13 1
-- 12 14 1
-- 12 15 1
-- 16 17 1
-- 16 18 1
--!entry.CMET.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
-- "R" 1 "A" 18
--!entry.CMET.unit.name single str
-- "CMET"
--!entry.CMET.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.274186 5.009602 1.194577
-- 5.354271 4.863178 1.185788
-- 3.973781 5.548460 0.295972
-- 3.817309 5.981266 2.651708
-- 4.753212 7.463128 2.340949
-- 4.433582 7.904044 1.396741
-- 4.585907 8.175299 3.148985
-- 5.814074 7.218763 2.286554
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CMET.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CMET.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CMET" 1 19 1 "p" 0
--!entry.CMET.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CMET.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CMET.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CPHE.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.072690
-- "HA" "H1" 0 1 131072 4 1 0.053080
-- "CB" "CT" 0 1 131072 5 6 -0.213480
-- "HB2" "HC" 0 1 131072 6 1 0.116210
-- "HB3" "HC" 0 1 131072 7 1 0.116210
-- "CG" "CA" 0 1 131072 8 6 0.197950
-- "CD1" "CA" 0 1 131072 9 6 -0.219910
-- "HD1" "HA" 0 1 131072 10 1 0.142120
-- "CE1" "CA" 0 1 131072 11 6 -0.084720
-- "HE1" "HA" 0 1 131072 12 1 0.108500
-- "CZ" "CA" 0 1 131072 13 6 -0.128160
-- "HZ" "HA" 0 1 131072 14 1 0.091960
-- "CE2" "CA" 0 1 131072 15 6 -0.084720
-- "HE2" "HA" 0 1 131072 16 1 0.108500
-- "CD2" "CA" 0 1 131072 17 6 -0.219910
-- "HD2" "HA" 0 1 131072 18 1 0.142120
-- "C" "C" 0 1 131072 19 6 0.705530
-- "O" "O2" 0 1 131072 20 8 -0.822990
-- "OXT" "O2" 0 1 131072 21 8 -0.822990
--!entry.CPHE.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "CA" 0 -1 0.0
-- "CD1" "CA" 0 -1 0.0
-- "HD1" "HA" 0 -1 0.0
-- "CE1" "CA" 0 -1 0.0
-- "HE1" "HA" 0 -1 0.0
-- "CZ" "CA" 0 -1 0.0
-- "HZ" "HA" 0 -1 0.0
-- "CE2" "CA" 0 -1 0.0
-- "HE2" "HA" 0 -1 0.0
-- "CD2" "CA" 0 -1 0.0
-- "HD2" "HA" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CPHE.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CPHE.unit.childsequence single int
-- 2
--!entry.CPHE.unit.connect array int
-- 1
-- 0
--!entry.CPHE.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 19 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 17 1
-- 9 10 1
-- 9 11 1
-- 11 12 1
-- 11 13 1
-- 13 14 1
-- 13 15 1
-- 15 16 1
-- 15 17 1
-- 17 18 1
-- 19 20 1
-- 19 21 1
--!entry.CPHE.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
-- "R" 1 "A" 18
-- "R" 1 "A" 19
-- "R" 1 "A" 20
-- "R" 1 "A" 21
--!entry.CPHE.unit.name single str
-- "CPHE"
--!entry.CPHE.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.200813 5.026064 1.321087
-- 3.911613 5.857250 2.409890
-- 3.236123 5.513843 3.193398
-- 4.490014 7.129513 2.492354
-- 4.264853 7.776651 3.340066
-- 5.357616 7.570591 1.486016
-- 5.807943 8.561138 1.550220
-- 5.646818 6.739407 0.397211
-- 6.322309 7.082817 -0.386295
-- 5.068419 5.467143 0.314744
-- 5.293584 4.820007 -0.532968
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CPHE.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CPHE.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CPHE" 1 22 1 "p" 0
--!entry.CPHE.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CPHE.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CPHE.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CPRO.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.251210
-- "CD" "CT" 0 1 131072 2 6 0.062560
-- "HD2" "H1" 0 1 131072 3 1 0.022030
-- "HD3" "H1" 0 1 131072 4 1 0.022010
-- "CG" "CT" 0 1 131072 5 6 0.066380
-- "HG2" "HC" 0 1 131072 6 1 0.007490
-- "HG3" "HC" 0 1 131072 7 1 0.007490
-- "CB" "CT" 0 1 131072 8 6 0.069820
-- "HB2" "HC" 0 1 131072 9 1 0.013210
-- "HB3" "HC" 0 1 131072 10 1 0.013210
-- "CA" "CT" 0 1 131072 11 6 -0.200450
-- "HA" "H1" 0 1 131072 12 1 0.107910
-- "C" "C" 0 1 131072 13 6 0.705530
-- "O" "O2" 0 1 131072 14 8 -0.822990
-- "OXT" "O2" 0 1 131072 15 8 -0.822990
--!entry.CPRO.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "CD" "CT" 0 -1 0.0
-- "HD2" "H1" 0 -1 0.0
-- "HD3" "H1" 0 -1 0.0
-- "CG" "CT" 0 -1 0.0
-- "HG2" "HC" 0 -1 0.0
-- "HG3" "HC" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CPRO.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CPRO.unit.childsequence single int
-- 2
--!entry.CPRO.unit.connect array int
-- 1
-- 0
--!entry.CPRO.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 11 1
-- 2 3 1
-- 2 4 1
-- 2 5 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 10 1
-- 8 11 1
-- 11 12 1
-- 11 13 1
-- 13 14 1
-- 13 15 1
--!entry.CPRO.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
--!entry.CPRO.unit.name single str
-- "CPRO"
--!entry.CPRO.unit.positions table dbl x dbl y dbl z
-- 3.326834 1.557389 -1.603945E-06
-- 4.302147 0.476598 0.080119
-- 4.419998 0.019283 -0.902263
-- 3.955888 -0.274040 0.790574
-- 5.547126 1.172441 0.544693
-- 6.413549 0.741636 0.042879
-- 5.652950 1.047934 1.622376
-- 5.369091 2.628184 0.185227
-- 5.969289 2.861861 -0.694123
-- 5.690642 3.251038 1.019947
-- 3.933610 2.871277 -0.104508
-- 3.611470 3.488570 0.734106
-- 3.505164 3.526392 -1.409783
-- 2.754240 2.939065 -2.185412
-- 3.904907 4.650696 -1.704043
--!entry.CPRO.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CPRO.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CPRO" 1 16 1 "p" 0
--!entry.CPRO.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CPRO.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CPRO.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CSER.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.069940
-- "HA" "H1" 0 1 131072 4 1 0.110000
-- "CB" "CT" 0 1 131072 5 6 0.169960
-- "HB2" "H1" 0 1 131072 6 1 0.022900
-- "HB3" "H1" 0 1 131072 7 1 0.022900
-- "OG" "OH" 0 1 131072 8 8 -0.571310
-- "HG" "HO" 0 1 131072 9 1 0.368550
-- "C" "C" 0 1 131072 10 6 0.705530
-- "O" "O2" 0 1 131072 11 8 -0.822990
-- "OXT" "O2" 0 1 131072 12 8 -0.822990
--!entry.CSER.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "H1" 0 -1 0.0
-- "HB3" "H1" 0 -1 0.0
-- "OG" "OH" 0 -1 0.0
-- "HG" "HO" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CSER.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CSER.unit.childsequence single int
-- 2
--!entry.CSER.unit.connect array int
-- 1
-- 0
--!entry.CSER.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 10 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 10 11 1
-- 10 12 1
--!entry.CSER.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
--!entry.CSER.unit.name single str
-- "CSER"
--!entry.CSER.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.230753 4.925145 1.196917
-- 3.983305 5.433814 1.972562
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CSER.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CSER.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CSER" 1 13 1 "p" 0
--!entry.CSER.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CSER.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CSER.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CTHR.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 0.019110
-- "HA" "H1" 0 1 131072 4 1 0.067720
-- "CB" "CT" 0 1 131072 5 6 0.444500
-- "HB" "H1" 0 1 131072 6 1 -0.106110
-- "CG2" "CT" 0 1 131072 7 6 -0.496090
-- "HG21" "HC" 0 1 131072 8 1 0.133070
-- "HG22" "HC" 0 1 131072 9 1 0.133070
-- "HG23" "HC" 0 1 131072 10 1 0.133070
-- "OG1" "OH" 0 1 131072 11 8 -0.724290
-- "HG1" "HO" 0 1 131072 12 1 0.449010
-- "C" "C" 0 1 131072 13 6 0.705530
-- "O" "O2" 0 1 131072 14 8 -0.822990
-- "OXT" "O2" 0 1 131072 15 8 -0.822990
--!entry.CTHR.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB" "H1" 0 -1 0.0
-- "CG2" "CT" 0 -1 0.0
-- "HG21" "HC" 0 -1 0.0
-- "HG22" "HC" 0 -1 0.0
-- "HG23" "HC" 0 -1 0.0
-- "OG1" "OH" 0 -1 0.0
-- "HG1" "HO" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CTHR.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CTHR.unit.childsequence single int
-- 2
--!entry.CTHR.unit.connect array int
-- 1
-- 0
--!entry.CTHR.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 13 1
-- 5 6 1
-- 5 7 1
-- 5 11 1
-- 7 8 1
-- 7 9 1
-- 7 10 1
-- 11 12 1
-- 13 14 1
-- 13 15 1
--!entry.CTHR.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
--!entry.CTHR.unit.name single str
-- "CTHR"
--!entry.CTHR.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 4.075059 4.623017 1.205786
-- 2.065936 3.859425 1.244383
-- 1.567127 2.890627 1.271209
-- 1.784431 4.436953 2.124903
-- 1.764699 4.397847 0.345796
-- 3.971501 2.947413 2.411212
-- 3.724052 3.456082 3.186857
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CTHR.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CTHR.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CTHR" 1 16 1 "p" 0
--!entry.CTHR.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CTHR.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CTHR.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CTRP.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.090040
-- "HA" "H1" 0 1 131072 4 1 0.084020
-- "CB" "CT" 0 1 131072 5 6 0.040520
-- "HB2" "HC" 0 1 131072 6 1 0.031680
-- "HB3" "HC" 0 1 131072 7 1 0.031680
-- "CG" "C*" 0 1 131072 8 6 -0.293840
-- "CD1" "CW" 0 1 131072 9 6 0.036620
-- "HD1" "H4" 0 1 131072 10 1 0.130250
-- "NE1" "NA" 0 1 131072 11 7 -0.473000
-- "HE1" "H" 0 1 131072 12 1 0.391490
-- "CE2" "CN" 0 1 131072 13 6 0.187500
-- "CZ2" "CA" 0 1 131072 14 6 -0.261570
-- "HZ2" "HA" 0 1 131072 15 1 0.183290
-- "CH2" "CA" 0 1 131072 16 6 -0.178280
-- "HH2" "HA" 0 1 131072 17 1 0.106010
-- "CZ3" "CA" 0 1 131072 18 6 -0.048150
-- "HZ3" "HA" 0 1 131072 19 1 0.086830
-- "CE3" "CA" 0 1 131072 20 6 -0.414910
-- "HE3" "HA" 0 1 131072 21 1 0.219040
-- "CD2" "CB" 0 1 131072 22 6 0.283920
-- "C" "C" 0 1 131072 23 6 0.705530
-- "O" "O2" 0 1 131072 24 8 -0.822990
-- "OXT" "O2" 0 1 131072 25 8 -0.822990
--!entry.CTRP.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "C*" 0 -1 0.0
-- "CD1" "CW" 0 -1 0.0
-- "HD1" "H4" 0 -1 0.0
-- "NE1" "NA" 0 -1 0.0
-- "HE1" "H" 0 -1 0.0
-- "CE2" "CN" 0 -1 0.0
-- "CZ2" "CA" 0 -1 0.0
-- "HZ2" "HA" 0 -1 0.0
-- "CH2" "CA" 0 -1 0.0
-- "HH2" "HA" 0 -1 0.0
-- "CZ3" "CA" 0 -1 0.0
-- "HZ3" "HA" 0 -1 0.0
-- "CE3" "CA" 0 -1 0.0
-- "HE3" "HA" 0 -1 0.0
-- "CD2" "CB" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CTRP.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CTRP.unit.childsequence single int
-- 2
--!entry.CTRP.unit.connect array int
-- 1
-- 0
--!entry.CTRP.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 23 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 22 1
-- 9 10 1
-- 9 11 1
-- 11 12 1
-- 11 13 1
-- 13 14 1
-- 13 22 1
-- 14 15 1
-- 14 16 1
-- 16 17 1
-- 16 18 1
-- 18 19 1
-- 18 20 1
-- 20 21 1
-- 20 22 1
-- 23 24 1
-- 23 25 1
--!entry.CTRP.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
-- "R" 1 "A" 18
-- "R" 1 "A" 19
-- "R" 1 "A" 20
-- "R" 1 "A" 21
-- "R" 1 "A" 22
-- "R" 1 "A" 23
-- "R" 1 "A" 24
-- "R" 1 "A" 25
--!entry.CTRP.unit.name single str
-- "CTRP"
--!entry.CTRP.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.200813 5.026064 1.321087
-- 4.023453 5.931084 2.293240
-- 3.368841 5.705466 3.135071
-- 4.811943 7.073555 1.949808
-- 4.882921 7.922010 2.493118
-- 5.427347 6.842060 0.816764
-- 6.297161 7.689052 0.119605
-- 6.531230 8.676649 0.517050
-- 6.814091 7.187011 -1.069023
-- 7.498074 7.791857 -1.664362
-- 6.482659 5.953119 -1.505101
-- 6.897660 5.575648 -2.439654
-- 5.604041 5.117355 -0.785636
-- 5.358720 4.126570 -1.168080
-- 5.083390 5.623004 0.411545
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CTRP.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CTRP.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CTRP" 1 26 1 "p" 0
--!entry.CTRP.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CTRP.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CTRP.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CTYR.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.175550
-- "HA" "H1" 0 1 131072 4 1 0.121890
-- "CB" "CT" 0 1 131072 5 6 -0.093730
-- "HB2" "HC" 0 1 131072 6 1 0.086440
-- "HB3" "HC" 0 1 131072 7 1 0.086440
-- "CG" "CA" 0 1 131072 8 6 0.017450
-- "CD1" "CA" 0 1 131072 9 6 -0.128300
-- "HD1" "HA" 0 1 131072 10 1 0.137650
-- "CE1" "CA" 0 1 131072 11 6 -0.334250
-- "HE1" "HA" 0 1 131072 12 1 0.190120
-- "CZ" "CA" 0 1 131072 13 6 0.442000
-- "OH" "OH" 0 1 131072 14 8 -0.544620
-- "HH" "HO" 0 1 131072 15 1 0.382300
-- "CE2" "CA" 0 1 131072 16 6 -0.334250
-- "HE2" "HA" 0 1 131072 17 1 0.190120
-- "CD2" "CA" 0 1 131072 18 6 -0.128300
-- "HD2" "HA" 0 1 131072 19 1 0.137650
-- "C" "C" 0 1 131072 20 6 0.705530
-- "O" "O2" 0 1 131072 21 8 -0.822990
-- "OXT" "O2" 0 1 131072 22 8 -0.822990
--!entry.CTYR.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "CA" 0 -1 0.0
-- "CD1" "CA" 0 -1 0.0
-- "HD1" "HA" 0 -1 0.0
-- "CE1" "CA" 0 -1 0.0
-- "HE1" "HA" 0 -1 0.0
-- "CZ" "CA" 0 -1 0.0
-- "OH" "OH" 0 -1 0.0
-- "HH" "HO" 0 -1 0.0
-- "CE2" "CA" 0 -1 0.0
-- "HE2" "HA" 0 -1 0.0
-- "CD2" "CA" 0 -1 0.0
-- "HD2" "HA" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CTYR.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CTYR.unit.childsequence single int
-- 2
--!entry.CTYR.unit.connect array int
-- 1
-- 0
--!entry.CTYR.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 20 1
-- 5 6 1
-- 5 7 1
-- 5 8 1
-- 8 9 1
-- 8 18 1
-- 9 10 1
-- 9 11 1
-- 11 12 1
-- 11 13 1
-- 13 14 1
-- 13 16 1
-- 14 15 1
-- 16 17 1
-- 16 18 1
-- 18 19 1
-- 20 21 1
-- 20 22 1
--!entry.CTYR.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
-- "R" 1 "A" 18
-- "R" 1 "A" 19
-- "R" 1 "A" 20
-- "R" 1 "A" 21
-- "R" 1 "A" 22
--!entry.CTYR.unit.name single str
-- "CTYR"
--!entry.CTYR.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.267328 4.996267 1.194946
-- 4.059927 5.918911 2.227280
-- 3.400108 5.668218 3.057877
-- 4.699998 7.163547 2.192791
-- 4.538522 7.881891 2.996538
-- 5.547471 7.485542 1.125970
-- 6.169255 8.694617 1.092468
-- 5.956327 9.246984 1.848214
-- 5.754875 6.562900 0.093635
-- 6.414694 6.813595 -0.736962
-- 5.114806 5.318263 0.128119
-- 5.276286 4.599920 -0.675627
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CTYR.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CTYR.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CTYR" 1 23 1 "p" 0
--!entry.CTYR.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CTYR.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CTYR.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.CVAL.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.404070
-- "H" "H" 0 1 131072 2 1 0.291460
-- "CA" "CT" 0 1 131072 3 6 -0.213060
-- "HA" "H1" 0 1 131072 4 1 0.122010
-- "CB" "CT" 0 1 131072 5 6 0.550920
-- "HB" "HC" 0 1 131072 6 1 -0.083650
-- "CG1" "CT" 0 1 131072 7 6 -0.705720
-- "HG11" "HC" 0 1 131072 8 1 0.181380
-- "HG12" "HC" 0 1 131072 9 1 0.181380
-- "HG13" "HC" 0 1 131072 10 1 0.181380
-- "CG2" "CT" 0 1 131072 11 6 -0.705720
-- "HG21" "HC" 0 1 131072 12 1 0.181380
-- "HG22" "HC" 0 1 131072 13 1 0.181380
-- "HG23" "HC" 0 1 131072 14 1 0.181380
-- "C" "C" 0 1 131072 15 6 0.705530
-- "O" "O2" 0 1 131072 16 8 -0.822990
-- "OXT" "O2" 0 1 131072 17 8 -0.822990
--!entry.CVAL.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "H1" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB" "HC" 0 -1 0.0
-- "CG1" "CT" 0 -1 0.0
-- "HG11" "HC" 0 -1 0.0
-- "HG12" "HC" 0 -1 0.0
-- "HG13" "HC" 0 -1 0.0
-- "CG2" "CT" 0 -1 0.0
-- "HG21" "HC" 0 -1 0.0
-- "HG22" "HC" 0 -1 0.0
-- "HG23" "HC" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O2" 0 -1 0.0
-- "OXT" "O2" 0 -1 0.0
--!entry.CVAL.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CVAL.unit.childsequence single int
-- 2
--!entry.CVAL.unit.connect array int
-- 1
-- 0
--!entry.CVAL.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 15 1
-- 5 6 1
-- 5 7 1
-- 5 11 1
-- 7 8 1
-- 7 9 1
-- 7 10 1
-- 11 12 1
-- 11 13 1
-- 11 14 1
-- 15 16 1
-- 15 17 1
--!entry.CVAL.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
--!entry.CVAL.unit.name single str
-- "CVAL"
--!entry.CVAL.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.997712 2.900483 2.489542
-- 5.077693 2.753265 2.481244
-- 3.716972 3.477628 3.370558
-- 3.499630 1.931323 2.516834
-- 4.274186 5.009602 1.194577
-- 3.973781 5.548460 0.295972
-- 3.993559 5.587585 2.075079
-- 5.354271 4.863178 1.185788
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
-- 6.204455 3.702003 -2.420005E-06
--!entry.CVAL.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 0 0 0 0 0
--!entry.CVAL.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "CVAL" 1 18 1 "p" 0
--!entry.CVAL.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.CVAL.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.CVAL.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.NME.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N" 0 1 131072 1 7 -0.534190
-- "H" "H" 0 1 131072 2 1 0.339300
-- "CH3" "CT" 0 1 131072 3 6 0.044800
-- "HH31" "H1" 0 1 131072 4 1 0.050030
-- "HH32" "H1" 0 1 131072 5 1 0.050030
-- "HH33" "H1" 0 1 131072 6 1 0.050030
--!entry.NME.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N" 0 -1 0.0
-- "H" "H" 0 -1 0.0
-- "CH3" "CT" 0 -1 0.0
-- "HH31" "H1" 0 -1 0.0
-- "HH32" "H1" 0 -1 0.0
-- "HH33" "H1" 0 -1 0.0
--!entry.NME.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.NME.unit.childsequence single int
-- 2
--!entry.NME.unit.connect array int
-- 1
-- 0
--!entry.NME.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 3 4 1
-- 3 5 1
-- 3 6 1
--!entry.NME.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
--!entry.NME.unit.name single str
-- "NME"
--!entry.NME.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 3.909407 0.723611 -2.739882E-06
-- 3.970048 2.845795 -1.311163E-07
-- 3.211504 3.628554 2.348065E-06
-- 4.591993 2.943271 0.889822
-- 4.591988 2.943275 -0.889825
--!entry.NME.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 3 0 0 0 0
--!entry.NME.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "NME" 1 7 1 "p" 0
--!entry.NME.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.NME.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.NME.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-diff --git a/dat/leap/lib/aminontpol12.lib b/dat/leap/lib/aminontpol12.lib
-deleted file mode 100644
-index ead0d89..0000000
---- a/dat/leap/lib/aminontpol12.lib
-+++ /dev/null
-@@ -1,3839 +0,0 @@
--!!index array str
-- "ACE"
-- "NALA"
-- "NARG"
-- "NASH"
-- "NASN"
-- "NASP"
-- "NCYM"
-- "NCYS"
-- "NCYX"
-- "NGLH"
-- "NGLN"
-- "NGLU"
-- "NGLY"
-- "NHID"
-- "NHIE"
-- "NHIP"
-- "NILE"
-- "NLEU"
-- "NLYN"
-- "NLYS"
-- "NMET"
-- "NPHE"
-- "NPRO"
-- "NSER"
-- "NTHR"
-- "NTRP"
-- "NTYR"
-- "NVAL"
--!entry.ACE.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "HH31" "HC" 0 1 131072 1 1 0.245320
-- "CH3" "CT" 0 1 131072 2 6 -0.841920
-- "HH32" "HC" 0 1 131072 3 1 0.245320
-- "HH33" "HC" 0 1 131072 4 1 0.245320
-- "C" "C" 0 1 131072 5 6 0.730100
-- "O" "O" 0 1 131072 6 8 -0.624140
--!entry.ACE.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "HH31" "HC" 0 -1 0.0
-- "CH3" "CT" 0 -1 0.0
-- "HH32" "HC" 0 -1 0.0
-- "HH33" "HC" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O" 0 -1 0.0
--!entry.ACE.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.ACE.unit.childsequence single int
-- 2
--!entry.ACE.unit.connect array int
-- 0
-- 5
--!entry.ACE.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 2 3 1
-- 2 4 1
-- 2 5 1
-- 5 6 1
--!entry.ACE.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
--!entry.ACE.unit.name single str
-- "ACE"
--!entry.ACE.unit.positions table dbl x dbl y dbl z
-- 2.000001 1.000000 -1.346410E-06
-- 2.000001 2.090000 1.211769E-07
-- 1.486264 2.453849 0.889824
-- 1.486259 2.453852 -0.889820
-- 3.427420 2.640795 -2.981008E-06
-- 4.390580 1.877406 -6.602402E-06
--!entry.ACE.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 1 5 0 0 0 0
--!entry.ACE.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "ACE" 1 7 1 "p" 0
--!entry.ACE.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.ACE.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.ACE.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.NALA.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N3" 0 1 131072 1 7 0.351680
-- "H1" "H" 0 1 131072 2 1 0.166100
-- "H2" "H" 0 1 131072 3 1 0.166100
-- "H3" "H" 0 1 131072 4 1 0.166100
-- "CA" "CT" 0 1 131072 5 6 -0.062490
-- "HA" "HP" 0 1 131072 6 1 0.052310
-- "CB" "CT" 0 1 131072 7 6 -0.183710
-- "HB1" "HC" 0 1 131072 8 1 0.085560
-- "HB2" "HC" 0 1 131072 9 1 0.085560
-- "HB3" "HC" 0 1 131072 10 1 0.085560
-- "C" "C" 0 1 131072 11 6 0.670480
-- "O" "O" 0 1 131072 12 8 -0.583250
--!entry.NALA.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N3" 0 -1 0.0
-- "H1" "H" 0 -1 0.0
-- "H2" "H" 0 -1 0.0
-- "H3" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "HP" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB1" "HC" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O" 0 -1 0.0
--!entry.NALA.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.NALA.unit.childsequence single int
-- 2
--!entry.NALA.unit.connect array int
-- 0
-- 11
--!entry.NALA.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 1 4 1
-- 1 5 1
-- 5 6 1
-- 5 7 1
-- 5 11 1
-- 7 8 1
-- 7 9 1
-- 7 10 1
-- 11 12 1
--!entry.NALA.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
--!entry.NALA.unit.name single str
-- "NALA"
--!entry.NALA.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 4.046154 0.839991 -2.855245E-06
-- 2.823094 1.499508 -0.874687
-- 2.823097 1.499507 0.874685
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 3.877484 3.115795 2.131197
-- 4.075059 4.623017 1.205786
-- 2.496995 3.801075 1.241379
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
--!entry.NALA.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 0 11 0 0 0 0
--!entry.NALA.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "NALA" 1 13 1 "p" 0
--!entry.NALA.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.NALA.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.NALA.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.NARG.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N3" 0 1 131072 1 7 0.351680
-- "H1" "H" 0 1 131072 2 1 0.166100
-- "H2" "H" 0 1 131072 3 1 0.166100
-- "H3" "H" 0 1 131072 4 1 0.166100
-- "CA" "CT" 0 1 131072 5 6 -0.086660
-- "HA" "HP" 0 1 131072 6 1 0.033450
-- "CB" "CT" 0 1 131072 7 6 0.605740
-- "HB2" "HC" 0 1 131072 8 1 -0.089670
-- "HB3" "HC" 0 1 131072 9 1 -0.111750
-- "CG" "CT" 0 1 131072 10 6 -0.639700
-- "HG2" "HC" 0 1 131072 11 1 0.145340
-- "HG3" "HC" 0 1 131072 12 1 0.145340
-- "CD" "CT" 0 1 131072 13 6 0.616090
-- "HD2" "H1" 0 1 131072 14 1 -0.083600
-- "HD3" "H1" 0 1 131072 15 1 -0.083600
-- "NE" "N2" 0 1 131072 16 7 -0.781830
-- "HE" "H" 0 1 131072 17 1 0.416010
-- "CZ" "CA" 0 1 131072 18 6 1.114550
-- "NH1" "N2" 0 1 131072 19 7 -0.955440
-- "HH11" "H" 0 1 131072 20 1 0.443490
-- "HH12" "H" 0 1 131072 21 1 0.443490
-- "NH2" "N2" 0 1 131072 22 7 -0.955440
-- "HH21" "H" 0 1 131072 23 1 0.443490
-- "HH22" "H" 0 1 131072 24 1 0.443490
-- "C" "C" 0 1 131072 25 6 0.670480
-- "O" "O" 0 1 131072 26 8 -0.583250
--!entry.NARG.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N3" 0 -1 0.0
-- "H1" "H" 0 -1 0.0
-- "H2" "H" 0 -1 0.0
-- "H3" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "HP" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "CT" 0 -1 0.0
-- "HG2" "HC" 0 -1 0.0
-- "HG3" "HC" 0 -1 0.0
-- "CD" "CT" 0 -1 0.0
-- "HD2" "H1" 0 -1 0.0
-- "HD3" "H1" 0 -1 0.0
-- "NE" "N2" 0 -1 0.0
-- "HE" "H" 0 -1 0.0
-- "CZ" "CA" 0 -1 0.0
-- "NH1" "N2" 0 -1 0.0
-- "HH11" "H" 0 -1 0.0
-- "HH12" "H" 0 -1 0.0
-- "NH2" "N2" 0 -1 0.0
-- "HH21" "H" 0 -1 0.0
-- "HH22" "H" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O" 0 -1 0.0
--!entry.NARG.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.NARG.unit.childsequence single int
-- 2
--!entry.NARG.unit.connect array int
-- 0
-- 25
--!entry.NARG.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 1 4 1
-- 1 5 1
-- 5 6 1
-- 5 7 1
-- 5 25 1
-- 7 8 1
-- 7 9 1
-- 7 10 1
-- 10 11 1
-- 10 12 1
-- 10 13 1
-- 13 14 1
-- 13 15 1
-- 13 16 1
-- 16 17 1
-- 16 18 1
-- 18 19 1
-- 18 22 1
-- 19 20 1
-- 19 21 1
-- 22 23 1
-- 22 24 1
-- 25 26 1
--!entry.NARG.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
-- "R" 1 "A" 17
-- "R" 1 "A" 18
-- "R" 1 "A" 19
-- "R" 1 "A" 20
-- "R" 1 "A" 21
-- "R" 1 "A" 22
-- "R" 1 "A" 23
-- "R" 1 "A" 24
-- "R" 1 "A" 25
-- "R" 1 "A" 26
--!entry.NARG.unit.name single str
-- "NARG"
--!entry.NARG.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 4.046154 0.839991 -2.855245E-06
-- 2.823094 1.499508 -0.874687
-- 2.823097 1.499507 0.874685
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.274186 5.009602 1.194577
-- 5.354271 4.863178 1.185788
-- 3.973781 5.548460 0.295972
-- 3.881105 5.817645 2.426721
-- 2.801135 5.964881 2.435959
-- 4.181626 5.279602 3.325774
-- 4.540320 7.142723 2.424483
-- 5.151805 7.375492 1.655065
-- 4.364284 8.040989 3.389382
-- 3.575026 7.807606 4.434133
-- 3.088949 6.925423 4.508848
-- 3.465367 8.513631 5.147998
-- 5.006254 9.201287 3.286991
-- 5.604855 9.375325 2.492329
-- 4.892216 9.903045 4.004368
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
--!entry.NARG.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 0 25 0 0 0 0
--!entry.NARG.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "NARG" 1 27 1 "p" 0
--!entry.NARG.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.NARG.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.NARG.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.NASH.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N3" 0 1 131072 1 7 0.351680
-- "H1" "H" 0 1 131072 2 1 0.166100
-- "H2" "H" 0 1 131072 3 1 0.166100
-- "H3" "H" 0 1 131072 4 1 0.166100
-- "CA" "CT" 0 1 131072 5 6 0.084490
-- "HA" "HP" 0 1 131072 6 1 0.002600
-- "CB" "CT" 0 1 131072 7 6 -0.222150
-- "HB2" "HC" 0 1 131072 8 1 0.136250
-- "HB3" "HC" 0 1 131072 9 1 0.136250
-- "CG" "C" 0 1 131072 10 6 0.615590
-- "OD1" "O" 0 1 131072 11 8 -0.553020
-- "OD2" "OH" 0 1 131072 12 8 -0.580780
-- "HD2" "HO" 0 1 131072 13 1 0.443560
-- "C" "C" 0 1 131072 14 6 0.670480
-- "O" "O" 0 1 131072 15 8 -0.583250
--!entry.NASH.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N3" 0 -1 0.0
-- "H1" "H" 0 -1 0.0
-- "H2" "H" 0 -1 0.0
-- "H3" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "HP" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "C" 0 -1 0.0
-- "OD1" "O" 0 -1 0.0
-- "OD2" "OH" 0 -1 0.0
-- "HD2" "HO" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O" 0 -1 0.0
--!entry.NASH.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.NASH.unit.childsequence single int
-- 2
--!entry.NASH.unit.connect array int
-- 0
-- 14
--!entry.NASH.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 1 4 1
-- 1 5 1
-- 5 6 1
-- 5 7 1
-- 5 14 1
-- 7 8 1
-- 7 9 1
-- 7 10 1
-- 10 11 1
-- 10 12 1
-- 12 13 1
-- 14 15 1
--!entry.NASH.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
--!entry.NASH.unit.name single str
-- "NASH"
--!entry.NASH.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 4.046154 0.839991 -2.855245E-06
-- 2.823094 1.499508 -0.874687
-- 2.823097 1.499507 0.874685
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.275101 5.011380 1.194527
-- 3.669108 5.954940 0.620011
-- 5.407731 5.091879 1.740667
-- 5.742902 5.987179 1.652920
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
--!entry.NASH.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 0 14 0 0 0 0
--!entry.NASH.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "NASH" 1 16 1 "p" 0
--!entry.NASH.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.NASH.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.NASH.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--!entry.NASN.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg
-- "N" "N3" 0 1 131072 1 7 0.351680
-- "H1" "H" 0 1 131072 2 1 0.166100
-- "H2" "H" 0 1 131072 3 1 0.166100
-- "H3" "H" 0 1 131072 4 1 0.166100
-- "CA" "CT" 0 1 131072 5 6 0.009080
-- "HA" "HP" 0 1 131072 6 1 0.021090
-- "CB" "CT" 0 1 131072 7 6 -0.279860
-- "HB2" "HC" 0 1 131072 8 1 0.139080
-- "HB3" "HC" 0 1 131072 9 1 0.139080
-- "CG" "C" 0 1 131072 10 6 0.649780
-- "OD1" "O" 0 1 131072 11 8 -0.558030
-- "ND2" "N" 0 1 131072 12 7 -0.826350
-- "HD21" "H" 0 1 131072 13 1 0.384460
-- "HD22" "H" 0 1 131072 14 1 0.384460
-- "C" "C" 0 1 131072 15 6 0.670480
-- "O" "O" 0 1 131072 16 8 -0.583250
--!entry.NASN.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg
-- "N" "N3" 0 -1 0.0
-- "H1" "H" 0 -1 0.0
-- "H2" "H" 0 -1 0.0
-- "H3" "H" 0 -1 0.0
-- "CA" "CT" 0 -1 0.0
-- "HA" "HP" 0 -1 0.0
-- "CB" "CT" 0 -1 0.0
-- "HB2" "HC" 0 -1 0.0
-- "HB3" "HC" 0 -1 0.0
-- "CG" "C" 0 -1 0.0
-- "OD1" "O" 0 -1 0.0
-- "ND2" "N" 0 -1 0.0
-- "HD21" "H" 0 -1 0.0
-- "HD22" "H" 0 -1 0.0
-- "C" "C" 0 -1 0.0
-- "O" "O" 0 -1 0.0
--!entry.NASN.unit.boundbox array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.NASN.unit.childsequence single int
-- 2
--!entry.NASN.unit.connect array int
-- 0
-- 15
--!entry.NASN.unit.connectivity table int atom1x int atom2x int flags
-- 1 2 1
-- 1 3 1
-- 1 4 1
-- 1 5 1
-- 5 6 1
-- 5 7 1
-- 5 15 1
-- 7 8 1
-- 7 9 1
-- 7 10 1
-- 10 11 1
-- 10 12 1
-- 12 13 1
-- 12 14 1
-- 15 16 1
--!entry.NASN.unit.hierarchy table str abovetype int abovex str belowtype int belowx
-- "U" 0 "R" 1
-- "R" 1 "A" 1
-- "R" 1 "A" 2
-- "R" 1 "A" 3
-- "R" 1 "A" 4
-- "R" 1 "A" 5
-- "R" 1 "A" 6
-- "R" 1 "A" 7
-- "R" 1 "A" 8
-- "R" 1 "A" 9
-- "R" 1 "A" 10
-- "R" 1 "A" 11
-- "R" 1 "A" 12
-- "R" 1 "A" 13
-- "R" 1 "A" 14
-- "R" 1 "A" 15
-- "R" 1 "A" 16
--!entry.NASN.unit.name single str
-- "NASN"
--!entry.NASN.unit.positions table dbl x dbl y dbl z
-- 3.325770 1.547909 -1.607204E-06
-- 4.046154 0.839991 -2.855245E-06
-- 2.823094 1.499508 -0.874687
-- 2.823097 1.499507 0.874685
-- 3.970048 2.845795 -1.311163E-07
-- 3.671663 3.400129 -0.889820
-- 3.576965 3.653838 1.232143
-- 2.496995 3.801075 1.241379
-- 3.877484 3.115795 2.131197
-- 4.253700 5.017112 1.232144
-- 5.005299 5.340406 0.315072
-- 3.984885 5.817909 2.265917
-- 4.408015 6.733702 2.314743
-- 3.359611 5.504297 2.994464
-- 5.485541 2.705207 -4.398755E-06
-- 6.008824 1.593175 -8.449768E-06
--!entry.NASN.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x
-- 0 15 0 0 0 0
--!entry.NASN.unit.residues table str name int seq int childseq int startatomx str restype int imagingx
-- "NASN" 1 17 1 "p" 0
--!entry.NASN.unit.residuesPdbSequenceNumber array int
-- 0
--!entry.NASN.unit.solventcap array dbl
-- -1.000000
-- 0.0
-- 0.0
-- 0.0
-- 0.0
--!entry.NASN.unit.velocities table dbl x dbl y dbl z
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
-- 0.0 0.0 0.0
--