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