cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f CMakeFiles/Makefile2 examples/clean
.PHONY :clean
# The main clean target
clean/fast:clean
.PHONY :clean/fast
# Prepare targets for installation.
preinstall:all
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f CMakeFiles/Makefile2 examples/preinstall
.PHONY :preinstall
# Prepare targets for installation.
preinstall/fast:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f CMakeFiles/Makefile2 examples/preinstall
.PHONY :preinstall/fast
# clear depends
depend:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(CMAKE_COMMAND)-H$(CMAKE_SOURCE_DIR)-B$(CMAKE_BINARY_DIR)--check-build-system CMakeFiles/Makefile.cmake 1
.PHONY :depend
# Convenience name for target.
examples/CMakeFiles/HelloArgon.dir/rule:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f CMakeFiles/Makefile2 examples/CMakeFiles/HelloArgon.dir/rule
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloArgonInC.dir/build.make examples/CMakeFiles/HelloArgonInC.dir/build
.PHONY :HelloArgonInC/fast
# Convenience name for target.
examples/CMakeFiles/HelloEthane.dir/rule:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f CMakeFiles/Makefile2 examples/CMakeFiles/HelloEthane.dir/rule
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloSodiumChloride.dir/build.make examples/CMakeFiles/HelloSodiumChloride.dir/build
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloSodiumChlorideInC.dir/build.make examples/CMakeFiles/HelloSodiumChlorideInC.dir/build
.PHONY :HelloSodiumChlorideInC/fast
# Convenience name for target.
examples/CMakeFiles/HelloWaterBox.dir/rule:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f CMakeFiles/Makefile2 examples/CMakeFiles/HelloWaterBox.dir/rule
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloWaterBox.dir/build.make examples/CMakeFiles/HelloWaterBox.dir/build
.PHONY :HelloWaterBox/fast
Empty.o:Empty.cpp.o
.PHONY :Empty.o
# target to build an object file
Empty.cpp.o:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloArgonInC.dir/build.make examples/CMakeFiles/HelloArgonInC.dir/Empty.cpp.o
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloSodiumChlorideInC.dir/build.make examples/CMakeFiles/HelloSodiumChlorideInC.dir/Empty.cpp.o
.PHONY :Empty.cpp.o
Empty.i:Empty.cpp.i
.PHONY :Empty.i
# target to preprocess a source file
Empty.cpp.i:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloArgonInC.dir/build.make examples/CMakeFiles/HelloArgonInC.dir/Empty.cpp.i
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloSodiumChlorideInC.dir/build.make examples/CMakeFiles/HelloSodiumChlorideInC.dir/Empty.cpp.i
.PHONY :Empty.cpp.i
Empty.s:Empty.cpp.s
.PHONY :Empty.s
# target to generate assembly for a file
Empty.cpp.s:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloArgonInC.dir/build.make examples/CMakeFiles/HelloArgonInC.dir/Empty.cpp.s
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloSodiumChlorideInC.dir/build.make examples/CMakeFiles/HelloSodiumChlorideInC.dir/Empty.cpp.s
.PHONY :Empty.cpp.s
HelloArgon.o:HelloArgon.cpp.o
.PHONY :HelloArgon.o
# target to build an object file
HelloArgon.cpp.o:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloArgon.dir/build.make examples/CMakeFiles/HelloArgon.dir/HelloArgon.cpp.o
.PHONY :HelloArgon.cpp.o
HelloArgon.i:HelloArgon.cpp.i
.PHONY :HelloArgon.i
# target to preprocess a source file
HelloArgon.cpp.i:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloArgon.dir/build.make examples/CMakeFiles/HelloArgon.dir/HelloArgon.cpp.i
.PHONY :HelloArgon.cpp.i
HelloArgon.s:HelloArgon.cpp.s
.PHONY :HelloArgon.s
# target to generate assembly for a file
HelloArgon.cpp.s:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloArgon.dir/build.make examples/CMakeFiles/HelloArgon.dir/HelloArgon.cpp.s
.PHONY :HelloArgon.cpp.s
HelloArgonInC.o:HelloArgonInC.c.o
.PHONY :HelloArgonInC.o
# target to build an object file
HelloArgonInC.c.o:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloArgonInC.dir/build.make examples/CMakeFiles/HelloArgonInC.dir/HelloArgonInC.c.o
.PHONY :HelloArgonInC.c.o
HelloArgonInC.i:HelloArgonInC.c.i
.PHONY :HelloArgonInC.i
# target to preprocess a source file
HelloArgonInC.c.i:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloArgonInC.dir/build.make examples/CMakeFiles/HelloArgonInC.dir/HelloArgonInC.c.i
.PHONY :HelloArgonInC.c.i
HelloArgonInC.s:HelloArgonInC.c.s
.PHONY :HelloArgonInC.s
# target to generate assembly for a file
HelloArgonInC.c.s:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloArgonInC.dir/build.make examples/CMakeFiles/HelloArgonInC.dir/HelloArgonInC.c.s
.PHONY :HelloArgonInC.c.s
HelloEthane.o:HelloEthane.cpp.o
.PHONY :HelloEthane.o
# target to build an object file
HelloEthane.cpp.o:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloEthane.dir/build.make examples/CMakeFiles/HelloEthane.dir/HelloEthane.cpp.o
.PHONY :HelloEthane.cpp.o
HelloEthane.i:HelloEthane.cpp.i
.PHONY :HelloEthane.i
# target to preprocess a source file
HelloEthane.cpp.i:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloEthane.dir/build.make examples/CMakeFiles/HelloEthane.dir/HelloEthane.cpp.i
.PHONY :HelloEthane.cpp.i
HelloEthane.s:HelloEthane.cpp.s
.PHONY :HelloEthane.s
# target to generate assembly for a file
HelloEthane.cpp.s:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloEthane.dir/build.make examples/CMakeFiles/HelloEthane.dir/HelloEthane.cpp.s
.PHONY :HelloEthane.cpp.s
HelloSodiumChloride.o:HelloSodiumChloride.cpp.o
.PHONY :HelloSodiumChloride.o
# target to build an object file
HelloSodiumChloride.cpp.o:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloSodiumChloride.dir/build.make examples/CMakeFiles/HelloSodiumChloride.dir/HelloSodiumChloride.cpp.o
.PHONY :HelloSodiumChloride.cpp.o
HelloSodiumChloride.i:HelloSodiumChloride.cpp.i
.PHONY :HelloSodiumChloride.i
# target to preprocess a source file
HelloSodiumChloride.cpp.i:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloSodiumChloride.dir/build.make examples/CMakeFiles/HelloSodiumChloride.dir/HelloSodiumChloride.cpp.i
.PHONY :HelloSodiumChloride.cpp.i
HelloSodiumChloride.s:HelloSodiumChloride.cpp.s
.PHONY :HelloSodiumChloride.s
# target to generate assembly for a file
HelloSodiumChloride.cpp.s:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloSodiumChloride.dir/build.make examples/CMakeFiles/HelloSodiumChloride.dir/HelloSodiumChloride.cpp.s
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloSodiumChlorideInC.dir/build.make examples/CMakeFiles/HelloSodiumChlorideInC.dir/HelloSodiumChlorideInC.c.o
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloSodiumChlorideInC.dir/build.make examples/CMakeFiles/HelloSodiumChlorideInC.dir/HelloSodiumChlorideInC.c.i
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloSodiumChlorideInC.dir/build.make examples/CMakeFiles/HelloSodiumChlorideInC.dir/HelloSodiumChlorideInC.c.s
.PHONY :HelloSodiumChlorideInC.c.s
HelloWaterBox.o:HelloWaterBox.cpp.o
.PHONY :HelloWaterBox.o
# target to build an object file
HelloWaterBox.cpp.o:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloWaterBox.dir/build.make examples/CMakeFiles/HelloWaterBox.dir/HelloWaterBox.cpp.o
.PHONY :HelloWaterBox.cpp.o
HelloWaterBox.i:HelloWaterBox.cpp.i
.PHONY :HelloWaterBox.i
# target to preprocess a source file
HelloWaterBox.cpp.i:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloWaterBox.dir/build.make examples/CMakeFiles/HelloWaterBox.dir/HelloWaterBox.cpp.i
.PHONY :HelloWaterBox.cpp.i
HelloWaterBox.s:HelloWaterBox.cpp.s
.PHONY :HelloWaterBox.s
# target to generate assembly for a file
HelloWaterBox.cpp.s:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(MAKE)-f examples/CMakeFiles/HelloWaterBox.dir/build.make examples/CMakeFiles/HelloWaterBox.dir/HelloWaterBox.cpp.s
.PHONY :HelloWaterBox.cpp.s
# Help Target
help:
@echo"The following are some of the valid targets for this Makefile:"
@echo"... all (the default if no target is provided)"
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
cd /Users/choderaj/code/openmm/openmm.jchodera &&$(CMAKE_COMMAND)-H$(CMAKE_SOURCE_DIR)-B$(CMAKE_BINARY_DIR)--check-build-system CMakeFiles/Makefile.cmake 0
* This class implements nonbonded interactions between particles. Unlike NonbondedForce, the functional form
* of the interaction is completely customizable, and may involve arbitrary algebraic expressions and tabulated
* functions. It may depend on the distance between particles, as well as on arbitrary global and
* per-particle parameters. It also optionally supports periodic boundary conditions and cutoffs for long range interactions.
*
* To use this class, create a CustomNonbondedForce object, passing an algebraic expression to the constructor
* that defines the interaction energy between each pair of particles. The expression may depend on r, the distance
* between the particles, as well as on any parameters you choose. Then call addPerParticleParameter() to define per-particle
* parameters, and addGlobalParameter() to define global parameters. The values of per-particle parameters are specified as
* part of the system definition, while values of global parameters may be modified during a simulation by calling Context::setParameter().
*
* Next, call addParticle() once for each particle in the System to set the values of its per-particle parameters.
* The number of particles for which you set parameters must be exactly equal to the number of particles in the
* System, or else an exception will be thrown when you try to create a Context. After a particle has been added,
* you can modify its parameters by calling setParticleParameters(). This will have no effect on Contexts that already exist
* unless you call updateParametersInContext().
*
* CustomNonbondedForce also lets you specify "exclusions", particular pairs of particles whose interactions should be
* omitted from force and energy calculations. This is most often used for particles that are bonded to each other.
*
* As an example, the following code creates a CustomNonbondedForce that implements a 12-6 Lennard-Jones potential:
*
* <tt>CustomNonbondedForce* force = new CustomNonbondedForce("4*epsilon*((sigma/r)^12-(sigma/r)^6); sigma=0.5*(sigma1+sigma2); epsilon=sqrt(epsilon1*epsilon2)");</tt>
*
* This force depends on two parameters: sigma and epsilon. The following code defines these as per-particle parameters:
*
* <tt><pre>
* force->addPerParticleParameter("sigma");
* force->addPerParticleParameter("epsilon");
* </pre></tt>
*
* The expression <i>must</i> be symmetric with respect to the two particles. It typically will only be evaluated once
* for each pair of particles, and no guarantee is made about which particle will be identified as "particle 1". In the
* above example, the energy only depends on the products sigma1*sigma2 and epsilon1*epsilon2, both of which are unchanged
* if the labels 1 and 2 are reversed. In contrast, if it depended on the difference sigma1-sigma2, the results would
* be undefined, because reversing the labels 1 and 2 would change the energy.
*
* CustomNonbondedForce can operate in two modes. By default, it computes the interaction of every particle in the System
* with every other particle. Alternatively, you can restrict it to only a subset of particle pairs. To do this, specify
* one or more "interaction groups". An interaction group consists of two sets of particles that should interact with
* each other. Every particle in the first set interacts with every particle in the second set. For example, you might use
* this feature to compute a solute-solvent interaction energy, while omitting all interactions between two solute atoms
* or two solvent atoms.
*
* To create an interaction group, call addInteractionGroup(). You may add as many interaction groups as you want.
* Be aware of the following:
*
* <ul>
* <li>Exclusions are still taken into account, so the interactions between excluded pairs are omitted.</li>
* <li>Likewise, a particle will never interact with itself, even if it appears in both sets of an interaction group.</li>
* <li>If a particle pair appears in two different interaction groups, its interaction will be computed twice. This is
* sometimes useful, but be aware of it so you do not accidentally create unwanted duplicate interactions.</li>
* <li>If you do not add any interaction groups to a CustomNonbondedForce, it operates in the default mode where every
* particle interacts with every other particle.</li>
* </ul>
*
* When using a cutoff, by default the interaction is sharply truncated at the cutoff distance.
* Optionally you can instead use a switching function to make the interaction smoothly go to zero over a finite
* distance range. To enable this, call setUseSwitchingFunction(). You must also call setSwitchingDistance()
* to specify the distance at which the interaction should begin to decrease. The switching distance must be
* less than the cutoff distance. Of course, you could also incorporate the switching function directly into your
* energy expression, but there are several advantages to keeping it separate. It makes your energy expression simpler
* to write and understand. It allows you to use the same energy expression with or without a cutoff. Also, when using
* a long range correction (see below), separating out the switching function allows the correction to be calculated
* more accurately.
*
* Another optional feature of this class is to add a contribution to the energy which approximates the effect of all
* interactions beyond the cutoff in a periodic system. When running a simulation at constant pressure, this can improve
* the quality of the result. Call setUseLongRangeCorrection() to enable it.
*
* Computing the long range correction takes negligible work in each time step, but it does require an expensive precomputation
* at the start of the simulation. Furthermore, that precomputation must be repeated every time a global parameter changes
* (or when you modify per-particle parameters by calling updateParametersInContext()). This means that if parameters change
* frequently, the long range correction can be very slow. For this reason, it is disabled by default.
*
* Expressions may involve the operators + (add), - (subtract), * (multiply), / (divide), and ^ (power), and the following
* are defined in radians, and log is the natural logarithm. step(x) = 0 if x is less than 0, 1 otherwise. delta(x) = 1 if x is 0, 0 otherwise. The names of per-particle parameters
* have the suffix "1" or "2" appended to them to indicate the values for the two interacting particles. As seen in the above example,
* the expression may also involve intermediate quantities that are defined following the main expression, using ";" as a separator.
*
* In addition, you can call addTabulatedFunction() to define a new function based on tabulated values. You specify the function by
* creating a TabulatedFunction object. That function can then appear in the expression.
*/
class OPENMM_EXPORT CustomNonbondedForce : public Force {
public:
/**
* This is an enumeration of the different methods that may be used for handling long range nonbonded forces.
*/
enum NonbondedMethod {
/**
* No cutoff is applied to nonbonded interactions. The full set of N^2 interactions is computed exactly.
* This necessarily means that periodic boundary conditions cannot be used. This is the default.
*/
NoCutoff = 0,
/**
* Interactions beyond the cutoff distance are ignored.
*/
CutoffNonPeriodic = 1,
/**
* Periodic boundary conditions are used, so that each particle interacts only with the nearest periodic copy of
* each other particle. Interactions beyond the cutoff distance are ignored.
*/
CutoffPeriodic = 2,
};
/**
* Create a CustomNonbondedForce.
*
* @param energy an algebraic expression giving the interaction energy between two particles as a function
* of r, the distance between them, as well as any global and per-particle parameters