1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
#include <BALL/SCORING/FUNCTIONS/forceFieldEvaluation.h>
using namespace BALL;
//namespace BALL
//{
ForceFieldEvaluation::ForceFieldEvaluation()
throw()
: EnergeticEvaluation(),
ff_(new ForceField()),
delete_force_field_(true)
{
}
ForceFieldEvaluation::ForceFieldEvaluation(ForceField& ff)
throw()
: EnergeticEvaluation(),
ff_(&ff),
delete_force_field_(false)
{
}
ForceFieldEvaluation::~ForceFieldEvaluation()
throw()
{
if (delete_force_field_) delete ff_;
}
void ForceFieldEvaluation::setForceField(ForceField& ff)
throw()
{
ff_ = &ff;
delete_force_field_ = false;
}
void ForceFieldEvaluation::setOptions(const Options& options)
throw()
{
options_ = options;
}
ForceField& ForceFieldEvaluation::getForceField()
throw()
{
return *ff_;
}
const ForceField& ForceFieldEvaluation::getForceField() const
throw()
{
return *ff_;
}
Options& ForceFieldEvaluation::getOptions()
throw()
{
return options_;
}
const Options& ForceFieldEvaluation::getOptions() const
throw()
{
return options_;
}
std::vector < ConformationSet::Conformation > ForceFieldEvaluation::operator () (ConformationSet& conformations)
{
std::vector < ConformationSet::Conformation > result;
if (!ff_) return result;
System S = conformations.getSystem();
ff_->setup(S);
for (int i = 0; i < (int)conformations.size(); i++)
{
conformations[i].applySnapShot(S);
ff_->updateEnergy();
float energy = ff_->getEnergy();
ConformationSet::Conformation current_conf(i, energy);
result.push_back(current_conf);
}
return result;
}
//}
|