LennardJonesAlpha

class LennardJonesAlpha : public feasst::LennardJones

This Lennard-Jones potential, \(U_{LJ}\) is a generalization of the one described in LennardJones.

\( U_{LJ} = 4\epsilon \left[ \left(\frac{\sigma + \Delta_\sigma}{r + \Delta_\sigma}\right)^{2\alpha} - \left(\frac{\sigma + \Delta_\sigma}{r + \Delta_\sigma}\right)^\alpha \right] \),

In this class, the \(\alpha\) parameter may be varied (default: 6). In addition, the delta_sigma parameter may be set as a site-specific ModelParam in the fstprt file (default: 0).

Note that \(U_{LJ}\) crosses zero when \(r=\sigma\).

Consider an alternative interpretation for \(\Delta_\sigma = \sigma_r - \sigma\)

\( U_{LJ} = 4\epsilon \left[ \left(\frac{\sigma_r}{r - \sigma + \sigma_r}\right)^{2\alpha} - \left(\frac{\sigma_r}{r - \sigma + \sigma_r}\right)^\alpha \right] \)

Thus, \(\sigma_r = \sigma + \Delta_\sigma\) determines the well width and shape of the potential, while \(\sigma\) determines the excluded volume by shifting the potential right or left.

An additional option is the use of a “lambda” potential which decouples the attractive and repulsive portions of the LJ potential to allow for a modified well-depth or even a shoulder, as shown in Fig. 1 of https://doi.org/10.1039/C7SM01005B and also described in https://dx.doi.org/10.1021/ja802124e.

\( U^\lambda = \left\{ \begin{array}{lr} U_{LJ} + \epsilon(1 - \lambda_{ij}) & r \le r_m \\ \lambda_{ij}U_{LJ} & r > r_m \end{array} \right. \)

where \(r_m = (\sigma + \Delta_\sigma)2^{1/\alpha}-\Delta_\sigma\) is the minimum. The lambda parameter is also a site-specific ModelParam in the fstprt file.

Subclassed by feasst::LennardJonesCutShift, feasst::LennardJonesForceShift

Arguments

  • alpha: set the value of \(\alpha\) (default: 6).

  • lambda: enable “lambda” potentials (default: false)

Public Functions

const double &alpha() const

Return the value of alpha.

void set_wca(const int site_type1, const int site_type2, ModelParams *params) const

Initialize WCA cutoff distances for types 1 and 2 in model parameters.

void precompute(const ModelParams &existing)

Precompute model parameters based on existing model parameters.

double du_dr(const double distance, const int type1, const int type2, const ModelParams &model_params) const

Return the derivative in the potential energy with respect to distance.

void serialize(std::ostream &ostr) const

Output a serialized version of the existing model.

class DeltaSigma : public feasst::ModelParam
class Lambda : public feasst::ModelParam

The lambda parameter has the default mixing rule: \( \lambda_{ij} = \sqrt{\lambda_i \lambda_j} \)

class EnergyAtCutOff : public feasst::ModelParam
class EnergyDerivAtCutOff : public feasst::ModelParam