00001
00002
00003
00004
00005
00006
00007
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
00092
00093
00094
00095
00096
00097 vector<QuadraticAngleBend::Data> bend_;
00098
00099 QuadraticAngleBend bend_parameters_;
00100
00101
00102
00103 };
00104 }
00105
00106 #endif // BALL_MOLMEC_CHARMM_CHARMMBEND_H