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_STRETCHCOMPONENT_H 00007 #define BALL_MOLMEC_COMMON_STRETCHCOMPONENT_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_QUADRATICBONDSTRETCH_H 00018 # include <BALL/MOLMEC/PARAMETER/quadraticBondStretch.h> 00019 #endif 00020 00021 namespace BALL 00022 { 00023 class ForceField; 00024 00030 class BALL_EXPORT StretchComponent : public ForceFieldComponent 00031 { 00032 public: 00033 BALL_CREATE(StretchComponent) 00034 00035 00038 StretchComponent(); 00039 00043 StretchComponent(ForceField& force_field); 00044 00047 virtual ~StretchComponent(); 00048 00050 00052 00055 00059 virtual double updateEnergy(); 00060 00064 virtual void updateForces(); 00065 00067 00068 protected: 00069 /*_ @name Private Attributes 00070 */ 00071 //_@{ 00072 00073 /*_ 00074 */ 00075 std::vector<QuadraticBondStretch::Data> stretch_; 00076 00077 /*_ The stretch parameters section 00078 */ 00079 QuadraticBondStretch stretch_parameters_; 00080 00081 //_@} 00082 }; 00083 } // namespace BALL 00084 00085 #endif // BALL_MOLMEC_COMMON_STRETCHCOMPONENT_H