00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef BALL_MOLMEC_AMBER_AMBERSTRETCH_H
00010 #define BALL_MOLMEC_AMBER_AMBERSTRETCH_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_COMMON_FORCEFIELD_H
00021 # include <BALL/MOLMEC/COMMON/forceField.h>
00022 #endif
00023
00024 #ifndef BALL_MOLMEC_PARAMETER_QUADRATICBONDSTRETCH_H
00025 # include <BALL/MOLMEC/PARAMETER/quadraticBondStretch.h>
00026 #endif
00027
00028 namespace BALL
00029 {
00034 class BALL_EXPORT AmberStretch
00035 : public ForceFieldComponent
00036 {
00037 public:
00038
00040 #define AMBER_STRETCH_ENABLED "enable Stretches"
00041
00045
00046 BALL_CREATE(AmberStretch)
00047
00048
00050 AmberStretch();
00051
00054 AmberStretch(ForceField& force_field);
00055
00058 AmberStretch(const AmberStretch& amber_stretch);
00059
00062 virtual ~AmberStretch();
00063
00065
00068
00071 virtual bool setup()
00072 throw(Exception::TooManyErrors);
00073
00075
00078
00081 virtual double updateEnergy();
00082
00085 virtual void updateForces();
00086
00089 virtual void update()
00090 throw(Exception::TooManyErrors);
00091
00093
00094 private:
00095
00096
00097
00098
00099
00100
00101
00102 std::vector<QuadraticBondStretch::Data> stretch_;
00103
00104
00105
00106 QuadraticBondStretch stretch_parameters_;
00107
00108
00109
00110 };
00111 }
00112
00113 #endif // BALL_MOLMEC_AMBER_AMBERSTRETCH_H