1 #ifndef OPENMM_DRUDEFORCE_H_
2 #define OPENMM_DRUDEFORCE_H_
35 #include "openmm/Context.h"
36 #include "openmm/Force.h"
38 #include "internal/windowsExportDrude.h"
65 return particles.size();
71 return screenedPairs.size();
90 int addParticle(
int particle,
int particle1,
int particle2,
int particle3,
int particle4,
double charge,
double polarizability,
double aniso12,
double aniso34);
108 void getParticleParameters(
int index,
int& particle,
int& particle1,
int& particle2,
int& particle3,
int& particle4,
double& charge,
double& polarizability,
double& aniso12,
double& aniso34)
const;
126 void setParticleParameters(
int index,
int particle,
int particle1,
int particle2,
int particle3,
int particle4,
double charge,
double polarizability,
double aniso12,
double aniso34);
135 int addScreenedPair(
int particle1,
int particle2,
double thole);
144 void getScreenedPairParameters(
int index,
int& particle1,
int& particle2,
double& thole)
const;
153 void setScreenedPairParameters(
int index,
int particle1,
int particle2,
double thole);
164 void updateParametersInContext(
Context& context);
169 class ScreenedPairInfo;
170 std::vector<ParticleInfo> particles;
171 std::vector<ScreenedPairInfo> screenedPairs;
178 class DrudeForce::ParticleInfo {
180 int particle, particle1, particle2, particle3, particle4;
181 double charge, polarizability, aniso12, aniso34;
183 particle = particle1 = particle2 = particle3 = particle4 = -1;
184 charge = polarizability = aniso12 = aniso34 = 0.0;
186 ParticleInfo(
int particle,
int particle1,
int particle2,
int particle3,
int particle4,
double charge,
double polarizability,
double aniso12,
double aniso34) :
187 particle(particle), particle1(particle1), particle2(particle2), particle3(particle3), particle4(particle4), charge(charge), polarizability(polarizability), aniso12(aniso12), aniso34(aniso34) {
195 class DrudeForce::ScreenedPairInfo {
197 int particle1, particle2;
200 particle1 = particle2 = -1;
203 ScreenedPairInfo(
int particle1,
int particle2,
double thole) :
204 particle1(particle1), particle2(particle2), thole(thole) {
int getNumScreenedPairs() const
Get the number of special interactions that should be calculated differently from other interactions...
Definition: DrudeForce.h:70
A Context stores the complete state of a simulation.
Definition: Context.h:67
Force objects apply forces to the particles in a System, or alter their behavior in other ways...
Definition: Force.h:65
int getNumParticles() const
Get the number of particles for which force field parameters have been defined.
Definition: DrudeForce.h:64
A ForceImpl provides the internal implementation of a Force.
Definition: ForceImpl.h:57
This class implements forces that are specific to Drude oscillators.
Definition: DrudeForce.h:55