amberBend.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: amberBend.h,v 1.20.18.1 2007/03/25 21:23:46 oliver Exp $
00005 //
00006 
00007 // Molecular Mechanics: Amber force field, bond stretch component
00008 
00009 #ifndef BALL_MOLMEC_AMBER_AMBERBEND_H
00010 #define BALL_MOLMEC_AMBER_AMBERBEND_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 AmberBend 
00035     : public ForceFieldComponent
00036   {
00037     public:
00038 
00039     BALL_CREATE(AmberBend)
00040 
00041     
00042     #define AMBER_BEND_ENABLED "enable Bends"
00043 
00047 
00050     AmberBend();
00051 
00054     AmberBend(ForceField& force_field);
00055 
00058     AmberBend(const AmberBend& amber_stretch);
00059 
00062     virtual ~AmberBend();
00063 
00065 
00069 
00072     virtual bool setup()
00073       throw(Exception::TooManyErrors);
00074 
00076 
00077 
00081 
00084     virtual double updateEnergy();
00085 
00088     virtual void updateForces();
00089 
00091 
00092     private:
00093 
00094     /*_ @name Private Attributes  
00095     */
00096     //_@{
00097 
00098     /*_ pointer to the array of bends
00099     */  
00100     vector<QuadraticAngleBend::Data>  bend_;
00101 
00102     QuadraticAngleBend                bend_parameters_;
00103 
00104     //_@}
00105    
00106   };
00107 } // namespace BALL
00108 
00109 #endif // BALL_MOLMEC_AMBER_AMBERBEND_H