25 void computeHH_O_(
const int nAtoms,
const double R[],
double F[],
double &U,
27 void computeHH_O_(
const int nAtoms,
const double R[],
double F[],
double &U,
28 const double b[],
const bool fixed[]);
32 Ccl(
double cutoff,
double switchingWidth);
33 void intramolecular(
double const rh1[],
double const rh2[],
double const ro[],
34 double fh1[],
double fh2[],
double fo[],
double &energy);
53 double const thetaEquilibrium);
55 double &energy,
double fh1[],
double fh2[],
double fo[]);
56 static double const re_;
60 template <
int H,
int O>
61 void computeTemplate(
const int nMolecules,
const double (*
const rh1)[H * 3],
62 const double (*
const rh2)[H * 3],
63 const double (*
const ro)[O * 3],
64 double (*
const fh1)[H * 3],
double (*
const fh2)[H * 3],
65 double (*
const fo)[O * 3],
double &energy,
66 double const b[],
bool const (*
const xh1)[H] = 0,
67 bool const (*
const xh2)[H] = 0,
68 bool const (*
const xo)[O] = 0);
69 void ro_2(
Rho const &ro1,
Rho const &ro2,
double &energy,
double &d1,
71 void ro1_ro2(
Rho const &s1,
Rho const &s2,
double &energy,
double &d1,
74 double &d1,
double &d2,
double &d3);
77 void ro_3(
Rho const &s1,
Rho const &s2,
double &energy,
double &d1,
82 double &energy,
double &d1,
double &d2,
double &d3);
84 double &energy,
double &d1,
double &d2,
double &d3);
86 double &energy,
double &d1,
double &d2,
double &d3);
89 void ro_4(
Rho const &s1,
Rho const &s2,
double &energy,
double &d1,
96 double &energy,
double &d1,
double &d2,
double &d3);
98 double &energy,
double &d1,
double &d2,
double &d3);
100 double &energy,
double &d1,
double &d2,
double &d3);
102 double &energy,
double &d1,
double &d2,
double &d3);
static double const re_
Distance OH at equilibrium.
static double const thetae_
Distance OH at equilibrium.
void theta_4(Dtheta const &s3, double &energy, double &d3)
void ro_3(Rho const &s1, Rho const &s2, double &energy, double &d1, double &d2)
void theta_3(Dtheta const &s3, double &energy, double &d3)
void ro_ro1_ro2_theta(Rho const &s1, Rho const &s2, Dtheta const &s3, double &energy, double &d1, double &d2, double &d3)
void ro_theta(Rho const &s1, Rho const &s2, Dtheta const &s3, double &energy, double &d1, double &d2, double &d3)
void ro_3_theta(Rho const &s1, Rho const &s2, Dtheta const &s3, double &energy, double &d1, double &d2, double &d3)
void theta_2(Dtheta const &s3, double &energy, double &d3)
Energy and derivatives for Term 4.
void ro1_ro2_theta(Rho const &s1, Rho const &s2, Dtheta const &s3, double &energy, double &d1, double &d2, double &d3)
void ro1_ro2(Rho const &s1, Rho const &s2, double &energy, double &d1, double &d2)
char const * getName() const
Name of the potential.
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(double const rh1[], double const rh2[], double const ro[], double fh1[], double fh2[], double fo[], double &energy)
Interactions inside one molecules.
void ro_2(Rho const &ro1, Rho const &ro2, double &energy, double &d1, double &d2)
Energy and derivatives for Term 1.
void ro_4(Rho const &s1, Rho const &s2, double &energy, double &d1, double &d2)
void ro_2_theta_2(Rho const &s1, Rho const &s2, Dtheta const &s3, double &energy, double &d1, double &d2, double &d3)
void ro_2_theta(Rho const &s1, Rho const &s2, Dtheta const &s3, double &energy, double &d1, double &d2, double &d3)
void computeHH_O_(const int nAtoms, const double R[], double F[], double &U, const double b[])
Compute the forces and the energy.
void ro1_ro2_ro_2(Rho const &s1, Rho const &s2, double &energy, double &d1, double &d2)
void computeTemplate(const int nMolecules, const double(*const rh1)[H *3], const double(*const rh2)[H *3], const double(*const ro)[O *3], double(*const fh1)[H *3], double(*const fh2)[H *3], double(*const fo)[O *3], double &energy, double const b[], bool const (*const xh1)[H]=0, bool const (*const xh2)[H]=0, bool const (*const xo)[O]=0)
Compute forces and energy.
void ro_theta_2(Rho const &s1, Rho const &s2, Dtheta const &s3, double &energy, double &d1, double &d2, double &d3)
void ro1_ro2_theta_2(Rho const &s1, Rho const &s2, Dtheta const &s3, double &energy, double &d1, double &d2, double &d3)
void ro_ro1_ro2(Rho const &s1, Rho const &s2, double &energy, double &d1, double &d2)
void ro1_2_ro2_2(Rho const &s1, Rho const &s2, double &energy, double &d1, double &d2)
PotentialBase()
Non bond interaction cutoff.
Basic tools to write potentials.
double n2[3]
Same as n1 but for hydrogen 2.
double n1[3]
Convert derivative to force.
double n[3]
Convert derivative to force.