6 #ifndef OPENMM_RDC_FORCE_H_
7 #define OPENMM_RDC_FORCE_H_
9 #include "openmm/Force.h"
10 #include "openmm/Vec3.h"
11 #include "internal/windowsExportMeld.h"
21 class OPENMM_EXPORT_MELD
RdcForce :
public OpenMM::Force {
39 void updateParametersInContext(OpenMM::Context& context);
44 int getNumExperiments()
const;
50 int getNumRestraints(
int experiment)
const;
55 int getNumTotalRestraints()
const;
63 int addExperiment(std::vector<int> rdcIndices);
77 int addRdcRestraint(
int particle1,
int particle2,
float kappa,
float dObs,
float tolerance,
78 float force_const,
float weight);
92 void updateRdcRestraint(
int index,
int particle1,
int particle2,
float kappa,
float dObs,
93 float tolerance,
float force_const,
float weight);
101 void getExperimentInfo(
int index, std::vector<int>& restraints)
const;
116 void getRdcRestraintInfo(
int index,
int& particle1,
int& partcile2,
float& kappa,
117 float& dObs,
float& tolerance,
float& force_const,
float& weight,
118 int& globalIndex)
const;
121 OpenMM::ForceImpl* createImpl()
const;
124 class RdcRestraintInfo;
125 class ExperimentInfo;
127 std::vector<RdcRestraintInfo> rdcRestraints;
128 std::vector<ExperimentInfo> experiments;
130 class RdcRestraintInfo {
133 float kappa, dObs, tolerance, force_const, weight;
146 RdcRestraintInfo(
int atom1,
int atom2,
float kappa,
float dObs,
float tolerance,
147 float force_const,
float weight,
int globalIndex) :
148 atom1(atom1), atom2(atom2), kappa(kappa), dObs(dObs), tolerance(tolerance),
149 force_const(force_const), weight(weight), globalIndex(globalIndex) {
153 class ExperimentInfo {
155 std::vector<int> rdcIndices;
160 ExperimentInfo(std::vector<int> rdcIndices) :
161 rdcIndices(rdcIndices) {
Definition: MeldForceImpl.h:17
This is the RDC Force.
Definition: RdcForce.h:21