|
| | ZhuPhilpott () |
| | ZhuPhilpott (double cutoff, double switchingWidth) |
| | ZhuPhilpott (ZhuPhilpott const &) |
| void | operator= (ZhuPhilpott const &) |
| | ~ZhuPhilpott () |
| void | computeHH_O_Pt_ (const int nWater, const int nPt, const double r[], double f[], double &energy, double const b[], bool const fixed[]) |
| | Compute water-platinum forcefield.
|
| void | computeHH_O_ (const int nWater, const double r[], double f[], double &energy, double const b[], bool const fixed[]) |
| | Compute water-platinum interactions, call with water's positions only.
|
| int | nPlatinum () const |
| | Number of platinum atoms.
|
| void | setPlatinum (int nPlatinum, double const positions[]) |
| | Initialises the positions of the atoms of platinum.
|
| template<int H, int O, int H3, int O3> |
| void | computeTemplate (const int nWater, const double(*const rh1)[H3], const double(*const rh2)[H3], const double(*const ro)[O3], double(*const fh1)[H3], double(*const fh2)[H3], double(*const fo)[O3], const int nPt, const double rPt[][3], double fPt[][3], double &energy, double const b[], bool const (*const xh1)[H], bool const (*const xh2)[H], bool const (*const xo)[O], bool const xPt[]) |
| | SpceCcl () |
| | SpceCcl (double cutoff, double switchingWidth) |
| void | computeHH_O_ (const int nAtoms, const double R[], double F[], double &U, const double b[]) |
| | Compute the forces and the energy.
|
| 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).
|
| char const * | getName () const |
| | Name of the potential.
|
| | Ccl () |
| void | computeHH_O_ (const int nAtoms, const double R[], double F[], double &U, const double b[]) |
| | Compute the forces and the energy.
|
| 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).
|
| char const * | getName () const |
| | Name of the potential.
|
| | PotentialBase () |
| | Non bond interaction cutoff.
|
| | PotentialBase (double cutoff, double switchingWidth) |
| virtual | ~PotentialBase () |
| double | getCutoff () const |
| void | setCutoff (double cutoff) |
| double | getSwitchingWidth () const |
| | Width of the switching zone.
|
| void | setSwitchingWidth (double width) |
|
| template<int H, int O, int H3, int O3> |
| void | computeTemplate (const int nWater, const double(*const rh1)[H3], const double(*const rh2)[H3], const double(*const ro)[O3], double(*const fh1)[H3], double(*const fh2)[H3], double(*const fo)[O3], const int nPt, const double rPt[][3], double fPt[][3], double &energy, double const b[], bool const (*const xh1)[H]=0, bool const (*const xh2)[H]=0, bool const (*const xo)[O]=0, bool const *xPt=0) |
| void | interactWithCorePt (Water &water, int const nPt, double const rPt[][3], double fPt[][3], double &energy) |
| | Interaction of one molecule of water with the whole platinum.
|
| void | interactionPtO (double const R1[], double const R2[], double F1[], double F2[], double &energy) |
| void | interactionPtH (double const R1[], double const R2[], double F1[], double F2[], double &energy) |
| void | anisotropic (const double distance[], double force[], double &energy, double const epsilon, double const sigma, double const alpha) |
| | Anisotropic interaction between water and platinum.
|
| void | isotropic10 (double const distance, double &force, double &energy, double const epsilon, double const sigma, double const C10) |
| | Isotropic interaction between water and platinum.
|
| void | interactWithImage (Water &w1, Water &w2, double &U) |
| | Interactions of a molecule with an image.
|
| void | coulombWithCutoff (Water &w1, Water &w2, double &u, double const relativePermittivity) |
| | Coulomb interaction between two molecules within the swithcing zone.
|
| void | coulombFull (Water &w1, Water &w2, double &U, double const relativePermittivity) |
| | Coulomb interaction between two molecules with cutoff.
|
|
| void | intramolecular (Water &water, double &U) |
| | Interactions within a molecules.
|
| void | lennardJonesWithCutoff (Water &w1, Water &w2, double &U) |
| | Interactions between two molecules.
|
| void | coulombWithCutoff (Water &w1, Water &w2, double &U) |
| | Interactions between two molecules.
|
| void | coulombFull (Water &w1, Water &w2, double &U) |
| | Interactions between two molecules.
|
| | Ccl (double cutoff, double switchingWidth) |
| | Constructor with cutoff for derived classes.
|
| void | intramolecular (double const rh1[], double const rh2[], double const ro[], double fh1[], double fh2[], double fo[], double &energy) |
| | Interactions inside one molecules.
|
| void | initialiseRho (Vector3 const &v, Rho &r) |
| | Initialise Rho.
|
| void | initialiseDtheta (Vector3 const &v1, Vector3 const &v2, Dtheta &dth, double const thetaEquilibrium) |
| | Initialise Dtheta.
|
| void | intramolecular (Rho const &ro1, Rho const &ro2, Dtheta const &dth, double &energy, double fh1[], double fh2[], double fo[]) |
| | Compute intramolecular energy and forces.
|
| void | restrainAngle (double const r1[], double const r2[], double const r3[], double f1[], double f2[], double f3[], double &u, const double k, const double aeq) |
| | Angular quadratic restraints.
|
| void | calculateCentre (double const r1[], double const r2[], double rc[]) |
| | Calculate centre of two points.
|
| void | calculateCentre (double const r1[], double const r2[], double const r3[], double rc[]) |
| | Calculate centre of three points.
|
| void | calculateWeightedCentre (double const w1, double const w2, double const w3, double const r1[], double const r2[], double const r3[], double rc[]) |
| | Calculate barycentre.
|
| void | coulombWithCutoff (const double r1[], const double r2[], double f1[], double f2[], double &u, double const qq) |
| | Coulomb interaction with single charge based cutoff.
|
| void | coulomb (const double r1[], const double r2[], double f1[], double f2[], double &u, double const qq) |
| | Compute Coulomb interaction between two charges.
|
| void | coulomb (double distance, double &force, double &energy, double const qq) |
| | Compute Coulomb interaction between two charges.
|
| void | spreadForce (double f1[], double f2[], double const fc[]) |
| | Spread force on centre to other points.
|
| void | spreadForce (double f1[], double f2[], double f3[], double const fc[]) |
| | Spread force on centre to other points.
|
| void | spreadWeightedForce (double const w1, double const w2, double const w3, double f1[], double f2[], double f3[], double const fc[]) |
| | Spread force on barycentre to atoms.
|
| template<int N, class R, class F> |
| void | addForces (ChargeGroup< N, R, F > const &g1, ChargeGroup< N, R, F > &g2) |
| | Increment forces.
|
| template<int N, class R, class F> |
| void | switching (ChargeGroup< N, R, F > &g1, ChargeGroup< N, R, F > &g2, double &energy, double cutoff, double switchingWidth) |
| void | computePt (int const nAtoms, double positions[], double forces[], double &energy, double const periods[], bool const fixed[]) |
| | Potential for Platinum.
|
| void | restrainLength (const double R1[], const double R2[], double F1[], double F2[], double &u, const double k, const double r0) |
| | Compute quadratic restraints between two atoms.
|
| void | lennardJones (double const distance, double &force, double &energy, double const epsilon, double const sigma) |
| | Lennard-Jones 12-6 between two atoms.
|
| void | lennardJones (const double R1[], const double R2[], double F1[], double F2[], double &E, double const epsilon, double const sigma) |
| | Lennard-Jones 12-6 between two atoms.
|
| void | lennardJonesWithCutoff (double const r1[], double const r2[], double f1[], double f2[], double &energy, double const epsilon, double const sigma) |
| | Lennard Jones 12-6 Potential with cutoff.
|
| void | switching (double const distance, double &force, double &energy) |
| | Smooth cutoff switch off.
|
| void | switching (double const r1[], double const r2[], double f1[], double f2[], double &energy) |
| | Smooth cutoff switch off.
|
| double | applyPeriodicity1 (double r, int const axis) |
| | Minimum image representation.
|
| void | applyPeriodicity1 (double r[]) |
| | Minimum image representation.
|
| void | distance (const double x[], const double y[], double z[], double &z1, double &z2) |
| | Distance vector, norm and norm square.
|
| void | distance (const double x[], const double y[], double z[], double &z1) |
| | Distance.
|
| void | distance (const double x[], const double y[], double z[]) |
| | Distance vector, norm.
|
| void | distance (const double x[], const double y[], double &z1) |
| | Distance.
|
| void | distance (const double x[], const double y[], Vector3 &z) |
| | Distance vector, norm and norm square.
|
| void | setPeriodicity (const double periods[]) |
| | Set periodicity.
|
| double | unBreak1 (double const r, double const ref, int const axis) |
| | Undo the separation of two atoms created by the periodic boundaries.
|
| void | unBreak1 (double r[], double const ref[]) |
| | Undo the separation of two atoms created by the periodic boundaries.
|
| static void | divide (double v[], double const divisor) |
| | Divide vector.
|
| static double * | crossProduct (const double v[], const double w[], double e[]) |
| | Cross product.
|
| static double | dotProduct (double const v[], double const w[]) |
| | Dot product.
|
| static void | multiply (double v[], double const factor) |
| | Multiply vector.
|
| static double | norm (double const v[]) |
| | Norm of 3D vector.
|
| static void | normalise (double v[]) |
| | Normalise 3D vector \( \frac{\mathbf v}{ |\mathbf v|} \).
|
| static double | isoscelesBase (double length, double angle) |
| | Calculate the base of an isosceles triangle.
|
| static double | epsilon (double const A, double const B) |
| | Conversion for Lennard-Jones.
|
| static double | sigma (double const A, double const B) |
| | Conversion for Lennard-Jones.
|
| static double | smithKongEpsilon (double sigma1, double epsilon1, double sigma2, double epsilon2) |
| | Smith and Kong combination rules.
|
| static double | smithKongSigma (double sigma1, double epsilon1, double sigma2, double epsilon2) |
| | Smith and Kong combination rules.
|
| static double | unBreak0 (double const r, double const ref, double const period) |
| | Undo the separation of two atoms created by the periodic boundaries.
|
| static void | unBreak0 (double r[], double const ref[], double const periods[]) |
| | Undo the separation of two atoms created by the periodic boundaries.
|
| double | cutoff_ |
| double | periods_ [3] |
| double | switchingWidth_ |
| static const double | roh_ = 1.0 |
| | Distance OH.
|
| static const double | theta_ = 1.91063 |
| | Angle HOH.
|
| static const double | rhh_ = 1.63299 |
| | Distance HH.
|
| static const double | charge_ = 0.4238 |
| | Charge on one hydrogen.
|
| static const double | charge2_ = 0.179606 |
| | Square of # charge_.
|
| static const double | A_ = 27291.6 |
| | Lennard-Jones.
|
| static const double | B_ = 27.1223 |
| | Lennard-Jones.
|
| static const double | sigma_ = 3.16556 |
| | Lennard-Jones. See PotentialBase::lennardJones() for definition.
|
| static const double | epsilon_ = 0.00673853 |
| | Lennard-Jones. See PotentialBase::lennardJones() for definition.
|
| static double const | polarisationEnergy_ = 0.0541015 |
| | Polarisation correction.
|
| static double const | re_ = ::re_ |
| | Distance OH at equilibrium.
|
| static double const | thetae_ = ::thetae_ |
| | Distance OH at equilibrium.
|
| static const double | ONE_OVER_4_PI_EPSILON0 |
| static const double | EPSILON_PT = 0.68165797577788501 |
| | Platinum Lennard-Jones.
|
| static const double | SIGMA_PT = 2.54 |
| Static Private Attributes inherited from forcefields::zhu_philpott_parameters::Standard |
| static double const | sigmaO_ = 2.86 |
| static double const | epsilonO_ = 0.0023734176137013181 |
| static double const | sigmaH_ = 2.56 |
| static double const | epsilonH_ = 0.00087578073518673099 |
| static double const | C10_O_ = 1.28 |
| static double const | C10_H_ = 1.2 |
| static double const | alpha_ = 0.8 |
| static double const | sigmaHPt_ = 2.730249677569295 |
| static double const | sigmaOPt_ = 2.7735458150747108 |
| static double const | epsilonHPt_ = 0.016217645873043762 |
| static double const | epsilonOPt_ = 0.03387330127291549 |
template<class P = zhu_philpott_parameters::Standard>
class forcefields::ZhuPhilpott< P >
Forcefield for water and platinum interactions.
This forcefield is the A2 water-platinum potential invented by Zhuand Philpott. It includes the SPC/E+CCL potential for interaction between the molecules of water. The SPC/E is a potential for constrained water. This implementation includes restraints so it may be used without constraint (see class SpceCcl).
The potential uses Kong's rules to combine the Lennard-Jones parameters of platinum with oxygen and hydrogen. A review of combination rules including Kong's rule can be find on the web.
The system of unit used by the class is (eV, Angstrom, fs, e).
References
Interaction of water with metal surfaces, S.-B. Zhu and M.R. Philpott J. Chem. Phys. (1994) vol. 100, No 9, p. 6961.
A Molecular Dynamics Simulation of Water Droplet in Contact with a Platinum Surface, T. Kimura and S. Maruyama, University of Tokyo.
Unlike Lennard-Jones Parameters for Vapor-Liquid Equilibria, Thorsten Schnabel, Jadran Vrabec , Hans Hasse, Institut fur Technische Thermodynamik und Thermische Verfahrenstechnik, Universitat Stuttgart, D-70550 Stuttgart, Germany, http://www.itt.uni-stuttgart.de/~schnabel/CR.pdf.
Definition at line 25 of file zhu_philpott.hpp.