00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef BALL_MOLMEC_CHARMM_CHARMMSTRETCH_H
00010 #define BALL_MOLMEC_CHARMM_CHARMMSTRETCH_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 CharmmStretch
00035 : public ForceFieldComponent
00036 {
00037 public:
00038
00040 #define CHARMM_STRETCHES_ENABLED "enable Stretches"
00041
00045
00046 BALL_CREATE(CharmmStretch)
00047
00048
00050 CharmmStretch();
00051
00054 CharmmStretch(ForceField& force_field);
00055
00058 CharmmStretch(const CharmmStretch& charmm_stretch);
00059
00062 virtual ~CharmmStretch();
00063
00065
00068
00071 virtual bool setup()
00072 throw(Exception::TooManyErrors);
00073
00075
00079
00082 virtual double updateEnergy();
00083
00086 virtual void updateForces();
00087
00089
00090 private:
00091
00092
00093
00094
00095
00096
00097
00098 QuadraticBondStretch::Data* stretch_;
00099
00100
00101
00102 Size number_of_stretches_;
00103
00104
00105
00106 QuadraticBondStretch stretch_parameters_;
00107
00108
00109
00110 };
00111 }
00112
00113 #endif // BALL_MOLMEC_CHARMM_CHARMMSTRETCH_H