/*! \file amberImproper.h \brief AMBER improper energy and gradient \author Martin Peters $Date: 2010/03/29 20:28:34 $ $Revision: 1.5 $ ---------------------------------------------------------------------------- MTK++ - C++ package of modeling libraries. Copyright (C) 2005-2006 (see AUTHORS file for a list of contributors) This file is part of MTK++. MTK++ is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. MTK++ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lessser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . ---------------------------------------------------------------------------- */ #ifndef AMBERIMPROPER_H #define AMBERIMPROPER_H namespace MTKpp { class amber; // ============================================================ // Class : amberImproper() // ------------------------------------------------------------ /*! \class amberImproper \brief AMBER improper energy and gradient \author Martin Peters \version 0.1 \date 2006 \section AMBERImproperEnG AMBER Torsion Energy And Gradient */ // ============================================================ class amberImproper { public: /*! \brief amberImproper Constructor */ amberImproper(); /*! \brief amberImproper Constructor \param pAmber parent potential */ amberImproper(amber* pAmber); /*! \brief amberImproper Destructor */ virtual ~amberImproper(); /*! \brief Calculate angle Energy \return angle energy */ double calculateE(); /*! \brief Calculate angle Energy and Gradient \return angle energy */ double calculateG(); protected: // FUNCTIONS /*! \brief Determine the improper between atoms 1, 2, 3, and 4 \param x1 atom 1 x coordinate \param y1 atom 1 y coordinate \param z1 atom 1 z coordinate \param x2 atom 2 x coordinate \param y2 atom 2 y coordinate \param z2 atom 2 z coordinate \param x3 atom 3 x coordinate \param y3 atom 3 y coordinate \param z3 atom 3 z coordinate \param x4 atom 4 x coordinate \param y4 atom 4 y coordinate \param z4 atom 4 z coordinate \return improper between atoms 1, 2, 3, and 4 */ double improper(double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3, double x4, double y4, double z4); protected: // DATA //! improper energy double energy; //! parent potential amber* pAmber; }; } // MTKpp namespace //double calculateE(collection*); //double calculateE(molecule*); //double calculateG(collection*); //double calculateG(molecule*); //double calculateG(submolecule*); //typedef std::map::iterator ImproperMapIterator; //std::map moleculeImproperMap; //std::vector moleculeList; //collection* pCollection; //molecule* pMolecule; //submolecule* pSubMolecule; //Improper* pImproper; //parameters* pParameters; //improperParam* pImproperParam; //std::vector improperParamList; //typedef std::vector::iterator improperParamIterator; #endif // amberImproper_H