bfit.density

Slater Atomic Density Module.

Module Contents

Classes

SlaterAtoms

Atomic Density Class.

class bfit.density.SlaterAtoms(element, anion=False, cation=False)[source]

Atomic Density Class.

Reads and parses information from the .slater file [1], [2] of an atom and stores it inside this class. Elements supported by default from “./bfit/data/examples/” range from Hydrogen to Xenon.

Each electron of the atom is associated to a molecular spin-orbital written as:

\[\phi_i(r, \theta, \phi) = \bigg[\sum_{j=1}^{M_i} c^i_j R_{n^i_j}(r, \alpha^i_j) \bigg] Y_{l_i}^{m_i}(\theta, \phi) \sigma(m_i),\]

where \(R_{n^i_j}(r)\) is a Slater-type function with quantum number \(n^i_j\), \(c^i_j\) is the coefficient of the jth Slater-type function, \(\alpha_j^i\) is the exponent of the jth Slater-type function, \(Y_{l_i}^{m_i}\) is the spherical harmonic with complex form, angular momentum \(l_i\) determined by the electron in the electron configuration and \(m_i\) is the spin determined by applying Hund’s rule to the electron configuration, and \(\sigma\) is the spin-function determined from applying Hund’s rule to the electron.

References

1

Koga, T. , Kanayama, K. , Watanabe, S. and Thakkar, A. J. (1999), Analytical Hartree–Fock wave functions subject to cusp and asymptotic constraints: He to Xe, Li+ to Cs+, H− Int. J. Quantum Chem., 71: 491-497. doi:10.1002/(SICI)1097-461X(1999)71:6<491::AID-QUA6>3.0.CO;2-T

2

Koga, T., Kanayama, K., Watanabe, T. et al. Analytical Hartree–Fock wave functions for the atoms Cs to Lr. Theor Chem Acc 104, 411–413 (2000). https://doi.org/10.1007/s002140000150

Construct SlaterAtoms object.

Parameters
  • element (str) – Symbol of element.

  • anion (bool) – If true, then the anion of element is used. Some elements do not have anion information.

  • cation (bool) – If true, then the cation of element is used. Some elements do not have cation information.

property energy(self)[source]

Energy of atom.

property kinetic_energy(self)[source]

Kinetic energy of atom.

property potential_energy(self)[source]

Potential energy of atom.

property configuration(self)[source]

Return string representing the electron configuration of the atom.

The electron configuration of the atom is written in form that writes out the atomic subshells with the number of electrons assigned to that atomic subshell. For example, Beryllium returns “1S(2)2S(2)”.

property orbitals(self)[source]

List of strings representing each of the atomic subshells in the electron configuration.

For example, Beryllium returns [“1S”, “2S”] in its electron configuration. Ordered based on “S”, “P”, “D”, etc.

property orbitals_occupation(self)[source]

Array returning number of electrons in each of the orbitals in the electron configuration.

For example, Beryllium returns ndarray([[2], [2]]).

property orbitals_basis(self)[source]

Return grouping of Slater-type functions to the azimuthal quantum number (“S”, “P”, …).

Dictionary mapping type of orbital (e.g. “S”, “P”) to the number and type of the \(N\) Slater-type functions. For example, Helium would map “S” to [‘2S’, ‘1S’, ‘1S’, ‘1S’, ‘2S’]. This implies that all molecular orbitals corresponding to s-orbital will have it’s radial component expanded in that Slater-type functions according to the label.

property basis_numbers(self)[source]

Return type of Slater-type orbital to the type, e.g. “S”.

Dictionary mapping type of orbital (e.g. “S”, “P”) to array containing \(n\) of the \(N\) Slater-type functions. These play the role of the principal quantum number to each Slater-type function. With the Helium example, “S” will map to [[2], [1], [1], [1], [2]].

property orbitals_exp(self)[source]

Exponent of each Slater-type orbital grouped by type of orbital.

Dictionary mapping type of orbitals (e.g. “S”, “P”) to the exponent \(\alpha_j^i\) of each of the \(M_i\) Slater-type function.

property orbitals_coeff(self)[source]

Coefficients of each Slater-type orbital grouped by type of orbital.

Dictionary mapping the molecular orbital (e.g. “1S”, “2S”, ..) to the coefficients \(c^i_j\) of expansion w.r.t. the \(M_i\) Slater-type function.

property orbitals_energy(self)[source]

Energy of each of the \(N\) Slater-type orbital.

property orbitals_cusp(self)[source]

Cusp values of each of the N Slater-type orbital.

Same ordering as orbitals. Does not exist for Heavy atoms past Xenon.

static radial_slater_orbital(exponent, number, points)[source]

Compute the radial component of Slater-type orbitals on the given points.

The radial component of the Slater-type orbital is defined as:

\[R(r) = N r^{n-1} e^{- \alpha r}\]

where, \(n\) is the principal quantum number of that orbital, \(N\) is the normalizing constant, \(r\) is the radial point, distance to the origin, and \(\alpha\) is the zeta exponent of that orbital.

Parameters
  • exponent (ndarray, (M, 1)) – The zeta exponents \(\zeta\) of \(M\) Slater orbitals.

  • number (ndarray, (M, 1)) – The principal quantum numbers \(n\) of \(M\) Slater orbitals.

  • points (ndarray, (N,)) – The radial \(r\) grid points.

Returns

slater – The \(M\) Slater-type orbitals evaluated on \(N\) grid points.

Return type

ndarray, (N, M)

Notes

  • The principal quantum number of all functions are stored in basis_numbers.

  • The alpha exponents of all functions are stored in the attribute orbitals_exp.

phi_matrix(self, points, deriv=False)[source]

Compute the linear combination of Slater-type functions on the given points.

Each row corresponds to a point on the grid, represented as \(r\) and each column is represented as a linear combination of Slater-type atomic orbitals of the form:

\[\sum_{i=1}^{M} c_i R(r, n_i, \alpha_i)\]

where, \(c_i\) is the coefficient of the Slater-type orbital, \(\alpha_i\) is the zeta exponent attached to the Slater-type orbital, \(n_i\) is the principal quantum number attached to the Slater-type orbital, \(R(r, n_i, C_i)\) is the radial component of the Slater-type function, \(M\) is the number of orbitals.

Parameters
  • points (ndarray, (N,)) – The radial grid points.

  • deriv (bool) – If true, use the derivative of the slater-orbitals.

Returns

phi_matrix – The linear combination of Slater-type orbitals evaluated on the \(N\) grid points, and \(M\) is the number of atomic subshells (ignoring spin) within the electron configuration. The order is S orbitals, then P then D and spin is ignored.

Return type

ndarray(N, K)

Notes

  • At r = 0, the derivative of slater-orbital is undefined and this function returns zero instead. See “derivative_radial_slater_type_orbital”.

atomic_density(self, points, mode='total')[source]

Compute atomic density on the given points.

The total density is written as a linear combination of molecular orbitals squared whose coefficients is the orbital occupation number of the electron configuration:

\[\sum n_i |\phi_i(r)|^2\]

where, \(n_i\) is the number of electrons in the ith molecular orbital, \(\phi_i(r)\) is the ith molecular orbital, whose radial component is a linear combination of Slater-type functions evaluated on the point \(r\) and whose angles within the spherical coordinates are integrated.

For core and valence density, please see more Info below.

Parameters
  • points (ndarray, (N,)) – The radial grid points.

  • mode (str) – The type of atomic density, which can be “total”, “valence” or “core”.

Returns

dens – The atomic density on the grid points.

Return type

ndarray, (N,)

Notes

The core density and valence density is respectively written as:

\[\begin{split}\begin{align*} \rho^{core}(r) &= \sum n_i (1 - e^{-|e_i - e_{homo}|^2}) |\phi_i(r)| \\ \rho^{valence}(r) &= \sum n_i e^{-|e_i - e_{homo}|^2} |\phi_i(r)| \end{align*}\end{split}\]

where, \(e_i\) is the energy of the orbital i. \(e_{HOMO}\) is the energy of the highest occupying orbital.

static derivative_radial_slater_type_orbital(exponent, number, points)[source]

Compute the derivative of the radial component of Slater-type function on the given points.

The derivative of the Slater-type function is defined as:

\[\frac{d R(r)}{dr} = \bigg(\frac{n-1}{r} - \alpha \bigg) N r^{n-1} e^{- \alpha r},\]

where \(n\) is the principal quantum number of that orbital, \(N\) is the normalizing constant, \(r\) is the radial point, distance to the origin, and \(\alpha\) is the zeta exponent of that orbital.

Parameters
  • exponent (ndarray, (M, 1)) – The zeta exponents of Slater orbitals.

  • number (ndarray, (M, 1)) – The principle quantum numbers of Slater orbitals.

  • points (ndarray, (N,)) – The radial grid points. If points contain zero, then it is undefined at those points and set to zero.

Returns

slater – The Slater-type orbitals evaluated on the \(N\) grid points.

Return type

ndarray, (N, M)

Notes

  • At r = 0, the derivative is undefined and this function returns zero instead.

References

See wikipedia page on “Slater-Type orbitals”.

positive_definite_kinetic_energy(self, points)[source]

Positive definite or Lagrangian kinetic energy density.

Parameters

points (ndarray,(N,)) – The radial grid points.

Returns

energy – The kinetic energy on the grid points.

Return type

ndarray, (N,)

derivative_density(self, points)[source]

Return the derivative of the atomic density on a set of points.

Parameters

points (ndarray(N,)) – The \(N\) radial grid points.

Returns

deriv – The derivative of atomic density on the grid points.

Return type

ndarray(N,)