class ModelExample : public feasst::ModelTwoBody

Add a model to FEASST by using this file as a template and instruction set. Follow the same steps detailed in /feasst/plugin/example/README.rst. In summary, copy model_example.[h/cpp] to new_name.[h/cpp], replace ModelExample with NewName, then replace MODEL_EXAMPLE with NEW_NAME.

In some cases, TablePotential may be a more convenient and efficient approach to implementing a custom potential in FEASST.

As an example, consider the Jagla model as described in but with the variables renamed as follows: \(\epsilon_1 \rightarrow \gamma\), \(\epsilon_2 \rightarrow \epsilon\), \(\lambda_1 \rightarrow \lambda\), \(\lambda_2 \rightarrow r_c\).

\( U(r) = \left\{ \begin{array}{ll} \infty & : r < \sigma, \\ \frac{\gamma(\lambda - r)-\epsilon(r-\sigma)}{\lambda-\sigma} & : \sigma \le r \le \lambda, \\ -\frac{\epsilon(r_c - r)}{r_c-\lambda} & : \lambda \le r \le r_c, \\ 0 & : r \ge r_c. \end{array} \right. \)

For more inspiration, take a look at other existing ModelTwoBody, such as LennardJones or LennardJonesCutShift, or the models plugin. Sometimes it is easiest to find an existing model that is the more similar to what you need, and copy/rename those files instead.


  • num_discretized_steps: convert the continuous ramp potential into a number of dicontinuous, discretized steps. See Fig. 1(d) of . If 0, then use the linear ramp potential (default: 0).

Use this comment to describe and add any user arguments (or delete if no user arguments are required). Ensure the default value corresponds to the one in the .cpp file. Note that “Site Properties” in fstprt files are not added here.