# HuckelBasisParameters¶

class HuckelBasisParameters(element, orbitals, occupations=None, filling_method=None, ionization_potential=None, onsite_hartree_shift=None, onsite_spin_split=None, onsite_spin_orbit_split=None, number_of_valence_electrons=None, wolfsberg_helmholtz_constant=None, vacuum_level=None)

Class for representing the parameters that determine the properties of a Huckel basis.

Parameters: element (PeriodicTableElement) – The element associated with the basis set. orbitals (SlaterOrbital | list of SlaterOrbital) – The basis orbitals. One should be given for each subshell. occupations (list of float) – The initial occupation of each orbital (subshell) as a list of positive floats with one entry for each subshell. Either this, or number_of_valence_electrons must be given. filling_method (SphericalSymmetric | Anisotropic) – The method used for setting up the initial occupation. Default: SphericalSymmetric ionization_potential (PhysicalQuantity of type energy) – The ionization potential with one entry for each (subshell). Default: Must be given. onsite_hartree_shift (PhysicalQuantity of type energy) – The on-site Hartree shift with one entry for each (subshell). Default: Must be given. onsite_spin_split (PhysicalQuantity of type energy) – The on-site spin-split values of each orbital (subshell) pair. This should be a square matrix of size n where n is the number of orbitals (subshells). Default: No splitting onsite_spin_orbit_split (PhysicalQuantity of type energy) – The on-site spin-orbit with one entry for each orbital (subshell). Default: No splitting number_of_valence_electrons (int) – The number of valence electrons used to determine the neutral state. Either this, or occupations must be given. wolfsberg_helmholtz_constant (float) – The Wolfsberg-Helmholtz constant. Must be positive. Default: 1.75 vacuum_level (PhysicalQuantity of type energy) – The energy shift of the vacuum level. Default: 0.0 * Hartree
angularMomenta()
Returns: The angular momentum of each orbital (subshell) in the basis set. list of int
element()
Returns: The element of the basis set. PeriodicTableElement
fillingMethod()
Returns: The method used for setting up the initial occupation. SphericalSymmetric | Anisotropic
ionizationPotential()
Returns: The ionization potential of each orbital (subshell) in the basis set. PhysicalQuantity of type energy
numberOfValenceElectrons()
Returns: The sum of the occupations. float
occupations()
Returns: The occupations associated with the orbitals. list of float
onsiteHartreeShift()
Returns: The on-site Hartree shift of each orbital (subshell) in the basis set. PhysicalQuantity of type energy
onsiteSpinOrbitSplit()
Returns: The on-site spin-orbit split of each orbital (subshell) in the basis set. PhysicalQuantity of type energy
onsiteSpinSplit()
Returns: The on-site spin-split values of each orbital (subshell) pair. This should be a square matrix of size n where n is the number of orbitals (subshells). PhysicalQuantity of type energy
orbitals()
Returns: The orbitals of the basis set. list of SlaterOrbital
vacuumLevel()
Returns: The energy shift of the vacuum level. PhysicalQuantity of type energy
wolfsbergHelmholtzConstant()
Returns: The Wolfsberg-Helmholtz constant. float

## Usage Examples¶

Define an Extended Huckel Basis for Carbon

carbon_2s = SlaterOrbital(
principal_quantum_number=2,
angular_momentum=0,
slater_coefficients=[ 2.0249*1/Bohr ],
weights=[ 0.76422]
)

carbon_2p = SlaterOrbital(
principal_quantum_number=2,
angular_momentum=1,
slater_coefficients=[ 1.62412*1/Bohr , 2.17687*1/Bohr ],
weights=[ 0.27152 , 0.73886 ]
)

carbon_3d = SlaterOrbital(
principal_quantum_number=3,
angular_momentum=2,
slater_coefficients=[ 1.1944*1/Bohr ],
weights=[ 0.49066]
)

CarbonBasis = HuckelBasisParameters(
element=Carbon,
orbitals=[ carbon_2s , carbon_2p , carbon_3d ],
ionization_potential=[ -19.88924*eV , -13.08001*eV , -2.04759*eV ],
onsite_hartree_shift=ATK_U(Carbon, ['2s','2p','3d']),
onsite_spin_split=ATK_W(Carbon, ['2s','2p','3d']),
number_of_valence_electrons=4,
wolfsberg_helmholtz_constant=2.8,
vacuum_level=0.0*eV,
)


## Notes¶

Tables with the available parameter sets can be found in Extended Hückel basis sets.

The onsite_hartree_shift can be obtained from the ATK_U database.

The onsite_spin_split can be obtained from the ATK_W database.

The overlap matrix,

$\begin{split}S_{ij} &= \delta_{ ij}, & \text{if} \, \, & {\bf R}_i={\bf R}_j \\ &= \int_V \phi_i({\bf r} -{\bf R}_i) \phi_j({\bf r}- {\bf R}_j) \mathrm{d}{\bf r}\,\, & \text{if} \, \, & {\bf R}_i \neq {\bf R}_j\end{split}$

is the central object in the extended Huckel model, where $$\phi$$ is of the type SlaterOrbital. The one-electron Hamiltonian is defined by

$\begin{split}H_{ij} &= E_i + V_H({\bf R}_i)-E^\mathrm{VAC}, & \text{if} \, \, & i=j\\ &= \frac{1}{4} (\beta_i+\beta_j) (E_i+E_j) S_{ij} \, + \, \frac{1}{2} (V_H({\bf R}_i)+V_H({\bf R}_j)- 2 E^\mathrm{VAC})S_{ij}\,\, & \text{if} \, \, & i \neq j\end{split}$

where the parameters $$E_i$$ is the ionization_potential, $$\beta$$ the wolfsberg_helmholtz_constant, and the vacuum_level, $$E^\mathrm{VAC}$$, is used to shift the position of the vacuum level.

$$V_H$$ is the Hartree potential, which is obtained by solving Poisson’s equation for the charge density

$\delta n({\bf r})=\sum_\mu \delta m_\mu ({ \frac{\alpha_{\mu}}{\pi}})^{\frac{3}{2}} e^{-\alpha_\mu |{\bf r}-{\bf R}_\mu|^2},$

where $$\delta m_\mu = m_\mu - Z_\mu$$ is the total charge of atom $$\mu$$, i.e. the sum of the Mulliken population $$m_\mu$$ and the ionic charge $$-Z_\mu$$.

The width of the Gaussian, $$\alpha = \pi U^2 /4 e^4$$, is specified through the onsite_hartree_shift, $$U$$.

Table 35 HuckelBasisParameters
Symbol HuckelBasisParameters
$$E_i$$ ionization_potential
$$\beta$$ wolfsberg_helmholtz_constant
$$U$$ onsite_hartree_shift
$$E^\mathrm{VAC}$$ vacuum_level