File multipoleTypes.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

Enums

enum multipolePair_t

enum listing the possible charge configurations of a multipole.

It is possible i.e. to infer the charge separation D_{sp1} from it. They are separated in monopole (l = 0), dipole (l = 1) and quadrupole (l = 2).

Values:

sp1
pd1
pp2
sd2
dd2
ss0
pp0
dd0
enum multipole_t

Multipole types used in the calculation of the ERI with the multipole expansion approximation.

Confusion might arise by the use of two merged formalisms: the one for just s and p orbitals and the one for s, p and d orbitals.

l: orbital quantum number m: magnetic quantum number \( M00 = M_{0,0} = q^I\) a monopole with l = 0, m = 0 \( M1m1 = M_{1,-1} = \mu_y \) a dipole in y direction with l = 1, m = -1 \( M10 = M_{1,0} = \mu_z \) a dipole in z direction with l = 1, m = 0 \( M11 = M_{1,1} = \mu_x \) a dipole in x direction with l = 1, m = 1 \( Qxx = Q_{x,x} \) a linear quadrupole in x direction with l = 2, m = 0 \( Qyy = Q_{y,y} \) a linear quadrupole in y direction with l = 2, m = 0 \( Qzz = Q_{z,z} \) a linear quadrupole in z direction with l = 2, m = 0 \( M2m2 = M_{2,-2} = Q_{x,y} \) a x,y square quadrupole with l = 2, m = -2 \( M2m1 = M_{2,-1} = Q_{y,z} \) a y,z square quadrupole with l = 2, m = -1 \( M20 = M_{2,0} = -\~{Q}_{x,z} - \frac{1}{2}\~{Q}_{x,y} \) a quadrupole with charges along each axis at \( \sqrt{2} \) distance from the origin with l = 2, m = 0 \( M21 = M_{2,1} = Q_{x,z}\) a x,z square quadrupole with l = 2, m = 1 \( M22 = M_{2,2} = \~{Q}_{x,y} \) a square quadrupole with charges along the x,y axes at \( \sqrt{2} \) distance from the origin with l = 2, m = 2 \( Qzx = \~{Q}_{z,x} = -\~{Q}_{x,z} \) a square quadrupole with charges along the x,z axes at \( \sqrt{2} \) distance from the origin with l = 2, m = 2

Values:

M00
Qxx
Qyy
Qzz
M1m1
M10
M11
M2m2
M2m1
M20
M21
M22
Qzx

Functions

GeneralTypes::rotationOrbitalPair getRotPairType(GeneralTypes::orb_t o1, GeneralTypes::orb_t o2)

Given 2 orbitals, gives the corresponding orbital pair.

Throws InvalidOrbitalPairException() if the orbital types given are invalid. Order matters.

Return

a GeneralTypes::rotationOrbitalPair corresponding to the input orbitals

Parameters
  • o1: first orbital

  • o2: second orbital

int MQuantumNumber(multipole_t m)

Returns the magnetic quantum number m of a multipole, i.e.

-1 for a dipole in y direction, 0 for a dipole in z direction and 1 for a dipole in x direction. Throws InvalidMultipoleException() if the multipole is not valid.

int LQuantumNumber(multipole_t m)

Returns the orbital quantum number l of an orbital, i.e.

0 for s, 1 for p and 2 for d type orbitals. Throws InvalidMultipoleException() if the multipole is not a valid one.

multipolePair_t pairType(int l1, int l2, int l)

Function to infer the charge configuration of a multipole.

Return

throws InvalidQuantumNumbersException() if the quantum number is invalid. Otherwise returns a multipolePair_t.

Parameters
  • l1: the orbital quantum number of the first orbital

  • l2: the orbital quantum number of the second orbital

  • l: the multipole orbital quantum number