sisl.HydrogenicOrbital

class sisl.HydrogenicOrbital(n, l, m, Z, **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

HydrogenicO

https://en.wikipedia.org/wiki/Hydrogen-like_atom

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, l, m, Z, **kwargs)[source]

Initialize atomic orbital object

copy()[source]

Create an exact copy of this object

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

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

Parameters
  • other (Orbital) – comparison orbital

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

  • radial (bool, optional) – 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

numpy.ndarray

psi_spher(r, theta, phi, cos_phi=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 \(x-y\) plane (from \(x\))

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

  • cos_phi (bool, optional) – 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

numpy.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

numpy.ndarray

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|)\)

See SphericalOrbital.set_radial where these arguments are passed to.

spher(theta, phi, cos_phi=False)

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

Parameters
  • theta (array_like) – azimuthal angle in the \(x-y\) plane (from \(x\))

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

  • cos_phi (bool, optional) – 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

numpy.ndarray

property tag

Named tag of orbital

toGrid(precision=0.05, c=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 (numpy.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