charmmBend.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: charmmBend.h,v 1.17.18.1 2007/03/25 21:23:48 oliver Exp $
00005 //
00006 
00007 // Molecular Mechanics: Charmm force field, bond stretch component
00008 
00009 #ifndef BALL_MOLMEC_CHARMM_CHARMMBEND_H
00010 #define BALL_MOLMEC_CHARMM_CHARMMBEND_H
00011 
00012 #ifndef BALL_COMMON_H
00013 # include <BALL/common.h>
00014 #endif
00015 
00016 #ifndef BALL_MOLMEC_COMMON_FORCEFIELDCOMPONENT_H
00017 # include <BALL/MOLMEC/COMMON/forceFieldComponent.h>
00018 #endif
00019 
00020 #ifndef BALL_MOLMEC_PARAMETER_QUADRATICANGLEBEND_H
00021 # include <BALL/MOLMEC/PARAMETER/quadraticAngleBend.h>
00022 #endif
00023 
00024 #ifndef BALL_MOLMEC_COMMON_FORCEFIELD_H
00025 # include <BALL/MOLMEC/COMMON/forceField.h>
00026 #endif
00027 
00028 namespace BALL 
00029 {
00034   class BALL_EXPORT CharmmBend 
00035     : public ForceFieldComponent
00036   {
00037     public:
00038 
00039     BALL_CREATE(CharmmBend)
00040 
00041     
00042     #define CHARMM_BENDS_ENABLED "enable Bends"
00043 
00047 
00050     CharmmBend();
00051 
00054     CharmmBend(ForceField& force_field);
00055 
00058     CharmmBend(const CharmmBend& charmm_stretch);
00059 
00062     virtual ~CharmmBend();
00063 
00065 
00068 
00071     virtual bool setup()
00072       throw(Exception::TooManyErrors);
00073 
00075 
00078 
00081     virtual double updateEnergy();
00082 
00085     virtual void updateForces();
00086 
00088 
00089     private:
00090 
00091     /*_ @name Private Attributes  
00092     */
00093     //_@{
00094 
00095     /*_ pointer to the array of bends
00096     */  
00097     vector<QuadraticAngleBend::Data>  bend_;
00098 
00099     QuadraticAngleBend                bend_parameters_;
00100 
00101     //_@}
00102    
00103   };
00104 } // namespace BALL
00105 
00106 #endif // BALL_MOLMEC_CHARMM_CHARMMBEND_H