* This class implements an "external" force on particles. The force may be applied to any subset of the particles
* in the System. The force on each particle is specified by an arbitrary algebraic expression, which may depend
* on the current position of the particle as well as on arbitrary global and per-particle parameters.
*
* To use this class, create a CustomExternalForce object, passing an algebraic expression to the constructor
* that defines the potential energy of each affected particle. The expression may depend on the particle's x, y, and
* z coordinates, 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().
* Finally, call addParticle() once for each particle that should be affected by the force. After a particle has been added,
* you can modify its parameters by calling setParticleParameters().
*
* As an example, the following code creates a CustomExternalForce that attracts each particle to a target position (x0, y0, z0)
* via a harmonic potential:
*
* <tt>CustomExternalForce* force = new CustomExternalForce("k*((x-x0)^2+(y-y0)^2+(z-z0)^2");</tt>
*
* This force depends on four parameters: the spring constant k and equilibrium coordinates x0, y0, and z0. The following code defines these parameters:
*
* <tt><pre>
* force->addGlobalParameter("k");
* force->addPerParticleParameter("x0");
* force->addPerParticleParameter("y0");
* force->addPerParticleParameter("z0");
* </pre></tt>
*
* Expressions may involve the operators + (add), - (subtract), * (multiply), / (divide), and ^ (power), and the following
* functions: sqrt, exp, log, sin, cos, sec, csc, tan, cot, asin, acos, atan, sinh, cosh, tanh. All trigonometric functions
* are defined in radians, and log is the natural logarithm.