class forcefields::SpceCcl

Overview

SPC/E+CCl water potential. More…

#include <spce_ccl.hpp>
 
class SpceCcl: public forcefields::Ccl {
public:
    // structs
 
    struct Water;
 
    // construction
 
    SpceCcl();
    SpceCcl(double cutoff, double switchingWidth);
 
    // methods
 
    void computeHH_O_(const int nAtoms, const double R[], double F[], double& U, const double b[]);
    void computeHH_O_(const int nAtoms, const double R[], double F[], double& U, const double b[], const bool fixed[]);
    char const* getName() const;
};

Inherited Members

public:
    // structs
 
    template <int N, class R = double(*const)[N], class F = double(*const)[N]>
    struct ChargeGroup;
 
    struct Vector3;
    struct Dtheta;
    struct Rho;
 
    // methods
 
    double getSwitchingWidth() const;
    void setSwitchingWidth(double width);
    double getCutoff() const;
    void setCutoff(double cutoff);
    static double applyPeriodicity0(double r, double const period);
    static void applyPeriodicity0(double r[], double const periods[]);
    void computeHH_O_(const int nAtoms, const double R[], double F[], double& U, const double b[]);
    void computeHH_O_(const int nAtoms, const double R[], double F[], double& U, const double b[], const bool fixed[]);
    char const* getName() const;

Detailed Documentation

SPC/E+CCl water potential. This potential combines potential SPC/E (for intermolecular interactions) with potential CCL (for intramolecular interactions). The functions and parameters for the SPC/E are from Berendsen, et al.. References for potential CCL can be found in in class Ccl ‘s documentation. The rules used to merge these two potentials were taken from Amira, et al.

References

The Missing Term in Effective Pair Potentials. HJC Berendsen, JR Grigera et al. J. Phys. Chem. 1987, vol. 91, p. 6269-6271

Derivation and evaluation of a flexible SPC model for liquid water. S Amira, D Spangberg, K Hermansson, Chemical Physics, 2004, vol. 303, p. 327-334

Methods

void computeHH_O_(const int nAtoms, const double R[], double F[], double& U, const double b[])

Compute the forces and the energy. The order of the atoms is very important. For this function the order is H1, H1, H2, H2, etc … , O1, O2, etc … The numbers are for the molecules. The suffix HH_O_ is to reminds the ordering of the atoms. It indicates the position of the atoms of the first molecule, while the underscore marks the locations of other atoms.

Warning

Be careful with the order of the atoms.

Parameters:

nAtoms

Number of Atoms.

R

coordinates.

F

Forces.

U

Potential energy.

b

Periodic boundaries.

void computeHH_O_(const int nAtoms, const double R[], double F[], double& U, const double b[], const bool fixed[])

Compute the forces and the energy (with fixed atom optimisation). In a simulation, some atoms may be fixed (not allowed to move). Computing the interaction between two fixed atoms is useless. When the potential knows which atoms are fixed, it can avoid these useless computations.

Parameters:

nAtoms

Number of Atoms.

R

coordinates.

F

Forces.

U

Potential energy.

b

Periodic boundaries.

fixed

The length of the array must be equal to nAtoms in compute(). True when atom is fixed, false otherwise.

See also:

Check compute() for the order of the atoms.

char const* getName() const

Name of the potential.