.. index:: pair: class; forcefields::ZhuPhilpott .. _doxid-classforcefields_1_1_zhu_philpott: template class forcefields::ZhuPhilpott ======================================= .. toctree:: :hidden: Overview ~~~~~~~~ Forcefield for water and platinum interactions. This forcefield is the A2 water-platinum potential invented by :ref:`Zhu ` and 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).\n The potential uses Kong's rules to combine the Lennard-Jones parameters of platinum with oxygen and hydrogen. A @ref combinationReview "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). :ref:`More...` .. ref-code-block:: cpp :class: doxyrest-overview-code-block template class ZhuPhilpott: public :ref:`forcefields::SpceCcl`, private :ref:`forcefields::zhu_philpott_parameters::Standard` { public: // construction :target:`ZhuPhilpott`(); :target:`ZhuPhilpott`(double cutoff, double switchingWidth); :target:`ZhuPhilpott`(ZhuPhilpott const& zhuPhilpott); :target:`~ZhuPhilpott`(); // methods void :target:`operator=`(ZhuPhilpott const& zhuPhilpott); void :ref:`computeHH_O_Pt_`(const int nWater, const int nPt, const double r[], double f[], double& energy, double const b[], bool const fixed[]); void :ref:`computeHH_O_`(const int nWater, const double r[], double f[], double& energy, double const b[], bool const fixed[]); int :ref:`nPlatinum`() const; void :ref:`setPlatinum`(int nPlatinum, double const positions[]); template void :target:`computeTemplate`(const int nWater, const double(*) rh1[H3], const double(*) rh2[H3], const double(*) ro[O3], double(*) fh1[H3], double(*) fh2[H3], double(*) fo[O3], const int nPt, const double rPt[][3], double fPt[][3], double& energy, double const b[], bool const(*) xh1[H], bool const(*) xh2[H], bool const(*) xo[O], bool const xPt[]); static char const* :ref:`getName`(); }; Inherited Members ----------------- .. ref-code-block:: cpp :class: doxyrest-overview-inherited-code-block public: // structs template struct :ref:`ChargeGroup`; struct :ref:`Vector3`; struct :ref:`Dtheta`; struct :ref:`Rho`; struct :ref:`Water`; // fields static double const :ref:`sigmaO_` = 2.86; static double const :ref:`epsilonO_` = 0.0023734176137013181; static double const :ref:`sigmaH_` = 2.56; static double const :ref:`epsilonH_` = 0.00087578073518673099; static double const :ref:`C10_O_` = 1.28; static double const :ref:`C10_H_` = 1.2; static double const :ref:`alpha_` = 0.8; static double const :ref:`sigmaHPt_` = 2.730249677569295; static double const :ref:`sigmaOPt_` = 2.7735458150747108; static double const :ref:`epsilonHPt_` = 0.016217645873043762; static double const :ref:`epsilonOPt_` = 0.03387330127291549; // methods double :ref:`getSwitchingWidth`() const; void :ref:`setSwitchingWidth`(double width); double :ref:`getCutoff`() const; void :ref:`setCutoff`(double cutoff); static double :ref:`applyPeriodicity0`(double r, double const period); static void :ref:`applyPeriodicity0`(double r[], double const periods[]); void :ref:`computeHH_O_`(const int nAtoms, const double R[], double F[], double& U, const double b[]); void :ref:`computeHH_O_`(const int nAtoms, const double R[], double F[], double& U, const double b[], const bool fixed[]); char const* :ref:`getName`() const; void :ref:`computeHH_O_`(const int nAtoms, const double R[], double F[], double& U, const double b[]); void :ref:`computeHH_O_`(const int nAtoms, const double R[], double F[], double& U, const double b[], const bool fixed[]); char const* :ref:`getName`() const; .. _details-classforcefields_1_1_zhu_philpott: Detailed Documentation ~~~~~~~~~~~~~~~~~~~~~~ Forcefield for water and platinum interactions. This forcefield is the A2 water-platinum potential invented by :ref:`Zhu ` and 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).\n The potential uses Kong's rules to combine the Lennard-Jones parameters of platinum with oxygen and hydrogen. A @ref combinationReview "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). .. _doxid-classforcefields_1_1_zhu_philpott_1zhu_philpott_references: References ~~~~~~~~~~ :target:`doxid-classforcefields_1_1_zhu_philpott_1zhu1994` Interaction of water with metal surfaces, S.-B. Zhu and M.R. Philpott J. Chem. Phys. (1994) vol. 100, No 9, p. 6961. :target:`doxid-classforcefields_1_1_zhu_philpott_1kimura2003` A Molecular Dynamics Simulation of :ref:`Water ` Droplet in Contact with a Platinum Surface, T. Kimura and S. Maruyama, University of Tokyo. :target:`doxid-classforcefields_1_1_zhu_philpott_1combinationreview` 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 `__. Methods ------- .. index:: pair: function; computeHH_O_Pt_ .. _doxid-classforcefields_1_1_zhu_philpott_1a803dcfb887567aee516fceb7ddaf80b9: .. ref-code-block:: cpp :class: doxyrest-title-code-block 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. .. warning:: The conductivity is simulated by interaction a mirror images of charges. The mirror surface is set at z=0, which should correspond to the location of the highest layer of platinum atoms. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - nWater - Number of molecules of water. * - nPt - Number of platinum atoms. * - r - Positions of the atoms. * - f - Forces on the atoms. * - energy - Potential energy. * - b - Periodic boundaries. Length: 3 * - fixed - True for fixed atoms, false otherwise. The order of the atoms is all hydrogens (hydrogens belonging to the same molecule are next to each others), all oxygen, all platinum. The length of arrays *r* and *f* is :math:`3\times(3 \times nWater+nPt)`. The length of array *fixed* is :math:`3 \times nWater+nPt`. When *fixed* is provided the interaction between two fixed atoms may be skipped to speed up the calculation. The parameter is optional. .. index:: pair: function; computeHH_O_ .. _doxid-classforcefields_1_1_zhu_philpott_1a5ee9ab5ae2fb66b43eac8d3a5eaf7424: .. ref-code-block:: cpp :class: doxyrest-title-code-block 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. This function is called with the coordinates of the atoms of water only. The positions of the platinum atoms must have been previously provided through function :ref:`setPlatinum() `. .. note:: The function does not return the forces on platinum atoms as they as assumed to be fixed. .. rubric:: Parameters: .. list-table:: :widths: 20 80 * - nWater - Number of molecules of water. * - r - Positions of atoms in water. * - f - Forces on the atoms in water. * - energy - Potential energy. * - b - Periodic boundaries. Length: 3 * - fixed - True for fixed atoms, false otherwise. The length of arrays *r* and *f* is :math:`9\times nWater`. The length of array *fixed* is :math:`3 \times nWater`. .. rubric:: See also: :ref:`setPlatinum() ` and :ref:`computeHH_O_Pt\_() `. .. index:: pair: function; nPlatinum .. _doxid-classforcefields_1_1_zhu_philpott_1ae50d5d63065340f1dfb61295745a827e: .. ref-code-block:: cpp :class: doxyrest-title-code-block int nPlatinum() const Number of platinum atoms. .. rubric:: See also: :ref:`setPlatinum() `. .. index:: pair: function; setPlatinum .. _doxid-classforcefields_1_1_zhu_philpott_1a85061840564b45f49c5928752f6d2013: .. ref-code-block:: cpp :class: doxyrest-title-code-block void setPlatinum(int nPlatinum, double const positions[]) Initialises the positions of the atoms of platinum. Use before calling :ref:`computeHH_O\_() `. .. index:: pair: function; getName .. _doxid-classforcefields_1_1_zhu_philpott_1a37f84839a970a6aafb8391895e792753: .. ref-code-block:: cpp :class: doxyrest-title-code-block static char const* getName() Name of the potential.