00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // Molecular Mechanics: Amber force field, bond stretch component 00005 00006 #ifndef BALL_MOLMEC_COMMON_BENDCOMPONENT_H 00007 #define BALL_MOLMEC_COMMON_BENDCOMPONENT_H 00008 00009 #ifndef BALL_COMMON_H 00010 # include <BALL/common.h> 00011 #endif 00012 00013 #ifndef BALL_MOLMEC_COMMON_FORCEFIELDCOMPONENT_H 00014 # include <BALL/MOLMEC/COMMON/forceFieldComponent.h> 00015 #endif 00016 00017 #ifndef BALL_MOLMEC_PARAMETER_QUADRATICANGLEBEND_H 00018 # include <BALL/MOLMEC/PARAMETER/quadraticAngleBend.h> 00019 #endif 00020 00021 namespace BALL 00022 { 00023 class ForceField; 00028 class BALL_EXPORT BendComponent : public ForceFieldComponent 00029 { 00030 public: 00031 BALL_CREATE(BendComponent) 00032 00033 00036 00040 BendComponent(); 00041 00045 BendComponent(ForceField& force_field); 00046 00050 virtual ~BendComponent(); 00051 00053 00057 00061 virtual double updateEnergy(); 00062 00066 virtual void updateForces(); 00067 00069 00070 protected: 00071 00072 /*_ @name Private Attributes 00073 */ 00074 //_@{ 00075 00076 /*_ pointer to the array of bends 00077 */ 00078 vector<QuadraticAngleBend::Data> bend_; 00079 00080 QuadraticAngleBend bend_parameters_; 00081 00082 //_@} 00083 }; 00084 } // namespace BALL 00085 00086 #endif //BALL_MOLMEC_COMMON_BENDCOMPONENT_H