diff --git a/doc/CpptrajManual.pdf b/doc/CpptrajManual.pdf index b882f583bc..eb693da4e6 100644 Binary files a/doc/CpptrajManual.pdf and b/doc/CpptrajManual.pdf differ diff --git a/doc/DocumentChecksums.txt b/doc/DocumentChecksums.txt index 770ffa8977..1bfbe455d4 100644 --- a/doc/DocumentChecksums.txt +++ b/doc/DocumentChecksums.txt @@ -1,3 +1,3 @@ f6f8cb1a79951d80a9d2656fd9c30f55 CpptrajDevelopmentGuide.lyx -cbbe066a99553d484a9113510c740f1a cpptraj.lyx +676d7874e4942cf94f91fee003cf3c28 cpptraj.lyx 5d9b5b5ed47a3ded57b6464df99b3585 CpptrajManual.lyx diff --git a/src/Action_AutoImage.cpp b/src/Action_AutoImage.cpp index 38d3fe41ff..2a0091a706 100644 --- a/src/Action_AutoImage.cpp +++ b/src/Action_AutoImage.cpp @@ -473,7 +473,7 @@ Action::RetType Action_AutoImage::autoimage_by_vector(int frameNum, ActionFrame& Vec3 translated_coord_frac = mobile_unit_center_frac + image_vec; // Closest distance of mobile unit center to anchor center int ixyz[3]; - Cpptraj::Dist2_Imaged_Frac( translated_coord_frac, anchor_center_frac, box.UnitCell(), box.FracCell(), ixyz ); + Cpptraj::Dist2_Imaged_Frac( translated_coord_frac, anchor_center_frac, box.UnitCell(), ixyz ); if (ixyz[0] != 0 || ixyz[1] != 0 || ixyz[2] != 0) { // The reflection is closer to the center, so move the mobile unit. translate_unit(fracCoords_, Vec3(ixyz[0], ixyz[1], ixyz[2]), *it); diff --git a/src/Action_Distance.cpp b/src/Action_Distance.cpp index e915ce5efc..224d5b4cc4 100644 --- a/src/Action_Distance.cpp +++ b/src/Action_Distance.cpp @@ -2,6 +2,7 @@ #include "CpptrajStdio.h" #include "DistRoutines.h" #include "AssociatedData_NOE.h" +#include // CONSTRUCTOR Action_Distance::Action_Distance() : @@ -168,7 +169,8 @@ Action::RetType Action_Distance::DoAction(int frameNum, ActionFrame& frm) { a1 = frm.Frm().VGeometricCenter( Mask1_ ); } - double Dist = DIST(imageOpt_.ImagingType(), a1, a2_, frm.Frm().BoxCrd()); + double Dist2 = DIST2(imageOpt_.ImagingType(), a1, a2_, frm.Frm().BoxCrd()); + double Dist = sqrt(Dist2); dist_->Add(frameNum, &Dist); diff --git a/src/Action_NMRrst.cpp b/src/Action_NMRrst.cpp index 868077390a..3b74189708 100644 --- a/src/Action_NMRrst.cpp +++ b/src/Action_NMRrst.cpp @@ -551,7 +551,8 @@ Action::RetType Action_NMRrst::DoAction(int frameNum, ActionFrame& frm) { a2 = frm.Frm().VGeometricCenter( noe->dMask2_ ); } - double Dist = DIST(imageOpt_.ImagingType(), a1, a2, frm.Frm().BoxCrd()); + double Dist2 = DIST2(imageOpt_.ImagingType(), a1, a2, frm.Frm().BoxCrd()); + double Dist = sqrt(Dist2); noe->dist_->Add(frameNum, &Dist); } diff --git a/src/Action_PairDist.cpp b/src/Action_PairDist.cpp index fd758db3f9..cf94240b53 100644 --- a/src/Action_PairDist.cpp +++ b/src/Action_PairDist.cpp @@ -143,7 +143,8 @@ Action::RetType Action_PairDist::Setup(ActionSetup& setup) { void Action_PairDist::BinHist( std::vector& tmp, const double* XYZ1, const double* XYZ2, Box const& box) { - double Dist = DIST(imageOpt_.ImagingType(), XYZ1, XYZ2, box); + double Dist2 = DIST2(imageOpt_.ImagingType(), XYZ1, XYZ2, box); + double Dist = sqrt(Dist2); unsigned long bin = (unsigned long) (Dist / delta_); // Resize on the fly if necessary diff --git a/src/Action_Radial.cpp b/src/Action_Radial.cpp index 74f2003351..ef7c3abff6 100644 --- a/src/Action_Radial.cpp +++ b/src/Action_Radial.cpp @@ -3,7 +3,7 @@ #include "Action_Radial.h" #include "CpptrajStdio.h" #include "Constants.h" // FOURTHIRDSPI -#include "DistRoutines.h" +#include "Dcalc.h" #ifdef _OPENMP # include #endif @@ -483,45 +483,23 @@ void Action_Radial::calcRDF_singleMask(Frame const& frmIn) { int outer_max = OuterMask_.Nselected(); int idx1; - double boxX = frmIn.BoxCrd().Param(Box::X); - double boxY = frmIn.BoxCrd().Param(Box::Y); - double boxZ = frmIn.BoxCrd().Param(Box::Z); - bool isOrtho = (imageOpt_.ImagingType() == ImageOption::ORTHO && - boxX != 0.0 && boxY != 0.0 && boxZ != 0.0); - long unsigned* myRDF = &RDF_[0]; # ifdef _OPENMP # pragma omp parallel private(idx1, myRDF) { - //mprintf("OPENMP: %i threads\n",omp_get_num_threads()); - myRDF = &(rdf_thread_[omp_get_thread_num()][0]); + //mprintf("OPENMP: %i threads\n",omp_get_num_threads()); + myRDF = &(rdf_thread_[omp_get_thread_num()][0]); + Cpptraj::Dcalc dcalc(frmIn, imageOpt_.ImagingType()); # pragma omp for schedule(dynamic) +# else + Cpptraj::Dcalc dcalc(frmIn, imageOpt_.ImagingType()); # endif for (idx1 = 0; idx1 < outer_max; idx1++) { const double* xyz1 = frmIn.XYZ( OuterMask_[idx1] ); + dcalc.SetXYZ1( xyz1 ); for (int idx2 = idx1 + 1; idx2 < outer_max; idx2++) { const double* xyz2 = frmIn.XYZ( OuterMask_[idx2] ); - double D2; - if (isOrtho) { - double x = xyz1[0] - xyz2[0]; - double y = xyz1[1] - xyz2[1]; - double z = xyz1[2] - xyz2[2]; - x = std::fabs(x); - y = std::fabs(y); - z = std::fabs(z); - while (x > boxX) x -= boxX; - while (y > boxY) y -= boxY; - while (z > boxZ) z -= boxZ; - double D = boxX - x; - if (D < x) x = D; - D = boxY - y; - if (D < y) y = D; - D = boxZ - z; - if (D < z) z = D; - D2 = x*x + y*y + z*z; - } - else - D2 = DIST2(imageOpt_.ImagingType(), xyz1, xyz2, frmIn.BoxCrd()); + double D2 = dcalc.Dist2(xyz2); if (D2 <= maximum2_) { // NOTE: Can we modify the histogram to store D^2? double dist = sqrt(D2); @@ -542,42 +520,24 @@ void Action_Radial::calcRDF_twoMask(Frame const& frmIn) { int outer_max = OuterMask_.Nselected(); int inner_max = InnerMask_.Nselected(); int idx1; - double boxX = frmIn.BoxCrd().Param(Box::X); - double boxY = frmIn.BoxCrd().Param(Box::Y); - double boxZ = frmIn.BoxCrd().Param(Box::Z); - bool isOrtho = (imageOpt_.ImagingType() == ImageOption::ORTHO && - boxX != 0.0 && boxY != 0.0 && boxZ != 0.0); long unsigned* myRDF = &RDF_[0]; # ifdef _OPENMP # pragma omp parallel private(idx1, myRDF) { - //mprintf("OPENMP: %i threads\n",omp_get_num_threads()); - myRDF = &(rdf_thread_[omp_get_thread_num()][0]); + //mprintf("OPENMP: %i threads\n",omp_get_num_threads()); + myRDF = &(rdf_thread_[omp_get_thread_num()][0]); + Cpptraj::Dcalc dcalc(frmIn, imageOpt_.ImagingType()); # pragma omp for +# else + Cpptraj::Dcalc dcalc(frmIn, imageOpt_.ImagingType()); # endif for (idx1 = 0; idx1 < outer_max; idx1++) { const double* xyz1 = frmIn.XYZ( OuterMask_[idx1] ); + dcalc.SetXYZ1( xyz1 ); for (int idx2 = 0; idx2 < inner_max; idx2++) { const double* xyz2 = frmIn.XYZ( InnerMask_[idx2] ); - double D2; - if (isOrtho) { - double x = std::fabs(xyz1[0] - xyz2[0]); - double y = std::fabs(xyz1[1] - xyz2[1]); - double z = std::fabs(xyz1[2] - xyz2[2]); - while (x > boxX) x -= boxX; - while (y > boxY) y -= boxY; - while (z > boxZ) z -= boxZ; - double D = boxX - x; - if (D < x) x = D; - D = boxY - y; - if (D < y) y = D; - D = boxZ - z; - if (D < z) z = D; - D2 = x*x + y*y + z*z; - } - else - D2 = DIST2(imageOpt_.ImagingType(), xyz1, xyz2, frmIn.BoxCrd()); + double D2 = dcalc.Dist2(xyz2); if (D2 <= maximum2_) { // NOTE: Can we modify the histogram to store D^2? double dist = sqrt(D2); @@ -658,14 +618,19 @@ Action::RetType Action_Radial::DoAction(int frameNum, ActionFrame& frm) { { //mprintf("OPENMP: %i threads\n",omp_get_num_threads()); mythread = omp_get_thread_num(); + Cpptraj::Dcalc dcalc(frm.Frm(), imageOpt_.ImagingType()); # pragma omp for +# else + Cpptraj::Dcalc dcalc(frm.Frm(), imageOpt_.ImagingType()); # endif for (nmask1 = 0; nmask1 < outer_max; nmask1++) { atom1 = OuterMask_[nmask1]; + dcalc.SetXYZ1( frm.Frm().XYZ(atom1) ); for (nmask2 = 0; nmask2 < inner_max; nmask2++) { atom2 = InnerMask_[nmask2]; if ( (*currentParm_)[atom1].MolNum() != (*currentParm_)[atom2].MolNum() ) { - D = DIST2( imageOpt_.ImagingType(), frm.Frm().XYZ(atom1), frm.Frm().XYZ(atom2), frm.Frm().BoxCrd()); + //D = DIST2( imageOpt_.ImagingType(), frm.Frm().XYZ(atom1), frm.Frm().XYZ(atom2), frm.Frm().BoxCrd()); + D = dcalc.Dist2( frm.Frm().XYZ(atom2) ); if (D <= maximum2_) { // NOTE: Can we modify the histogram to store D^2? D = sqrt(D); @@ -692,17 +657,22 @@ Action::RetType Action_Radial::DoAction(int frameNum, ActionFrame& frm) { # pragma omp parallel private(nmask1,D,idx,mythread) { mythread = omp_get_thread_num(); + Cpptraj::Dcalc dcalc(frm.Frm(), imageOpt_.ImagingType()); # pragma omp for +# else + Cpptraj::Dcalc dcalc(frm.Frm(), imageOpt_.ImagingType()); # endif for (nmask1 = 0; nmask1 < mask1_max; nmask1++) { AtomMask const& site1 = Sites1_[nmask1]; Vec3 com1 = getCenter( frm.Frm(), site1 ); + dcalc.SetXYZ1( com1.Dptr() ); for (Marray::const_iterator site2 = Sites2_.begin(); site2 != Sites2_.end(); ++site2) { if (site1 != *site2) { Vec3 com2 = getCenter( frm.Frm(), *site2 ); - D = DIST2(imageOpt_.ImagingType(), com1.Dptr(), com2.Dptr(), frm.Frm().BoxCrd()); + //D = DIST2(imageOpt_.ImagingType(), com1.Dptr(), com2.Dptr(), frm.Frm().BoxCrd()); + D = dcalc.Dist2( com2.Dptr() ); if (D <= maximum2_) { D = sqrt(D); //mprintf("MASKLOOP: %10i %10i %10.4f\n",atom1,atom2,D); @@ -734,11 +704,17 @@ Action::RetType Action_Radial::DoAction(int frameNum, ActionFrame& frm) { # pragma omp parallel private(nmask2,atom2,D,idx,mythread) { mythread = omp_get_thread_num(); + Cpptraj::Dcalc dcalc(frm.Frm(), imageOpt_.ImagingType()); + dcalc.SetXYZ1( coord_center.Dptr() ); # pragma omp for +# else + Cpptraj::Dcalc dcalc(frm.Frm(), imageOpt_.ImagingType()); + dcalc.SetXYZ1( coord_center.Dptr() ); # endif for (nmask2 = 0; nmask2 < mask2_max; nmask2++) { atom2 = InnerMask_[nmask2]; - D = DIST2(imageOpt_.ImagingType(), coord_center.Dptr(), frm.Frm().XYZ(atom2), frm.Frm().BoxCrd()); + D = dcalc.Dist2( frm.Frm().XYZ(atom2) ); + //D = DIST2(imageOpt_.ImagingType(), coord_center.Dptr(), frm.Frm().XYZ(atom2), frm.Frm().BoxCrd()); if (D <= maximum2_) { // NOTE: Can we modify the histogram to store D^2? D = sqrt(D); diff --git a/src/Dcalc.h b/src/Dcalc.h new file mode 100644 index 0000000000..a081b92ae0 --- /dev/null +++ b/src/Dcalc.h @@ -0,0 +1,144 @@ +#ifndef INC_CPPTRAJ_DCALC_H +#define INC_CPPTRAJ_DCALC_H +#include "Frame.h" // will bring in Vec3, Matrix_3x3, Box +#include // std::numeric_limits +#include // std::fabs +namespace Cpptraj { +/** Class for implementing multiple distance calcs for a single frame. */ +class Dcalc { + public: + /// CONSTRUCTOR + Dcalc( Frame const& frmIn, ImageOption::Type itype) : + ucell_( frmIn.BoxCrd().UnitCell() ), + fcell_( frmIn.BoxCrd().FracCell() ), + boxX_( frmIn.BoxCrd().Param(Box::X) ), + boxY_( frmIn.BoxCrd().Param(Box::Y) ), + boxZ_( frmIn.BoxCrd().Param(Box::Z) ), + xyz1_(0), + itype_(ImageOption::NO_IMAGE) + { + if (boxX_ != 0.0 && boxY_ != 0.0 && boxZ_ != 0.0) { + itype_ = itype; + } + } + /// Set xyz1 - typically the coordinate from an outer loop + void SetXYZ1(const double* xyz1) { + xyz1_ = xyz1; + if (itype_ == ImageOption::NONORTHO) { + f1_ = fcell_ * Vec3(xyz1_); + wrap_frac(f1_); + } + } + private: + // --------------------------------------------------------------- + /// \return Dist^2 for xyz2 from previously set xyz1, orthogonal imaging + double Dist2_ortho(const double* xyz2) const + { + double x = xyz1_[0] - xyz2[0]; + double y = xyz1_[1] - xyz2[1]; + double z = xyz1_[2] - xyz2[2]; + x = std::fabs(x); + y = std::fabs(y); + z = std::fabs(z); + while (x > boxX_) x -= boxX_; + while (y > boxY_) y -= boxY_; + while (z > boxZ_) z -= boxZ_; + double D = boxX_ - x; + if (D < x) x = D; + D = boxY_ - y; + if (D < y) y = D; + D = boxZ_ - z; + if (D < z) z = D; + return (x*x + y*y + z*z); + } + // --------------------------------------------------------------- + /// Bring each fractional coordinate back into the main unit cell (0 to 1) + static inline void wrap_frac(Vec3& frac) { + for (int idx = 0; idx != 3; idx++) { + while (frac[idx] < 0.0) + frac[idx] += 1.0; + while (frac[idx] > 1.0) + frac[idx] -= 1.0; + } + } + /// \return Dist^2 for xyz2 from previously set xyz1, non-orthogonal imaging + double Dist2_nonortho(const double* xyz2) const + { + // Wrap each coordinate in fractional coordinates back to the main unit cell + // (so each frac coord is between 0 and 1). + Vec3 f2 = fcell_ * Vec3(xyz2); + wrap_frac(f2); + // Calculate f2 to f1 in fractional space + Vec3 fdelta = f2 - f1_; + //fdelta.Print("fdelta"); + // Set the min and max cell indices we need to look for based + // on the f1->f2 vector. + int imin[3]; + int imax[3]; + for (int idx = 0; idx != 3; idx++) { + if (fdelta[idx] < 0) { + imin[idx] = -1; + imax[idx] = 1; + } else { + imin[idx] = 0; + imax[idx] = 2; + } + } + // Calculate wrapped f2 back in Cartesian space + Vec3 c2 = ucell_.TransposeMult( f2 ); + // Searching only images we are close to. + // Check each image of f1 to determine which distance is the smallest. + double minD2 = std::numeric_limits::max(); + for (int ix = imin[0]; ix != imax[0]; ix++) { + for (int iy = imin[1]; iy != imax[1]; iy++) { + for (int iz = imin[2]; iz != imax[2]; iz++) { + // Image in frac space + Vec3 f1img = f1_ + Vec3(ix, iy, iz); + // Image in Cartesian space + Vec3 c1img = ucell_.TransposeMult( f1img ); + // Calculate distance in Cartesian space + double dx = (c1img[0] - c2[0]); + double dy = (c1img[1] - c2[1]); + double dz = (c1img[2] - c2[2]); + double D2 = (dx*dx) + (dy*dy) + (dz*dz); + if (D2 < minD2) { + minD2 = D2; + } + } // END loop over Z image indices + } // END loop over Y image indices + } // END loop over X image indices + //mprintf("minD %12.4f\n", sqrt(minD2)); + return minD2; + } + // --------------------------------------------------------------- + /// \return Dist^2 for xyz2 from previously set xyz1, no imaging + double Dist2_noimage(const double* xyz2) const + { + double x = xyz1_[0] - xyz2[0]; + double y = xyz1_[1] - xyz2[1]; + double z = xyz1_[2] - xyz2[2]; + //double D = x*x + y*y + z*z; + //fprintf(stdout,"Mask1=%8.3f %8.3f %8.3f Mask2=%8.3f %8.3f %8.3f D=%8.3f\n", + // a1[0],a1[1],a1[2],a2[0],a2[1],a2[2],D); + return (x*x + y*y + z*z); + } + public: + /// \return Dist^2 for xyz2 from previously set xyz1 + double Dist2(const double* xyz2) const { + switch (itype_) { + case ImageOption::ORTHO : return Dist2_ortho(xyz2); + case ImageOption::NONORTHO : return Dist2_nonortho(xyz2); + case ImageOption::NO_IMAGE : return Dist2_noimage(xyz2); + } + return -1.0; + } + private: + Matrix_3x3 const& ucell_; + Matrix_3x3 const& fcell_; + Vec3 f1_; + double boxX_, boxY_, boxZ_; + const double* xyz1_; + ImageOption::Type itype_; +}; +} +#endif diff --git a/src/DistRoutines.cpp b/src/DistRoutines.cpp index b83891d00e..4dbfa37335 100644 --- a/src/DistRoutines.cpp +++ b/src/DistRoutines.cpp @@ -1,6 +1,7 @@ -#include // sqrt #include "DistRoutines.h" -#include "Box.h" +#include "Dist_Imaged.h" +#include "Matrix_3x3.h" +#include // sqrt /** \param a1 First set of XYZ coordinates. * \param a2 Second set of XYZ coordinates. @@ -346,7 +347,8 @@ double DIST2_ImageNonOrtho(Vec3 const& a1, Vec3 const& a2, Matrix_3x3 const& ucell, Matrix_3x3 const& recip) { int ixyz[3]; - return DIST2_ImageNonOrthoRecip(recip * a2, recip * a1, -1.0, ixyz, ucell); + //return DIST2_ImageNonOrthoRecip(recip * a2, recip * a1, -1.0, ixyz, ucell); + return Cpptraj::Dist2_Imaged_Cart(a1, a2, ucell, recip, ixyz); } /** \param a1 First set of XYZ coordinates. @@ -359,51 +361,18 @@ double DIST2_ImageNonOrtho(const double* a1, const double* a2, Matrix_3x3 const& ucell, Matrix_3x3 const& recip) { int ixyz[3]; - Vec3 f1( ((recip[0]*a1[0]) + (recip[1]*a1[1]) + (recip[2]*a1[2])), - ((recip[3]*a1[0]) + (recip[4]*a1[1]) + (recip[5]*a1[2])), - ((recip[6]*a1[0]) + (recip[7]*a1[1]) + (recip[8]*a1[2])) ); - Vec3 f2( ((recip[0]*a2[0]) + (recip[1]*a2[1]) + (recip[2]*a2[2])), - ((recip[3]*a2[0]) + (recip[4]*a2[1]) + (recip[5]*a2[2])), - ((recip[6]*a2[0]) + (recip[7]*a2[1]) + (recip[8]*a2[2])) ); - return DIST2_ImageNonOrthoRecip(f1, f2, -1.0, ixyz, ucell); +// Vec3 f1( ((recip[0]*a1[0]) + (recip[1]*a1[1]) + (recip[2]*a1[2])), +// ((recip[3]*a1[0]) + (recip[4]*a1[1]) + (recip[5]*a1[2])), +// ((recip[6]*a1[0]) + (recip[7]*a1[1]) + (recip[8]*a1[2])) ); +// Vec3 f2( ((recip[0]*a2[0]) + (recip[1]*a2[1]) + (recip[2]*a2[2])), +// ((recip[3]*a2[0]) + (recip[4]*a2[1]) + (recip[5]*a2[2])), +// ((recip[6]*a2[0]) + (recip[7]*a2[1]) + (recip[8]*a2[2])) ); +// return DIST2_ImageNonOrthoRecip(f1, f2, -1.0, ixyz, ucell); + return Cpptraj::Dist2_Imaged_Cart(Vec3(a1), Vec3(a2), ucell, recip, ixyz); } -// Frame::DIST2_ImageOrtho() -/** Return the minimum orthorhombic imaged distance^2 between coordinates a1 - * and a2. - */ - -/** Return the minimum orthorhombic imaged distance^2 between coordinates a1 - * and a2. - */ -double DIST2_ImageOrtho(Vec3 const& a1, Vec3 const& a2, Box const& box) { - return DIST2_ImageOrtho(a1.Dptr(), a2.Dptr(), box); -} - -// Frame::DIST2_NoImage() -/** Return distance^2 between coordinates in a1 and a2. - */ - -/// \return Distance squared, no imaging. -double DIST2_NoImage( Vec3 const& a1, Vec3 const& a2 ) { - Vec3 vec = a1 - a2; - return vec.Magnitude2(); -} - -/// \return Distance, no imaging. +/** \return Distance, no imaging.*/ double DIST_NoImage( Vec3 const& a1, Vec3 const& a2 ) { Vec3 vec = a1 - a2; return sqrt( vec.Magnitude2() ); } - -/** \return Distance squared using either minimum-image convention or no imaging. */ - -/** \return Distance squared using either minimum-image convention or no imaging. */ -double DIST2(ImageOption::Type itype, Vec3 const& a1, Vec3 const& a2, Box const& box) { - return DIST2(itype, a1.Dptr(), a2.Dptr(), box); -} - -/** \return Distance using either minimum-image convention or no imaging. */ -double DIST(ImageOption::Type itype, Vec3 const& a1, Vec3 const& a2, Box const& box) { - return sqrt(DIST2(itype, a1.Dptr(), a2.Dptr(), box)); -} diff --git a/src/DistRoutines.h b/src/DistRoutines.h index 53d39fcd21..1abead4a8d 100644 --- a/src/DistRoutines.h +++ b/src/DistRoutines.h @@ -1,8 +1,10 @@ #ifndef INC_DISTROUTINES_H #define INC_DISTROUTINES_H #include +#include "Vec3.h" #include "Box.h" #include "ImageOption.h" +class Matrix_3x3; /*! \file DistRoutines.h \brief A collection of routines used to calculate distance. */ @@ -19,9 +21,14 @@ double DIST2_ImageNonOrtho(Vec3 const&, Vec3 const&, Matrix_3x3 const&, Matrix_3 /// \return Distance squared between points in Cartesian space, general unit cell imaging. double DIST2_ImageNonOrtho(const double*, const double*, Matrix_3x3 const&, Matrix_3x3 const&); -/// \return Distance squared, X-aligned and orthogonal imaging. -inline double DIST2_ImageOrtho(const double* a1, const double* a2, - Box const& box) +/// \return Distance, no imaging. +double DIST_NoImage( Vec3 const&, Vec3 const& ); + +// ----- Inline Routines ------------------------- +/** \return the minimum orthorhombic imaged distance^2 between coordinates a1 + * and a2. + */ +inline double DIST2_ImageOrtho(const double* a1, const double* a2, Box const& box) { const double boxX = box.Param(Box::X); const double boxY = box.Param(Box::Y); @@ -47,35 +54,44 @@ inline double DIST2_ImageOrtho(const double* a1, const double* a2, return x*x + y*y + z*z; } -/// \return Distance squared, X-aligned and orthogonal imaging. -double DIST2_ImageOrtho(Vec3 const&, Vec3 const&, Box const&); -/// \return Distance squared, no imaging. -inline double DIST2_NoImage(const double* a1, const double* a2) -{ +/** \return the minimum orthorhombic imaged distance^2 between coordinates a1 + * and a2. + */ +inline double DIST2_ImageOrtho(Vec3 const& a1, Vec3 const& a2, Box const& box) { + return DIST2_ImageOrtho(a1.Dptr(), a2.Dptr(), box); +} + +/// \return distance^2 between coordinates in a1 and a2. +inline double DIST2_NoImage(const double* a1, const double* a2) { const double x = a1[0] - a2[0]; const double y = a1[1] - a2[1]; const double z = a1[2] - a2[2]; - return x*x + y*y + z*z; + //double D = x*x + y*y + z*z; + //fprintf(stdout,"Mask1=%8.3f %8.3f %8.3f Mask2=%8.3f %8.3f %8.3f D=%8.3f\n", + // a1[0],a1[1],a1[2],a2[0],a2[1],a2[2],D); + return (x*x + y*y + z*z); } -/// \return Distance squared, no imaging -double DIST2_NoImage( Vec3 const&, Vec3 const& ); -/// \return Distance, no imaging. -double DIST_NoImage( Vec3 const&, Vec3 const& ); -/// \return Distance squared using minimum-image convention or no imaging. -inline double DIST2(ImageOption::Type itype, const double* a1, - const double* a2, Box const& box) -{ +/// \return Distance squared, no imaging. +inline double DIST2_NoImage( Vec3 const& a1, Vec3 const& a2 ) { + Vec3 vec = a1 - a2; + return vec.Magnitude2(); +} + +/** \return Distance squared using either minimum-image convention or no imaging. */ +inline double DIST2(ImageOption::Type itype, const double* a1, const double* a2, Box const& box) { if (itype == ImageOption::NO_IMAGE) return DIST2_NoImage(a1, a2); else if (itype == ImageOption::ORTHO) return DIST2_ImageOrtho(a1, a2, box); - else + else // NONORTHO return DIST2_ImageNonOrtho(a1, a2, box.UnitCell(), box.FracCell()); } -// \return Distance squared using minimum-image convention or no imaging. -double DIST2(ImageOption::Type, Vec3 const&, Vec3 const&, Box const&); -// \return Distance using minimum-image convention or no imaging. -double DIST(ImageOption::Type, Vec3 const&, Vec3 const&, Box const&); + +/** \return Distance squared using either minimum-image convention or no imaging. */ +inline double DIST2(ImageOption::Type itype, Vec3 const& a1, Vec3 const& a2, Box const& box) { + return DIST2(itype, a1.Dptr(), a2.Dptr(), box); +} + #endif diff --git a/src/Dist_Imaged.cpp b/src/Dist_Imaged.cpp index efc75024d8..0d78f0a024 100644 --- a/src/Dist_Imaged.cpp +++ b/src/Dist_Imaged.cpp @@ -93,7 +93,7 @@ double Cpptraj::Dist2_Imaged(Vec3 const& xyz1, Vec3 const& xyz2, * TODO use in place of DIST2_ImageNonOrthoRecip() */ double Cpptraj::Dist2_Imaged_Frac(Vec3 const& f1, Vec3 const& f2, - Matrix_3x3 const& ucell, Matrix_3x3 const& fcell, + Matrix_3x3 const& ucell, int* ixyz) { // Calculate f2 to f1 in fractional space @@ -185,5 +185,5 @@ double Cpptraj::Dist2_Imaged_Cart(Vec3 const& xyz1, Vec3 const& xyz2, wrap_frac(f1); wrap_frac(f2); - return Dist2_Imaged_Frac(f1, f2, ucell, fcell, ixyz); + return Dist2_Imaged_Frac(f1, f2, ucell, ixyz); } diff --git a/src/Dist_Imaged.h b/src/Dist_Imaged.h index d1894376b2..341247f10a 100644 --- a/src/Dist_Imaged.h +++ b/src/Dist_Imaged.h @@ -6,7 +6,7 @@ namespace Cpptraj { /// Calculate minimum imaged distance (squared) between two coordinates in Cartesian space double Dist2_Imaged(Vec3 const&, Vec3 const&, Matrix_3x3 const&, Matrix_3x3 const&, int*); /// Calculate minimum imaged distance (squared) between two fractional coords in the primary cell -double Dist2_Imaged_Frac(Vec3 const&, Vec3 const&, Matrix_3x3 const&, Matrix_3x3 const&, int*); +double Dist2_Imaged_Frac(Vec3 const&, Vec3 const&, Matrix_3x3 const&, int*); /// Calculate minimum imaged distance (squared) between two coordinates in Cartesian space double Dist2_Imaged_Cart(Vec3 const&, Vec3 const&, Matrix_3x3 const&, Matrix_3x3 const&, int*); } diff --git a/src/Topology.cpp b/src/Topology.cpp index fe887bc984..11734e690a 100644 --- a/src/Topology.cpp +++ b/src/Topology.cpp @@ -698,6 +698,57 @@ int Topology::CommonSetup(bool molsearch, bool renumberResidues) // Determine # of extra points. DetermineNumExtraPoints(); + // Check for duplicate atom names in residues +// Timer t_anamecheck; +// t_anamecheck.Start(); + if (!atom_altloc_.empty() || lesparm_.HasLES()) { + // If alternate location IDs are present, append to name to check for true uniqueness + std::set anames; + for (std::vector::const_iterator res = residues_.begin(); res != residues_.end(); ++res) + { + // Skip solvent. + bool is_solvent = false; + if (!molecules_.empty()) is_solvent = molecules_[atoms_[res->FirstAtom()].MolNum()].IsSolvent(); + if (!is_solvent) { + anames.clear(); + for (int iat = res->FirstAtom(); iat != res->LastAtom(); iat++) + { + std::string aname(atoms_[iat].Name().Truncated()); + if (!atom_altloc_.empty()) + aname += atom_altloc_[iat]; + if (lesparm_.HasLES()) + aname.append( integerToString( lesparm_.Array()[iat].Copy() ) ); + std::pair::iterator, bool> ret = anames.insert( aname ); + if (!ret.second) { + mprintf("Warning: '%s': In residue %s duplicate atom name detected: %s\n", + c_str(), TruncResNameNum(res-residues_.begin()).c_str(), ret.first->c_str() ); + } + } + } + } + } else { + std::set anames; + for (std::vector::const_iterator res = residues_.begin(); res != residues_.end(); ++res) + { + // Skip solvent. + bool is_solvent = false; + if (!molecules_.empty()) is_solvent = molecules_[atoms_[res->FirstAtom()].MolNum()].IsSolvent(); + if (!is_solvent) { + anames.clear(); + for (int iat = res->FirstAtom(); iat != res->LastAtom(); iat++) + { + std::pair::iterator, bool> ret = anames.insert( atoms_[iat].Name() ); + if (!ret.second) { + mprintf("Warning: '%s': In residue %s duplicate atom name detected: %s\n", + c_str(), TruncResNameNum(res-residues_.begin()).c_str(), *(atoms_[iat].Name()) ); + } + } + } + } + } +// t_anamecheck.Stop(); +// t_anamecheck.WriteTiming(1, "Atom Name Check"); + return 0; } diff --git a/src/Version.h b/src/Version.h index 96e636a0a6..8104cb0dc1 100644 --- a/src/Version.h +++ b/src/Version.h @@ -12,7 +12,7 @@ * Whenever a number that precedes is incremented, all subsequent * numbers should be reset to 0. */ -#define CPPTRAJ_INTERNAL_VERSION "V7.12.0" +#define CPPTRAJ_INTERNAL_VERSION "V7.12.5" /// PYTRAJ relies on this #define CPPTRAJ_VERSION_STRING CPPTRAJ_INTERNAL_VERSION #endif diff --git a/src/cpptrajdepend b/src/cpptrajdepend index 466d8ad4d7..4c418b2919 100644 --- a/src/cpptrajdepend +++ b/src/cpptrajdepend @@ -69,7 +69,7 @@ Action_Principal.o : Action_Principal.cpp Action.h ActionState.h Action_Principa Action_Projection.o : Action_Projection.cpp Action.h ActionFrameCounter.h ActionState.h Action_Projection.h ArgList.h Array1D.h AssociatedData.h Atom.h AtomMask.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_1D.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_Modes.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h StringRoutines.h SymbolExporting.h TextFormat.h Timer.h Topology.h Unit.h Vec3.h Action_Pucker.o : Action_Pucker.cpp Action.h ActionState.h Action_Pucker.h ArgList.h AssociatedData.h Atom.h AtomMask.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TorsionRoutines.h Unit.h Vec3.h Action_Radgyr.o : Action_Radgyr.cpp Action.h ActionState.h Action_Radgyr.h ArgList.h AssociatedData.h Atom.h AtomMask.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h Unit.h Vec3.h -Action_Radial.o : Action_Radial.cpp Action.h ActionState.h Action_Radial.h ArgList.h AssociatedData.h Atom.h AtomMask.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h DistRoutines.h FileIO.h FileName.h FileTypes.h Frame.h Gpu.h ImageOption.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h Unit.h Vec3.h cuda_kernels/kernel_rdf.cuh +Action_Radial.o : Action_Radial.cpp Action.h ActionState.h Action_Radial.h ArgList.h AssociatedData.h Atom.h AtomMask.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dcalc.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h Gpu.h ImageOption.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h Unit.h Vec3.h cuda_kernels/kernel_rdf.cuh Action_RandomizeIons.o : Action_RandomizeIons.cpp Action.h ActionState.h Action_RandomizeIons.h ArgList.h AssociatedData.h Atom.h AtomMask.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h DistRoutines.h FileIO.h FileName.h FileTypes.h Frame.h ImageOption.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Random.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h Unit.h Vec3.h Action_Remap.o : Action_Remap.cpp Action.h ActionState.h ActionTopWriter.h Action_Remap.h ArgList.h AssociatedData.h Atom.h AtomMask.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_1D.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h Unit.h Vec3.h Action_ReplicateCell.o : Action_ReplicateCell.cpp Action.h ActionFrameCounter.h ActionState.h ActionTopWriter.h Action_ReplicateCell.h ArgList.h AssociatedData.h Atom.h AtomMask.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h OutputTrajCommon.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TrajectoryFile.h Trajout_Single.h Unit.h Vec3.h @@ -196,7 +196,7 @@ CmapParmHolder.o : CmapParmHolder.cpp CmapParmHolder.h Constants.h CpptrajStdio. Cmd.o : Cmd.cpp Cmd.h DispatchObject.h CmdInput.o : CmdInput.cpp CmdInput.h StringRoutines.h CmdList.o : CmdList.cpp Cmd.h CmdList.h DispatchObject.h -Command.o : Command.cpp Action.h ActionFrameCounter.h ActionList.h ActionState.h ActionTopWriter.h Action_AddAtom.h Action_Align.h Action_Angle.h Action_AreaPerMol.h Action_AtomMap.h Action_AtomicCorr.h Action_AtomicFluct.h Action_AutoImage.h Action_Average.h Action_AvgBox.h Action_Bounds.h Action_Box.h Action_Center.h Action_Channel.h Action_CheckChirality.h Action_CheckStructure.h Action_Closest.h Action_ClusterDihedral.h Action_Contacts.h Action_ConvertToFrac.h Action_CreateCrd.h Action_CreateReservoir.h Action_DNAionTracker.h Action_DSSP.h Action_Density.h Action_Diffusion.h Action_Dihedral.h Action_DihedralRMS.h Action_Dipole.h Action_DistRmsd.h Action_Distance.h Action_EneDecomp.h Action_Energy.h Action_Esander.h Action_FilterByData.h Action_FixAtomOrder.h Action_FixImagedBonds.h Action_GIST.h Action_Grid.h Action_GridFreeEnergy.h Action_HydrogenBond.h Action_Image.h Action_InfraredSpectrum.h Action_Jcoupling.h Action_Keep.h Action_LESsplit.h Action_LIE.h Action_LipidOrder.h Action_MakeStructure.h Action_Mask.h Action_Matrix.h Action_MinImage.h Action_MinMaxDist.h Action_Molsurf.h Action_MultiDihedral.h Action_MultiPucker.h Action_MultiVector.h Action_NAstruct.h Action_NMRrst.h Action_NativeContacts.h Action_OrderParameter.h Action_Outtraj.h Action_PairDist.h Action_Pairwise.h Action_Principal.h Action_Projection.h Action_Pucker.h Action_Radgyr.h Action_Radial.h Action_RandomizeIons.h Action_Remap.h Action_ReplicateCell.h Action_Rmsd.h Action_Rotate.h Action_RunningAvg.h Action_STFC_Diffusion.h Action_Scale.h Action_SetVelocity.h Action_Spam.h Action_Strip.h Action_Surf.h Action_SurfaceTension.h Action_SymmetricRmsd.h Action_Temperature.h Action_Test.h Action_Time.h Action_ToroidalDiffusion.h Action_Translate.h Action_Unstrip.h Action_Unwrap.h Action_Vector.h Action_VelocityAutoCorr.h Action_Volmap.h Action_Volume.h Action_Watershell.h Action_XtalSymm.h Analysis.h AnalysisList.h AnalysisState.h Analysis_AmdBias.h Analysis_AutoCorr.h Analysis_Average.h Analysis_CalcDiffusion.h Analysis_Clustering.h Analysis_ConstantPHStats.h Analysis_Corr.h Analysis_CrankShaft.h Analysis_CrdFluct.h Analysis_CrossCorr.h Analysis_CurveFit.h Analysis_Divergence.h Analysis_EvalPlateau.h Analysis_FFT.h Analysis_HausdorffDistance.h Analysis_Hist.h Analysis_IRED.h Analysis_Integrate.h Analysis_KDE.h Analysis_Lifetime.h Analysis_LowestCurve.h Analysis_Matrix.h Analysis_MeltCurve.h Analysis_Modes.h Analysis_MultiHist.h Analysis_Multicurve.h Analysis_Overlap.h Analysis_PhiPsi.h Analysis_Project.h Analysis_Regression.h Analysis_RemLog.h Analysis_Rms2d.h Analysis_RmsAvgCorr.h Analysis_Rotdif.h Analysis_RunningAvg.h Analysis_Slope.h Analysis_Spline.h Analysis_State.h Analysis_Statistics.h Analysis_TI.h Analysis_TICA.h Analysis_Timecorr.h Analysis_VectorMath.h Analysis_Wavelet.h ArgList.h Array1D.h ArrayIterator.h AssociatedData.h Atom.h AtomMap.h AtomMask.h AxisType.h BaseIOtype.h Box.h BoxArgs.h BufferedLine.h CharMask.h Cluster/Algorithm.h Cluster/BestReps.h Cluster/CentroidArray.h Cluster/Cframes.h Cluster/Control.h Cluster/DrawGraph.h Cluster/List.h Cluster/Metric.h Cluster/MetricArray.h Cluster/Node.h Cluster/Sieve.h Cluster/Silhouette.h ClusterMap.h Cmd.h CmdInput.h CmdList.h Command.h CompactFrameArray.h ComplexArray.h Constants.h Constraints.h ControlBlock.h ControlBlock_For.h CoordinateInfo.h Corr.h Cph.h CpptrajFile.h CpptrajState.h CpptrajStdio.h DataFile.h DataFileList.h DataFilter.h DataSet.h DataSetList.h DataSet_1D.h DataSet_2D.h DataSet_3D.h DataSet_Coords.h DataSet_Coords_CRD.h DataSet_Coords_REF.h DataSet_GridFlt.h DataSet_MatrixDbl.h DataSet_MatrixFlt.h DataSet_Mesh.h DataSet_Modes.h DataSet_RemLog.h DataSet_Vector.h DataSet_double.h DataSet_float.h DataSet_integer.h DataSet_integer_mem.h DataSet_pH.h DataSet_string.h Deprecated.h DiffusionResults.h DihedralSearch.h Dimension.h DispatchObject.h Energy.h Energy/Ecalc_Nonbond.h Energy/EnergyDecomposer.h Energy/ErfcFxn.h Energy/EwaldParams.h Energy/PME_RecipParams.h Energy/VDW_LongRange_Correction.h Energy_Sander.h EnsembleIn.h EnsembleOutList.h EwaldOptions.h ExclusionArray.h Exec.h Exec_AddMissingRes.h Exec_Analyze.h Exec_Build.h Exec_Calc.h Exec_CatCrd.h Exec_Change.h Exec_ClusterMap.h Exec_CombineCoords.h Exec_Commands.h Exec_CompareClusters.h Exec_CompareEnergy.h Exec_CompareTop.h Exec_CrdAction.h Exec_CrdOut.h Exec_CrdTransform.h Exec_CreateSet.h Exec_DataFile.h Exec_DataFilter.h Exec_DataSetCmd.h Exec_Desc.h Exec_Emin.h Exec_ExtendedComparison.h Exec_Flatten.h Exec_Flush.h Exec_GenerateAmberRst.h Exec_Graft.h Exec_Help.h Exec_HmassRepartition.h Exec_LoadCrd.h Exec_LoadTraj.h Exec_Mutate.h Exec_ParallelAnalysis.h Exec_ParmBox.h Exec_ParmSolvent.h Exec_ParmStrip.h Exec_ParmWrite.h Exec_ParseTiming.h Exec_PermuteDihedrals.h Exec_Precision.h Exec_PrepareForLeap.h Exec_PrintData.h Exec_Random.h Exec_ReadData.h Exec_ReadEnsembleData.h Exec_ReadInput.h Exec_RotateDihedral.h Exec_RunAnalysis.h Exec_ScaleDihedralK.h Exec_Sequence.h Exec_SequenceAlign.h Exec_Set.h Exec_Show.h Exec_SortEnsembleData.h Exec_Source.h Exec_SplitCoords.h Exec_System.h Exec_Top.h Exec_Traj.h Exec_UpdateParameters.h Exec_ViewRst.h Exec_Zmatrix.h ExtendedSimilarity.h FileIO.h FileName.h FileTypes.h Frame.h FramePtrArray.h GIST_PME.h Grid.h GridAction.h GridBin.h GridMover.h HistBin.h Hungarian.h ImageOption.h ImageTypes.h InputTrajCommon.h InteractionData.h MapAtom.h MaskArray.h MaskToken.h Matrix.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NC_Routines.h NameType.h NetcdfFile.h OnlineVarT.h OutputTrajCommon.h PDBfile.h PairList.h Parallel.h ParallelSetFrameNum.h ParameterTypes.h Parm/GB_Params.h PubFFT.h Pucker.h Pucker_PuckerMask.h Pucker_PuckerSearch.h Pucker_PuckerToken.h RPNcalc.h Random.h Range.h ReferenceAction.h ReferenceFrame.h RemdReservoirNC.h ReplicaDimArray.h ReplicaInfo.h Residue.h Segment.h Spline.h SplineFxnTable.h Structure/LeastSquaresPlane.h Structure/RingFinder.h StructureCheck.h SymbolExporting.h SymmetricRmsdCalc.h TextFormat.h Timer.h Topology.h TrajFrameCounter.h TrajectoryFile.h Trajin.h TrajinList.h TrajoutList.h Trajout_Single.h Unit.h Vec3.h cuda_kernels/GistCudaSetup.cuh helpme_standalone.h molsurf.h +Command.o : Command.cpp Action.h ActionFrameCounter.h ActionList.h ActionState.h ActionTopWriter.h Action_AddAtom.h Action_Align.h Action_Angle.h Action_AreaPerMol.h Action_AtomMap.h Action_AtomicCorr.h Action_AtomicFluct.h Action_AutoImage.h Action_Average.h Action_AvgBox.h Action_Bounds.h Action_Box.h Action_Center.h Action_Channel.h Action_CheckChirality.h Action_CheckStructure.h Action_Closest.h Action_ClusterDihedral.h Action_Contacts.h Action_ConvertToFrac.h Action_CreateCrd.h Action_CreateReservoir.h Action_DNAionTracker.h Action_DSSP.h Action_Density.h Action_Diffusion.h Action_Dihedral.h Action_DihedralRMS.h Action_Dipole.h Action_DistRmsd.h Action_Distance.h Action_EneDecomp.h Action_Energy.h Action_Esander.h Action_FilterByData.h Action_FixAtomOrder.h Action_FixImagedBonds.h Action_GIST.h Action_Grid.h Action_GridFreeEnergy.h Action_HydrogenBond.h Action_Image.h Action_InfraredSpectrum.h Action_Jcoupling.h Action_Keep.h Action_LESsplit.h Action_LIE.h Action_LipidOrder.h Action_MakeStructure.h Action_Mask.h Action_Matrix.h Action_MinImage.h Action_MinMaxDist.h Action_Molsurf.h Action_MultiDihedral.h Action_MultiPucker.h Action_MultiVector.h Action_NAstruct.h Action_NMRrst.h Action_NativeContacts.h Action_OrderParameter.h Action_Outtraj.h Action_PairDist.h Action_Pairwise.h Action_Principal.h Action_Projection.h Action_Pucker.h Action_Radgyr.h Action_Radial.h Action_RandomizeIons.h Action_Remap.h Action_ReplicateCell.h Action_Rmsd.h Action_Rotate.h Action_RunningAvg.h Action_STFC_Diffusion.h Action_Scale.h Action_SetVelocity.h Action_Spam.h Action_Strip.h Action_Surf.h Action_SurfaceTension.h Action_SymmetricRmsd.h Action_Temperature.h Action_Test.h Action_Time.h Action_ToroidalDiffusion.h Action_Translate.h Action_Unstrip.h Action_Unwrap.h Action_Vector.h Action_VelocityAutoCorr.h Action_Volmap.h Action_Volume.h Action_Watershell.h Action_XtalSymm.h Analysis.h AnalysisList.h AnalysisState.h Analysis_AmdBias.h Analysis_AutoCorr.h Analysis_Average.h Analysis_CalcDiffusion.h Analysis_Clustering.h Analysis_ConstantPHStats.h Analysis_Corr.h Analysis_CrankShaft.h Analysis_CrdFluct.h Analysis_CrossCorr.h Analysis_CurveFit.h Analysis_Divergence.h Analysis_EvalPlateau.h Analysis_FFT.h Analysis_HausdorffDistance.h Analysis_Hist.h Analysis_IRED.h Analysis_Integrate.h Analysis_KDE.h Analysis_Lifetime.h Analysis_LowestCurve.h Analysis_Matrix.h Analysis_MeltCurve.h Analysis_Modes.h Analysis_MultiHist.h Analysis_Multicurve.h Analysis_Overlap.h Analysis_PhiPsi.h Analysis_Project.h Analysis_Regression.h Analysis_RemLog.h Analysis_Rms2d.h Analysis_RmsAvgCorr.h Analysis_Rotdif.h Analysis_RunningAvg.h Analysis_Slope.h Analysis_Spline.h Analysis_State.h Analysis_Statistics.h Analysis_TI.h Analysis_TICA.h Analysis_Timecorr.h Analysis_VectorMath.h Analysis_Wavelet.h ArgList.h Array1D.h ArrayIterator.h AssociatedData.h Atom.h AtomMap.h AtomMask.h AxisType.h BaseIOtype.h Box.h BoxArgs.h BufferedLine.h CharMask.h Cluster/Algorithm.h Cluster/BestReps.h Cluster/CentroidArray.h Cluster/Cframes.h Cluster/Control.h Cluster/DrawGraph.h Cluster/List.h Cluster/Metric.h Cluster/MetricArray.h Cluster/Node.h Cluster/Sieve.h Cluster/Silhouette.h ClusterMap.h Cmd.h CmdInput.h CmdList.h Command.h CompactFrameArray.h ComplexArray.h Constants.h Constraints.h ControlBlock.h ControlBlock_For.h CoordinateInfo.h Corr.h Cph.h CpptrajFile.h CpptrajState.h CpptrajStdio.h DataFile.h DataFileList.h DataFilter.h DataSet.h DataSetList.h DataSet_1D.h DataSet_2D.h DataSet_3D.h DataSet_Coords.h DataSet_Coords_CRD.h DataSet_Coords_REF.h DataSet_GridFlt.h DataSet_MatrixDbl.h DataSet_MatrixFlt.h DataSet_Mesh.h DataSet_Modes.h DataSet_RemLog.h DataSet_Vector.h DataSet_double.h DataSet_float.h DataSet_integer.h DataSet_integer_mem.h DataSet_pH.h DataSet_string.h Deprecated.h DiffusionResults.h DihedralSearch.h Dimension.h DispatchObject.h Energy.h Energy/Ecalc_Nonbond.h Energy/EnergyDecomposer.h Energy/ErfcFxn.h Energy/EwaldParams.h Energy/PME_RecipParams.h Energy/VDW_LongRange_Correction.h Energy_Sander.h EnsembleIn.h EnsembleOutList.h EwaldOptions.h ExclusionArray.h Exec.h Exec_AddMissingRes.h Exec_Analyze.h Exec_Build.h Exec_Calc.h Exec_CatCrd.h Exec_Change.h Exec_ClusterMap.h Exec_CombineCoords.h Exec_Commands.h Exec_CompareClusters.h Exec_CompareEnergy.h Exec_CompareTop.h Exec_CrdAction.h Exec_CrdOut.h Exec_CrdTransform.h Exec_CreateSet.h Exec_DataFile.h Exec_DataFilter.h Exec_DataSetCmd.h Exec_Desc.h Exec_Emin.h Exec_ExtendedComparison.h Exec_Flatten.h Exec_Flush.h Exec_GenerateAmberRst.h Exec_Graft.h Exec_Help.h Exec_HmassRepartition.h Exec_LoadCrd.h Exec_LoadTraj.h Exec_Mutate.h Exec_ParallelAnalysis.h Exec_ParmBox.h Exec_ParmSolvent.h Exec_ParmStrip.h Exec_ParmWrite.h Exec_ParseTiming.h Exec_PermuteDihedrals.h Exec_Precision.h Exec_PrepareForLeap.h Exec_PrintData.h Exec_Random.h Exec_ReadData.h Exec_ReadEnsembleData.h Exec_ReadInput.h Exec_RotateDihedral.h Exec_RunAnalysis.h Exec_ScaleDihedralK.h Exec_Sequence.h Exec_SequenceAlign.h Exec_Set.h Exec_Show.h Exec_SortEnsembleData.h Exec_Source.h Exec_SplitCoords.h Exec_System.h Exec_TIMap.h Exec_Top.h Exec_Traj.h Exec_UpdateParameters.h Exec_ViewRst.h Exec_Zmatrix.h ExtendedSimilarity.h FileIO.h FileName.h FileTypes.h Frame.h FramePtrArray.h GIST_PME.h Grid.h GridAction.h GridBin.h GridMover.h HistBin.h Hungarian.h ImageOption.h ImageTypes.h InputTrajCommon.h InteractionData.h MapAtom.h MaskArray.h MaskToken.h Matrix.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NC_Routines.h NameType.h NetcdfFile.h OnlineVarT.h OutputTrajCommon.h PDBfile.h PairList.h Parallel.h ParallelSetFrameNum.h ParameterTypes.h Parm/GB_Params.h PubFFT.h Pucker.h Pucker_PuckerMask.h Pucker_PuckerSearch.h Pucker_PuckerToken.h RPNcalc.h Random.h Range.h ReferenceAction.h ReferenceFrame.h RemdReservoirNC.h ReplicaDimArray.h ReplicaInfo.h Residue.h Segment.h Spline.h SplineFxnTable.h Structure/LeastSquaresPlane.h Structure/RingFinder.h StructureCheck.h SymbolExporting.h SymmetricRmsdCalc.h TIMatch.h TextFormat.h Timer.h Topology.h TrajFrameCounter.h TrajectoryFile.h Trajin.h TrajinList.h TrajoutList.h Trajout_Single.h Unit.h Vec3.h cuda_kernels/GistCudaSetup.cuh helpme_standalone.h molsurf.h CompactFrameArray.o : CompactFrameArray.cpp Box.h CompactFrameArray.h CoordinateInfo.h CpptrajStdio.h Matrix_3x3.h Parallel.h ReplicaDimArray.h Vec3.h ComplexArray.o : ComplexArray.cpp ArrayIterator.h ComplexArray.h Constraints.o : Constraints.cpp ArgList.h Atom.h AtomMask.h Box.h CharMask.h Constants.h Constraints.h CoordinateInfo.h CpptrajStdio.h FileName.h Frame.h MaskToken.h Matrix_3x3.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h Topology.h Unit.h Vec3.h @@ -288,7 +288,7 @@ DataSet_unsignedInt.o : DataSet_unsignedInt.cpp AssociatedData.h CpptrajFile.h D Deprecated.o : Deprecated.cpp CpptrajStdio.h Deprecated.h DispatchObject.h DiffusionResults.o : DiffusionResults.cpp ArgList.h AssociatedData.h Atom.h AtomMask.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_1D.h DataSet_Coords.h DataSet_Coords_REF.h DiffusionResults.h Dimension.h FileIO.h FileName.h FileTypes.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h Unit.h Vec3.h DihedralSearch.o : DihedralSearch.cpp ArgList.h Atom.h AtomMask.h Box.h Constants.h CoordinateInfo.h CpptrajStdio.h DihedralSearch.h FileName.h Frame.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReplicaDimArray.h Residue.h Segment.h StringRoutines.h SymbolExporting.h Topology.h Unit.h Vec3.h -DistRoutines.o : DistRoutines.cpp Box.h DistRoutines.h ImageOption.h Matrix_3x3.h Parallel.h Vec3.h +DistRoutines.o : DistRoutines.cpp Box.h DistRoutines.h Dist_Imaged.h ImageOption.h Matrix_3x3.h Parallel.h Vec3.h Dist_Imaged.o : Dist_Imaged.cpp Dist_Imaged.h Matrix_3x3.h Parallel.h Vec3.h Energy.o : Energy.cpp Atom.h AtomMask.h Box.h CharMask.h Constants.h CoordinateInfo.h CpptrajStdio.h DistRoutines.h Energy.h Energy/Ene_Angle.h Energy/Ene_Bond.h Energy/Ene_LJ_12_6_4.h Energy/Ene_LJ_6_12.h Energy/Kernel_Harmonic.h ExclusionArray.h FileName.h Frame.h ImageOption.h MaskToken.h Matrix_3x3.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h Topology.h TorsionRoutines.h Unit.h Vec3.h Energy/CMAP.o : Energy/CMAP.cpp ArrayIterator.h Atom.h AtomMask.h Box.h CharMask.h Constants.h CoordinateInfo.h CpptrajStdio.h Energy/CMAP.h FileName.h Frame.h MaskToken.h Matrix.h Matrix_3x3.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h Topology.h TorsionRoutines.h Unit.h Vec3.h @@ -376,6 +376,7 @@ Exec_SortEnsembleData.o : Exec_SortEnsembleData.cpp Action.h ActionList.h Action Exec_Source.o : Exec_Source.cpp Action.h ActionList.h ActionState.h Analysis.h AnalysisList.h AnalysisState.h ArgList.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajState.h CpptrajStdio.h DataFile.h DataFileList.h DataIO.h DataIO_LeapRC.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h EnsembleIn.h EnsembleOutList.h Exec.h Exec_Source.h FileIO.h FileName.h FileTypes.h Frame.h FramePtrArray.h InputTrajCommon.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h ReplicaInfo.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TrajFrameCounter.h Trajin.h TrajinList.h TrajoutList.h Unit.h Vec3.h Exec_SplitCoords.o : Exec_SplitCoords.cpp Action.h ActionList.h ActionState.h Analysis.h AnalysisList.h AnalysisState.h ArgList.h AssociatedData.h Atom.h AtomMask.h BaseIOtype.h Box.h CompactFrameArray.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajState.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_CRD.h DataSet_Coords_REF.h Dimension.h DispatchObject.h EnsembleIn.h EnsembleOutList.h Exec.h Exec_SplitCoords.h FileIO.h FileName.h FileTypes.h Frame.h FramePtrArray.h InputTrajCommon.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h ProgressBar.h Range.h ReferenceFrame.h ReplicaDimArray.h ReplicaInfo.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TrajFrameCounter.h Trajin.h TrajinList.h TrajoutList.h Unit.h Vec3.h Exec_System.o : Exec_System.cpp Action.h ActionList.h ActionState.h Analysis.h AnalysisList.h AnalysisState.h ArgList.h AssociatedData.h Atom.h AtomMask.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajState.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h EnsembleIn.h EnsembleOutList.h Exec.h Exec_System.h FileIO.h FileName.h FileTypes.h Frame.h FramePtrArray.h InputTrajCommon.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h ReplicaInfo.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TrajFrameCounter.h Trajin.h TrajinList.h TrajoutList.h Unit.h Vec3.h +Exec_TIMap.o : Exec_TIMap.cpp Action.h ActionFrameCounter.h ActionList.h ActionState.h Analysis.h AnalysisList.h AnalysisState.h ArgList.h AssociatedData.h Atom.h AtomMask.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajState.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_Topology.h Dimension.h DispatchObject.h EnsembleIn.h EnsembleOutList.h Exec.h Exec_TIMap.h FileIO.h FileName.h FileTypes.h Frame.h FramePtrArray.h InputTrajCommon.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h OutputTrajCommon.h Parallel.h ParameterTypes.h ParmFile.h Range.h ReferenceFrame.h ReplicaDimArray.h ReplicaInfo.h Residue.h Segment.h StringRoutines.h SymbolExporting.h TIMatch.h TextFormat.h Timer.h Topology.h TrajFrameCounter.h TrajectoryFile.h Trajin.h TrajinList.h Trajin_Single.h TrajoutList.h Trajout_Single.h Unit.h Vec3.h Exec_Top.o : Exec_Top.cpp Action.h ActionList.h ActionState.h Analysis.h AnalysisList.h AnalysisState.h ArgList.h AssociatedData.h Atom.h AtomMask.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajState.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h EnsembleIn.h EnsembleOutList.h Exec.h Exec_Top.h FileIO.h FileName.h FileTypes.h Frame.h FramePtrArray.h InputTrajCommon.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h ParmFile.h Range.h ReferenceFrame.h ReplicaDimArray.h ReplicaInfo.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h TopInfo.h Topology.h TrajFrameCounter.h Trajin.h TrajinList.h TrajoutList.h Unit.h Vec3.h Exec_Traj.o : Exec_Traj.cpp Action.h ActionFrameCounter.h ActionList.h ActionState.h Analysis.h AnalysisList.h AnalysisState.h ArgList.h AssociatedData.h Atom.h AtomMask.h BaseIOtype.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajState.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h DispatchObject.h EnsembleIn.h EnsembleOutList.h Exec.h Exec_Traj.h FileIO.h FileName.h FileTypes.h Frame.h FramePtrArray.h InputTrajCommon.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReferenceFrame.h ReplicaDimArray.h ReplicaInfo.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TrajFrameCounter.h Trajin.h TrajinList.h TrajoutList.h Unit.h Vec3.h Exec_UpdateParameters.o : Exec_UpdateParameters.cpp Action.h ActionList.h ActionState.h Analysis.h AnalysisList.h AnalysisState.h ArgList.h AssociatedData.h Atom.h AtomMask.h AtomType.h BaseIOtype.h Box.h CmapParmHolder.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajState.h CpptrajStdio.h DataFile.h DataFileList.h DataSet.h DataSetList.h DataSet_Coords.h DataSet_Coords_REF.h DataSet_Parameters.h DataSet_Topology.h Dimension.h DispatchObject.h EnsembleIn.h EnsembleOutList.h Exec.h Exec_UpdateParameters.h FileIO.h FileName.h FileTypes.h Frame.h FramePtrArray.h InputTrajCommon.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Parm/AssignParams.h Parm/DihedralParmHolder.h Parm/GetParams.h Parm/ImproperParmHolder.h Parm/ParameterSet.h Parm/ParmEnum.h Parm/ParmHolder.h Range.h ReferenceFrame.h ReplicaDimArray.h ReplicaInfo.h Residue.h Segment.h SymbolExporting.h TextFormat.h Timer.h Topology.h TrajFrameCounter.h Trajin.h TrajinList.h TrajoutList.h TypeNameHolder.h Unit.h Vec3.h @@ -420,7 +421,7 @@ KDE.o : KDE.cpp AssociatedData.h Constants.h CpptrajFile.h CpptrajStdio.h DataSe LeapInterface.o : LeapInterface.cpp ArgList.h Atom.h AtomMask.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h FileIO.h FileName.h File_TempName.h Frame.h LeapInterface.h MaskToken.h Matrix_3x3.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReplicaDimArray.h Residue.h Segment.h StringRoutines.h SymbolExporting.h Topology.h Unit.h Vec3.h MapAtom.o : MapAtom.cpp Atom.h MapAtom.h NameType.h SymbolExporting.h MaskArray.o : MaskArray.cpp Atom.h AtomMask.h Box.h Constants.h CoordinateInfo.h CpptrajStdio.h FileName.h Frame.h MaskArray.h MaskToken.h Matrix_3x3.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h Topology.h Unit.h Vec3.h -MaskToken.o : MaskToken.cpp ArgList.h Atom.h CpptrajStdio.h DistRoutines.h ImageOption.h MaskToken.h Molecule.h NameType.h Residue.h Segment.h StringRoutines.h SymbolExporting.h Unit.h +MaskToken.o : MaskToken.cpp ArgList.h Atom.h Box.h CpptrajStdio.h DistRoutines.h ImageOption.h MaskToken.h Matrix_3x3.h Molecule.h NameType.h Parallel.h Residue.h Segment.h StringRoutines.h SymbolExporting.h Unit.h Vec3.h Matrix_3x3.o : Matrix_3x3.cpp Constants.h CpptrajStdio.h Matrix_3x3.h Parallel.h Vec3.h MdOpts.o : MdOpts.cpp ArgList.h Constants.h Constraints.h CpptrajStdio.h MdOpts.h ParameterTypes.h MetaData.o : MetaData.cpp CpptrajStdio.h FileName.h MetaData.h Range.h StringRoutines.h @@ -519,6 +520,7 @@ Structure/Zmatrix.o : Structure/Zmatrix.cpp Atom.h AtomMask.h Box.h Constants.h StructureCheck.o : StructureCheck.cpp Atom.h AtomMask.h Box.h CharMask.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DistRoutines.h ExclusionArray.h FileIO.h FileName.h Frame.h ImageOption.h MaskToken.h Matrix_3x3.h ModXNA_Info.h Molecule.h NameType.h PairList.h Parallel.h ParameterTypes.h Range.h ReplicaDimArray.h Residue.h Segment.h Structure/LeastSquaresPlane.h Structure/RingFinder.h StructureCheck.h SymbolExporting.h Timer.h Topology.h Unit.h Vec3.h StructureMapper.o : StructureMapper.cpp AssociatedData.h Atom.h AtomMap.h AtomMask.h Box.h Constants.h CoordinateInfo.h CpptrajFile.h CpptrajStdio.h DataSet.h DataSet_Coords.h DataSet_Coords_REF.h Dimension.h FileIO.h FileName.h Frame.h MapAtom.h MaskToken.h Matrix_3x3.h MetaData.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReplicaDimArray.h Residue.h Segment.h Structure/Chirality.h Structure/StructureEnum.h StructureMapper.h SymbolExporting.h TextFormat.h Topology.h TorsionRoutines.h Unit.h Vec3.h SymmetricRmsdCalc.o : SymmetricRmsdCalc.cpp ArrayIterator.h Atom.h AtomMap.h AtomMask.h Box.h Constants.h CoordinateInfo.h CpptrajStdio.h DistRoutines.h FileName.h Frame.h Hungarian.h ImageOption.h MapAtom.h MaskToken.h Matrix.h Matrix_3x3.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReplicaDimArray.h Residue.h Segment.h SymbolExporting.h SymmetricRmsdCalc.h Topology.h Unit.h Vec3.h +TIMatch.o : TIMatch.cpp Atom.h AtomMask.h Box.h Constants.h CoordinateInfo.h CpptrajStdio.h FileName.h Frame.h MaskToken.h Matrix_3x3.h ModXNA_Info.h Molecule.h NameType.h Parallel.h ParameterTypes.h Range.h ReplicaDimArray.h Residue.h Segment.h StringRoutines.h SymbolExporting.h TIMatch.h Topology.h Unit.h Vec3.h TextBlockBuffer.o : TextBlockBuffer.cpp BufferedLine.h CpptrajFile.h CpptrajStdio.h FileIO.h FileName.h Parallel.h TextBlockBuffer.h TextFormat.o : TextFormat.cpp StringRoutines.h TextFormat.h Timer.o : Timer.cpp CpptrajStdio.h Timer.h