MMFF94OutOfPlaneBend.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: MMFF94OutOfPlaneBend.h,v 1.1.8.1 2007/03/25 21:25:17 oliver Exp $
00005 //
00006 
00007 #ifndef BALL_MOLMEC_MMFF94_MMFF94OUTOFPLANEBEND_H
00008 #define BALL_MOLMEC_MMFF94_MMFF94OUTOFPLANEBEND_H
00009 
00010 #ifndef BALL_MOLMEC_COMMON_FORCEFIELDCOMPONENT_H
00011 # include <BALL/MOLMEC/COMMON/forceFieldComponent.h>
00012 #endif
00013 
00014 #ifndef BALL_MOLMEC_COMMON_FORCEFIELD_H
00015 # include <BALL/MOLMEC/COMMON/forceField.h>
00016 #endif
00017 
00018 #ifndef BALL_MOLMEC_MMFF94_MMFF94PARAMETERS_H
00019 # include <BALL/MOLMEC/MMFF94/MMFF94Parameters.h>
00020 #endif
00021 
00022 namespace BALL 
00023 {
00027   class BALL_EXPORT MMFF94OutOfPlaneBend 
00028     : public ForceFieldComponent
00029   {
00030     public:
00031 
00032     struct BALL_EXPORT OutOfPlaneBend
00033     {
00034       Atom::StaticAtomAttributes *i, *j, *k, *l;
00035       double k_oop;
00036       // debug
00037       double energy;  
00038     };
00039 
00041     #define MMFF94_OUTOFPLANE_ENABLED "enable OutOfPlane"
00042 
00043     BALL_CREATE(MMFF94OutOfPlaneBend)
00044 
00045     
00046     MMFF94OutOfPlaneBend();
00047 
00049     MMFF94OutOfPlaneBend(ForceField& force_field);
00050 
00052     MMFF94OutOfPlaneBend(const MMFF94OutOfPlaneBend& to_copy);
00053 
00055     virtual ~MMFF94OutOfPlaneBend();
00056 
00058     virtual bool setup()
00059       throw(Exception::TooManyErrors);
00060 
00062     virtual double updateEnergy();
00063 
00065     virtual void updateForces();
00066 
00068     const vector<OutOfPlaneBend>& getOutOfPlaneBends() const { return bends_;}
00069     
00070     // Add a double precision TVector3 to a single precision Vector3
00071     inline void AddDV3_(Vector3& f3, const TVector3<double> d3);
00072 
00073     private:
00074     vector<OutOfPlaneBend> bends_;
00075     MMFF94PlaneParameters parameters_;
00076   };
00077 
00078 } // namespace BALL
00079 
00080 #endif // BALL_MOLMEC_MMFF94_MMFF94OUTOFPLANEBEND_H