OpenMM

- Main Page
- Related Pages
- Classes

All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
GBSAOBCForce.h
1 #ifndef OPENMM_GBSAOBCFORCEFIELD_H_
2 #define OPENMM_GBSAOBCFORCEFIELD_H_
3
4 /* -------------------------------------------------------------------------- *
5 * OpenMM *
6 * -------------------------------------------------------------------------- *
7 * This is part of the OpenMM molecular simulation toolkit originating from *
8 * Simbios, the NIH National Center for Physics-Based Simulation of *
9 * Biological Structures at Stanford, funded under the NIH Roadmap for *
10 * Medical Research, grant U54 GM072970. See https://simtk.org. *
11 * *
12 * Portions copyright (c) 2008-2009 Stanford University and the Authors. *
13 * Authors: Peter Eastman *
14 * Contributors: *
15 * *
16 * Permission is hereby granted, free of charge, to any person obtaining a *
17 * copy of this software and associated documentation files (the "Software"), *
18 * to deal in the Software without restriction, including without limitation *
19 * the rights to use, copy, modify, merge, publish, distribute, sublicense, *
20 * and/or sell copies of the Software, and to permit persons to whom the *
21 * Software is furnished to do so, subject to the following conditions: *
22 * *
23 * The above copyright notice and this permission notice shall be included in *
24 * all copies or substantial portions of the Software. *
25 * *
26 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *
27 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *
28 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *
29 * THE AUTHORS, CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
30 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
31 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE *
32 * USE OR OTHER DEALINGS IN THE SOFTWARE. *
33 * -------------------------------------------------------------------------- */
34
35 #include "Force.h"
36 #include <vector>
37 #include "internal/windowsExport.h"
38
39 namespace OpenMM {
40
58 class OPENMM_EXPORT GBSAOBCForce : public Force {
59 public:
63 enum NonbondedMethod {
68 NoCutoff = 0,
72 CutoffNonPeriodic = 1,
77 CutoffPeriodic = 2,
78 };
82 GBSAOBCForce();
86 int getNumParticles() const {
87 return particles.size();
88 }
98 int addParticle(double charge, double radius, double scalingFactor);
107 void getParticleParameters(int index, double& charge, double& radius, double& scalingFactor) const;
116 void setParticleParameters(int index, double charge, double radius, double scalingFactor);
120 double getSolventDielectric() const {
121 return solventDielectric;
122 }
126 void setSolventDielectric(double dielectric) {
127 solventDielectric = dielectric;
128 }
132 double getSoluteDielectric() const {
133 return soluteDielectric;
134 }
138 void setSoluteDielectric(double dielectric) {
139 soluteDielectric = dielectric;
140 }
144 double getSurfaceAreaEnergy() const {
145 return surfaceAreaEnergy;
146 }
150 void setSurfaceAreaEnergy(double energy) {
151 surfaceAreaEnergy = energy;
152 }
156 NonbondedMethod getNonbondedMethod() const;
160 void setNonbondedMethod(NonbondedMethod method);
167 double getCutoffDistance() const;
174 void setCutoffDistance(double distance);
186 void updateParametersInContext(Context& context);
193 bool usesPeriodicBoundaryConditions() const {
194 return nonbondedMethod == GBSAOBCForce::CutoffPeriodic;
195 }
196 protected:
197 ForceImpl* createImpl() const;
198 private:
199 class ParticleInfo;
200 NonbondedMethod nonbondedMethod;
201 double cutoffDistance, solventDielectric, soluteDielectric, surfaceAreaEnergy;
202 std::vector<ParticleInfo> particles;
203 };
204
209 class GBSAOBCForce::ParticleInfo {
210 public:
211 double charge, radius, scalingFactor;
212 ParticleInfo() {
213 charge = radius = scalingFactor = 0.0;
214 }
215 ParticleInfo(double charge, double radius, double scalingFactor) :
216 charge(charge), radius(radius), scalingFactor(scalingFactor) {
217 }
218 };
219
220 } // namespace OpenMM
221
222 #endif /*OPENMM_GBSAOBCFORCEFIELD_H_*/
OpenMM::GBSAOBCForce::usesPeriodicBoundaryConditions
bool usesPeriodicBoundaryConditions() const
Returns whether or not this force makes use of periodic boundary conditions.
Definition: GBSAOBCForce.h:193
OpenMM::Context
A Context stores the complete state of a simulation.
Definition: Context.h:67
OpenMM::GBSAOBCForce
This class implements an implicit solvation force using the GBSA-OBC model.
Definition: GBSAOBCForce.h:58
OpenMM::GBSAOBCForce::getSolventDielectric
double getSolventDielectric() const
Get the dielectric constant for the solvent.
Definition: GBSAOBCForce.h:120
OpenMM::GBSAOBCForce::setSoluteDielectric
void setSoluteDielectric(double dielectric)
Set the dielectric constant for the solute.
Definition: GBSAOBCForce.h:138
OpenMM::GBSAOBCForce::getNumParticles
int getNumParticles() const
Get the number of particles in the system.
Definition: GBSAOBCForce.h:86
OpenMM::Force
Force objects apply forces to the particles in a System, or alter their behavior in other ways...
Definition: Force.h:65
OpenMM::GBSAOBCForce::setSurfaceAreaEnergy
void setSurfaceAreaEnergy(double energy)
Set the energy scale for the surface energy term, measured in kJ/mol/nm^2.
Definition: GBSAOBCForce.h:150
OpenMM::GBSAOBCForce::CutoffPeriodic
Periodic boundary conditions are used, so that each particle interacts only with the nearest periodic...
Definition: GBSAOBCForce.h:77
OpenMM::GBSAOBCForce::getSurfaceAreaEnergy
double getSurfaceAreaEnergy() const
Get the energy scale for the surface energy term, measured in kJ/mol/nm^2.
Definition: GBSAOBCForce.h:144
OpenMM::GBSAOBCForce::NonbondedMethod
NonbondedMethod
This is an enumeration of the different methods that may be used for handling long range nonbonded fo...
Definition: GBSAOBCForce.h:63
OpenMM::GBSAOBCForce::setSolventDielectric
void setSolventDielectric(double dielectric)
Set the dielectric constant for the solvent.
Definition: GBSAOBCForce.h:126
OpenMM
Definition: AndersenThermostat.h:40
OpenMM::GBSAOBCForce::getSoluteDielectric
double getSoluteDielectric() const
Get the dielectric constant for the solute.
Definition: GBSAOBCForce.h:132