sisl.HydrogenicOrbital

class sisl.HydrogenicOrbital(n: int, l: int, m: int, Z: float, **kwargs)

Bases: AtomicOrbital

A hydrogen-like atomic orbital defined by an effective atomic number Z in addition to the usual quantum numbers (n, l, m).

A hydrogenic atom (Hydrogen-like) is an atom with a single valence electron.

The returned orbital is properly normalized, see [HydrogenicO] for details.

The orbital has the familiar spherical shape

\[\begin{split}Y^m_l(\theta,\varphi) &= (-1)^m\sqrt{\frac{2l+1}{4\pi} \frac{(l-m)!}{(l+m)!}} e^{i m \theta} P^m_l(\cos(\varphi)) \\ \phi_{lmn}(\mathbf r) &= R_{nl}(|\mathbf r|) Y^m_l(\theta, \varphi) \\ R_{nl}(|\mathbf r|) &= -\sqrt{\big(\frac{2Z}{na_0}\big)^3 \frac{(n-l-1)!}{2n(n+l)!}} e^{-Zr/(na_0)} \big( \frac{2Zr}{na_0} \big)^l L_{n-l-1}^{(2l+1)} \big( \frac{2Zr}{na_0} \big)\end{split}\]

With \(L_{n-l-1}^{(2l+1)}\) is the generalized Laguerre polynomials.

References

Parameters:
  • n (int) – principal quantum number

  • l (int) – angular momentum quantum number

  • m (int) – magnetic quantum number

  • Z (float) – effective atomic number

  • R – See Orbital for details.

Examples

>>> carbon_pz = HydrogenicOrbital(2, 1, 0, 3.2)

Methods

copy()

Create an exact copy of this object

equal(other[, psi, radial])

Compare two orbitals by comparing their radius, and possibly the radial and psi functions

name([tex])

Return named specification of the atomic orbital

psi(r)

Calculate \(\phi(\mathbf r)\) at a given point (or more points)

psi_spher(r, theta, phi[, cos_phi])

Calculate \(\phi(|\mathbf r|, \theta, \phi)\) at a given point (in spherical coordinates)

radial(r, *args, **kwargs)

Calculate the radial part of the wavefunction \(f(\mathbf r)\)

scale(scale)

Scale the orbital by extending R by scale

set_radial(*args, **kwargs)

Update the internal radial function used as a \(f(|\mathbf r|)\)

spher(theta, phi[, cos_phi])

Calculate the spherical harmonics of this orbital at a given point (in spherical coordinates)

toGrid([precision, c, R, dtype, atom])

Create a Grid with only this orbital wavefunction on it

toSphere([center])

Return a sphere with radius equal to the orbital size

P

Whether this is polarized shell or not

R

Maxmimum radius of orbital

l

\(l\) quantum number

m

\(m\) quantum number

n

\(n\) shell

orb

Orbital with radial part

q0

Initial charge

tag

Named tag of orbital

zeta

\(\zeta\) shell

property P

Whether this is polarized shell or not

property R

Maxmimum radius of orbital

__init__(n: int, l: int, m: int, Z: float, **kwargs)[source]

Initialize atomic orbital object

Parameters:
copy() HydrogenicOrbital

Create an exact copy of this object

Parameters:

orbital (HydrogenicOrbital)

Return type:

HydrogenicOrbital

equal(other, psi: bool = False, radial: bool = False)

Compare two orbitals by comparing their radius, and possibly the radial and psi functions

Parameters:
  • other (Orbital) – comparison orbital

  • psi (bool) – also compare that the full psi are the same

  • radial (bool) – also compare that the radial parts are the same

property l

\(l\) quantum number

property m

\(m\) quantum number

property n

\(n\) shell

name(tex=False)

Return named specification of the atomic orbital

property orb

Orbital with radial part

psi(r)

Calculate \(\phi(\mathbf r)\) at a given point (or more points)

The position r is a vector from the origin of this orbital.

Parameters:

r (array_like) – the vector from the orbital origin

Returns:

basis function value at point r

Return type:

ndarray

psi_spher(r, theta, phi, cos_phi: bool = False)

Calculate \(\phi(|\mathbf r|, \theta, \phi)\) at a given point (in spherical coordinates)

This is equivalent to psi however, the input is given in spherical coordinates.

Parameters:
  • r (array_like) – the radius from the orbital origin

  • theta (array_like) – azimuthal angle in the \(xy\) plane (from \(x\))

  • phi (array_like) – polar angle from \(z\) axis

  • cos_phi (bool) – whether phi is actually \(cos(\phi)\) which will be faster because cos is not necessary to call.

Returns:

basis function value at point r

Return type:

ndarray

property q0

Initial charge

radial(r, *args, **kwargs)

Calculate the radial part of the wavefunction \(f(\mathbf r)\)

The position r is a vector from the origin of this orbital.

Parameters:

r (array_like) – radius from the orbital origin

Returns:

radial orbital value at point r

Return type:

ndarray

scale(scale: float) Orbital

Scale the orbital by extending R by scale

Parameters:
Return type:

Orbital

set_radial(*args, **kwargs)

Update the internal radial function used as a \(f(|\mathbf r|)\)

See SphericalOrbital.set_radial where these arguments are passed to.

spher(theta, phi, cos_phi: bool = False)

Calculate the spherical harmonics of this orbital at a given point (in spherical coordinates)

Parameters:
  • theta (array_like) – azimuthal angle in the \(xy\) plane (from \(x\))

  • phi (array_like) – polar angle from \(z\) axis

  • cos_phi (bool) – whether phi is actually \(cos(\phi)\) which will be faster because cos is not necessary to call.

Returns:

spherical harmonics at angles \(\theta\) and \(\phi\)

Return type:

ndarray

property tag

Named tag of orbital

toGrid(precision: float = 0.05, c: float = 1.0, R=None, dtype=<class 'numpy.float64'>, atom=1)

Create a Grid with only this orbital wavefunction on it

Parameters:
  • precision (float, optional) – used separation in the Grid between voxels (in Ang)

  • c (float or complex, optional) – coefficient for the orbital

  • R (float, optional) – box size of the grid (default to the orbital range)

  • dtype (dtype, optional) – the used separation in the Grid between voxels

  • atom (optional) – atom associated with the grid; either an atom instance or something that Atom(atom) would convert to a proper atom.

toSphere(center=None)

Return a sphere with radius equal to the orbital size

Returns:

sphere with a radius equal to the radius of this orbital

Return type:

Sphere

property zeta

\(\zeta\) shell