C++ Interface

An example usage of the C++ interface is shown in $HOME/feasst/tutorial/tutorial.cpp and compiled in BASH as follows:

# Compile FEASST normally, ending with the command: make install.
# Set CMAKE_PREFIX_PATH in $HOME/feasst/tutorial/CMakeLists.txt
mkdir build; cd &_
cmake ..
make
./tutorial

C++ classes are organized as follows. The random number generate is set by Random. Configuration contains the identity and positions of particles, sites and the spatial Domain. Model computes the potential energy between two sites. To find all available Models, look at the subclasses in the documentation for one or two body Models. VisitModel loops a Model over all selected particles and sites, or contains a many-body potential such as LongRangeCorrections or Ewald. Potential contains both Model and VisitModel. Trial is a MonteCarlo trial move. Criteria determine if the Trial is accepted or rejected. FlatHistogram methods Bias along a Macrostate. Analyze and Modify occur every fixed number of Trials, but an Action happens only once. These base classes have all their subclasses listed in their respective documentation.

The C++ interface is organized by plugins. A FEASST plugin is a collection of related classes. Unnecessary plugins can be removed from the FEASST_PLUGINS variable in /path/to/feasst/CMakeLists.txt. Similarly, plugins can also be added this way. In both cases, FEASST must be reinstalled.

The recommended approach for finding more information on a class is demonstrated as follows. If you would like more information on RandomMT19937 but are not sure where to find it, you could search headers files

grep -r --include=*.h RandomMT19937

And find that the class is part of the Math plugin.

See the example plugin as a template for creating your own class or plugin.

The plugins and classes listed below represent all the publicly available capabilities of FEASST.