BALL
1.4.1
|
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 *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