File ChargeSeparationParameter.h

Copyright

This code is licensed under the 3-clause BSD license.

Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.

See LICENSE.txt for details.

namespace Scine
namespace Sparrow
namespace nddo
namespace multipole
class ChargeSeparationParameter
#include <ChargeSeparationParameter.h>

Charge separation D of semi-empirical models. It describes the separation between two charges of opposite sign in a multipole.

The calculation of the charge separation is described in Thiel, Voityuk, Theor Chim Acta, 1992, 81, 391. The charge separation are stored ad a static c-array of size 5. The charge separations are ordered as in the nddo::multipole::multipolePair_t enum, i.e. sp1, pd1, pp2, sd2, dd2. ss0, pp0, dd0 are not present as there is no charge separation for them (they are monopoles).

Public Functions

ChargeSeparationParameter()

constructor, resets the charge separation array to zero.

void computeFromExponents(unsigned int ns, unsigned int np, double zs, double zp)

calculates the charge separation from the main quantum numbers and the orbital exponents of s and p orbitals

Parameters
  • ns: main quantum number of the s orbital

  • np: main quantum number of the p orbital

  • zs: orbital exponent of the s orbital

  • zp: orbital exponent of the p orbital

void computeFromExponents(unsigned int ns, unsigned int np, unsigned int nd, double zs, double zp, double zd)

calculate the charge separation from the main quantum numbers and the orbital exponents of s, p and d orbitals

Parameters
  • ns: main quantum number of the s orbital

  • np: main quantum number of the p orbital

  • nd: main quantum number of the d orbital

  • zs: orbital exponent of the s orbital

  • zp: orbital exponent of the p orbital

  • zd: orbital exponent of the d orbital

void set(multipolePair_t type, double value)

sets the value of a charge separation for a given multipole type

Parameters
  • type: one of the first 5 elements of the nddo::multipole:multipolePair_t enum, corresponding to the dipole and the quadrupole charge configurations. The assignment is not checked.

  • value: the value of the charge separation parameter

double get(multipolePair_t type) const

gets the value corresponding to one of the multipolescharge configuration.

No check is performed to ensure that no monopolar charge configuration is requested.

Private Functions

long long factorial(long long n) const

Calculates the factorial recursively.

double A(unsigned int n1, unsigned int n2, double z1, double z2, int L) const

Calculates the A factor. It is necessary to calculate the charge separations.

Private Members

double D_[5]