00001
00002
00003
00004
00005
00006 #ifndef __RD_DISTVIOLATIONCONTRIB_H__
00007 #define __RD_DISTVIOLATIONCONTRIB_H__
00008
00009 #include <ForceField/Contrib.h>
00010
00011 namespace DistGeom {
00012
00013
00014 class DistViolationContrib : public ForceFields::ForceFieldContrib {
00015 public:
00016 DistViolationContrib() : d_end1Idx(0), d_end2Idx(0), d_ub(1000.0), d_lb(0.0), d_weight(1.0) {};
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 DistViolationContrib(ForceFields::ForceField *owner,unsigned int idx1,unsigned int idx2,
00028 double ub, double lb, double weight=1.0);
00029
00030 double getEnergy(double *pos) const;
00031
00032 void getGrad(double *pos, double *grad) const;
00033
00034 private:
00035 unsigned int d_end1Idx,d_end2Idx;
00036 double d_ub;
00037 double d_lb;
00038 double d_weight;
00039 };
00040 }
00041
00042 #endif