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);
175 ForceImpl* createImpl()
const;
178 class ScreenedPairInfo;
179 std::vector<ParticleInfo> particles;
180 std::vector<ScreenedPairInfo> screenedPairs;
187 class DrudeForce::ParticleInfo {
189 int particle, particle1, particle2, particle3, particle4;
190 double charge, polarizability, aniso12, aniso34;
192 particle = particle1 = particle2 = particle3 = particle4 = -1;
193 charge = polarizability = aniso12 = aniso34 = 0.0;
195 ParticleInfo(
int particle,
int particle1,
int particle2,
int particle3,
int particle4,
double charge,
double polarizability,
double aniso12,
double aniso34) :
196 particle(particle), particle1(particle1), particle2(particle2), particle3(particle3), particle4(particle4), charge(charge), polarizability(polarizability), aniso12(aniso12), aniso34(aniso34) {
204 class DrudeForce::ScreenedPairInfo {
206 int particle1, particle2;
209 particle1 = particle2 = -1;
212 ScreenedPairInfo(
int particle1,
int particle2,
double thole) :
213 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
bool usesPeriodicBoundaryConditions() const
Returns whether or not this force makes use of periodic boundary conditions.
Definition: DrudeForce.h:171
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
This class implements forces that are specific to Drude oscillators.
Definition: DrudeForce.h:55
Definition: AndersenThermostat.h:40