Simpatico  v1.10
mcMd/potentials/external/ExternalPotential.h
1 #ifndef MCMD_EXTERNAL_POTENTIAL_H
2 #define MCMD_EXTERNAL_POTENTIAL_H
3 
4 /*
5 * Simpatico - Simulation Package for Polymeric and Molecular Liquids
6 *
7 * Copyright 2010 - 2017, The Regents of the University of Minnesota
8 * Distributed under the terms of the GNU General Public License.
9 */
10 
11 #include <mcMd/potentials/misc/EnergyCalculator.h> // base class
12 #include <util/param/ParamComposite.h> // base class
13 
14 #include <string>
15 
16 namespace Util
17 {
18  class Vector;
19  class Tensor;
20  class Random;
21 }
22 
23 namespace McMd
24 {
25 
26  using namespace Util;
27 
28  class Atom;
29 
36  {
37 
38  public:
39 
44  { setClassName("ExternalPotential"); }
45 
50  {}
51 
53 
54 
62  virtual double energy(const Vector& position, int i) const = 0;
63 
71  virtual void getForce(const Vector& position, int type, Vector& force) const = 0;
72 
76  virtual std::string interactionClassName() const = 0;
77 
79 
81 
85  virtual void addForces() = 0;
86 
92  virtual double atomEnergy(const Atom& atom) const = 0;
93 
94  // Prevent hiding of inherited accessor function
95  using EnergyCalculator::energy;
96 
98 
99  };
100 
101 }
102 #endif
A Vector is a Cartesian vector.
Definition: Vector.h:75
virtual ~ExternalPotential()
Destructor (does nothing)
Abstract External Potential class.
Interface for a class that calculates a total energy.
A point particle within a Molecule.
Utility classes for scientific computation.
Definition: accumulators.mod:1
Single-processor Monte Carlo (MC) and molecular dynamics (MD).
An object that can read multiple parameters from file.